aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrea Ornstein <andreao@gcc.gnu.org>2007-05-09 15:29:01 +0000
committerAndrea Ornstein <andreao@gcc.gnu.org>2007-05-09 15:29:01 +0000
commit17e32664f5ce69619b86bae9a76e2eda17b1e955 (patch)
treea985aa825f640f39bb90e323d651106d58393a39
parent988374dbebafea52188cb77c352c48cca81307fd (diff)
Merge from ST 20070905.
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/st/cli@124575 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--Makefile.def2
-rw-r--r--Makefile.in412
-rwxr-xr-xconfigure1
-rw-r--r--configure.in1
-rw-r--r--gcc/bb-layout.c4
-rw-r--r--gcc/config/cil32/cil32.c257
-rw-r--r--gcc/config/cil32/cil32.h45
-rw-r--r--gcc/config/cil32/gcc4net.cs141
-rw-r--r--gcc/config/cil32/gen-cil.c948
-rw-r--r--gcc/config/cil32/t-cil3214
-rw-r--r--gcc/config/cil32/tree-simp-cil.c426
-rw-r--r--gcc/expr.c2
-rw-r--r--gcc/passes.c5
-rw-r--r--gcc/tree-stdarg.c4
-rw-r--r--libgcc4net/Makefile.am43
-rw-r--r--libgcc4net/Makefile.in476
-rw-r--r--libgcc4net/aclocal.m4583
-rwxr-xr-xlibgcc4net/configure3202
-rw-r--r--libgcc4net/configure.ac47
-rw-r--r--libgcc4net/gcc4net.cs745
20 files changed, 6859 insertions, 499 deletions
diff --git a/Makefile.def b/Makefile.def
index e365d8a77ea..1455dbf9a5c 100644
--- a/Makefile.def
+++ b/Makefile.def
@@ -138,6 +138,7 @@ target_modules = { module= qthreads; };
target_modules = { module= rda; };
target_modules = { module= libada; };
target_modules = { module= libgomp; lib_path=.libs; };
+target_modules = { module= libgcc4net; };
// These are (some of) the make targets to be done in each subdirectory.
// Not all; these are the ones which don't have special options.
@@ -439,6 +440,7 @@ dependencies = { module=all-uudecode; on=all-build-texinfo; };
lang_env_dependencies = { module=boehm-gc; };
lang_env_dependencies = { module=gperf; cxx=true; };
lang_env_dependencies = { module=libada; };
+lang_env_dependencies = { module=libgcc4net; };
lang_env_dependencies = { module=libgfortran; };
lang_env_dependencies = { module=libffi; };
lang_env_dependencies = { module=libjava; cxx=true; };
diff --git a/Makefile.in b/Makefile.in
index 85c4013b923..8be4a2d3267 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -640,7 +640,8 @@ configure-target: \
maybe-configure-target-qthreads \
maybe-configure-target-rda \
maybe-configure-target-libada \
- maybe-configure-target-libgomp
+ maybe-configure-target-libgomp \
+ maybe-configure-target-libgcc4net
# The target built for a native non-bootstrap build.
.PHONY: all
@@ -785,6 +786,7 @@ all-target: maybe-all-target-qthreads
all-target: maybe-all-target-rda
all-target: maybe-all-target-libada
all-target: maybe-all-target-libgomp
+all-target: maybe-all-target-libgcc4net
# Do a target for all the subdirectories. A ``make do-X'' will do a
# ``make X'' in all subdirectories (because, in general, there is a
@@ -893,6 +895,7 @@ info-target: maybe-info-target-qthreads
info-target: maybe-info-target-rda
info-target: maybe-info-target-libada
info-target: maybe-info-target-libgomp
+info-target: maybe-info-target-libgcc4net
.PHONY: do-dvi
do-dvi:
@@ -996,6 +999,7 @@ dvi-target: maybe-dvi-target-qthreads
dvi-target: maybe-dvi-target-rda
dvi-target: maybe-dvi-target-libada
dvi-target: maybe-dvi-target-libgomp
+dvi-target: maybe-dvi-target-libgcc4net
.PHONY: do-html
do-html:
@@ -1099,6 +1103,7 @@ html-target: maybe-html-target-qthreads
html-target: maybe-html-target-rda
html-target: maybe-html-target-libada
html-target: maybe-html-target-libgomp
+html-target: maybe-html-target-libgcc4net
.PHONY: do-TAGS
do-TAGS:
@@ -1202,6 +1207,7 @@ TAGS-target: maybe-TAGS-target-qthreads
TAGS-target: maybe-TAGS-target-rda
TAGS-target: maybe-TAGS-target-libada
TAGS-target: maybe-TAGS-target-libgomp
+TAGS-target: maybe-TAGS-target-libgcc4net
.PHONY: do-install-info
do-install-info:
@@ -1305,6 +1311,7 @@ install-info-target: maybe-install-info-target-qthreads
install-info-target: maybe-install-info-target-rda
install-info-target: maybe-install-info-target-libada
install-info-target: maybe-install-info-target-libgomp
+install-info-target: maybe-install-info-target-libgcc4net
.PHONY: do-install-html
do-install-html:
@@ -1408,6 +1415,7 @@ install-html-target: maybe-install-html-target-qthreads
install-html-target: maybe-install-html-target-rda
install-html-target: maybe-install-html-target-libada
install-html-target: maybe-install-html-target-libgomp
+install-html-target: maybe-install-html-target-libgcc4net
.PHONY: do-installcheck
do-installcheck:
@@ -1511,6 +1519,7 @@ installcheck-target: maybe-installcheck-target-qthreads
installcheck-target: maybe-installcheck-target-rda
installcheck-target: maybe-installcheck-target-libada
installcheck-target: maybe-installcheck-target-libgomp
+installcheck-target: maybe-installcheck-target-libgcc4net
.PHONY: do-mostlyclean
do-mostlyclean:
@@ -1614,6 +1623,7 @@ mostlyclean-target: maybe-mostlyclean-target-qthreads
mostlyclean-target: maybe-mostlyclean-target-rda
mostlyclean-target: maybe-mostlyclean-target-libada
mostlyclean-target: maybe-mostlyclean-target-libgomp
+mostlyclean-target: maybe-mostlyclean-target-libgcc4net
.PHONY: do-clean
do-clean:
@@ -1717,6 +1727,7 @@ clean-target: maybe-clean-target-qthreads
clean-target: maybe-clean-target-rda
clean-target: maybe-clean-target-libada
clean-target: maybe-clean-target-libgomp
+clean-target: maybe-clean-target-libgcc4net
.PHONY: do-distclean
do-distclean:
@@ -1820,6 +1831,7 @@ distclean-target: maybe-distclean-target-qthreads
distclean-target: maybe-distclean-target-rda
distclean-target: maybe-distclean-target-libada
distclean-target: maybe-distclean-target-libgomp
+distclean-target: maybe-distclean-target-libgcc4net
.PHONY: do-maintainer-clean
do-maintainer-clean:
@@ -1923,6 +1935,7 @@ maintainer-clean-target: maybe-maintainer-clean-target-qthreads
maintainer-clean-target: maybe-maintainer-clean-target-rda
maintainer-clean-target: maybe-maintainer-clean-target-libada
maintainer-clean-target: maybe-maintainer-clean-target-libgomp
+maintainer-clean-target: maybe-maintainer-clean-target-libgcc4net
# Here are the targets which correspond to the do-X targets.
@@ -2080,7 +2093,8 @@ check-target: \
maybe-check-target-qthreads \
maybe-check-target-rda \
maybe-check-target-libada \
- maybe-check-target-libgomp
+ maybe-check-target-libgomp \
+ maybe-check-target-libgcc4net
do-check:
@: $(MAKE); $(unstage)
@@ -2280,7 +2294,8 @@ install-target: \
maybe-install-target-qthreads \
maybe-install-target-rda \
maybe-install-target-libada \
- maybe-install-target-libgomp
+ maybe-install-target-libgomp \
+ maybe-install-target-libgcc4net
uninstall:
@echo "the uninstall target is not supported in this tree"
@@ -39121,6 +39136,393 @@ maintainer-clean-target-libgomp:
+
+
+.PHONY: configure-target-libgcc4net maybe-configure-target-libgcc4net
+maybe-configure-target-libgcc4net:
+@if gcc-bootstrap
+configure-target-libgcc4net: stage_current
+@endif gcc-bootstrap
+@if target-libgcc4net
+maybe-configure-target-libgcc4net: configure-target-libgcc4net
+configure-target-libgcc4net:
+ @: $(MAKE); $(unstage)
+ @r=`${PWD_COMMAND}`; export r; \
+ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ echo "Checking multilib configuration for libgcc4net..."; \
+ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgcc4net ; \
+ $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libgcc4net/multilib.tmp 2> /dev/null ; \
+ if test -r $(TARGET_SUBDIR)/libgcc4net/multilib.out; then \
+ if cmp -s $(TARGET_SUBDIR)/libgcc4net/multilib.tmp $(TARGET_SUBDIR)/libgcc4net/multilib.out; then \
+ rm -f $(TARGET_SUBDIR)/libgcc4net/multilib.tmp; \
+ else \
+ rm -f $(TARGET_SUBDIR)/libgcc4net/Makefile; \
+ mv $(TARGET_SUBDIR)/libgcc4net/multilib.tmp $(TARGET_SUBDIR)/libgcc4net/multilib.out; \
+ fi; \
+ else \
+ mv $(TARGET_SUBDIR)/libgcc4net/multilib.tmp $(TARGET_SUBDIR)/libgcc4net/multilib.out; \
+ fi; \
+ test ! -f $(TARGET_SUBDIR)/libgcc4net/Makefile || exit 0; \
+ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgcc4net ; \
+ $(NORMAL_TARGET_EXPORTS) \
+ echo Configuring in $(TARGET_SUBDIR)/libgcc4net; \
+ cd "$(TARGET_SUBDIR)/libgcc4net" || exit 1; \
+ case $(srcdir) in \
+ /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ *) topdir=`echo $(TARGET_SUBDIR)/libgcc4net/ | \
+ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ esac; \
+ srcdiroption="--srcdir=$${topdir}/libgcc4net"; \
+ libsrcdir="$$s/libgcc4net"; \
+ rm -f no-such-file || : ; \
+ CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
+ $(TARGET_CONFIGARGS) $${srcdiroption} \
+ || exit 1
+@endif target-libgcc4net
+
+
+
+
+
+.PHONY: all-target-libgcc4net maybe-all-target-libgcc4net
+maybe-all-target-libgcc4net:
+@if gcc-bootstrap
+all-target-libgcc4net: stage_current
+@endif gcc-bootstrap
+@if target-libgcc4net
+TARGET-target-libgcc4net=all
+maybe-all-target-libgcc4net: all-target-libgcc4net
+all-target-libgcc4net: configure-target-libgcc4net
+ @: $(MAKE); $(unstage)
+ @r=`${PWD_COMMAND}`; export r; \
+ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ $(NORMAL_TARGET_EXPORTS) \
+ (cd $(TARGET_SUBDIR)/libgcc4net && \
+ $(MAKE) $(TARGET_FLAGS_TO_PASS) $(TARGET-target-libgcc4net))
+@endif target-libgcc4net
+
+
+
+
+
+.PHONY: check-target-libgcc4net maybe-check-target-libgcc4net
+maybe-check-target-libgcc4net:
+@if target-libgcc4net
+maybe-check-target-libgcc4net: check-target-libgcc4net
+
+check-target-libgcc4net:
+ @: $(MAKE); $(unstage)
+ @r=`${PWD_COMMAND}`; export r; \
+ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ $(NORMAL_TARGET_EXPORTS) \
+ (cd $(TARGET_SUBDIR)/libgcc4net && \
+ $(MAKE) $(TARGET_FLAGS_TO_PASS) check)
+
+@endif target-libgcc4net
+
+.PHONY: install-target-libgcc4net maybe-install-target-libgcc4net
+maybe-install-target-libgcc4net:
+@if target-libgcc4net
+maybe-install-target-libgcc4net: install-target-libgcc4net
+
+install-target-libgcc4net: installdirs
+ @: $(MAKE); $(unstage)
+ @r=`${PWD_COMMAND}`; export r; \
+ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ $(NORMAL_TARGET_EXPORTS) \
+ (cd $(TARGET_SUBDIR)/libgcc4net && \
+ $(MAKE) $(TARGET_FLAGS_TO_PASS) install)
+
+@endif target-libgcc4net
+
+# Other targets (info, dvi, etc.)
+
+.PHONY: maybe-info-target-libgcc4net info-target-libgcc4net
+maybe-info-target-libgcc4net:
+@if target-libgcc4net
+maybe-info-target-libgcc4net: info-target-libgcc4net
+
+info-target-libgcc4net: \
+ configure-target-libgcc4net
+ @: $(MAKE); $(unstage)
+ @[ -f $(TARGET_SUBDIR)/libgcc4net/Makefile ] || exit 0 ; \
+ r=`${PWD_COMMAND}`; export r; \
+ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ $(NORMAL_TARGET_EXPORTS) \
+ echo "Doing info in $(TARGET_SUBDIR)/libgcc4net" ; \
+ for flag in $(EXTRA_TARGET_FLAGS); do \
+ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ done; \
+ (cd $(TARGET_SUBDIR)/libgcc4net && \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ "RANLIB=$${RANLIB}" \
+ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \
+ info) \
+ || exit 1
+
+@endif target-libgcc4net
+
+.PHONY: maybe-dvi-target-libgcc4net dvi-target-libgcc4net
+maybe-dvi-target-libgcc4net:
+@if target-libgcc4net
+maybe-dvi-target-libgcc4net: dvi-target-libgcc4net
+
+dvi-target-libgcc4net: \
+ configure-target-libgcc4net
+ @: $(MAKE); $(unstage)
+ @[ -f $(TARGET_SUBDIR)/libgcc4net/Makefile ] || exit 0 ; \
+ r=`${PWD_COMMAND}`; export r; \
+ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ $(NORMAL_TARGET_EXPORTS) \
+ echo "Doing dvi in $(TARGET_SUBDIR)/libgcc4net" ; \
+ for flag in $(EXTRA_TARGET_FLAGS); do \
+ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ done; \
+ (cd $(TARGET_SUBDIR)/libgcc4net && \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ "RANLIB=$${RANLIB}" \
+ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \
+ dvi) \
+ || exit 1
+
+@endif target-libgcc4net
+
+.PHONY: maybe-html-target-libgcc4net html-target-libgcc4net
+maybe-html-target-libgcc4net:
+@if target-libgcc4net
+maybe-html-target-libgcc4net: html-target-libgcc4net
+
+html-target-libgcc4net: \
+ configure-target-libgcc4net
+ @: $(MAKE); $(unstage)
+ @[ -f $(TARGET_SUBDIR)/libgcc4net/Makefile ] || exit 0 ; \
+ r=`${PWD_COMMAND}`; export r; \
+ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ $(NORMAL_TARGET_EXPORTS) \
+ echo "Doing html in $(TARGET_SUBDIR)/libgcc4net" ; \
+ for flag in $(EXTRA_TARGET_FLAGS); do \
+ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ done; \
+ (cd $(TARGET_SUBDIR)/libgcc4net && \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ "RANLIB=$${RANLIB}" \
+ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \
+ html) \
+ || exit 1
+
+@endif target-libgcc4net
+
+.PHONY: maybe-TAGS-target-libgcc4net TAGS-target-libgcc4net
+maybe-TAGS-target-libgcc4net:
+@if target-libgcc4net
+maybe-TAGS-target-libgcc4net: TAGS-target-libgcc4net
+
+TAGS-target-libgcc4net: \
+ configure-target-libgcc4net
+ @: $(MAKE); $(unstage)
+ @[ -f $(TARGET_SUBDIR)/libgcc4net/Makefile ] || exit 0 ; \
+ r=`${PWD_COMMAND}`; export r; \
+ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ $(NORMAL_TARGET_EXPORTS) \
+ echo "Doing TAGS in $(TARGET_SUBDIR)/libgcc4net" ; \
+ for flag in $(EXTRA_TARGET_FLAGS); do \
+ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ done; \
+ (cd $(TARGET_SUBDIR)/libgcc4net && \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ "RANLIB=$${RANLIB}" \
+ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \
+ TAGS) \
+ || exit 1
+
+@endif target-libgcc4net
+
+.PHONY: maybe-install-info-target-libgcc4net install-info-target-libgcc4net
+maybe-install-info-target-libgcc4net:
+@if target-libgcc4net
+maybe-install-info-target-libgcc4net: install-info-target-libgcc4net
+
+install-info-target-libgcc4net: \
+ configure-target-libgcc4net \
+ info-target-libgcc4net
+ @: $(MAKE); $(unstage)
+ @[ -f $(TARGET_SUBDIR)/libgcc4net/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)/libgcc4net" ; \
+ for flag in $(EXTRA_TARGET_FLAGS); do \
+ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ done; \
+ (cd $(TARGET_SUBDIR)/libgcc4net && \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ "RANLIB=$${RANLIB}" \
+ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \
+ install-info) \
+ || exit 1
+
+@endif target-libgcc4net
+
+.PHONY: maybe-install-html-target-libgcc4net install-html-target-libgcc4net
+maybe-install-html-target-libgcc4net:
+@if target-libgcc4net
+maybe-install-html-target-libgcc4net: install-html-target-libgcc4net
+
+install-html-target-libgcc4net: \
+ configure-target-libgcc4net \
+ html-target-libgcc4net
+ @: $(MAKE); $(unstage)
+ @[ -f $(TARGET_SUBDIR)/libgcc4net/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)/libgcc4net" ; \
+ for flag in $(EXTRA_TARGET_FLAGS); do \
+ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ done; \
+ (cd $(TARGET_SUBDIR)/libgcc4net && \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ "RANLIB=$${RANLIB}" \
+ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \
+ install-html) \
+ || exit 1
+
+@endif target-libgcc4net
+
+.PHONY: maybe-installcheck-target-libgcc4net installcheck-target-libgcc4net
+maybe-installcheck-target-libgcc4net:
+@if target-libgcc4net
+maybe-installcheck-target-libgcc4net: installcheck-target-libgcc4net
+
+installcheck-target-libgcc4net: \
+ configure-target-libgcc4net
+ @: $(MAKE); $(unstage)
+ @[ -f $(TARGET_SUBDIR)/libgcc4net/Makefile ] || exit 0 ; \
+ r=`${PWD_COMMAND}`; export r; \
+ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ $(NORMAL_TARGET_EXPORTS) \
+ echo "Doing installcheck in $(TARGET_SUBDIR)/libgcc4net" ; \
+ for flag in $(EXTRA_TARGET_FLAGS); do \
+ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ done; \
+ (cd $(TARGET_SUBDIR)/libgcc4net && \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ "RANLIB=$${RANLIB}" \
+ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \
+ installcheck) \
+ || exit 1
+
+@endif target-libgcc4net
+
+.PHONY: maybe-mostlyclean-target-libgcc4net mostlyclean-target-libgcc4net
+maybe-mostlyclean-target-libgcc4net:
+@if target-libgcc4net
+maybe-mostlyclean-target-libgcc4net: mostlyclean-target-libgcc4net
+
+mostlyclean-target-libgcc4net:
+ @: $(MAKE); $(unstage)
+ @[ -f $(TARGET_SUBDIR)/libgcc4net/Makefile ] || exit 0 ; \
+ r=`${PWD_COMMAND}`; export r; \
+ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ $(NORMAL_TARGET_EXPORTS) \
+ echo "Doing mostlyclean in $(TARGET_SUBDIR)/libgcc4net" ; \
+ for flag in $(EXTRA_TARGET_FLAGS); do \
+ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ done; \
+ (cd $(TARGET_SUBDIR)/libgcc4net && \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ "RANLIB=$${RANLIB}" \
+ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \
+ mostlyclean) \
+ || exit 1
+
+@endif target-libgcc4net
+
+.PHONY: maybe-clean-target-libgcc4net clean-target-libgcc4net
+maybe-clean-target-libgcc4net:
+@if target-libgcc4net
+maybe-clean-target-libgcc4net: clean-target-libgcc4net
+
+clean-target-libgcc4net:
+ @: $(MAKE); $(unstage)
+ @[ -f $(TARGET_SUBDIR)/libgcc4net/Makefile ] || exit 0 ; \
+ r=`${PWD_COMMAND}`; export r; \
+ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ $(NORMAL_TARGET_EXPORTS) \
+ echo "Doing clean in $(TARGET_SUBDIR)/libgcc4net" ; \
+ for flag in $(EXTRA_TARGET_FLAGS); do \
+ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ done; \
+ (cd $(TARGET_SUBDIR)/libgcc4net && \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ "RANLIB=$${RANLIB}" \
+ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \
+ clean) \
+ || exit 1
+
+@endif target-libgcc4net
+
+.PHONY: maybe-distclean-target-libgcc4net distclean-target-libgcc4net
+maybe-distclean-target-libgcc4net:
+@if target-libgcc4net
+maybe-distclean-target-libgcc4net: distclean-target-libgcc4net
+
+distclean-target-libgcc4net:
+ @: $(MAKE); $(unstage)
+ @[ -f $(TARGET_SUBDIR)/libgcc4net/Makefile ] || exit 0 ; \
+ r=`${PWD_COMMAND}`; export r; \
+ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ $(NORMAL_TARGET_EXPORTS) \
+ echo "Doing distclean in $(TARGET_SUBDIR)/libgcc4net" ; \
+ for flag in $(EXTRA_TARGET_FLAGS); do \
+ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ done; \
+ (cd $(TARGET_SUBDIR)/libgcc4net && \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ "RANLIB=$${RANLIB}" \
+ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \
+ distclean) \
+ || exit 1
+
+@endif target-libgcc4net
+
+.PHONY: maybe-maintainer-clean-target-libgcc4net maintainer-clean-target-libgcc4net
+maybe-maintainer-clean-target-libgcc4net:
+@if target-libgcc4net
+maybe-maintainer-clean-target-libgcc4net: maintainer-clean-target-libgcc4net
+
+maintainer-clean-target-libgcc4net:
+ @: $(MAKE); $(unstage)
+ @[ -f $(TARGET_SUBDIR)/libgcc4net/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)/libgcc4net" ; \
+ for flag in $(EXTRA_TARGET_FLAGS); do \
+ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ done; \
+ (cd $(TARGET_SUBDIR)/libgcc4net && \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ "RANLIB=$${RANLIB}" \
+ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \
+ maintainer-clean) \
+ || exit 1
+
+@endif target-libgcc4net
+
+
+
# ----------
# GCC module
# ----------
@@ -40633,6 +41035,7 @@ configure-target-qthreads: stage_last
configure-target-rda: stage_last
configure-target-libada: stage_last
configure-target-libgomp: stage_last
+configure-target-libgcc4net: stage_last
@endif gcc-bootstrap
@if gcc-no-bootstrap
@@ -40656,6 +41059,7 @@ configure-target-qthreads: maybe-all-gcc
configure-target-rda: maybe-all-gcc
configure-target-libada: maybe-all-gcc
configure-target-libgomp: maybe-all-gcc
+configure-target-libgcc4net: maybe-all-gcc
@endif gcc-no-bootstrap
@@ -40667,6 +41071,8 @@ configure-target-gperf: maybe-all-target-libstdc++-v3
configure-target-libada: maybe-all-target-newlib maybe-all-target-libgloss
+configure-target-libgcc4net: maybe-all-target-newlib maybe-all-target-libgloss
+
configure-target-libgfortran: maybe-all-target-newlib maybe-all-target-libgloss
configure-target-libffi: maybe-all-target-newlib maybe-all-target-libgloss
diff --git a/configure b/configure
index d0ad6972073..579da0dff6c 100755
--- a/configure
+++ b/configure
@@ -1345,6 +1345,7 @@ case "${target}" in
cil32-*-*)
unsupported_languages="$unsupported_languages ada fortran java"
skipdirs="$skipdirs target-libssp target-libiberty target-libmudflap"
+ target_configdirs="${target_configdirs} target-libgcc4net"
;;
cris-*-* | crisv32-*-*)
unsupported_languages="$unsupported_languages java"
diff --git a/configure.in b/configure.in
index 7510699cfee..3390eab88a2 100644
--- a/configure.in
+++ b/configure.in
@@ -521,6 +521,7 @@ case "${target}" in
cil32-*-*)
unsupported_languages="$unsupported_languages ada fortran java"
skipdirs="$skipdirs target-libssp target-libiberty target-libmudflap"
+ target_configdirs="${target_configdirs} target-libgcc4net"
;;
cris-*-* | crisv32-*-*)
unsupported_languages="$unsupported_languages java"
diff --git a/gcc/bb-layout.c b/gcc/bb-layout.c
index a8636d2630a..3d82febc750 100644
--- a/gcc/bb-layout.c
+++ b/gcc/bb-layout.c
@@ -1,6 +1,6 @@
/* Layout of basic blocks.
- Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2006-2007 Free Software Foundation, Inc.
This file is part of GCC.
@@ -195,7 +195,7 @@ struct tree_opt_pass pass_bb_layout =
/* ??? If TER is enabled, we also kill gimple. */
0, /* properties_destroyed */
0,
- 0,
+ TODO_dump_func, /* todo_flags_finish */
0 /* letter */
};
diff --git a/gcc/config/cil32/cil32.c b/gcc/config/cil32/cil32.c
index b598d25611f..68a377d7cff 100644
--- a/gcc/config/cil32/cil32.c
+++ b/gcc/config/cil32/cil32.c
@@ -173,51 +173,246 @@ cil32_assemble_integer (rtx x ATTRIBUTE_UNUSED,
return true;
}
-static tree cil32_builtin_va_arg_decl;
-tree cil32_is_LE_decl;
+tree cil32_builtin_va_start_decl;
+tree cil32_builtin_va_arg_decl;
+tree cil32_builtin_va_end_decl;
+tree cil32_builtin_va_copy_decl;
+tree cil32_builtin_is_LE_decl;
+
+tree cil32_va_list_type = NULL_TREE;
+tree cil32_arg_iterator_type;
+
+/* constructors of vector types. */
+/* float */
+tree cil32_v2sf_ctor;
+tree cil32_v4sf_ctor;
+/* 32-bit integer */
+tree cil32_v4qi_ctor;
+tree cil32_v2hi_ctor;
+/* 64-bit integer */
+tree cil32_v8qi_ctor;
+tree cil32_v4hi_ctor;
+tree cil32_v2si_ctor;
+/* 128-bit integer */
+tree cil32_v4si_ctor;
+tree cil32_v8hi_ctor;
+tree cil32_v16qi_ctor;
+
+
+static void
+cil32_build_builtin_types (void)
+{
+ if (cil32_va_list_type == NULL_TREE) {
+ tree f_dummy, record, type_decl;
+
+ record = (*lang_hooks.types.make_type) (RECORD_TYPE);
+ type_decl = build_decl (TYPE_DECL, get_identifier ("__arg_iterator"), record);
+
+ f_dummy = build_decl (FIELD_DECL, get_identifier ("__dummy"), ptr_type_node);
+
+ DECL_FIELD_CONTEXT (f_dummy) = record;
+
+ TREE_CHAIN (record) = type_decl;
+ TYPE_NAME (record) = type_decl;
+ TYPE_FIELDS (record) = f_dummy;
+
+ layout_type (record);
+
+ cil32_arg_iterator_type = record;
+
+ cil32_va_list_type = build_pointer_type (cil32_arg_iterator_type);
+ }
+}
static void
cil32_init_builtins (void)
{
tree arglist;
- tree va_list_ptr_type_node = build_pointer_type (va_list_type_node);
+ cil32_build_builtin_types ();
+
+ arglist = build_tree_list (NULL_TREE, cil32_va_list_type);
+ cil32_builtin_va_start_decl = lang_hooks.builtin_function ("__builtin_cil_va_start",
+ build_function_type (void_type_node,
+ arglist),
+ CIL32_BUILT_IN_VA_START,
+ BUILT_IN_MD,
+ NULL,
+ NULL_TREE);
arglist = build_tree_list (NULL_TREE, ptr_type_node);
- arglist = tree_cons (NULL_TREE, va_list_ptr_type_node, arglist);
- cil32_builtin_va_arg_decl = lang_hooks.builtin_function ("__builtin_va_arg",
+ arglist = tree_cons (NULL_TREE, cil32_va_list_type, arglist);
+ cil32_builtin_va_arg_decl = lang_hooks.builtin_function ("__builtin_cil_va_arg",
build_function_type (ptr_type_node,
arglist),
- CIL32_BUILTIN_VA_ARG,
+ CIL32_BUILT_IN_VA_ARG,
+ BUILT_IN_MD,
+ NULL,
+ NULL_TREE);
+ arglist = build_tree_list (NULL_TREE, cil32_va_list_type);
+ cil32_builtin_va_end_decl = lang_hooks.builtin_function ("__builtin_cil_va_end",
+ build_function_type (void_type_node,
+ arglist),
+ CIL32_BUILT_IN_VA_END,
BUILT_IN_MD,
NULL,
NULL_TREE);
- cil32_is_LE_decl = lang_hooks.builtin_function ("__builtin_isLittleEndian",
- build_function_type (integer_type_node,
- NULL_TREE),
- CIL32_BUILTIN_IS_LITTLE_ENDIAN,
- BUILT_IN_MD,
- NULL,
- NULL_TREE);
+ arglist = build_tree_list (NULL_TREE, cil32_va_list_type);
+ arglist = tree_cons (NULL_TREE, cil32_va_list_type, arglist);
+ cil32_builtin_va_copy_decl = lang_hooks.builtin_function ("__builtin_cil_va_copy",
+ build_function_type (void_type_node,
+ arglist),
+ CIL32_BUILT_IN_VA_COPY,
+ BUILT_IN_MD,
+ NULL,
+ NULL_TREE);
+ cil32_builtin_is_LE_decl = lang_hooks.builtin_function ("__builtin_isLittleEndian",
+ build_function_type (integer_type_node,
+ NULL_TREE),
+ CIL32_BUILT_IN_IS_LITTLE_ENDIAN,
+ BUILT_IN_MD,
+ NULL,
+ NULL_TREE);
+
+ arglist = build_tree_list (NULL_TREE, float_type_node);
+ arglist = tree_cons (NULL_TREE, float_type_node, arglist);
+ cil32_v2sf_ctor = lang_hooks.builtin_function ("V2SF_ctor1",
+ build_function_type (build_vector_type (float_type_node, 2),
+ arglist),
+ CIL32_V2SF_CTOR,
+ BUILT_IN_MD,
+ NULL,
+ NULL_TREE);
+
+ arglist = build_tree_list (NULL_TREE, float_type_node);
+ arglist = tree_cons (NULL_TREE, float_type_node, arglist);
+ arglist = tree_cons (NULL_TREE, float_type_node, arglist);
+ arglist = tree_cons (NULL_TREE, float_type_node, arglist);
+ cil32_v4sf_ctor = lang_hooks.builtin_function ("V4SF_ctor1",
+ build_function_type (build_vector_type (float_type_node, 4),
+ arglist),
+ CIL32_V4SF_CTOR,
+ BUILT_IN_MD,
+ NULL,
+ NULL_TREE);
+
+ arglist = build_tree_list (NULL_TREE, unsigned_intQI_type_node);
+ arglist = tree_cons (NULL_TREE, unsigned_intQI_type_node, arglist);
+ arglist = tree_cons (NULL_TREE, unsigned_intQI_type_node, arglist);
+ arglist = tree_cons (NULL_TREE, unsigned_intQI_type_node, arglist);
+ cil32_v4qi_ctor = lang_hooks.builtin_function ("V4QI_ctor1",
+ build_function_type (build_vector_type (intQI_type_node, 4),
+ arglist),
+ CIL32_V4QI_CTOR,
+ BUILT_IN_MD,
+ NULL,
+ NULL_TREE);
+
+ arglist = build_tree_list (NULL_TREE, unsigned_intHI_type_node);
+ arglist = tree_cons (NULL_TREE, intHI_type_node, arglist);
+ cil32_v2hi_ctor = lang_hooks.builtin_function ("V2HI_ctor1",
+ build_function_type (build_vector_type (intHI_type_node, 2),
+ arglist),
+ CIL32_V2HI_CTOR,
+ BUILT_IN_MD,
+ NULL,
+ NULL_TREE);
+
+ arglist = build_tree_list (NULL_TREE, unsigned_intQI_type_node);
+ arglist = tree_cons (NULL_TREE, unsigned_intQI_type_node, arglist);
+ arglist = tree_cons (NULL_TREE, unsigned_intQI_type_node, arglist);
+ arglist = tree_cons (NULL_TREE, unsigned_intQI_type_node, arglist);
+ arglist = tree_cons (NULL_TREE, unsigned_intQI_type_node, arglist);
+ arglist = tree_cons (NULL_TREE, unsigned_intQI_type_node, arglist);
+ arglist = tree_cons (NULL_TREE, unsigned_intQI_type_node, arglist);
+ arglist = tree_cons (NULL_TREE, unsigned_intQI_type_node, arglist);
+ cil32_v8qi_ctor = lang_hooks.builtin_function ("V8QI_ctor1",
+ build_function_type (build_vector_type (intQI_type_node, 8),
+ arglist),
+ CIL32_V8QI_CTOR,
+ BUILT_IN_MD,
+ NULL,
+ NULL_TREE);
+
+ arglist = build_tree_list (NULL_TREE, unsigned_intHI_type_node);
+ arglist = tree_cons (NULL_TREE, unsigned_intHI_type_node, arglist);
+ arglist = tree_cons (NULL_TREE, unsigned_intHI_type_node, arglist);
+ arglist = tree_cons (NULL_TREE, unsigned_intHI_type_node, arglist);
+ cil32_v4hi_ctor = lang_hooks.builtin_function ("V4HI_ctor1",
+ build_function_type (build_vector_type (intHI_type_node, 4),
+ arglist),
+ CIL32_V4HI_CTOR,
+ BUILT_IN_MD,
+ NULL,
+ NULL_TREE);
+
+ arglist = build_tree_list (NULL_TREE, unsigned_intSI_type_node);
+ arglist = tree_cons (NULL_TREE, unsigned_intSI_type_node, arglist);
+ cil32_v2si_ctor = lang_hooks.builtin_function ("V2SI_ctor1",
+ build_function_type (build_vector_type (intSI_type_node, 2),
+ arglist),
+ CIL32_V2SI_CTOR,
+ BUILT_IN_MD,
+ NULL,
+ NULL_TREE);
+
+ arglist = build_tree_list (NULL_TREE, unsigned_intSI_type_node);
+ arglist = tree_cons (NULL_TREE, unsigned_intSI_type_node, arglist);
+ arglist = tree_cons (NULL_TREE, unsigned_intSI_type_node, arglist);
+ arglist = tree_cons (NULL_TREE, unsigned_intSI_type_node, arglist);
+ cil32_v4si_ctor = lang_hooks.builtin_function ("V4SI_ctor1",
+ build_function_type (build_vector_type (intSI_type_node, 4),
+ arglist),
+ CIL32_V4SI_CTOR,
+ BUILT_IN_MD,
+ NULL,
+ NULL_TREE);
+
+ arglist = build_tree_list (NULL_TREE, unsigned_intHI_type_node);
+ arglist = tree_cons (NULL_TREE, unsigned_intHI_type_node, arglist);
+ arglist = tree_cons (NULL_TREE, unsigned_intHI_type_node, arglist);
+ arglist = tree_cons (NULL_TREE, unsigned_intHI_type_node, arglist);
+ arglist = tree_cons (NULL_TREE, unsigned_intHI_type_node, arglist);
+ arglist = tree_cons (NULL_TREE, unsigned_intHI_type_node, arglist);
+ arglist = tree_cons (NULL_TREE, unsigned_intHI_type_node, arglist);
+ arglist = tree_cons (NULL_TREE, unsigned_intHI_type_node, arglist);
+ cil32_v8hi_ctor = lang_hooks.builtin_function ("V8HI_ctor1",
+ build_function_type (build_vector_type (intHI_type_node, 8),
+ arglist),
+ CIL32_V8HI_CTOR,
+ BUILT_IN_MD,
+ NULL,
+ NULL_TREE);
+
+ arglist = build_tree_list (NULL_TREE, unsigned_intQI_type_node);
+ arglist = tree_cons (NULL_TREE, unsigned_intQI_type_node, arglist);
+ arglist = tree_cons (NULL_TREE, unsigned_intQI_type_node, arglist);
+ arglist = tree_cons (NULL_TREE, unsigned_intQI_type_node, arglist);
+ arglist = tree_cons (NULL_TREE, unsigned_intQI_type_node, arglist);
+ arglist = tree_cons (NULL_TREE, unsigned_intQI_type_node, arglist);
+ arglist = tree_cons (NULL_TREE, unsigned_intQI_type_node, arglist);
+ arglist = tree_cons (NULL_TREE, unsigned_intQI_type_node, arglist);
+ arglist = tree_cons (NULL_TREE, unsigned_intQI_type_node, arglist);
+ arglist = tree_cons (NULL_TREE, unsigned_intQI_type_node, arglist);
+ arglist = tree_cons (NULL_TREE, unsigned_intQI_type_node, arglist);
+ arglist = tree_cons (NULL_TREE, unsigned_intQI_type_node, arglist);
+ arglist = tree_cons (NULL_TREE, unsigned_intQI_type_node, arglist);
+ arglist = tree_cons (NULL_TREE, unsigned_intQI_type_node, arglist);
+ arglist = tree_cons (NULL_TREE, unsigned_intQI_type_node, arglist);
+ arglist = tree_cons (NULL_TREE, unsigned_intQI_type_node, arglist);
+ cil32_v16qi_ctor = lang_hooks.builtin_function ("V16QI_ctor1",
+ build_function_type (build_vector_type (intQI_type_node, 16),
+ arglist),
+ CIL32_V16QI_CTOR,
+ BUILT_IN_MD,
+ NULL,
+ NULL_TREE);
}
static tree
cil32_build_builtin_va_list (void)
{
- tree f_dummy, record, type_decl;
-
- record = (*lang_hooks.types.make_type) (RECORD_TYPE);
- type_decl = build_decl (TYPE_DECL, get_identifier ("__va_list"), record);
-
- f_dummy = build_decl (FIELD_DECL, get_identifier ("__dummy"), ptr_type_node);
-
- DECL_FIELD_CONTEXT (f_dummy) = record;
-
- TREE_CHAIN (record) = type_decl;
- TYPE_NAME (record) = type_decl;
- TYPE_FIELDS (record) = f_dummy;
-
- layout_type (record);
- return record;
+ cil32_build_builtin_types ();
+ return cil32_va_list_type;
}
static tree
@@ -226,11 +421,7 @@ cil32_gimplify_va_arg (tree valist, tree type, tree *pre_p ATTRIBUTE_UNUSED, tre
tree fcall;
tree ptr_type = build_pointer_type (type);
tree arglist = build_tree_list (NULL_TREE, build_int_cstu (ptr_type, 0));
- arglist = tree_cons (NULL_TREE,
- build1 (ADDR_EXPR,
- build_pointer_type (va_list_type_node),
- valist),
- arglist);
+ arglist = tree_cons (NULL_TREE, valist, arglist);
fcall = build_function_call_expr (cil32_builtin_va_arg_decl, arglist);
TREE_TYPE (fcall) = ptr_type;
return build1 (INDIRECT_REF, type, fcall);
diff --git a/gcc/config/cil32/cil32.h b/gcc/config/cil32/cil32.h
index 3769f4495c9..e725352e16f 100644
--- a/gcc/config/cil32/cil32.h
+++ b/gcc/config/cil32/cil32.h
@@ -1,6 +1,6 @@
/* Definitions for GCC. Part of the machine description for cil32.
- Copyright (C) 2006 Free Software Foundation, Inc.
+ Copyright (C) 2006-2007 Free Software Foundation, Inc.
This file is part of GCC.
@@ -48,6 +48,9 @@ Roberto Costa <roberto.costa@st.com> */
#define STARTFILE_SPEC ""
#define ENDFILE_SPEC ""
+/* This is undefined macro for collect2 disabling */
+#define LINKER_NAME "ld"
+
/* Node: Run-time Target */
#define TARGET_CPU_CPP_BUILTINS() \
@@ -523,16 +526,48 @@ struct cum_args {int regs;};
#define NO_IMPLICIT_EXTERN_C
extern struct tree_opt_pass pass_gen_cil;
-extern struct tree_opt_pass pass_simp_cil;
+extern struct tree_opt_pass pass_simp_cil_early;
+extern struct tree_opt_pass pass_simp_cil_final;
/* cil32 builtin ID */
enum cil32_builtin
{
- CIL32_BUILTIN_VA_ARG,
- CIL32_BUILTIN_IS_LITTLE_ENDIAN
+ CIL32_BUILT_IN_VA_START,
+ CIL32_BUILT_IN_VA_ARG,
+ CIL32_BUILT_IN_VA_END,
+ CIL32_BUILT_IN_VA_COPY,
+ CIL32_BUILT_IN_IS_LITTLE_ENDIAN,
+ CIL32_V2SF_CTOR,
+ CIL32_V4SF_CTOR,
+ CIL32_V4QI_CTOR,
+ CIL32_V2HI_CTOR,
+ CIL32_V8QI_CTOR,
+ CIL32_V4HI_CTOR,
+ CIL32_V2SI_CTOR,
+ CIL32_V4SI_CTOR,
+ CIL32_V8HI_CTOR,
+ CIL32_V16QI_CTOR
};
-extern tree cil32_is_LE_decl;
+extern tree cil32_builtin_va_start_decl;
+extern tree cil32_builtin_va_arg_decl;
+extern tree cil32_builtin_va_end_decl;
+extern tree cil32_builtin_va_copy_decl;
+extern tree cil32_builtin_is_LE_decl;
+
+extern tree cil32_va_list_type;
+extern tree cil32_arg_iterator_type;
+
+extern tree cil32_v2sf_ctor;
+extern tree cil32_v4sf_ctor;
+extern tree cil32_v4qi_ctor;
+extern tree cil32_v2hi_ctor;
+extern tree cil32_v8qi_ctor;
+extern tree cil32_v4hi_ctor;
+extern tree cil32_v2si_ctor;
+extern tree cil32_v4si_ctor;
+extern tree cil32_v8hi_ctor;
+extern tree cil32_v16qi_ctor;
/*
* Local variables:
diff --git a/gcc/config/cil32/gcc4net.cs b/gcc/config/cil32/gcc4net.cs
deleted file mode 100644
index 85d5206fb7c..00000000000
--- a/gcc/config/cil32/gcc4net.cs
+++ /dev/null
@@ -1,141 +0,0 @@
-/* Run-time support required by CIL binaries.
-
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-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 2, 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 COPYING. If not, write to the Free
-Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301, USA.
-
-Authors:
- Andrea Bona
- Andrea Ornstein
- Erven Rohou
- Roberto Costa
-
-Contact information at STMicroelectronics:
-Roberto Costa <roberto.costa@st.com> */
-
-using System;
-using System.Collections;
-using System.Reflection;
-using System.Runtime.InteropServices;
-
-namespace gcc4net {
- public unsafe sealed class StartupHelper {
-
- public unsafe static IntPtr GetArgv(out int argc) {
- String[] argv = Environment.GetCommandLineArgs();
- argc = argv.Length;
- int ptr_size = (int)(sizeof(void*));
- int size = (argc + 1) * ptr_size;
- IntPtr res = Marshal.AllocHGlobal(size);
-
- for (int i=0; i < argc; ++i) {
- Marshal.WriteIntPtr(res, ptr_size * i,
- Marshal.StringToHGlobalAnsi(argv[i]));
- }
- Marshal.WriteIntPtr(res, ptr_size * argc, IntPtr.Zero);
-
- return res;
- }
-
- public unsafe static IntPtr GetEnvVars() {
- IDictionary env = Environment.GetEnvironmentVariables();
- int num_elems = env.Keys.Count;
- int ptr_size = (int)(sizeof(void*));
- int size = (num_elems + 1) * ptr_size;
- IntPtr res = Marshal.AllocHGlobal(size);
-
- int i = 0;
- foreach (DictionaryEntry de in env) {
- String str = de.Key + "=" + de.Value;
- Marshal.WriteIntPtr(res, ptr_size * i,
- Marshal.StringToHGlobalAnsi(str));
- ++i;
- }
- Marshal.WriteIntPtr(res, ptr_size * num_elems, IntPtr.Zero);
-
- return res;
- }
-
- public unsafe static void Startup() {
- Assembly assembly;
- MethodInfo initMethod = null;
-
- // Find the module that contains the "main" function.
- assembly = Assembly.GetEntryAssembly();
-
- Type type = assembly.GetType("<Module>");
- if (type != null)
- initMethod = type.GetMethod(".init");
- else {
- Module module = assembly.GetModules()[0];
- initMethod = module.GetMethod(".init");
- }
-
- // Invoke the application's ".init" function, if present.
- if(initMethod != null)
- initMethod.Invoke(null, null);
- }
-
- public unsafe static void Shutdown(int status) {
- }
-
- }
-
- public sealed class Crt {
- public static int __minsi3(int a, int b) { return (a<=b) ? a : b; }
- public static long __minti3(long a, long b) { return (a<=b) ? a : b; }
- public static uint __uminsi3(uint a, uint b) { return (a<=b) ? a : b; }
- public static ulong __uminti3(ulong a, ulong b) { return (a<=b) ? a : b; }
- public static float __minsf3(float a, float b) { return (a<=b) ? a : b; }
- public static double __mindf3(double a, double b) { return (a<=b) ? a : b; }
-
- public static int __maxsi3(int a, int b) { return (a>=b) ? a : b; }
- public static long __maxti3(long a, long b) { return (a>=b) ? a : b; }
- public static uint __umaxsi3(uint a, uint b) { return (a>=b) ? a : b; }
- public static ulong __umaxti3(ulong a, ulong b) { return (a>=b) ? a : b; }
- public static float __maxsf3(float a, float b) { return (a>=b) ? a : b; }
- public static double __maxdf3(double a, double b) { return (a>=b) ? a : b; }
-
- public static int __abssi2(int a) { return (a>=0) ? a : -a; }
- public static long __absti2(long a) { return (a>=0) ? a : -a; }
- public static float __abssf2(float a) { return (a>=0) ? a : -a; }
- public static double __absdf2(double a) { return (a>=0) ? a : -a; }
-
- public static unsafe bool __isLittleEndian() {
- // big endian: 3f f0 00 00 00 00 00 00
- // little endian: 00 00 00 00 00 00 f0 3f
- double d = 1.0;
- byte* b = (byte*)&d;
- return b[0]==0;
- }
- }
-
- namespace CQualifiers {
- /* Optional modifier class used to mark "const" types */
- public sealed class IsConst {
- }
-
- /* Optional modifier class used to mark "restrict" types */
- public sealed class IsRestrict {
- }
-
- /* Optional modifier class used to mark "volatile" types */
- public sealed class IsVolatile {
- }
- }
-}
diff --git a/gcc/config/cil32/gen-cil.c b/gcc/config/cil32/gen-cil.c
index 65f347cefbb..e339cd74859 100644
--- a/gcc/config/cil32/gen-cil.c
+++ b/gcc/config/cil32/gen-cil.c
@@ -1,6 +1,6 @@
/* Dump of the GENERIC trees in CIL.
- Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2006-2007 Free Software Foundation, Inc.
This file is part of GCC.
@@ -107,10 +107,12 @@ static char * get_compact_identifier (const char *, size_t, size_t *);
static tree make_valuetype_identifier (tree);
static void print_valuetype_decl (FILE *, tree);
static void dump_type (FILE *, tree, bool, bool);
+static void dump_complex_type (FILE *, tree, bool);
+static void dump_vector_type (FILE *, tree, bool);
static void dump_type_promotion (FILE *, tree, bool);
-static void dump_type_promoted_type_def (FILE *, tree, bool);
+static bool dump_type_promoted_type_def (FILE *, tree);
static void dump_type_for_builtin (FILE *, tree, bool);
-static void dump_type_eval_mode (FILE *, tree, bool);
+static void dump_type_eval_mode (FILE *, tree, bool, bool);
static void stack_set (unsigned int) ATTRIBUTE_UNUSED;
static void stack_reset (void);
@@ -141,6 +143,7 @@ static unsigned int pointer_next_id = 0;
static unsigned int stack;
static unsigned int max_stack;
static basic_block bb;
+static tree addr_taken_labels = NULL;
/* Hashing and equality routines for pointer id hash table. */
@@ -167,7 +170,7 @@ static void
mark_var_defs_uses (tree node)
{
if (node == NULL_TREE || node == error_mark_node)
- return; /* ER: was spc */
+ return;
switch (TREE_CODE (node))
{
@@ -182,8 +185,6 @@ mark_var_defs_uses (tree node)
case CALL_EXPR:
{
tree args = TREE_OPERAND (node, 1);
- tree fun_expr;
- tree dfun = NULL_TREE;
mark_var_defs_uses (TREE_OPERAND (node, 0));
@@ -192,69 +193,6 @@ mark_var_defs_uses (tree node)
mark_var_defs_uses (TREE_VALUE (args));
args = TREE_CHAIN (args);
}
-
- fun_expr = TREE_OPERAND (node, 0);
- if (TREE_CODE (fun_expr) == ADDR_EXPR
- && TREE_CODE (TREE_OPERAND (fun_expr, 0)) == FUNCTION_DECL)
- dfun = TREE_OPERAND (fun_expr, 0);
-
- /* Calls to some built-in functions require ad-hoc simplifications */
- if (dfun && DECL_BUILT_IN (dfun))
- {
- if (DECL_BUILT_IN_CLASS (dfun) == BUILT_IN_MD)
- {
- switch (DECL_FUNCTION_CODE (dfun))
- {
- case CIL32_BUILTIN_VA_ARG:
- {
- tree va = TREE_VALUE (TREE_OPERAND (node, 1));
-
- gcc_assert (TREE_CODE (va) == ADDR_EXPR
- || TREE_CODE (va) == VAR_DECL);
-
- if (TREE_CODE (va) == VAR_DECL)
- TREE_LANG_FLAG_0 (va) = true;
- }
- break;
-
- default:
- ;
- }
- }
- else
- {
- switch (DECL_FUNCTION_CODE (dfun))
- {
- case BUILT_IN_VA_START:
- case BUILT_IN_VA_END:
- {
- tree va = TREE_VALUE (TREE_OPERAND (node, 1));
-
- gcc_assert (TREE_CODE (va) == ADDR_EXPR
- || TREE_CODE (va) == VAR_DECL);
-
- if (TREE_CODE (va) == VAR_DECL)
- TREE_LANG_FLAG_0 (va) = true;
- }
- break;
-
- case BUILT_IN_VA_COPY:
- {
- tree va_dest = TREE_VALUE (TREE_OPERAND (node, 1));
-
- gcc_assert (TREE_CODE (va_dest) == ADDR_EXPR);
- gcc_assert (TREE_CODE (TREE_OPERAND (va_dest, 0)) == VAR_DECL
- && !DECL_FILE_SCOPE_P (TREE_OPERAND (va_dest, 0)));
-
- TREE_LANG_FLAG_0 (TREE_OPERAND (va_dest, 0)) = true;
- }
- break;
-
- default:
- ;
- }
- }
- }
}
break;
@@ -288,6 +226,7 @@ mark_var_defs_uses (tree node)
case UNLE_EXPR:
case UNGT_EXPR:
case UNGE_EXPR:
+ case COMPLEX_EXPR:
mark_var_defs_uses (TREE_OPERAND (node, 0));
mark_var_defs_uses (TREE_OPERAND (node, 1));
break;
@@ -336,11 +275,27 @@ mark_var_defs_uses (tree node)
case FLOAT_EXPR:
case FIX_TRUNC_EXPR:
case ABS_EXPR:
- case RETURN_EXPR:
case WITH_SIZE_EXPR:
+ case VIEW_CONVERT_EXPR:
+ case REALPART_EXPR:
+ case IMAGPART_EXPR:
mark_var_defs_uses (TREE_OPERAND (node, 0));
break;
+ case RETURN_EXPR:
+ {
+ tree op = TREE_OPERAND (node, 0);
+
+ if (op)
+ {
+ if (TREE_CODE (op) == MODIFY_EXPR)
+ mark_var_defs_uses (TREE_OPERAND (op, 1));
+ else
+ mark_var_defs_uses (op);
+ }
+ }
+ break;
+
case ARRAY_REF:
gcc_assert (integer_zerop (TREE_OPERAND (node, 1)));
case ADDR_EXPR:
@@ -355,6 +310,7 @@ mark_var_defs_uses (tree node)
}
break;
+ case COMPLEX_CST:
case INTEGER_CST:
case REAL_CST:
case STRING_CST:
@@ -385,7 +341,8 @@ mark_var_defs_uses (tree node)
break;
default:
- fprintf (stderr, "mark_var_defs_uses: Cannot handle ");
+ fprintf (stderr, "mark_var_defs_uses: Cannot handle '%s' ",
+ tree_code_name [TREE_CODE (node)]);
debug_generic_expr (node);
gcc_assert (0);
}
@@ -413,7 +370,7 @@ remove_stloc_ldloc (block_stmt_iterator bsi, tree *node_ptr, bool *mod)
block_stmt_iterator prev_bsi;
if (node == NULL_TREE || node == error_mark_node)
- return; /* ER: was spc */
+ return;
/* Get iterator for the previous statememt */
prev_bsi = bsi;
@@ -502,11 +459,24 @@ remove_stloc_ldloc (block_stmt_iterator bsi, tree *node_ptr, bool *mod)
case INDIRECT_REF:
case ARRAY_REF:
case ABS_EXPR:
- case RETURN_EXPR:
case WITH_SIZE_EXPR:
remove_stloc_ldloc (bsi, &TREE_OPERAND (node, 0), mod);
break;
+ case RETURN_EXPR:
+ {
+ tree op = TREE_OPERAND (node, 0);
+
+ if (op)
+ {
+ if (TREE_CODE (op) == MODIFY_EXPR)
+ remove_stloc_ldloc (bsi, &TREE_OPERAND (op, 1), mod);
+ else
+ remove_stloc_ldloc (bsi, &TREE_OPERAND (node, 0), mod);
+ }
+ }
+ break;
+
case VAR_DECL:
/* mark_var_defs_uses (...) function sets TREE_LANG_FLAG_0
for some variables that shouldn't be removed. */
@@ -638,6 +608,9 @@ mark_referenced_type (tree t)
t = TYPE_MAIN_VARIANT (t);
+ if (t == cil32_arg_iterator_type)
+ return;
+
/* If the type was already referenced, nothing else to do */
if (pointer_set_contains (referenced_types, t))
return;
@@ -716,7 +689,10 @@ mark_referenced_type (tree t)
while (tmp)
{
- mark_referenced_type (TREE_TYPE (tmp));
+ if (DECL_BIT_FIELD (tmp))
+ mark_referenced_type (DECL_BIT_FIELD_TYPE (tmp));
+ else
+ mark_referenced_type (TREE_TYPE (tmp));
tmp = TREE_CHAIN (tmp);
}
}
@@ -865,14 +841,14 @@ dump_entry_label_name (FILE *stream, basic_block bb)
{
tree stmt = bsi_stmt (bsi);
if (TREE_CODE (stmt) == LABEL_EXPR)
- {
- tree op0 = TREE_OPERAND (stmt, 0);
- dump_label_name (stream, op0);
- }
+ {
+ tree op0 = TREE_OPERAND (stmt, 0);
+ dump_label_name (stream, op0);
+ }
else
- {
- fprintf (stream, "<no label>");
- }
+ {
+ fprintf (stream, "<no label>");
+ }
}
else
{
@@ -924,7 +900,8 @@ dump_fun_type (FILE *stream, tree fun_type, tree fun, const char *name, bool ref
gcc_assert (! (fun && name));
- mark_referenced_type (fun_type);
+ if (ref)
+ mark_referenced_type (fun_type);
args_type = TYPE_ARG_TYPES (fun_type);
@@ -1002,7 +979,7 @@ dump_type (FILE *file, tree node, bool ref, bool qualif)
/* node = TYPE_MAIN_VARIANT (node); */
- if (TYPE_MAIN_VARIANT (node) == va_list_type_node)
+ if (TYPE_MAIN_VARIANT (node) == cil32_arg_iterator_type)
{
fputs ("valuetype [mscorlib]System.ArgIterator", file);
return;
@@ -1093,32 +1070,13 @@ dump_type (FILE *file, tree node, bool ref, bool qualif)
break;
case VECTOR_TYPE:
- {
- int type_size = TREE_INT_CST_LOW (TYPE_SIZE (node));
- tree innertype = TREE_TYPE (node);
- enum machine_mode innermode = TYPE_MODE (innertype);
-
- /* Only expect integer vectors */
- gcc_assert (GET_MODE_CLASS (innermode) == MODE_INT);
-
- /* and emit as corresponding same-size integer mode */
- if (TYPE_UNSIGNED (node))
- fputs ("unsigned ", file);
-
- switch (type_size)
- {
- case 8: fputs ("int8", file); break;
- case 16: fputs ("int16", file); break;
- case 32: fputs ("int32", file); break;
- case 64: fputs ("int64", file); break;
- default:
- fprintf (stderr, "Unsupported integer size %d\n", type_size);
- gcc_assert (0);
- }
- }
+ dump_vector_type (file, node, true);
break;
case COMPLEX_TYPE:
+ dump_complex_type (file, node, true);
+ break;
+
case REFERENCE_TYPE:
default:
@@ -1143,6 +1101,102 @@ dump_type (FILE *file, tree node, bool ref, bool qualif)
}
+
+static void
+dump_complex_type (FILE *file, tree node, bool full)
+{
+ int type_size = TYPE_PRECISION (TREE_TYPE (node));
+
+ gcc_assert (TREE_CODE (node) == COMPLEX_TYPE);
+
+ if (full)
+ fputs ("valuetype [gcc4net]gcc4net.", file);
+
+ fputs ("complex_", file);
+ if (GET_MODE_CLASS (TYPE_MODE (TREE_TYPE (node))) == MODE_INT)
+ {
+ if (TYPE_UNSIGNED (node))
+ fputs ("u", file);
+
+ switch (type_size)
+ {
+ case 8: fputs ("char", file); break;
+ case 16: fputs ("short", file); break;
+ case 32: fputs ("int", file); break;
+ case 64: fputs ("long", file); break;
+ default:
+ fprintf (stderr, "Unsupported complex size %d\n", type_size);
+ gcc_assert (0);
+ }
+ }
+ else
+ {
+ switch (type_size)
+ {
+ case 32: fputs ("float", file); break;
+ case 64: fputs ("double", file); break;
+ default:
+ fprintf (stderr, "Unsupported complex size %d\n", type_size);
+ gcc_assert (0);
+ }
+ }
+}
+
+
+/* Dump vector type NODE.
+
+ FULL tells whether the type must be qualified with the 'valuetype' keyword,
+ assembly and namespace.
+ NODE must be a type node of type VECTOR_TYPE. */
+
+static void
+dump_vector_type (FILE *file, tree node, bool full)
+{
+ int vec_bitsize = TREE_INT_CST_LOW (TYPE_SIZE (node));
+ tree innertype = TREE_TYPE (node);
+ int inner_bitsize = TYPE_PRECISION (innertype);
+ enum machine_mode innermode = TYPE_MODE (innertype);
+
+ gcc_assert (TREE_CODE (node) == VECTOR_TYPE);
+
+ if (full)
+ fputs ("valuetype [gcc4net]gcc4net.", file);
+
+ fprintf (file, "V%d", vec_bitsize / inner_bitsize);
+
+ if (GET_MODE_CLASS (innermode) == MODE_INT)
+ {
+ switch (inner_bitsize)
+ {
+ case 8: fputs ("QI", file); break;
+ case 16: fputs ("HI", file); break;
+ case 32: fputs ("SI", file); break;
+ case 64: fputs ("DI", file); break;
+ default:
+ fprintf (stderr, "Unsupported integer size %d\n", inner_bitsize);
+ gcc_assert (0);
+ }
+ }
+ else if (GET_MODE_CLASS (innermode) == MODE_FLOAT)
+ {
+ switch (inner_bitsize)
+ {
+ case 32: fputs ("SF", file); break;
+ case 64: fputs ("DF", file); break;
+ default:
+ fprintf (stderr, "Unsupported float size %d\n", inner_bitsize);
+ gcc_assert (0);
+ }
+ }
+ else
+ {
+ fprintf (stderr, "Unsupported mode class\n");
+ gcc_assert (0);
+ }
+
+}
+
+
/* Dump type NODE, promoted following C conventions for var args.
REF tells whether the function type (and the types of the return value
and of the incoming parameters) have to be marked as referenced.
@@ -1175,6 +1229,10 @@ dump_type_promotion (FILE *stream, tree node, bool ref)
dump_valuetype_name (stream, node);
break;
+ case COMPLEX_TYPE:
+ dump_complex_type (stream, node, true);
+ break;
+
case ENUMERAL_TYPE:
case INTEGER_TYPE:
case BOOLEAN_TYPE:
@@ -1196,7 +1254,10 @@ dump_type_promotion (FILE *stream, tree node, bool ref)
pointer:
case POINTER_TYPE:
- fputs ("native int", stream);
+ /* cil32 is a 32bit machine, in case we support 64bit model
+ * changes are needed
+ */
+ fputs ("unsigned int32", stream);
break;
default:
@@ -1208,15 +1269,16 @@ dump_type_promotion (FILE *stream, tree node, bool ref)
/* Dump the type def of type NODE, promoted following C conventions
for var args.
- REF tells whether the function type (and the types of the return value
- and of the incoming parameters) have to be marked as referenced.
- NODE must be a type node. */
+ NODE must be a type node.
+ returns true iff the dumped type is a pointer */
-static void
-dump_type_promoted_type_def (FILE *stream, tree node, bool ref)
+static bool
+dump_type_promoted_type_def (FILE *stream, tree node)
{
+ bool result = false;
+
if (node == NULL_TREE || node == error_mark_node)
- return;
+ return false;
switch (TREE_CODE (node))
{
@@ -1231,14 +1293,17 @@ dump_type_promoted_type_def (FILE *stream, tree node, bool ref)
node = TYPE_MAIN_VARIANT (node);
/* Reference the type if told to do so */
- if (ref)
- mark_referenced_type (node);
+ mark_referenced_type (node);
/* Print the name of the structure. */
fputs ("valuetype ", stream);
dump_valuetype_name (stream, node);
break;
+ case COMPLEX_TYPE:
+ dump_complex_type (stream, node, true);
+ break;
+
case ENUMERAL_TYPE:
case INTEGER_TYPE:
case BOOLEAN_TYPE:
@@ -1260,7 +1325,11 @@ dump_type_promoted_type_def (FILE *stream, tree node, bool ref)
pointer:
case POINTER_TYPE:
- fputs ("class [mscorlib]System.IntPtr", stream);
+ /* cil32 is a 32bit machine, in case we support 64bit model
+ * changes are needed
+ */
+ fputs ("class [mscorlib]System.UInt32", stream);
+ result = true;
break;
default:
@@ -1268,6 +1337,7 @@ dump_type_promoted_type_def (FILE *stream, tree node, bool ref)
gcc_assert (0);
break;
}
+ return result;
}
static void
@@ -1325,7 +1395,7 @@ dump_type_for_builtin (FILE *file, tree node, bool all_types)
}
static void
-dump_type_eval_mode (FILE *stream, tree node, bool all_types)
+dump_type_eval_mode (FILE *stream, tree node, bool all_types, bool sign)
{
if (node == NULL_TREE || node == error_mark_node)
return;
@@ -1338,12 +1408,15 @@ dump_type_eval_mode (FILE *stream, tree node, bool all_types)
{
int type_size = GET_MODE_BITSIZE (TYPE_MODE (node));
+ if (sign && TYPE_UNSIGNED (node))
+ fputs ("u", stream);
+
switch (type_size)
{
case 8: if (all_types) { fputs ("qi", stream); break; }
case 16: if (all_types) { fputs ("hi", stream); break; }
case 32: fputs ("si", stream); break;
- case 64: fputs ("ti", stream); break;
+ case 64: fputs ("di", stream); break;
default:
fprintf (stderr, "Unsupported integer size %d\n", type_size);
gcc_assert (0);
@@ -1367,6 +1440,10 @@ dump_type_eval_mode (FILE *stream, tree node, bool all_types)
}
break;
+ case VECTOR_TYPE:
+ dump_vector_type (stream, node, false);
+ break;
+
default:
fprintf (stderr, "%s: %s\n", __func__, tree_code_name[TREE_CODE (node)]);
gcc_assert (0);
@@ -1422,6 +1499,26 @@ compute_addr_expr (FILE *file, tree t)
stack_push (1);
break;
+ case LABEL_DECL:
+ {
+ /* We cannot emit the address of the label in CIL, so we map each
+ label to an ID and emit the ID. The GOTO will then be implemented
+ with a switch based on that ID. The ID is simply the position in
+ the list of all address taken labels. */
+
+ int pos = 0;
+ tree label_iter = addr_taken_labels;
+ while (label_iter != t)
+ {
+ gcc_assert (label_iter);
+ ++pos;
+ label_iter = TREE_CHAIN (label_iter);
+ }
+ fprintf (file, "\n\tldc.i4\t%d", pos);
+ stack_push (1);
+ }
+ break;
+
case INDIRECT_REF:
gen_cil_node (file, TREE_OPERAND (t, 0));
break;
@@ -1741,7 +1838,7 @@ gen_cil_node (FILE *file, tree node)
tree op0, op1;
if (node == NULL_TREE || node == error_mark_node)
- return; /* ER: was spc */
+ return;
if (TARGET_EMIT_GIMPLE_COMMENTS && EXPR_HAS_LOCATION (node))
{
@@ -1772,6 +1869,30 @@ gen_cil_node (FILE *file, tree node)
}
break;
+ case COMPLEX_CST:
+ {
+ tree cplx_type = TREE_TYPE (node);
+ tree re = TREE_REALPART (node);
+ tree im = TREE_IMAGPART (node);
+
+ gen_cil_node (file, re);
+ gen_cil_node (file, im);
+ fputs ("\n\tcall ", file);
+ dump_complex_type (file, cplx_type, true);
+ fputs (" [gcc4net]gcc4net.", file);
+ dump_complex_type(file, cplx_type, false);
+ fputs ("::", file);
+ dump_complex_type(file, cplx_type, false);
+ fputs ("_ctor (", file);
+ dump_type (file, TREE_TYPE (re), false, false);
+ fputs (", ", file);
+ dump_type (file, TREE_TYPE (re), false, false);
+ fputs (")", file);
+ stack_pop (2);
+ stack_push (1);
+ }
+ break;
+
case REAL_CST:
{
REAL_VALUE_TYPE d;
@@ -1810,9 +1931,9 @@ gen_cil_node (FILE *file, tree node)
case VECTOR_CST:
{
+ int num_elt = 0;
+ int i;
tree elt;
- unsigned HOST_WIDEST_INT val = 0;
- double_int val_di;
tree vector_type = TREE_TYPE (node);
int vector_bitsize = TREE_INT_CST_LOW (TYPE_SIZE (vector_type));
tree unit_type = TREE_TYPE (vector_type);
@@ -1820,35 +1941,49 @@ gen_cil_node (FILE *file, tree node)
gcc_assert (HOST_BITS_PER_WIDEST_INT >= 64);
- /* At this time, support up to 64-bit vectors */
- if (vector_bitsize > 64)
- internal_error ("\nVECTOR_CST size %d\n", vector_bitsize);
-
for (elt = TREE_VECTOR_CST_ELTS (node); elt; elt = TREE_CHAIN (elt))
{
tree elt_val = TREE_VALUE (elt);
- switch (TREE_CODE (elt_val))
- {
- case INTEGER_CST:
- gcc_assert (TREE_INT_CST_HIGH (elt_val) == 0);
- val = (val << unit_bitsize) | TREE_INT_CST_LOW (elt_val);
- break;
-
- default:
- internal_error ("\nldc: unsupported VECTOR_CST type\n");
- break;
- }
+ gen_cil_node (file, elt_val);
+ ++num_elt;
}
+ /* Fill in the missing initializers, if any */
+ for ( ; num_elt < vector_bitsize/unit_bitsize; ++num_elt)
+ {
+ if (GET_MODE_CLASS (TYPE_MODE (unit_type)) == MODE_INT)
+ {
+ fputs ("\n\tldc.i4.0", file);
+ }
+ else if (GET_MODE_CLASS (TYPE_MODE (unit_type)) == MODE_FLOAT)
+ {
+ fputs ("\n\tldc.r4 0.0", file);
+ }
+ else
+ internal_error ("\n\nDo not know how to initialize vector\n");
- val_di.low = val;
- val_di.high = (HOST_WIDE_INT)(val >> HOST_BITS_PER_WIDE_INT);
-
- if (vector_bitsize <= 32)
- fputs ("\n\tldc.i4\t", file);
- else
- fputs ("\n\tldc.i8\t", file);
- dump_double_int (file, val_di, false);
+ stack_push (1);
+ }
+ fputs ("\n\tcall ", file);
+ dump_type(file, vector_type, false, false);
+ fputs (" [gcc4net]gcc4net.", file);
+ dump_vector_type(file, vector_type, false);
+ fputs ("::", file);
+ dump_vector_type(file, vector_type, false);
+ fputs ("_ctor1(", file);
+ for (i=0; i < num_elt; ++i)
+ {
+ if (i)
+ fputs (", ", file);
+ if ((GET_MODE_CLASS (TYPE_MODE (unit_type)) == MODE_INT) &&
+ (!TYPE_UNSIGNED (unit_type)))
+ {
+ fputs ("unsigned ", file);
+ }
+ dump_type (file, unit_type, false, false);
+ }
+ fputs (")", file);
+ stack_pop (num_elt);
stack_push (1);
break;
}
@@ -1865,14 +2000,34 @@ gen_cil_node (FILE *file, tree node)
case GOTO_EXPR:
{
tree label_decl = GOTO_DESTINATION (node);
- basic_block dest_bb = label_to_block (label_decl);
+ tree label_iter = addr_taken_labels;
- if (bb->next_bb != dest_bb)
+ if (TREE_CODE (label_decl) != LABEL_DECL)
{
- fputs ("\n\tbr\t", file);
- dump_label_name (file, label_decl);
+ /* This is a goto to the address of a label. Labels have been
+ numbered, and we emit a switch based on that ID. */
+ gen_cil_node (file, label_decl);
+ fputs ("\n\tswitch (", file);
+ while (label_iter)
+ {
+ dump_label_name (file, label_iter);
+ label_iter = TREE_CHAIN (label_iter);
+ if (label_iter)
+ fputs (", ", file);
+ }
+ fputs (")", file);
+ stack_pop (1);
}
+ else
+ {
+ basic_block dest_bb = label_to_block (label_decl);
+ if (bb->next_bb != dest_bb)
+ {
+ fputs ("\n\tbr\t", file);
+ dump_label_name (file, label_decl);
+ }
+ }
gcc_assert (stack == 0);
}
break;
@@ -2087,6 +2242,7 @@ gen_cil_node (FILE *file, tree node)
tree fun_type = TREE_TYPE (TREE_TYPE (fun_expr));
bool direct_call = (TREE_CODE (fun_expr) == ADDR_EXPR
&& TREE_CODE (TREE_OPERAND (fun_expr, 0)) == FUNCTION_DECL);
+ tree static_chain;
tree args;
tree args_type;
tree last_arg_type;
@@ -2107,90 +2263,59 @@ gen_cil_node (FILE *file, tree node)
{
switch (DECL_FUNCTION_CODE (dfun))
{
- case CIL32_BUILTIN_VA_ARG:
+ case CIL32_BUILT_IN_VA_START:
{
- tree args = TREE_OPERAND (node, 1);
- tree va = TREE_VALUE (args);
- tree dummy = TREE_VALUE (TREE_CHAIN (args));
- tree type = TREE_TYPE (TREE_TYPE (dummy));
+ tree va = TREE_VALUE (TREE_OPERAND (node, 1));
- gcc_assert (TREE_CODE (va) == ADDR_EXPR
- || TREE_CODE (va) == VAR_DECL);
gcc_assert (POINTER_TYPE_P (TREE_TYPE (va))
&& TYPE_MAIN_VARIANT (TREE_TYPE (TREE_TYPE (va)))
- == va_list_type_node);
+ == cil32_arg_iterator_type);
gen_cil_node (file, va);
- fputs ("\n\tcall\tinstance typedref [mscorlib]System.ArgIterator::GetNextArg()"
- "\n\trefanyval ",
- file);
-
- dump_type_promoted_type_def (file, type, true);
- done = true;
- }
- break;
-
- case CIL32_BUILTIN_IS_LITTLE_ENDIAN:
- {
- fputs ("\n\tcall\tbool [gcc4net]gcc4net.Crt::__isLittleEndian()",
+ fputs ("\n\tdup"
+ "\n\tinitobj\tvaluetype [mscorlib]System.ArgIterator"
+ "\n\targlist"
+ "\n\tcall\tinstance void "
+ "[mscorlib]System.ArgIterator::.ctor(valuetype "
+ "[mscorlib]System.RuntimeArgumentHandle)",
file);
stack_push (1);
+ stack_pop (2);
done = true;
}
break;
- default:
- gcc_assert (0);
- }
- }
- else
- {
- switch (DECL_FUNCTION_CODE (dfun))
- {
- case BUILT_IN_VA_START:
+ case CIL32_BUILT_IN_VA_ARG:
{
- tree va = TREE_VALUE (TREE_OPERAND (node, 1));
-
- /* A lowering phase should have checked that va
- has no side effects.
- There is alaready an assertion to prevent that
- in the stloc ldloc elimination. */
+ tree args = TREE_OPERAND (node, 1);
+ tree va = TREE_VALUE (args);
+ tree dummy = TREE_VALUE (TREE_CHAIN (args));
+ tree type = TREE_TYPE (TREE_TYPE (dummy));
- gcc_assert (TREE_CODE (va) == ADDR_EXPR
- || TREE_CODE (va) == VAR_DECL);
gcc_assert (POINTER_TYPE_P (TREE_TYPE (va))
&& TYPE_MAIN_VARIANT (TREE_TYPE (TREE_TYPE (va)))
- == va_list_type_node);
+ == cil32_arg_iterator_type);
gen_cil_node (file, va);
- fputs ("\n\tinitobj\tvaluetype [mscorlib]System.ArgIterator",
+ fputs ("\n\tcall\tinstance typedref [mscorlib]System.ArgIterator::GetNextArg()"
+ "\n\trefanyval ",
file);
- stack_pop (1);
-
- gen_cil_node (file, va);
- fputs ("\n\targlist"
- "\n\tcall\tinstance void "
- "[mscorlib]System.ArgIterator::.ctor(valuetype "
- "[mscorlib]System.RuntimeArgumentHandle)",
- file);
+ if (dump_type_promoted_type_def (file, type))
+ fputs ("\n\tconv.i", file);
- stack_push (1);
- stack_pop (2);
done = true;
}
break;
- case BUILT_IN_VA_END:
+ case CIL32_BUILT_IN_VA_END:
{
tree va = TREE_VALUE (TREE_OPERAND (node, 1));
- gcc_assert (TREE_CODE (va) == ADDR_EXPR
- || TREE_CODE (va) == VAR_DECL);
gcc_assert (POINTER_TYPE_P (TREE_TYPE (va))
&& TYPE_MAIN_VARIANT (TREE_TYPE (TREE_TYPE (va)))
- == va_list_type_node);
+ == cil32_arg_iterator_type);
gen_cil_node (file, va);
fputs ("\n\tcall\tinstance void [mscorlib]System.ArgIterator::End()",
@@ -2201,25 +2326,122 @@ gen_cil_node (FILE *file, tree node)
}
break;
- case BUILT_IN_VA_COPY:
+ case CIL32_BUILT_IN_VA_COPY:
{
tree args = TREE_OPERAND (node, 1);
tree va_dest = TREE_VALUE (args);
tree va_src = TREE_VALUE (TREE_CHAIN (args));
+ gcc_assert (POINTER_TYPE_P (TREE_TYPE (va_dest))
+ && TYPE_MAIN_VARIANT (TREE_TYPE (TREE_TYPE (va_dest)))
+ == cil32_arg_iterator_type);
+ gcc_assert (POINTER_TYPE_P (TREE_TYPE (va_src))
+ && TYPE_MAIN_VARIANT (TREE_TYPE (TREE_TYPE (va_src)))
+ == cil32_arg_iterator_type);
+
+ gen_cil_node (file, va_dest);
+ fputs ("\n\tdup"
+ "\n\tinitobj\tvaluetype [mscorlib]System.ArgIterator",
+ file);
+ stack_push (1);
+ stack_pop (1);
+
gen_cil_node (file, va_src);
+ fputs ("\n\tcpobj\t[mscorlib]System.ArgIterator", file);
- /* A lowering phase should have checked that the destination
- in va_copy is a local variable. */
- gcc_assert (TREE_CODE (va_dest) == ADDR_EXPR);
- gcc_assert (TREE_CODE (TREE_OPERAND (va_dest, 0)) == VAR_DECL
- && !DECL_FILE_SCOPE_P (TREE_OPERAND (va_dest, 0)));
- fputs ("\n\tstloc\t", file);
- dump_decl_name (file, TREE_OPERAND (va_dest, 0));
+ stack_pop (2);
+ done = true;
+ }
+ break;
- stack_pop (1);
+ case CIL32_BUILT_IN_IS_LITTLE_ENDIAN:
+ {
+ fputs ("\n\tcall\tbool [gcc4net]gcc4net.Crt::__isLittleEndian()",
+ file);
+
+ stack_push (1);
+ done = true;
+ }
+ break;
+
+ case CIL32_V2SF_CTOR:
+ case CIL32_V4SF_CTOR:
+ case CIL32_V4QI_CTOR:
+ case CIL32_V2HI_CTOR:
+ case CIL32_V8QI_CTOR:
+ case CIL32_V4HI_CTOR:
+ case CIL32_V2SI_CTOR:
+ case CIL32_V4SI_CTOR:
+ case CIL32_V8HI_CTOR:
+ case CIL32_V16QI_CTOR:
+ {
+ int i;
+ int num_args = 0;
+ tree arg_type;
+ tree fun = TREE_OPERAND (node, 0);
+ tree args = TREE_OPERAND (node, 1);
+ tree fun_decl = TREE_OPERAND (fun, 0);
+ tree result = TREE_TYPE (TREE_TYPE (fun_decl));
+
+ /* the type should be the same for all args. */
+ arg_type = TREE_TYPE (TREE_VALUE (args));
+ while (args)
+ {
+ gen_cil_node (file, TREE_VALUE (args));
+ args = TREE_CHAIN (args);
+ ++num_args;
+ }
+
+ fputs ("\n\tcall ", file);
+ dump_vector_type (file, result, true);
+ fputs (" [gcc4net]gcc4net.", file);
+ dump_vector_type (file, result, false);
+ fputs ("::", file);
+ dump_decl_name (file, fun_decl);
+ fputs ("(", file);
+
+ /* emit the same type 'num_args' times */
+ for(i = 0; i < num_args; ++i)
+ {
+ if (i)
+ fputs (", ", file);
+
+ if (TREE_CODE (arg_type) == INTEGER_TYPE
+ && !TYPE_UNSIGNED (arg_type))
+ fputs ("unsigned ", file);
+
+ dump_type (file, arg_type, false, false);
+ }
+ fputs (")", file);
+
+ stack_pop (num_args-1);
done = true;
+ break;
}
+
+ default:
+ gcc_assert (0);
+ }
+ }
+ else
+ {
+ switch (DECL_FUNCTION_CODE (dfun))
+ {
+ case BUILT_IN_VA_START:
+ case BUILT_IN_VA_END:
+ case BUILT_IN_VA_COPY:
+ gcc_assert (0);
+ break;
+
+ case BUILT_IN_INIT_TRAMPOLINE:
+ case BUILT_IN_ADJUST_TRAMPOLINE:
+ case BUILT_IN_NONLOCAL_GOTO:
+ internal_error ("Builtins to support Trampolines not implemented\n");
+ break;
+
+ case BUILT_IN_PROFILE_FUNC_ENTER:
+ case BUILT_IN_PROFILE_FUNC_EXIT:
+ internal_error ("Builtins to support Profiling not implemented\n");
break;
case BUILT_IN_MEMSET:
@@ -2282,7 +2504,8 @@ gen_cil_node (FILE *file, tree node)
/* This built-in is only used for the implementation
of variable-length arrays.
It's not needed in CIL. */
- fputs ("\n\tldc.i4.0", file);
+ fputs ("\n\tldc.i4.0"
+ "\n\tconv.i", file);
stack_push (1);
done = true;
break;
@@ -2294,6 +2517,101 @@ gen_cil_node (FILE *file, tree node)
done = true;
break;
+ case BUILT_IN_EXPECT:
+ {
+ /* __builtin_expect(exp,val) evalutes exp and tells the
+ compiler that it most likely gives val. We just
+ evaluate exp. */
+ tree args = TREE_OPERAND (node, 1);
+ gen_cil_node (file, TREE_VALUE (args));
+ }
+ done = true;
+ break;
+
+ case BUILT_IN_TRAP:
+ fputs ("\n\tcall\tvoid 'abort' ()", file);
+ done = true;
+ break;
+
+ case BUILT_IN_CLZ:
+ case BUILT_IN_CLZL:
+ case BUILT_IN_CLZLL:
+ case BUILT_IN_CTZ:
+ case BUILT_IN_CTZL:
+ case BUILT_IN_CTZLL:
+ case BUILT_IN_FFS:
+ case BUILT_IN_FFSL:
+ case BUILT_IN_FFSLL:
+ case BUILT_IN_PARITY:
+ case BUILT_IN_PARITYL:
+ case BUILT_IN_PARITYLL:
+ case BUILT_IN_POPCOUNT:
+ case BUILT_IN_POPCOUNTL:
+ case BUILT_IN_POPCOUNTLL:
+ {
+ tree fun = TREE_OPERAND (node, 0);
+ tree fun_decl = TREE_OPERAND (fun, 0);
+ tree fun_type = TREE_TYPE (TREE_TYPE (fun));
+ tree fun_arg_types = TYPE_ARG_TYPES (fun_type);
+ tree args = TREE_OPERAND (node, 1);
+ tree arg = TREE_VALUE (args);
+ tree arg_type = TREE_VALUE (fun_arg_types);
+ gen_cil_node (file, arg);
+ fputs ("\n\tcall\tint32 [gcc4net]gcc4net.Crt::__", file);
+ switch (DECL_FUNCTION_CODE (dfun))
+ {
+ case BUILT_IN_CLZ:
+ case BUILT_IN_CLZL:
+ case BUILT_IN_CLZLL:
+ fputs ("clz", file);
+ break;
+ case BUILT_IN_CTZ:
+ case BUILT_IN_CTZL:
+ case BUILT_IN_CTZLL:
+ fputs ("ctz", file);
+ break;
+ case BUILT_IN_FFS:
+ case BUILT_IN_FFSL:
+ case BUILT_IN_FFSLL:
+ fputs ("ffs", file);
+ break;
+ case BUILT_IN_PARITY:
+ case BUILT_IN_PARITYL:
+ case BUILT_IN_PARITYLL:
+ fputs ("parity", file);
+ break;
+ case BUILT_IN_POPCOUNT:
+ case BUILT_IN_POPCOUNTL:
+ case BUILT_IN_POPCOUNTLL:
+ fputs ("popcount", file);
+ break;
+ default:
+ gcc_assert (0);
+ break;
+ }
+ dump_type_eval_mode (file, arg_type, false, false);
+ fputs ("2(", file);
+ dump_type_for_builtin (file, arg_type, false);
+ fputs (")", file);
+ }
+ done = true;
+ break;
+
+ {
+ tree args = TREE_OPERAND (node, 1);
+ tree arg = TREE_VALUE (args);
+ tree arg_type = TREE_TYPE (arg);
+ gen_cil_node (file, arg);
+ fputs ("\n\tcall\t", file);
+ fputs ("int32 [gcc4net]gcc4net.Crt::__ctz", file);
+ dump_type_eval_mode (file, arg_type, false, false);
+ fputs ("2(", file);
+ dump_type_for_builtin (file, arg_type, false);
+ fputs (")", file);
+ }
+ done = true;
+ break;
+
default:
if (DECL_ASSEMBLER_NAME_SET_P (node))
{
@@ -2314,6 +2632,12 @@ gen_cil_node (FILE *file, tree node)
}
/* Print parameters. */
+
+ /* If static Chain present, it will be the first argument */
+ static_chain = TREE_OPERAND (node, 2);
+ if (static_chain)
+ gen_cil_node (file, static_chain);
+
args = TREE_OPERAND (node, 1);
while (args)
{
@@ -2326,15 +2650,6 @@ gen_cil_node (FILE *file, tree node)
gen_cil_node (file, fun_expr);
#if 0
- op1 = TREE_OPERAND (node, 2);
- if (op1)
- {
- gcc_assert (0);
- fprintf (file, " [static-chain: ");
- gen_cil_node (file, op1);
- fprintf (file, "%c", ']');
- }
-
if (0 && CALL_EXPR_RETURN_SLOT_OPT (node))
fprintf (file, " [return slot optimization]");
#endif
@@ -2406,6 +2721,14 @@ gen_cil_node (FILE *file, tree node)
fputs (" (", file);
args = TREE_OPERAND (node, 1);
+ if (static_chain)
+ {
+ ++nargs;
+ dump_type (file, TREE_TYPE (static_chain), true, true);
+ if (args_type != last_arg_type)
+ fputs (", ", file);
+ }
+
while (args_type != last_arg_type)
{
++nargs;
@@ -2771,6 +3094,16 @@ gen_cil_node (FILE *file, tree node)
fputs ("\n\tldobj\t", file);
dump_type (file, TREE_TYPE (node), true, false);
}
+ else if (TREE_CODE (TREE_TYPE (node)) == COMPLEX_TYPE)
+ {
+ fputs ("\n\tldobj ", file);
+ dump_complex_type (file, TREE_TYPE (node), true);
+ }
+ else if (TREE_CODE (TREE_TYPE (node)) == VECTOR_TYPE)
+ {
+ fputs ("\n\tldobj ", file);
+ dump_vector_type (file, TREE_TYPE (node), true);
+ }
else
{
fputs ("\n\tldind.", file);
@@ -2814,7 +3147,7 @@ gen_cil_node (FILE *file, tree node)
op0 = TREE_OPERAND (node, 0);
if (op0)
{
-/* dump_generic_node (file, op0); */
+ /* dump_generic_node (file, op0); */
if (TREE_CODE (op0) == MODIFY_EXPR)
gen_cil_node (file, TREE_OPERAND (op0, 1));
else
@@ -2868,7 +3201,7 @@ gen_cil_node (FILE *file, tree node)
else
fputs ("max", file);
- dump_type_eval_mode (file, node_type, false);
+ dump_type_eval_mode (file, node_type, false, false);
fputs ("3(", file);
dump_type_for_builtin (file, TREE_TYPE (op0), false);
fputs (", ", file);
@@ -2891,7 +3224,7 @@ gen_cil_node (FILE *file, tree node)
fputs ("\n\tcall\t", file);
dump_type_for_builtin (file, node_type, false);
fputs (" [gcc4net]gcc4net.Crt::__abs", file);
- dump_type_eval_mode (file, node_type, false);
+ dump_type_eval_mode (file, node_type, false, false);
fputs ("2(", file);
dump_type_for_builtin (file, TREE_TYPE (op0), false);
fputs (")", file);
@@ -2914,7 +3247,9 @@ gen_cil_node (FILE *file, tree node)
dump_decl_name (file, node);
/* and emit a volatile ldind or ldobj */
fputs ("\n\tvolatile.", file);
- if (AGGREGATE_TYPE_P (TREE_TYPE (node)))
+ if (AGGREGATE_TYPE_P (TREE_TYPE (node)) ||
+ TREE_CODE (TREE_TYPE (node)) == COMPLEX_TYPE ||
+ TREE_CODE (TREE_TYPE (node)) == VECTOR_TYPE)
{
fputs ("\n\tldobj\t", file);
dump_type (file, TREE_TYPE (node), true, false);
@@ -3054,6 +3389,97 @@ gen_cil_node (FILE *file, tree node)
stack_pop (1);
break;
+ case VIEW_CONVERT_EXPR:
+ {
+ op0 = TREE_OPERAND (node, 0);
+ gen_cil_node (file, op0);
+
+ if (TREE_CODE (TREE_TYPE (op0)) == VECTOR_TYPE)
+ {
+ /* Convert a vector type to something. */
+ tree vec_type = TREE_TYPE (op0);
+ fputs ("\n\tcall ", file);
+ dump_type (file, TREE_TYPE (node), false, false);
+ fputs (" [gcc4net]gcc4net.", file);
+ dump_vector_type (file, vec_type, false);
+ fputs ("::", file);
+ dump_vector_type (file, vec_type, false);
+ fputs ("_to_", file);
+ dump_type_eval_mode (file, TREE_TYPE (node), true, true);
+ fputs (" (", file);
+ dump_type (file, vec_type, false, false);
+ fputs (")", file);
+ }
+ else if (TREE_CODE (TREE_TYPE (node)) == VECTOR_TYPE)
+ {
+ /* Convert something to a vector type. */
+ tree vec_type = TREE_TYPE (node);
+ fputs ("\n\tcall ", file);
+ dump_type (file, vec_type, false, false);
+ fputs (" [gcc4net]gcc4net.", file);
+ dump_vector_type (file, vec_type, false);
+ fputs ("::ctor (", file);
+ dump_type (file, TREE_TYPE (op0), false, false);
+ fputs (")", file);
+ }
+ else
+ {
+ internal_error ("\n\nVIEW_CONVERT_EXPR not supported on '%s'\n",
+ tree_code_name[TREE_CODE (TREE_TYPE (node))]);
+ }
+ }
+ break;
+
+ case REALPART_EXPR:
+ case IMAGPART_EXPR:
+ {
+ tree cplx_type = TREE_TYPE (TREE_OPERAND (node, 0));
+ op0 = TREE_OPERAND (node, 0);
+
+ gcc_assert (TREE_CODE (cplx_type) == COMPLEX_TYPE);
+
+ gen_cil_node (file, op0);
+ fputs ("\n\tcall ", file);
+ dump_type (file, TREE_TYPE (node), false, false);
+ fputs (" [gcc4net]gcc4net.", file);
+ dump_complex_type (file, cplx_type, false);
+ fputs ("::", file);
+ dump_complex_type(file, cplx_type, false);
+ fputs ("_", file);
+ if (TREE_CODE (node) == REALPART_EXPR)
+ fputs ("Re(", file);
+ else
+ fputs ("Im(", file);
+ dump_complex_type(file, cplx_type, true);
+ fputs (") ", file);
+ stack_pop (1);
+ stack_push (1);
+ }
+ break;
+
+ case COMPLEX_EXPR:
+ {
+ tree cplx_type = TREE_TYPE (node);
+ op0 = TREE_OPERAND (node, 0);
+ op1 = TREE_OPERAND (node, 1);
+ gen_cil_node (file, op0);
+ gen_cil_node (file, op1);
+ fputs ("\n\tcall ", file);
+ dump_complex_type (file, cplx_type, true);
+ fputs (" [gcc4net]gcc4net.", file);
+ dump_complex_type(file, cplx_type, false);
+ fputs ("::", file);
+ dump_complex_type(file, cplx_type, false);
+ fputs ("_ctor (", file);
+ dump_type (file, TREE_TYPE (op0), false, false);
+ fputs (", ", file);
+ dump_type (file, TREE_TYPE (op0), false, false);
+ fputs (")", file);
+ stack_pop (2);
+ stack_push (1);
+ }
+ break;
+
case ENUMERAL_TYPE:
case ARRAY_TYPE:
case RECORD_TYPE:
@@ -3090,17 +3516,43 @@ gen_cil_modify_expr (FILE *file, tree node)
gcc_assert (0);
break;
+ case REALPART_EXPR:
+ case IMAGPART_EXPR:
+ {
+ tree cplx_op = TREE_OPERAND (lhs, 0);
+ tree cplx_type = TREE_TYPE (cplx_op);
+
+ compute_addr_expr (file, cplx_op);
+ gen_cil_node (file, rhs);
+
+ fputs ("\n\tcall instance void [gcc4net]gcc4net.", file);
+ dump_complex_type(file, cplx_type, false);
+ fputs ("::", file);
+ dump_complex_type(file, cplx_type, false);
+ fputs ("_set_", file);
+ if (TREE_CODE (lhs) == REALPART_EXPR)
+ fputs ("Re(", file);
+ else
+ fputs ("Im(", file);
+ dump_type (file, TREE_TYPE (lhs), false, false);
+ fputs (")", file);
+ stack_pop (2);
+ }
+ break;
+
case INDIRECT_REF:
case ARRAY_REF:
+ case COMPLEX_EXPR:
compute_addr_expr (file, lhs);
gen_cil_node (file, rhs);
if (TREE_THIS_VOLATILE (lhs))
fputs ("\n\tvolatile.", file);
- if (AGGREGATE_TYPE_P (TREE_TYPE (lhs)))
+ if (AGGREGATE_TYPE_P (TREE_TYPE (lhs)) ||
+ TREE_CODE (TREE_TYPE (lhs)) == COMPLEX_TYPE ||
+ TREE_CODE (TREE_TYPE (lhs)) == VECTOR_TYPE)
{
- gcc_assert (AGGREGATE_TYPE_P (TREE_TYPE (rhs)));
fputs ("\n\tstobj\t", file);
dump_type (file, TREE_TYPE (lhs), true, false);
}
@@ -3126,9 +3578,11 @@ gen_cil_modify_expr (FILE *file, tree node)
stack_push (1);
/* put the value */
gen_cil_node (file, rhs);
- /* and emit a volatile ldind or ldobj */
+ /* and emit a volatile stind or stobj */
fputs ("\n\tvolatile.", file);
- if (AGGREGATE_TYPE_P (TREE_TYPE (lhs)))
+ if (AGGREGATE_TYPE_P (TREE_TYPE (lhs)) ||
+ TREE_CODE (TREE_TYPE (lhs)) == COMPLEX_TYPE ||
+ TREE_CODE (TREE_TYPE (lhs)) == VECTOR_TYPE)
{
fputs ("\n\tstobj\t", file);
dump_type (file, TREE_TYPE (lhs), true, false);
@@ -3196,11 +3650,6 @@ gen_cil_modify_expr (FILE *file, tree node)
break;
default:
-/* { */
-/* fprintf (stderr, "  LHS  "); */
-/* gen_cil_node (file, lhs); */
-/* break; */
-/* } */
fprintf (stderr, "CIL: Cannot handle lhs: ");
debug_generic_expr (lhs);
gcc_assert (0);
@@ -3591,7 +4040,6 @@ print_valuetype_decl (FILE *file, tree t)
{
/* array */
fprintf (file, "\t.size %ld\n", TREE_INT_CST_LOW (TYPE_SIZE_UNIT (t)));
- fprintf (file, "\t.pack %u\n", TYPE_ALIGN_UNIT (t));
fputs ("\t.field [0] public specialname ", file);
dump_type (file, TREE_TYPE (t), false, false);
fputs (" 'elem__'\n", file);
@@ -3602,7 +4050,6 @@ print_valuetype_decl (FILE *file, tree t)
tree tmp;
fprintf (file, "\t.size %ld\n", TREE_INT_CST_LOW (TYPE_SIZE_UNIT (t)));
- fprintf (file, "\t.pack %u\n", TYPE_ALIGN_UNIT (t));
tmp = TYPE_FIELDS (t);
while (tmp)
@@ -3873,11 +4320,26 @@ gen_cil_1 (FILE *stream)
defd_more_than_once_vars = pointer_set_create ();
used_vars = pointer_set_create ();
used_more_than_once_vars = pointer_set_create ();
+ addr_taken_labels = NULL;
FOR_EACH_BB (bb)
{
for (bsi = bsi_start (bb); !bsi_end_p (bsi); bsi_next (&bsi))
{
- mark_var_defs_uses (bsi_stmt (bsi));
+ tree stmt = bsi_stmt (bsi);
+
+ /* Record the address taken labels. */
+ if (TREE_CODE (stmt) == LABEL_EXPR)
+ {
+ tree label = LABEL_EXPR_LABEL (stmt);
+ /* Check if the label has its address taken. */
+ if (FORCED_LABEL (label))
+ {
+ TREE_CHAIN (label) = addr_taken_labels; /* prepend */
+ addr_taken_labels = label; /* new list head */
+ }
+ }
+ else
+ mark_var_defs_uses (stmt);
}
}
pointer_set_destroy (defd_vars);
@@ -3980,6 +4442,16 @@ gen_cil_1 (FILE *stream)
args = DECL_ARGUMENTS (current_function_decl);
+ if (cfun->static_chain_decl)
+ {
+ dump_type (stream, DECL_ARG_TYPE (cfun->static_chain_decl), true, true);
+ fputs (" ", stream);
+ dump_decl_name (stream, cfun->static_chain_decl);
+ if (args)
+ fputs (", ", stream);
+ }
+
+
while (args)
{
dump_type (stream, DECL_ARG_TYPE (args), true, true);
@@ -4042,9 +4514,9 @@ gen_cil_1 (FILE *stream)
stmt = bsi_stmt (bsi);
if (TARGET_EMIT_GIMPLE_COMMENTS)
{
- fprintf (stream, "\n\t/* ");
+ fprintf (stream, "\n\t/* ");
print_generic_expr (stream, stmt, 0);
- fprintf (stream, " */");
+ fprintf (stream, " */");
}
gcc_assert (stack == 0);
diff --git a/gcc/config/cil32/t-cil32 b/gcc/config/cil32/t-cil32
index 4467433aabb..504afdf2341 100644
--- a/gcc/config/cil32/t-cil32
+++ b/gcc/config/cil32/t-cil32
@@ -1,6 +1,6 @@
# Hi emacs, use Makefile syntax mode. -*-mode: Makefile; -*-
-# Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+# Copyright (C) 2006-2007 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
@@ -48,13 +48,7 @@ gt-gen-cil.h : s-gtype ; @true
LIBGCC =
-INSTALL_LIBGCC = install-gcc4net
+INSTALL_LIBGCC = install-gcc4net
-install-gcc4net: gcc4net.dll installdirs
- $(INSTALL_DATA) gcc4net.dll $(DESTDIR)$(libdir)/
- $(INSTALL_DATA) gcc4net.dll $(DESTDIR)$(libsubdir)/
-
-MCS=mcs
-
-gcc4net.dll: $(srcdir)/config/cil32/gcc4net.cs
- $(MCS) $< -unsafe -target:library -out:$@
+install-gcc4net:
+ #Nothig to do
diff --git a/gcc/config/cil32/tree-simp-cil.c b/gcc/config/cil32/tree-simp-cil.c
index 87dcaca7de0..0edc17782c6 100644
--- a/gcc/config/cil32/tree-simp-cil.c
+++ b/gcc/config/cil32/tree-simp-cil.c
@@ -1,6 +1,6 @@
/* Simplify GENERIC trees before CIL emission.
- Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2006-2007 Free Software Foundation, Inc.
This file is part of GCC.
@@ -144,7 +144,7 @@ Roberto Costa <roberto.costa@st.com> */
A few built-in functions require special simplifications
in order to make their emission easier; in particular:
*) the 1st argument of BUILT_IN_VA_START, BUILT_IN_VA_END and
- CIL32_BUILTIN_VA_ARG has to be a variable or an ADDR_EXPR node.
+ CIL32_BUILT_IN_VA_ARG has to be a variable or an ADDR_EXPR node.
More in general, this is true any time va_list is passed
as a parameter.
*) the 1st argument of BUILT_IN_VA_COPY has to be a local variable
@@ -196,7 +196,7 @@ static void simp_cond_stmt (block_stmt_iterator, tree);
static void rescale_out_edge_probabilities (basic_block, int);
static void simp_switch (block_stmt_iterator *, tree *);
static void simp_trivial_switch (block_stmt_iterator *, tree *);
-static void simp_builtin_call (block_stmt_iterator, tree);
+static void simp_builtin_call (block_stmt_iterator, tree *);
static void simp_abs (block_stmt_iterator *, tree *);
static void simp_min_max (block_stmt_iterator *, tree *);
static void simp_cond_expr (block_stmt_iterator *, tree *);
@@ -218,6 +218,8 @@ static void split_use (block_stmt_iterator, tree *, bool);
static void rename_var (tree, const char*, unsigned long);
static void simp_vars (void);
static unsigned int simp_cil (void);
+static unsigned int simp_cil_early (void);
+static unsigned int simp_cil_final (void);
static bool simp_cil_gate (void);
#define UPDATE_ADDRESSABLE(NODE) \
@@ -227,6 +229,7 @@ do { tree _node = (NODE); \
if (TREE_CODE (_node) == VAR_DECL || TREE_CODE (_node) == PARM_DECL) \
TREE_ADDRESSABLE (_node) = 1; } while (0)
+static bool simp_final;
static tree res_var;
/* Return the integer type with size BITS bits.
@@ -325,27 +328,28 @@ simp_cil_node (block_stmt_iterator *bsi, tree *node_ptr)
else
simp_cil_node (bsi, &COND_EXPR_COND (node));
- simp_cond_stmt (*bsi, node);
+ if (simp_final)
+ simp_cond_stmt (*bsi, node);
}
else
{
simp_cil_node (bsi, &COND_EXPR_COND (node));
simp_cil_node (bsi, &COND_EXPR_THEN (node));
simp_cil_node (bsi, &COND_EXPR_ELSE (node));
- simp_cond_expr (bsi, node_ptr);
+ if (simp_final)
+ simp_cond_expr (bsi, node_ptr);
}
break;
case SWITCH_EXPR:
simp_cil_node (bsi, &SWITCH_COND (node));
- simp_switch (bsi, node_ptr);
+ if (simp_final)
+ simp_switch (bsi, node_ptr);
break;
case CALL_EXPR:
{
tree args = TREE_OPERAND (node, 1);
- tree fun_expr;
- tree dfun = NULL_TREE;
simp_cil_node (bsi, &TREE_OPERAND (node, 0));
@@ -355,14 +359,19 @@ simp_cil_node (block_stmt_iterator *bsi, tree *node_ptr)
args = TREE_CHAIN (args);
}
- fun_expr = TREE_OPERAND (node, 0);
- if (TREE_CODE (fun_expr) == ADDR_EXPR
- && TREE_CODE (TREE_OPERAND (fun_expr, 0)) == FUNCTION_DECL)
- dfun = TREE_OPERAND (fun_expr, 0);
+ if (simp_final)
+ {
+ tree fun_expr = TREE_OPERAND (node, 0);
+ tree dfun = NULL_TREE;
+
+ if (TREE_CODE (fun_expr) == ADDR_EXPR
+ && TREE_CODE (TREE_OPERAND (fun_expr, 0)) == FUNCTION_DECL)
+ dfun = TREE_OPERAND (fun_expr, 0);
- /* Calls to some built-in functions require ad-hoc simplifications */
- if (dfun && DECL_BUILT_IN (dfun))
- simp_builtin_call (*bsi, node);
+ /* Calls to some built-in funs require ad-hoc simplifications */
+ if (dfun && DECL_BUILT_IN (dfun))
+ simp_builtin_call (*bsi, node_ptr);
+ }
}
break;
@@ -442,6 +451,8 @@ simp_cil_node (block_stmt_iterator *bsi, tree *node_ptr)
case NOP_EXPR:
case FLOAT_EXPR:
case FIX_TRUNC_EXPR:
+ case REALPART_EXPR:
+ case IMAGPART_EXPR:
simp_cil_node (bsi, &TREE_OPERAND (node, 0));
break;
@@ -494,7 +505,7 @@ simp_cil_node (block_stmt_iterator *bsi, tree *node_ptr)
if (AGGREGATE_TYPE_P (TREE_TYPE (TREE_OPERAND (node, 0)))
&& TREE_CODE (TREE_OPERAND (node, 0)) == CALL_EXPR)
split_use (*bsi, &TREE_OPERAND (node, 0), false);
- if (DECL_BIT_FIELD (TREE_OPERAND (node, 1)))
+ if (simp_final && DECL_BIT_FIELD (TREE_OPERAND (node, 1)))
{
tree stmt = bsi_stmt (*bsi);
@@ -513,7 +524,8 @@ simp_cil_node (block_stmt_iterator *bsi, tree *node_ptr)
split_use (*bsi, &TREE_OPERAND (node, 0), false);
gcc_assert (TREE_CODE (bsi_stmt (*bsi)) != MODIFY_EXPR
|| TREE_OPERAND (bsi_stmt (*bsi), 0) != node);
- simp_bitfield_ref (bsi, node_ptr);
+ if (simp_final)
+ simp_bitfield_ref (bsi, node_ptr);
break;
case TARGET_MEM_REF:
@@ -551,7 +563,8 @@ simp_cil_node (block_stmt_iterator *bsi, tree *node_ptr)
break;
case RETURN_EXPR:
- if (!TREE_OPERAND (node, 0)
+ if (simp_final
+ && !TREE_OPERAND (node, 0)
&& TREE_CODE (TREE_TYPE (DECL_RESULT (current_function_decl)))
!= VOID_TYPE)
{
@@ -568,10 +581,15 @@ simp_cil_node (block_stmt_iterator *bsi, tree *node_ptr)
break;
case RESULT_DECL:
- if (res_var == NULL_TREE)
- res_var = create_tmp_var (TREE_TYPE (node), "cilsimp");
+ if (simp_final
+ && (TREE_CODE (bsi_stmt (*bsi)) != RETURN_EXPR
+ || TREE_CODE (TREE_OPERAND (bsi_stmt (*bsi), 0)) != MODIFY_EXPR))
+ {
+ if (res_var == NULL_TREE)
+ res_var = create_tmp_var (TREE_TYPE (node), "cilsimp");
- *node_ptr = res_var;
+ *node_ptr = res_var;
+ }
break;
case ABS_EXPR:
@@ -588,6 +606,11 @@ simp_cil_node (block_stmt_iterator *bsi, tree *node_ptr)
simp_min_max (bsi, node_ptr);
break;
+ case GOTO_EXPR:
+ if (TREE_CODE (GOTO_DESTINATION (node)) != LABEL_DECL)
+ simp_cil_node (bsi, &GOTO_DESTINATION (node));
+ break;
+
default:
;
}
@@ -1203,14 +1226,16 @@ simp_trivial_switch (block_stmt_iterator *bsi, tree *node_ptr)
}
/* Force specific arguments of the CALL_EXPR to a built-in function
- pointed by NODE to be local variables.
+ pointed by NODE_PTR to be local variables.
Which arguments are forced depend on the built-in function.
- BSI is the iterator of the statement that contains NODE
- (in order to allow insertion of new statements). */
+ BSI is the iterator of the statement that contains *NODE_PTR
+ (in order to allow insertion of new statements). */
static void
-simp_builtin_call (block_stmt_iterator bsi, tree node)
+simp_builtin_call (block_stmt_iterator bsi, tree *node_ptr)
{
+ tree node = *node_ptr;
+ location_t locus = EXPR_LOCATION (bsi_stmt (bsi));
tree fun_expr = TREE_OPERAND (node, 0);
tree dfun = TREE_OPERAND (fun_expr, 0);
@@ -1219,59 +1244,218 @@ simp_builtin_call (block_stmt_iterator bsi, tree node)
gcc_assert (TREE_CODE (dfun) == FUNCTION_DECL);
gcc_assert (DECL_BUILT_IN (dfun));
- if (DECL_BUILT_IN_CLASS (dfun) == BUILT_IN_MD)
+ if (DECL_BUILT_IN_CLASS (dfun) != BUILT_IN_MD)
{
switch (DECL_FUNCTION_CODE (dfun))
{
- case CIL32_BUILTIN_VA_ARG:
+ case BUILT_IN_VA_START:
{
- tree va = TREE_VALUE (TREE_OPERAND (node, 1));
+ tree args = TREE_OPERAND (node, 1);
+ tree va_ref = TREE_VALUE (args);
+ tree va;
+
+ switch (TREE_CODE (va_ref)) {
+ case INDIRECT_REF:
+ case ADDR_EXPR:
+ va = TREE_OPERAND (va_ref, 0);
+ break;
+
+ case VAR_DECL:
+ va = build1 (INDIRECT_REF, cil32_va_list_type, va_ref);
+ break;
+
+ default:
+ gcc_assert(0);
+ break;
+ }
gcc_assert (POINTER_TYPE_P (TREE_TYPE (va))
&& TYPE_MAIN_VARIANT (TREE_TYPE (TREE_TYPE (va)))
- == va_list_type_node);
+ == cil32_arg_iterator_type);
+
+ {
+ tree argiter = create_tmp_var (cil32_arg_iterator_type, "arg_iterator");
+ location_t locus = EXPR_LOCATION (bsi_stmt (bsi));
+ tree stmt = build2 (MODIFY_EXPR, cil32_va_list_type,
+ va,
+ build1 (ADDR_EXPR, cil32_va_list_type, argiter));
+ SET_EXPR_LOCATION (stmt, locus);
+ bsi_insert_before (&bsi, stmt, BSI_SAME_STMT);
+ }
+
+ {
+ tree stmt;
+ tree new_args;
+
+ new_args = tree_cons (NULL, va, NULL);
+
+ stmt = build_function_call_expr (cil32_builtin_va_start_decl,
+ new_args);
+ bsi_replace (&bsi, stmt, true);
+ }
- if (TREE_CODE (va) != ADDR_EXPR && TREE_CODE (va) != VAR_DECL)
- split_use (bsi, &TREE_VALUE (TREE_OPERAND (node, 1)), true);
}
break;
- default:
- ;
- }
- }
- else
- {
- switch (DECL_FUNCTION_CODE (dfun))
- {
- case BUILT_IN_VA_START:
case BUILT_IN_VA_END:
{
- tree va = TREE_VALUE (TREE_OPERAND (node, 1));
+ tree va_ref = TREE_VALUE (TREE_OPERAND (node, 1));
+ tree va;
+
+ switch (TREE_CODE (va_ref)) {
+ case INDIRECT_REF:
+ case ADDR_EXPR:
+ va = TREE_OPERAND (va_ref, 0);
+ break;
+
+ case VAR_DECL:
+ va = build1 (INDIRECT_REF, cil32_va_list_type, va_ref);
+ break;
+
+ default:
+ gcc_assert(0);
+ break;
+ }
gcc_assert (POINTER_TYPE_P (TREE_TYPE (va))
&& TYPE_MAIN_VARIANT (TREE_TYPE (TREE_TYPE (va)))
- == va_list_type_node);
+ == cil32_arg_iterator_type);
+
+ {
+ tree stmt;
+ tree new_args;
+
+ new_args = tree_cons (NULL, va, NULL);
- if (TREE_CODE (va) != ADDR_EXPR && TREE_CODE (va) != VAR_DECL)
- split_use (bsi, &TREE_VALUE (TREE_OPERAND (node, 1)), true);
+ stmt = build_function_call_expr (cil32_builtin_va_end_decl,
+ new_args);
+ bsi_replace (&bsi, stmt, true);
+ }
}
break;
case BUILT_IN_VA_COPY:
{
- tree va_dest = TREE_VALUE (TREE_OPERAND (node, 1));
+ tree args = TREE_OPERAND (node, 1);
+ tree va_dest_ref = TREE_VALUE (args);
+ tree va_dest;
+ tree va_src = TREE_VALUE (TREE_CHAIN (args));
+
+ switch (TREE_CODE (va_dest_ref)) {
+ case INDIRECT_REF:
+ case ADDR_EXPR:
+ va_dest = TREE_OPERAND (va_dest_ref, 0);
+ break;
+
+ case VAR_DECL:
+ va_dest = build1 (INDIRECT_REF, cil32_va_list_type, va_dest_ref);
+ break;
+
+ default:
+ gcc_assert(0);
+ break;
+ }
+
+ gcc_assert (POINTER_TYPE_P (TREE_TYPE (va_dest))
+ && TYPE_MAIN_VARIANT (TREE_TYPE (TREE_TYPE (va_dest)))
+ == cil32_arg_iterator_type);
+
+ gcc_assert (POINTER_TYPE_P (TREE_TYPE (va_src))
+ && TYPE_MAIN_VARIANT (TREE_TYPE (TREE_TYPE (va_src)))
+ == cil32_arg_iterator_type);
- gcc_assert (TREE_CODE (va_dest) == ADDR_EXPR);
- if (TREE_CODE (TREE_OPERAND (va_dest, 0)) != VAR_DECL
- || DECL_FILE_SCOPE_P (TREE_OPERAND (va_dest, 0)))
- split_use (bsi, &TREE_OPERAND (va_dest, 0), true);
- recompute_tree_invariant_for_addr_expr (va_dest);
+ {
+ tree argiter = create_tmp_var (cil32_arg_iterator_type, "arg_iterator");
+ location_t locus = EXPR_LOCATION (bsi_stmt (bsi));
+ tree stmt = build2 (MODIFY_EXPR, cil32_va_list_type,
+ va_dest,
+ build1 (ADDR_EXPR, cil32_va_list_type, argiter));
+ SET_EXPR_LOCATION (stmt, locus);
+ bsi_insert_before (&bsi, stmt, BSI_SAME_STMT);
+ }
+
+ {
+ tree stmt;
+ tree new_args;
+
+ new_args = tree_cons (NULL, va_src, NULL);
+ new_args = tree_cons (NULL, va_dest, new_args);
+
+ stmt = build_function_call_expr (cil32_builtin_va_copy_decl,
+ new_args);
+ bsi_replace (&bsi, stmt, true);
+ }
+ }
+ break;
+
+ case BUILT_IN_OBJECT_SIZE:
+ {
+ /* Inspired from 'expand_builtin_object_size' in builtins.c. We
+ return -1 for types 0 and 1, and 0 for types 2 and 3. */
+ tree args = TREE_OPERAND (node, 1);
+ tree arg2 = TREE_VALUE (TREE_CHAIN (args));
+ int obj_type;
+ gcc_assert (TREE_CODE (arg2) == INTEGER_CST);
+ obj_type = TREE_INT_CST_LOW (arg2);
+ switch (obj_type)
+ {
+ case 0:
+ case 1:
+ *node_ptr = integer_zero_node;
+ break;
+
+ case 2:
+ case 3:
+ *node_ptr = integer_minus_one_node;
+ break;
+
+ default:
+ gcc_assert (0);
+ }
+ }
+ break;
+
+ case BUILT_IN_PREFETCH:
+ {
+ tree exp = TREE_VALUE (TREE_OPERAND (node, 1));
+
+ gcc_assert (bsi_stmt (bsi) == node);
+
+ /* For a target that does not support data prefetch,
+ evaluate the memory address argument in case it has
+ side effects. */
+
+ if (! TREE_SIDE_EFFECTS (exp))
+ exp = build1 (NOP_EXPR, void_type_node, integer_zero_node);
+
+ SET_EXPR_LOCATION (exp, locus);
+ *node_ptr = exp;
+ }
+ break;
+
+ case BUILT_IN_FRAME_ADDRESS:
+ case BUILT_IN_RETURN_ADDRESS:
+ {
+ /* Supported (sort of) only for non-zero parameter, when it is ok
+ to return NULL. */
+ tree args = TREE_OPERAND (node, 1);
+ tree arg = TREE_VALUE (args);
+ int int_arg;
+ gcc_assert (TREE_CODE (arg) == INTEGER_CST);
+ int_arg = TREE_INT_CST_LOW (arg);
+ if (int_arg == 0)
+ {
+ internal_error ("__builtin_{return,frame}_address not implemented\n");
+ }
+ else
+ {
+ *node_ptr = integer_zero_node;
+ }
}
break;
default:
- ;
+ ;
}
}
}
@@ -2018,10 +2202,10 @@ simp_bitfield (block_stmt_iterator *bsi, tree *node_ptr,
if (off > 0)
{
- tmp_var = create_tmp_var (obj_ptr_type, "cilsimp");
- tmp_stmt = build2 (MODIFY_EXPR, obj_ptr_type,
+ tmp_var = create_tmp_var (new_type_ptr, "cilsimp");
+ tmp_stmt = build2 (MODIFY_EXPR, new_type_ptr,
tmp_var,
- build2 (PLUS_EXPR, obj_ptr_type,
+ build2 (PLUS_EXPR, new_type_ptr,
t,
build_int_cst (long_integer_type_node, off)));
SET_EXPR_LOCATION (tmp_stmt, locus);
@@ -2228,10 +2412,10 @@ simp_lhs_bitfield_component_ref (block_stmt_iterator *bsi, tree *node_ptr)
if (off > 0)
{
- tmp_var = create_tmp_var (obj_ptr_type, "cilsimp");
- tmp_stmt = build2 (MODIFY_EXPR, obj_ptr_type,
+ tmp_var = create_tmp_var (new_type_ptr, "cilsimp");
+ tmp_stmt = build2 (MODIFY_EXPR, new_type_ptr,
tmp_var,
- build2 (PLUS_EXPR, obj_ptr_type,
+ build2 (PLUS_EXPR, new_type_ptr,
t,
build_int_cst (long_integer_type_node, off)));
SET_EXPR_LOCATION (tmp_stmt, locus);
@@ -2769,9 +2953,87 @@ expand_init_to_stmt_list1 (tree decl, tree init,
break;
case VECTOR_TYPE:
- fprintf (stderr, "CIL: Cannot handle rhs: ");
- debug_generic_expr (init);
- gcc_assert (0);
+ {
+ tree fun, stmt;
+ tree args = NULL;
+ tree value;
+ tree ctor_fun = NULL;
+ unsigned HOST_WIDE_INT idx;
+ tree vector_type = TREE_TYPE (init);
+ tree vector_elt_type = TREE_TYPE (vector_type);
+ int vec_size = TREE_INT_CST_LOW (TYPE_SIZE (vector_type));
+ int elt_size = TREE_INT_CST_LOW (TYPE_SIZE (vector_elt_type));
+ int num_elt = vec_size / elt_size;
+ int i, num_args = 0;
+
+ /* Build the list of args. */
+ FOR_EACH_CONSTRUCTOR_VALUE (CONSTRUCTOR_ELTS (init), idx, value)
+ {
+ args = tree_cons (NULL, value, args);
+ ++num_args;
+ }
+ /* The constructor might not initialize all args. */
+ for(i = num_args; i < num_elt; ++i )
+ args = tree_cons (NULL, integer_zero_node, args);
+
+ /* find the right constructor */
+ if (TREE_CODE (vector_elt_type) == INTEGER_TYPE)
+ {
+ switch (num_elt)
+ {
+ case 2:
+ if (vec_size == 32)
+ ctor_fun = cil32_v2hi_ctor;
+ else if (vec_size == 64)
+ ctor_fun = cil32_v2si_ctor;
+ break;
+
+ case 4:
+ if (vec_size == 32)
+ ctor_fun = cil32_v4qi_ctor;
+ else if (vec_size == 64)
+ ctor_fun = cil32_v4hi_ctor;
+ else if (vec_size == 128)
+ ctor_fun = cil32_v4si_ctor;
+ break;
+
+ case 8:
+ if (vec_size == 64)
+ ctor_fun = cil32_v8qi_ctor;
+ else if (vec_size == 128)
+ ctor_fun = cil32_v8hi_ctor;
+ break;
+
+ case 16:
+ if (vec_size == 128)
+ ctor_fun = cil32_v16qi_ctor;
+ break;
+
+ default:
+ fprintf (stderr,
+ "V%d int vectors not supported\n",
+ num_elt);
+ gcc_assert (0);
+ break;
+ }
+ }
+ else if (TREE_CODE (vector_elt_type) == REAL_TYPE)
+ {
+ if (num_elt != 2 && num_elt != 4)
+ {
+ fprintf (stderr, "V%dSF vectors not supported\n", num_elt);
+ gcc_assert (0);
+ }
+ ctor_fun = cil32_v2sf_ctor;
+ }
+ gcc_assert (ctor_fun);
+
+ /* Note that the args list must be reversed. Can do better? */
+ fun = build_function_call_expr (ctor_fun, nreverse (args));
+ stmt = build2 (MODIFY_EXPR, TREE_TYPE (decl), decl, fun);
+ append_to_statement_list (stmt, stmt_list1);
+ append_to_statement_list (stmt, stmt_list2);
+ }
break;
default:
@@ -2909,7 +3171,7 @@ expand_init_to_stmt_list (tree decl, tree init, tree *stmt_list)
from_ptr = fold_build3 (COND_EXPR,
TREE_TYPE (sconst),
- build_function_call_expr (cil32_is_LE_decl, NULL_TREE),
+ build_function_call_expr (cil32_builtin_is_LE_decl, NULL_TREE),
sconst,
sconst2);
}
@@ -3011,6 +3273,7 @@ simp_cil (void)
basic_block bb;
block_stmt_iterator bsi;
+ push_gimplify_context ();
res_var = NULL_TREE;
simp_vars ();
@@ -3058,7 +3321,7 @@ simp_cil (void)
tree stmt;
bsi = bsi_last (bb);
stmt = bsi_stmt (bsi);
- if (TREE_CODE (stmt) != RETURN_EXPR)
+ if (simp_final && TREE_CODE (stmt) != RETURN_EXPR)
{
tree ret_type = TREE_TYPE (DECL_RESULT (current_function_decl));
tree ret_stmt;
@@ -3073,9 +3336,24 @@ simp_cil (void)
}
}
+ pop_gimplify_context (NULL);
return 0;
}
+static unsigned int
+simp_cil_early (void)
+{
+ simp_final = false;
+ return simp_cil ();
+}
+
+static unsigned int
+simp_cil_final (void)
+{
+ simp_final = true;
+ return simp_cil ();
+}
+
/* Gate function of CIL simplify pass. */
static bool
@@ -3086,11 +3364,31 @@ simp_cil_gate (void)
/* Define the parameters of the tree-simp-CIL pass. */
-struct tree_opt_pass pass_simp_cil =
+struct tree_opt_pass pass_simp_cil_early =
{
"simpcil", /* name */
simp_cil_gate, /* gate */
- simp_cil, /* execute */
+ simp_cil_early, /* execute */
+ NULL, /* sub */
+ NULL, /* next */
+ 0, /* static_pass_number */
+ TV_REST_OF_COMPILATION, /* tv_id */
+ PROP_cfg, /* properties_required */
+ 0, /* properties_provided */
+ /* ??? If TER is enabled, we also kill gimple. */
+ 0, /* properties_destroyed */
+ 0,
+ TODO_dump_func, /* todo_flags_finish */
+ 0 /* letter */
+};
+
+/* Define the parameters of the tree-final-simp-CIL pass. */
+
+struct tree_opt_pass pass_simp_cil_final =
+{
+ "finsimpcil", /* name */
+ simp_cil_gate, /* gate */
+ simp_cil_final, /* execute */
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
diff --git a/gcc/expr.c b/gcc/expr.c
index a0dc9c360f0..caf1d0278cb 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -4556,7 +4556,7 @@ categorize_ctor_elements_1 (tree ctor, HOST_WIDE_INT *p_nz_elts,
HOST_WIDE_INT mult;
mult = 1;
- if (TREE_CODE (purpose) == RANGE_EXPR)
+ if (purpose && TREE_CODE (purpose) == RANGE_EXPR)
{
tree lo_index = TREE_OPERAND (purpose, 0);
tree hi_index = TREE_OPERAND (purpose, 1);
diff --git a/gcc/passes.c b/gcc/passes.c
index 4f90fd2a4c7..429cb2c6792 100644
--- a/gcc/passes.c
+++ b/gcc/passes.c
@@ -482,7 +482,7 @@ init_optimization_passes (void)
NEXT_PASS (pass_mudflap_2);
#if defined(DISABLE_RTL_PASSES)
NEXT_PASS (pass_bb_layout);
- NEXT_PASS (pass_simp_cil);
+ NEXT_PASS (pass_simp_cil_final);
NEXT_PASS (pass_gen_cil); /* <--- CIL */
NEXT_PASS (pass_free_datastructures);
NEXT_PASS (pass_free_cfg_annotations);
@@ -496,6 +496,9 @@ init_optimization_passes (void)
*p = NULL;
p = &pass_all_optimizations.sub;
+#if defined(DISABLE_RTL_PASSES) && 0
+ NEXT_PASS (pass_simp_cil_early);
+#endif
NEXT_PASS (pass_referenced_vars);
NEXT_PASS (pass_reset_cc_flags);
NEXT_PASS (pass_create_structure_vars);
diff --git a/gcc/tree-stdarg.c b/gcc/tree-stdarg.c
index 4a67bc850f6..da8d7b1d2a9 100644
--- a/gcc/tree-stdarg.c
+++ b/gcc/tree-stdarg.c
@@ -624,7 +624,9 @@ execute_optimize_stdarg (void)
va_list_simple_ptr = POINTER_TYPE_P (va_list_type_node)
&& (TREE_TYPE (va_list_type_node) == void_type_node
|| TREE_TYPE (va_list_type_node) == char_type_node);
- gcc_assert (is_gimple_reg_type (va_list_type_node) == va_list_simple_ptr);
+
+ if (is_gimple_reg_type (va_list_type_node) != va_list_simple_ptr)
+ goto finish;
FOR_EACH_BB (bb)
{
diff --git a/libgcc4net/Makefile.am b/libgcc4net/Makefile.am
new file mode 100644
index 00000000000..7c3b21d0c4e
--- /dev/null
+++ b/libgcc4net/Makefile.am
@@ -0,0 +1,43 @@
+
+# Copyright (C) 2007 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 2
+# 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; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+# Authors:
+# Andrea Ornstein
+# Erven Rohou
+# Roberto Costa
+#
+# Contact information at STMicroelectronics:
+# Roberto Costa <roberto.costa@st.com>
+
+
+AUTOMAKE_OPTIONS = 1.9.5 foreign
+ACLOCAL_AMFLAGS = -I .. -I ../config
+
+# May be used by various substitution variables.
+gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER)
+
+EXTRA_DIST = gcc4net.cs
+CLEANFILES = gcc4net.dll
+
+transform=;
+
+toollib_SCRIPTS = gcc4net.dll
+toollib2_SCRIPTS = gcc4net.dll
+
+gcc4net.dll: $(srcdir)/gcc4net.cs
+ $(MCS) $< -unsafe -target:library -out:$@
diff --git a/libgcc4net/Makefile.in b/libgcc4net/Makefile.in
new file mode 100644
index 00000000000..89abe877110
--- /dev/null
+++ b/libgcc4net/Makefile.in
@@ -0,0 +1,476 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005 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@
+
+# Copyright (C) 2007 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 2
+# 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; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+# Authors:
+# Andrea Ornstein
+# Erven Rohou
+# Roberto Costa
+#
+# Contact information at STMicroelectronics:
+# Roberto Costa <roberto.costa@st.com>
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = .
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+subdir = .
+DIST_COMMON = $(am__configure_deps) $(srcdir)/../install-sh \
+ $(srcdir)/../missing $(srcdir)/../mkinstalldirs \
+ $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(top_srcdir)/configure
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/../config/lead-dot.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 configure.status.lineno
+mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs
+CONFIG_CLEAN_FILES =
+am__installdirs = "$(DESTDIR)$(toollibdir)" "$(DESTDIR)$(toollib2dir)"
+toollibSCRIPT_INSTALL = $(INSTALL_SCRIPT)
+toollib2SCRIPT_INSTALL = $(INSTALL_SCRIPT)
+SCRIPTS = $(toollib_SCRIPTS) $(toollib2_SCRIPTS)
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+ { test ! -d $(distdir) \
+ || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
+ && rm -fr $(distdir); }; }
+DIST_ARCHIVES = $(distdir).tar.gz
+GZIP_ENV = --best
+distuninstallcheck_listfiles = find . -type f -print
+distcleancheck_listfiles = find . -type f -print
+transform = ;
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MCS = @MCS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+am__leading_dot = @am__leading_dot@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build_alias = @build_alias@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host_alias = @host_alias@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+toollib2dir = @toollib2dir@
+toollibdir = @toollibdir@
+AUTOMAKE_OPTIONS = 1.9.5 foreign
+ACLOCAL_AMFLAGS = -I .. -I ../config
+
+# May be used by various substitution variables.
+gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER)
+EXTRA_DIST = gcc4net.cs
+CLEANFILES = gcc4net.dll
+toollib_SCRIPTS = gcc4net.dll
+toollib2_SCRIPTS = gcc4net.dll
+all: all-am
+
+.SUFFIXES:
+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 '; \
+ cd $(srcdir) && $(AUTOMAKE) --foreign \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
+ 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)
+ cd $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+install-toollibSCRIPTS: $(toollib_SCRIPTS)
+ @$(NORMAL_INSTALL)
+ test -z "$(toollibdir)" || $(mkdir_p) "$(DESTDIR)$(toollibdir)"
+ @list='$(toollib_SCRIPTS)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ if test -f $$d$$p; then \
+ f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
+ echo " $(toollibSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(toollibdir)/$$f'"; \
+ $(toollibSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(toollibdir)/$$f"; \
+ else :; fi; \
+ done
+
+uninstall-toollibSCRIPTS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(toollib_SCRIPTS)'; for p in $$list; do \
+ f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
+ echo " rm -f '$(DESTDIR)$(toollibdir)/$$f'"; \
+ rm -f "$(DESTDIR)$(toollibdir)/$$f"; \
+ done
+install-toollib2SCRIPTS: $(toollib2_SCRIPTS)
+ @$(NORMAL_INSTALL)
+ test -z "$(toollib2dir)" || $(mkdir_p) "$(DESTDIR)$(toollib2dir)"
+ @list='$(toollib2_SCRIPTS)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ if test -f $$d$$p; then \
+ f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
+ echo " $(toollib2SCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(toollib2dir)/$$f'"; \
+ $(toollib2SCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(toollib2dir)/$$f"; \
+ else :; fi; \
+ done
+
+uninstall-toollib2SCRIPTS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(toollib2_SCRIPTS)'; for p in $$list; do \
+ f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
+ echo " rm -f '$(DESTDIR)$(toollib2dir)/$$f'"; \
+ rm -f "$(DESTDIR)$(toollib2dir)/$$f"; \
+ done
+uninstall-info-am:
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ $(am__remove_distdir)
+ mkdir $(distdir)
+ $(mkdir_p) $(distdir)/.. $(distdir)/../config
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+ -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
+ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
+ || chmod -R a+r $(distdir)
+dist-gzip: distdir
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ $(am__remove_distdir)
+
+dist-bzip2: distdir
+ tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+ $(am__remove_distdir)
+
+dist-tarZ: distdir
+ tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+ $(am__remove_distdir)
+
+dist-shar: distdir
+ shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+ $(am__remove_distdir)
+
+dist-zip: distdir
+ -rm -f $(distdir).zip
+ zip -rq $(distdir).zip $(distdir)
+ $(am__remove_distdir)
+
+dist dist-all: distdir
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ $(am__remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration. Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+ case '$(DIST_ARCHIVES)' in \
+ *.tar.gz*) \
+ GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
+ *.tar.bz2*) \
+ bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
+ *.tar.Z*) \
+ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+ *.shar.gz*) \
+ GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
+ *.zip*) \
+ unzip $(distdir).zip ;;\
+ esac
+ chmod -R a-w $(distdir); chmod a+w $(distdir)
+ mkdir $(distdir)/_build
+ mkdir $(distdir)/_inst
+ chmod a-w $(distdir)
+ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+ && cd $(distdir)/_build \
+ && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+ $(DISTCHECK_CONFIGURE_FLAGS) \
+ && $(MAKE) $(AM_MAKEFLAGS) \
+ && $(MAKE) $(AM_MAKEFLAGS) dvi \
+ && $(MAKE) $(AM_MAKEFLAGS) check \
+ && $(MAKE) $(AM_MAKEFLAGS) install \
+ && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+ && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+ distuninstallcheck \
+ && chmod -R a-w "$$dc_install_base" \
+ && ({ \
+ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+ } || { rm -rf "$$dc_destdir"; exit 1; }) \
+ && rm -rf "$$dc_destdir" \
+ && $(MAKE) $(AM_MAKEFLAGS) dist \
+ && rm -rf $(DIST_ARCHIVES) \
+ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck
+ $(am__remove_distdir)
+ @(echo "$(distdir) archives ready for distribution: "; \
+ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+ sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}'
+distuninstallcheck:
+ @cd $(distuninstallcheck_dir) \
+ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+ || { echo "ERROR: files left after uninstall:" ; \
+ if test -n "$(DESTDIR)"; then \
+ echo " (check DESTDIR support)"; \
+ fi ; \
+ $(distuninstallcheck_listfiles) ; \
+ exit 1; } >&2
+distcleancheck: distclean
+ @if test '$(srcdir)' = . ; then \
+ echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+ exit 1 ; \
+ fi
+ @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+ || { echo "ERROR: files left in build directory after distclean:" ; \
+ $(distcleancheck_listfiles) ; \
+ exit 1; } >&2
+check-am: all-am
+check: check-am
+all-am: Makefile $(SCRIPTS)
+installdirs:
+ for dir in "$(DESTDIR)$(toollibdir)" "$(DESTDIR)$(toollib2dir)"; do \
+ test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ done
+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:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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 mostlyclean-am
+
+distclean: distclean-am
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-toollib2SCRIPTS install-toollibSCRIPTS
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -rf $(top_srcdir)/autom4te.cache
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-toollib2SCRIPTS \
+ uninstall-toollibSCRIPTS
+
+.PHONY: all all-am am--refresh check check-am clean clean-generic dist \
+ dist-all dist-bzip2 dist-gzip dist-shar dist-tarZ dist-zip \
+ distcheck distclean distclean-generic distcleancheck distdir \
+ distuninstallcheck dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-exec \
+ install-exec-am install-info install-info-am install-man \
+ install-strip install-toollib2SCRIPTS install-toollibSCRIPTS \
+ installcheck installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
+ pdf-am ps ps-am uninstall uninstall-am uninstall-info-am \
+ uninstall-toollib2SCRIPTS uninstall-toollibSCRIPTS
+
+
+gcc4net.dll: $(srcdir)/gcc4net.cs
+ $(MCS) $< -unsafe -target:library -out:$@
+# 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/libgcc4net/aclocal.m4 b/libgcc4net/aclocal.m4
new file mode 100644
index 00000000000..2ed751211a3
--- /dev/null
+++ b/libgcc4net/aclocal.m4
@@ -0,0 +1,583 @@
+# generated automatically by aclocal 1.9.6 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 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.
+
+# 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.
+
+# Copyright (C) 2002, 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_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION so it can be traced.
+# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+ [AM_AUTOMAKE_VERSION([1.9.6])])
+
+# 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
+# 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 7
+
+# 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])
+AC_SUBST([$1_FALSE])
+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])])
+
+# Do all the work for Automake. -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 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 12
+
+# 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.58])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
+# test to see if srcdir already configured
+if test "`cd $srcdir && pwd`" != "`pwd`" &&
+ test -f $srcdir/config.status; then
+ AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+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
+ 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)
+AM_PROG_INSTALL_SH
+AM_PROG_INSTALL_STRIP
+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
+])
+])
+
+
+# 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_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $1 | $1:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
+
+# 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_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+install_sh=${install_sh-"$am_aux_dir/install-sh"}
+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
+# 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
+
+AC_DEFUN([AM_MAINTAINER_MODE],
+[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
+ dnl maintainer-mode is disabled by default
+ AC_ARG_ENABLE(maintainer-mode,
+[ --enable-maintainer-mode enable make rules and dependencies not useful
+ (and sometimes confusing) to the casual installer],
+ USE_MAINTAINER_MODE=$enableval,
+ USE_MAINTAINER_MODE=no)
+ 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])
+
+# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
+
+# Copyright (C) 1997, 1999, 2000, 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.
+
+# serial 4
+
+# 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
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# 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 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 whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise.
+#
+# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories
+# created by `make install' are always world readable, even if the
+# installer happens to have an overly restrictive umask (e.g. 077).
+# This was a mistake. There are at least two reasons why we must not
+# use `-m 0755':
+# - it causes special bits like SGID to be ignored,
+# - it may be too restrictive (some setups expect 775 directories).
+#
+# Do not use -m 0755 and let people choose whatever they expect by
+# setting umask.
+#
+# We cannot accept any implementation of `mkdir' that recognizes `-p'.
+# Some implementations (such as Solaris 8's) are not thread-safe: if a
+# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c'
+# concurrently, both version can detect that a/ is missing, but only
+# one can create it and the other will error out. Consequently we
+# restrict ourselves to GNU make (using the --version option ensures
+# this.)
+AC_DEFUN([AM_PROG_MKDIR_P],
+[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
+ # We used to keeping the `.' as first argument, in order to
+ # allow $(mkdir_p) to be used without argument. As in
+ # $(mkdir_p) $(somedir)
+ # where $(somedir) is conditionally defined. However this is wrong
+ # for two reasons:
+ # 1. if the package is installed by a user who cannot write `.'
+ # make install will fail,
+ # 2. the above comment should most certainly read
+ # $(mkdir_p) $(DESTDIR)$(somedir)
+ # so it does not work when $(somedir) is undefined and
+ # $(DESTDIR) is not.
+ # To support the latter case, we have to write
+ # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
+ # so the `.' trick is pointless.
+ mkdir_p='mkdir -p --'
+else
+ # On NextStep and OpenStep, the `mkdir' command does not
+ # recognize any option. It will interpret all options as
+ # directories to create, and then abort because `.' already
+ # exists.
+ for d in ./-p ./--version;
+ do
+ test -d $d && rmdir $d
+ done
+ # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
+ if test -f "$ac_aux_dir/mkinstalldirs"; then
+ mkdir_p='$(mkinstalldirs)'
+ else
+ mkdir_p='$(install_sh) -d'
+ fi
+fi
+AC_SUBST([mkdir_p])])
+
+# Helper functions for option handling. -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 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.
+
+# serial 3
+
+# _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],
+[AC_FOREACH([_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
+# 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_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# 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="\${SHELL} \$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# 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/lead-dot.m4])
diff --git a/libgcc4net/configure b/libgcc4net/configure
new file mode 100755
index 00000000000..0550036ecc4
--- /dev/null
+++ b/libgcc4net/configure
@@ -0,0 +1,3202 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.60a for libgcc4net 0.1.
+#
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+# 2002, 2003, 2004, 2005, 2006 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 Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs 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
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+
+# PATH needs CR
+# 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
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ as_unset=unset
+else
+ as_unset=false
+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.)
+as_nl='
+'
+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
+ echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ { (exit 1); exit 1; }
+fi
+
+# Work around bugs in pre-3.0 UWIN ksh.
+for as_var in ENV MAIL MAILPATH
+do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+ LC_TELEPHONE LC_TIME
+do
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+ fi
+done
+
+# Required to use basename.
+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
+
+
+# Name of the executable.
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# CDPATH.
+$as_unset CDPATH
+
+
+if test "x$CONFIG_SHELL" = x; then
+ if (eval ":") 2>/dev/null; then
+ as_have_required=yes
+else
+ as_have_required=no
+fi
+
+ if test $as_have_required = yes && (eval ":
+(as_func_return () {
+ (exit \$1)
+}
+as_func_success () {
+ as_func_return 0
+}
+as_func_failure () {
+ as_func_return 1
+}
+as_func_ret_success () {
+ return 0
+}
+as_func_ret_failure () {
+ return 1
+}
+
+exitcode=0
+if as_func_success; then
+ :
+else
+ exitcode=1
+ echo as_func_success failed.
+fi
+
+if as_func_failure; then
+ exitcode=1
+ echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+ :
+else
+ exitcode=1
+ echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+ exitcode=1
+ echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
+ :
+else
+ exitcode=1
+ echo positional parameters were not saved.
+fi
+
+test \$exitcode = 0) || { (exit 1); exit 1; }
+
+(
+ as_lineno_1=\$LINENO
+ as_lineno_2=\$LINENO
+ test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" &&
+ test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; }
+") 2> /dev/null; then
+ :
+else
+ as_candidate_shells=
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /usr/bin/posix$PATH_SEPARATOR/bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ case $as_dir in
+ /*)
+ for as_base in sh bash ksh sh5; do
+ as_candidate_shells="$as_candidate_shells $as_dir/$as_base"
+ done;;
+ esac
+done
+IFS=$as_save_IFS
+
+
+ for as_shell in $as_candidate_shells $SHELL; do
+ # Try only shells that exist, to save several forks.
+ if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+ { ("$as_shell") 2> /dev/null <<\_ASEOF
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs 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
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+:
+_ASEOF
+}; then
+ CONFIG_SHELL=$as_shell
+ as_have_required=yes
+ if { "$as_shell" 2> /dev/null <<\_ASEOF
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs 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
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+:
+(as_func_return () {
+ (exit $1)
+}
+as_func_success () {
+ as_func_return 0
+}
+as_func_failure () {
+ as_func_return 1
+}
+as_func_ret_success () {
+ return 0
+}
+as_func_ret_failure () {
+ return 1
+}
+
+exitcode=0
+if as_func_success; then
+ :
+else
+ exitcode=1
+ echo as_func_success failed.
+fi
+
+if as_func_failure; then
+ exitcode=1
+ echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+ :
+else
+ exitcode=1
+ echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+ exitcode=1
+ echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = "$1" ); then
+ :
+else
+ exitcode=1
+ echo positional parameters were not saved.
+fi
+
+test $exitcode = 0) || { (exit 1); exit 1; }
+
+(
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; }
+
+_ASEOF
+}; then
+ break
+fi
+
+fi
+
+ done
+
+ if test "x$CONFIG_SHELL" != x; then
+ for as_var in BASH_ENV ENV
+ do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+ done
+ export CONFIG_SHELL
+ exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
+fi
+
+
+ if test $as_have_required = no; then
+ echo This script requires a shell more modern than all the
+ echo shells that I found on your system. Please install a
+ echo modern shell, or manually run the script under such a
+ echo shell if you do have one.
+ { (exit 1); exit 1; }
+fi
+
+
+fi
+
+fi
+
+
+
+(eval "as_func_return () {
+ (exit \$1)
+}
+as_func_success () {
+ as_func_return 0
+}
+as_func_failure () {
+ as_func_return 1
+}
+as_func_ret_success () {
+ return 0
+}
+as_func_ret_failure () {
+ return 1
+}
+
+exitcode=0
+if as_func_success; then
+ :
+else
+ exitcode=1
+ echo as_func_success failed.
+fi
+
+if as_func_failure; then
+ exitcode=1
+ echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+ :
+else
+ exitcode=1
+ echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+ exitcode=1
+ echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
+ :
+else
+ exitcode=1
+ echo positional parameters were not saved.
+fi
+
+test \$exitcode = 0") || {
+ echo No shell found that supports shell functions.
+ echo Please tell autoconf@gnu.org about your system,
+ echo including any error possibly output before this
+ echo message
+}
+
+
+
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
+
+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+ # uniformly replaced by the line number. The first 'sed' inserts a
+ # line-number line after each line using $LINENO; the second 'sed'
+ # does the real work. The second script uses 'N' to pair each
+ # line-number line with the line containing $LINENO, and appends
+ # trailing '-' during substitution so that $LINENO is not a special
+ # case at line end.
+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+ # scripts with optimization help from Paolo Bonzini. 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" ||
+ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+ { (exit 1); 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
+}
+
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in
+-n*)
+ case `echo 'x\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ *) ECHO_C='\c';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+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
+fi
+echo >conf$$.file
+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
+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=:
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+# Find out whether ``test -x'' works. Don't use a zero-byte file, as
+# systems may use methods other than mode bits to determine executability.
+cat >conf$$.file <<_ASEOF
+#! /bin/sh
+exit 0
+_ASEOF
+chmod +x conf$$.file
+if test -x conf$$.file >/dev/null 2>&1; then
+ as_executable_p="test -x"
+else
+ as_executable_p=:
+fi
+rm -f conf$$.file
+
+# 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 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=
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+# Identity of this package.
+PACKAGE_NAME='libgcc4net'
+PACKAGE_TARNAME='libgcc4net'
+PACKAGE_VERSION='0.1'
+PACKAGE_STRING='libgcc4net 0.1'
+PACKAGE_BUGREPORT=''
+
+ac_unique_file="gcc4net.cs"
+ac_subst_vars='SHELL
+PATH_SEPARATOR
+PACKAGE_NAME
+PACKAGE_TARNAME
+PACKAGE_VERSION
+PACKAGE_STRING
+PACKAGE_BUGREPORT
+exec_prefix
+prefix
+program_transform_name
+bindir
+sbindir
+libexecdir
+datarootdir
+datadir
+sysconfdir
+sharedstatedir
+localstatedir
+includedir
+oldincludedir
+docdir
+infodir
+htmldir
+dvidir
+pdfdir
+psdir
+libdir
+localedir
+mandir
+DEFS
+ECHO_C
+ECHO_N
+ECHO_T
+LIBS
+build_alias
+host_alias
+target_alias
+INSTALL_PROGRAM
+INSTALL_SCRIPT
+INSTALL_DATA
+CYGPATH_W
+PACKAGE
+VERSION
+ACLOCAL
+AUTOCONF
+AUTOMAKE
+AUTOHEADER
+MAKEINFO
+install_sh
+STRIP
+INSTALL_STRIP_PROGRAM
+mkdir_p
+AWK
+SET_MAKE
+am__leading_dot
+AMTAR
+am__tar
+am__untar
+MAINTAINER_MODE_TRUE
+MAINTAINER_MODE_FALSE
+MAINT
+MCS
+toollibdir
+toollib2dir
+LIBOBJS
+LTLIBOBJS'
+ac_subst_files=''
+ ac_precious_vars='build_alias
+host_alias
+target_alias'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+# 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_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+ { (exit 1); exit 1; }; }
+ ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+ eval enable_$ac_feature=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_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+ { (exit 1); exit 1; }; }
+ ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+ eval enable_$ac_feature=\$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_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid package name: $ac_package" >&2
+ { (exit 1); exit 1; }; }
+ ac_package=`echo $ac_package| sed 's/-/_/g'`
+ eval with_$ac_package=\$ac_optarg ;;
+
+ -without-* | --without-*)
+ ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid package name: $ac_package" >&2
+ { (exit 1); exit 1; }; }
+ ac_package=`echo $ac_package | sed 's/-/_/g'`
+ eval with_$ac_package=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 ;;
+
+ -*) { echo "$as_me: error: unrecognized option: $ac_option
+Try \`$0 --help' for more information." >&2
+ { (exit 1); exit 1; }; }
+ ;;
+
+ *=*)
+ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+ { (exit 1); exit 1; }; }
+ eval $ac_envvar=\$ac_optarg
+ export $ac_envvar ;;
+
+ *)
+ # FIXME: should be removed in autoconf 3.0.
+ echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ 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'`
+ { echo "$as_me: error: missing argument to $ac_option" >&2
+ { (exit 1); exit 1; }; }
+fi
+
+# Be sure to have absolute directory names.
+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
+ case $ac_val in
+ [\\/$]* | ?:[\\/]* ) continue;;
+ NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+ esac
+ { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+ { (exit 1); exit 1; }; }
+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
+ 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 .` ||
+ { echo "$as_me: error: Working directory cannot be determined" >&2
+ { (exit 1); exit 1; }; }
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+ { echo "$as_me: error: pwd does not report name of working directory" >&2
+ { (exit 1); exit 1; }; }
+
+
+# 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 -- "$0" ||
+$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$0" : 'X\(//\)[^/]' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+echo X"$0" |
+ 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 .."
+ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
+ { (exit 1); exit 1; }; }
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+ cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2
+ { (exit 1); exit 1; }; }
+ 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 libgcc4net 0.1 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/libgcc4net]
+ --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
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+ case $ac_init_help in
+ short | recursive ) echo "Configuration of libgcc4net 0.1:";;
+ esac
+ cat <<\_ACEOF
+
+Optional Features:
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --enable-maintainer-mode enable make rules and dependencies not useful
+ (and sometimes confusing) to the casual installer
+
+_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" || continue
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`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
+ 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
+libgcc4net configure 0.1
+generated by GNU Autoconf 2.60a
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006 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
+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 libgcc4net $as_me 0.1, which was
+generated by GNU Autoconf 2.60a. 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=.
+ 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=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ case $ac_pass in
+ 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
+ 2)
+ ac_configure_args1="$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
+ ac_configure_args="$ac_configure_args '$ac_arg'"
+ ;;
+ esac
+ done
+done
+$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
+$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export 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_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
+echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ *) $as_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=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ 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=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ 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 &&
+ echo "$as_me: caught signal $ac_signal"
+ 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'; { (exit 1); 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
+
+# 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
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer explicitly selected file to automatically selected ones.
+if test -n "$CONFIG_SITE"; then
+ set x "$CONFIG_SITE"
+elif test "x$prefix" != xNONE; then
+ set x "$prefix/share/config.site" "$prefix/etc/config.site"
+else
+ set x "$ac_default_prefix/share/config.site" \
+ "$ac_default_prefix/etc/config.site"
+fi
+shift
+for ac_site_file
+do
+ if test -r "$ac_site_file"; then
+ { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
+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
+ { echo "$as_me:$LINENO: loading cache $cache_file" >&5
+echo "$as_me: loading cache $cache_file" >&6;}
+ case $cache_file in
+ [\\/]* | ?:[\\/]* ) . "$cache_file";;
+ *) . "./$cache_file";;
+ esac
+ fi
+else
+ { echo "$as_me:$LINENO: creating cache $cache_file" >&5
+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,)
+ { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,set)
+ { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
+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
+ { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
+echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ { echo "$as_me:$LINENO: former value: $ac_old_val" >&5
+echo "$as_me: former value: $ac_old_val" >&2;}
+ { echo "$as_me:$LINENO: current value: $ac_new_val" >&5
+echo "$as_me: current value: $ac_new_val" >&2;}
+ ac_cache_corrupted=:
+ fi;;
+ esac
+ # Pass precious variables to config.status.
+ if test "$ac_new_set" = set; then
+ case $ac_new_val in
+ *\'*) ac_arg=$ac_var=`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.
+ *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+ esac
+ fi
+done
+if $ac_cache_corrupted; then
+ { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
+echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+ { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
+ { (exit 1); exit 1; }; }
+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
+
+
+
+
+am__api_version="1.9"
+ac_aux_dir=
+for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
+ if test -f "$ac_dir/install-sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install-sh -c"
+ break
+ elif test -f "$ac_dir/install.sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install.sh -c"
+ break
+ elif test -f "$ac_dir/shtool"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/shtool install -c"
+ break
+ fi
+done
+if test -z "$ac_aux_dir"; then
+ { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5
+echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;}
+ { (exit 1); exit 1; }; }
+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.
+
+
+# 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.
+{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; }
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$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
+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ break 3
+ fi
+ fi
+ done
+ done
+ ;;
+esac
+done
+IFS=$as_save_IFS
+
+
+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
+{ echo "$as_me:$LINENO: result: $INSTALL" >&5
+echo "${ECHO_T}$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'
+
+{ echo "$as_me:$LINENO: checking whether build environment is sane" >&5
+echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; }
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# 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".
+ { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken
+alias in your environment" >&5
+echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken
+alias in your environment" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+
+ test "$2" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ { { echo "$as_me:$LINENO: error: newly created file is older than distributed files!
+Check your system clock" >&5
+echo "$as_me: error: newly created file is older than distributed files!
+Check your system clock" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+{ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}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 $. echo might interpret backslashes.
+# By default was `s,x,x', remove it if useless.
+cat <<\_ACEOF >conftest.sed
+s/[\\$]/&&/g;s/;s,x,x,$//
+_ACEOF
+program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
+rm -f conftest.sed
+
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5
+echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+fi
+
+if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
+ # We used to keeping the `.' as first argument, in order to
+ # allow $(mkdir_p) to be used without argument. As in
+ # $(mkdir_p) $(somedir)
+ # where $(somedir) is conditionally defined. However this is wrong
+ # for two reasons:
+ # 1. if the package is installed by a user who cannot write `.'
+ # make install will fail,
+ # 2. the above comment should most certainly read
+ # $(mkdir_p) $(DESTDIR)$(somedir)
+ # so it does not work when $(somedir) is undefined and
+ # $(DESTDIR) is not.
+ # To support the latter case, we have to write
+ # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
+ # so the `.' trick is pointless.
+ mkdir_p='mkdir -p --'
+else
+ # On NextStep and OpenStep, the `mkdir' command does not
+ # recognize any option. It will interpret all options as
+ # directories to create, and then abort because `.' already
+ # exists.
+ for d in ./-p ./--version;
+ do
+ test -d $d && rmdir $d
+ done
+ # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
+ if test -f "$ac_aux_dir/mkinstalldirs"; then
+ mkdir_p='$(mkinstalldirs)'
+ else
+ mkdir_p='$(install_sh) -d'
+ fi
+fi
+
+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
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_AWK+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_AWK="$ac_prog"
+ echo "$as_me:$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
+ { echo "$as_me:$LINENO: result: $AWK" >&5
+echo "${ECHO_T}$AWK" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+ test -n "$AWK" && break
+done
+
+{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; }
+set x ${MAKE-make}; ac_make=`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
+ echo $ECHO_N "(cached) $ECHO_C" >&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
+ { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+ SET_MAKE=
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}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
+
+# test to see if srcdir already configured
+if test "`cd $srcdir && pwd`" != "`pwd`" &&
+ test -f $srcdir/config.status; then
+ { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
+echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
+ { (exit 1); exit 1; }; }
+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='libgcc4net'
+ VERSION='0.1'
+
+
+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"}
+
+install_sh=${install_sh-"$am_aux_dir/install-sh"}
+
+# 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
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ echo "$as_me:$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
+ { echo "$as_me:$LINENO: result: $STRIP" >&5
+echo "${ECHO_T}$STRIP" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}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
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ echo "$as_me:$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
+ { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+echo "${ECHO_T}$ac_ct_STRIP" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+ if test "x$ac_ct_STRIP" = x; then
+ STRIP=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+ STRIP=$ac_ct_STRIP
+ fi
+else
+ STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
+
+# 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 -'
+
+
+
+
+
+
+{ echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5
+echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&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
+
+ { echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5
+echo "${ECHO_T}$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
+
+
+
+# Extract the first word of "mcs", so it can be a program name with args.
+set dummy mcs; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_path_MCS+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $MCS in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_MCS="$MCS" # Let the user override the test with a path.
+ ;;
+ *)
+ 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_MCS="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+ test -z "$ac_cv_path_MCS" && ac_cv_path_MCS="mcs-not-found"
+ ;;
+esac
+fi
+MCS=$ac_cv_path_MCS
+if test -n "$MCS"; then
+ { echo "$as_me:$LINENO: result: $MCS" >&5
+echo "${ECHO_T}$MCS" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+
+toollibdir='$(libdir)'
+toollib2dir='$(toollibdir)/gcc/$(target_alias)/$(gcc_version)'
+
+
+
+ac_config_files="$ac_config_files Makefile"
+
+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_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
+echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ *) $as_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" &&
+ { echo "$as_me:$LINENO: updating cache $cache_file" >&5
+echo "$as_me: updating cache $cache_file" >&6;}
+ cat confcache >$cache_file
+ else
+ { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
+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}'
+
+# Transform confdefs.h into DEFS.
+# Protect against shell expansion while executing Makefile rules.
+# Protect against Makefile macro expansion.
+#
+# If the first sed substitution is executed (which looks for macros that
+# take arguments), then branch to the quote section. Otherwise,
+# look for a macro that doesn't take arguments.
+ac_script='
+t clear
+:clear
+s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g
+t quote
+s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g
+t quote
+b any
+:quote
+s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g
+s/\[/\\&/g
+s/\]/\\&/g
+s/\$/$$/g
+H
+:any
+${
+ g
+ s/^\n//
+ s/\n/ /g
+ p
+}
+'
+DEFS=`sed -n "$ac_script" confdefs.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=`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.
+ ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+ ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+: ${CONFIG_STATUS=./config.status}
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
+echo "$as_me: creating $CONFIG_STATUS" >&6;}
+cat >$CONFIG_STATUS <<_ACEOF
+#! $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}
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+## --------------------- ##
+## M4sh Initialization. ##
+## --------------------- ##
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs 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
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+
+# PATH needs CR
+# 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
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ as_unset=unset
+else
+ as_unset=false
+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.)
+as_nl='
+'
+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
+ echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ { (exit 1); exit 1; }
+fi
+
+# Work around bugs in pre-3.0 UWIN ksh.
+for as_var in ENV MAIL MAILPATH
+do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+ LC_TELEPHONE LC_TIME
+do
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+ fi
+done
+
+# Required to use basename.
+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
+
+
+# Name of the executable.
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# CDPATH.
+$as_unset CDPATH
+
+
+
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
+
+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+ # uniformly replaced by the line number. The first 'sed' inserts a
+ # line-number line after each line using $LINENO; the second 'sed'
+ # does the real work. The second script uses 'N' to pair each
+ # line-number line with the line containing $LINENO, and appends
+ # trailing '-' during substitution so that $LINENO is not a special
+ # case at line end.
+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+ # scripts with optimization help from Paolo Bonzini. 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" ||
+ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+ { (exit 1); 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
+}
+
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in
+-n*)
+ case `echo 'x\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ *) ECHO_C='\c';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+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
+fi
+echo >conf$$.file
+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
+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=:
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+# Find out whether ``test -x'' works. Don't use a zero-byte file, as
+# systems may use methods other than mode bits to determine executability.
+cat >conf$$.file <<_ASEOF
+#! /bin/sh
+exit 0
+_ASEOF
+chmod +x conf$$.file
+if test -x conf$$.file >/dev/null 2>&1; then
+ as_executable_p="test -x"
+else
+ as_executable_p=:
+fi
+rm -f conf$$.file
+
+# 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
+
+# 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 libgcc4net $as_me 0.1, which was
+generated by GNU Autoconf 2.60a. 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
+
+cat >>$CONFIG_STATUS <<_ACEOF
+# Files that config.status was made for.
+config_files="$ac_config_files"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTIONS] [FILE]...
+
+ -h, --help print this help, then exit
+ -V, --version print version number and configuration settings, then exit
+ -q, --quiet 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
+
+Configuration files:
+$config_files
+
+Report bugs to <bug-autoconf@gnu.org>."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+ac_cs_version="\\
+libgcc4net config.status 0.1
+configured by $0, generated by GNU Autoconf 2.60a,
+ with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
+
+Copyright (C) 2006 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'
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+# If no file are specified by the user, then we need to provide default
+# value. By we need to know if files were specified by the user.
+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 )
+ echo "$ac_cs_version"; exit ;;
+ --debug | --debu | --deb | --de | --d | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ $ac_shift
+ CONFIG_FILES="$CONFIG_FILES $ac_optarg"
+ ac_need_defaults=false;;
+ --he | --h | --help | --hel | -h )
+ 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.
+ -*) { echo "$as_me: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&2
+ { (exit 1); exit 1; }; } ;;
+
+ *) ac_config_targets="$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
+if \$ac_cs_recheck; then
+ echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
+ CONFIG_SHELL=$SHELL
+ export CONFIG_SHELL
+ exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+exec 5>>config.log
+{
+ echo
+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+ echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+ case $ac_config_target in
+ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+
+ *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+ { (exit 1); exit 1; }; };;
+ 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
+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 '{ (exit 1); 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")
+} ||
+{
+ echo "$me: cannot create a temporary directory in ." >&2
+ { (exit 1); exit 1; }
+}
+
+#
+# Set up the sed scripts for CONFIG_FILES section.
+#
+
+# No need to generate the scripts if there are no CONFIG_FILES.
+# This happens for instance when ./config.status config.h
+if test -n "$CONFIG_FILES"; then
+
+_ACEOF
+
+
+
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+ cat >conf$$subs.sed <<_ACEOF
+SHELL!$SHELL$ac_delim
+PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim
+PACKAGE_NAME!$PACKAGE_NAME$ac_delim
+PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim
+PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim
+PACKAGE_STRING!$PACKAGE_STRING$ac_delim
+PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim
+exec_prefix!$exec_prefix$ac_delim
+prefix!$prefix$ac_delim
+program_transform_name!$program_transform_name$ac_delim
+bindir!$bindir$ac_delim
+sbindir!$sbindir$ac_delim
+libexecdir!$libexecdir$ac_delim
+datarootdir!$datarootdir$ac_delim
+datadir!$datadir$ac_delim
+sysconfdir!$sysconfdir$ac_delim
+sharedstatedir!$sharedstatedir$ac_delim
+localstatedir!$localstatedir$ac_delim
+includedir!$includedir$ac_delim
+oldincludedir!$oldincludedir$ac_delim
+docdir!$docdir$ac_delim
+infodir!$infodir$ac_delim
+htmldir!$htmldir$ac_delim
+dvidir!$dvidir$ac_delim
+pdfdir!$pdfdir$ac_delim
+psdir!$psdir$ac_delim
+libdir!$libdir$ac_delim
+localedir!$localedir$ac_delim
+mandir!$mandir$ac_delim
+DEFS!$DEFS$ac_delim
+ECHO_C!$ECHO_C$ac_delim
+ECHO_N!$ECHO_N$ac_delim
+ECHO_T!$ECHO_T$ac_delim
+LIBS!$LIBS$ac_delim
+build_alias!$build_alias$ac_delim
+host_alias!$host_alias$ac_delim
+target_alias!$target_alias$ac_delim
+INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim
+INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim
+INSTALL_DATA!$INSTALL_DATA$ac_delim
+CYGPATH_W!$CYGPATH_W$ac_delim
+PACKAGE!$PACKAGE$ac_delim
+VERSION!$VERSION$ac_delim
+ACLOCAL!$ACLOCAL$ac_delim
+AUTOCONF!$AUTOCONF$ac_delim
+AUTOMAKE!$AUTOMAKE$ac_delim
+AUTOHEADER!$AUTOHEADER$ac_delim
+MAKEINFO!$MAKEINFO$ac_delim
+install_sh!$install_sh$ac_delim
+STRIP!$STRIP$ac_delim
+INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim
+mkdir_p!$mkdir_p$ac_delim
+AWK!$AWK$ac_delim
+SET_MAKE!$SET_MAKE$ac_delim
+am__leading_dot!$am__leading_dot$ac_delim
+AMTAR!$AMTAR$ac_delim
+am__tar!$am__tar$ac_delim
+am__untar!$am__untar$ac_delim
+MAINTAINER_MODE_TRUE!$MAINTAINER_MODE_TRUE$ac_delim
+MAINTAINER_MODE_FALSE!$MAINTAINER_MODE_FALSE$ac_delim
+MAINT!$MAINT$ac_delim
+MCS!$MCS$ac_delim
+toollibdir!$toollibdir$ac_delim
+toollib2dir!$toollib2dir$ac_delim
+LIBOBJS!$LIBOBJS$ac_delim
+LTLIBOBJS!$LTLIBOBJS$ac_delim
+_ACEOF
+
+ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 66; then
+ break
+ elif $ac_last_try; then
+ { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+ { (exit 1); exit 1; }; }
+ else
+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+done
+
+ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
+if test -n "$ac_eof"; then
+ ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
+ ac_eof=`expr $ac_eof + 1`
+fi
+
+cat >>$CONFIG_STATUS <<_ACEOF
+cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end
+_ACEOF
+sed '
+s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
+s/^/s,@/; s/!/@,|#_!!_#|/
+:n
+t n
+s/'"$ac_delim"'$/,g/; t
+s/$/\\/; p
+N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
+' >>$CONFIG_STATUS <conf$$subs.sed
+rm -f conf$$subs.sed
+cat >>$CONFIG_STATUS <<_ACEOF
+:end
+s/|#_!!_#|//g
+CEOF$ac_eof
+_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
+fi # test -n "$CONFIG_FILES"
+
+
+for ac_tag in :F $CONFIG_FILES
+do
+ case $ac_tag in
+ :[FHLC]) ac_mode=$ac_tag; continue;;
+ esac
+ case $ac_mode$ac_tag in
+ :[FHL]*:*);;
+ :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5
+echo "$as_me: error: Invalid tag $ac_tag." >&2;}
+ { (exit 1); exit 1; }; };;
+ :[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 ||
+ { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
+echo "$as_me: error: cannot find input file: $ac_f" >&2;}
+ { (exit 1); exit 1; }; };;
+ esac
+ ac_file_inputs="$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 "`IFS=:
+ echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure."
+ if test x"$ac_file" != x-; then
+ configure_input="$ac_file. $configure_input"
+ { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+ fi
+
+ case $ac_tag in
+ *:-:* | *:-) cat >"$tmp/stdin";;
+ 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 ||
+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"
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`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 ||
+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" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
+echo "$as_me: error: cannot create directory $as_dir" >&2;}
+ { (exit 1); exit 1; }; }; }
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`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
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+# 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=
+
+case `sed -n '/datarootdir/ {
+ p
+ q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p
+' $ac_file_inputs` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+ { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+ 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
+ sed "$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s&@configure_input@&$configure_input&;t t
+s&@top_builddir@&$ac_top_builddir_sub&;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
+$ac_datarootdir_hack
+" $ac_file_inputs | sed -f "$tmp/subs-1.sed" >$tmp/out
+
+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"; } &&
+ { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined." >&5
+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
+ ;;
+
+
+
+ esac
+
+done # for ac_tag
+
+
+{ (exit 0); exit 0; }
+_ACEOF
+chmod +x $CONFIG_STATUS
+ac_clean_files=$ac_clean_files_save
+
+
+# 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 || { (exit 1); exit 1; }
+fi
+
diff --git a/libgcc4net/configure.ac b/libgcc4net/configure.ac
new file mode 100644
index 00000000000..b309f365871
--- /dev/null
+++ b/libgcc4net/configure.ac
@@ -0,0 +1,47 @@
+# Process this file with autoconf to produce a configure script, like so:
+#
+# aclocal -I .. -I ../config && autoconf && automake
+
+# Copyright (C) 2007 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 2
+# 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; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+# Authors:
+# Andrea Ornstein
+# Erven Rohou
+# Roberto Costa
+#
+# Contact information at STMicroelectronics:
+# Roberto Costa <roberto.costa@st.com>
+
+
+AC_PREREQ(2.59)
+AC_INIT(libgcc4net, 0.1)
+AC_CONFIG_SRCDIR(gcc4net.cs)
+
+AM_INIT_AUTOMAKE
+
+AM_MAINTAINER_MODE
+
+AC_PATH_PROG(MCS, mcs, mcs-not-found)
+
+toollibdir='$(libdir)'
+toollib2dir='$(toollibdir)/gcc/$(target_alias)/$(gcc_version)'
+AC_SUBST(toollibdir)
+AC_SUBST(toollib2dir)
+
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
diff --git a/libgcc4net/gcc4net.cs b/libgcc4net/gcc4net.cs
new file mode 100644
index 00000000000..802d2cdbdc3
--- /dev/null
+++ b/libgcc4net/gcc4net.cs
@@ -0,0 +1,745 @@
+/* Run-time support required by CIL binaries.
+
+ Copyright (C) 2006-2007 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 2
+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; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301, USA.
+
+Authors:
+ Andrea Bona
+ Andrea Ornstein
+ Erven Rohou
+ Roberto Costa
+
+Contact information at STMicroelectronics:
+Roberto Costa <roberto.costa@st.com> */
+
+using System;
+using System.Collections;
+using System.Reflection;
+using System.Runtime.InteropServices;
+
+namespace gcc4net {
+ public unsafe sealed class StartupHelper {
+
+ public unsafe static IntPtr GetArgv(out int argc) {
+ String[] argv = Environment.GetCommandLineArgs();
+ argc = argv.Length;
+ int ptr_size = (int)(sizeof(void*));
+ int size = (argc + 1) * ptr_size;
+ IntPtr res = Marshal.AllocHGlobal(size);
+
+ for (int i=0; i < argc; ++i) {
+ Marshal.WriteIntPtr(res, ptr_size * i,
+ Marshal.StringToHGlobalAnsi(argv[i]));
+ }
+ Marshal.WriteIntPtr(res, ptr_size * argc, IntPtr.Zero);
+
+ return res;
+ }
+
+ public unsafe static IntPtr GetEnvVars() {
+ IDictionary env = Environment.GetEnvironmentVariables();
+ int num_elems = env.Keys.Count;
+ int ptr_size = (int)(sizeof(void*));
+ int size = (num_elems + 1) * ptr_size;
+ IntPtr res = Marshal.AllocHGlobal(size);
+
+ int i = 0;
+ foreach (DictionaryEntry de in env) {
+ String str = de.Key + "=" + de.Value;
+ Marshal.WriteIntPtr(res, ptr_size * i,
+ Marshal.StringToHGlobalAnsi(str));
+ ++i;
+ }
+ Marshal.WriteIntPtr(res, ptr_size * num_elems, IntPtr.Zero);
+
+ return res;
+ }
+
+ public unsafe static void Startup() {
+ Assembly assembly;
+ MethodInfo initMethod = null;
+
+ // Find the module that contains the "main" function.
+ assembly = Assembly.GetEntryAssembly();
+
+ Type type = assembly.GetType("<Module>");
+ if (type != null)
+ initMethod = type.GetMethod(".init");
+ else {
+ Module module = assembly.GetModules()[0];
+ initMethod = module.GetMethod(".init");
+ }
+
+ // Invoke the application's ".init" function, if present.
+ if(initMethod != null)
+ initMethod.Invoke(null, null);
+ }
+
+ public unsafe static void Shutdown(int status) {
+ }
+
+ }
+
+ public sealed class Crt {
+ public static int __minsi3(int a, int b) { return (a<=b) ? a : b; }
+ public static long __mindi3(long a, long b) { return (a<=b) ? a : b; }
+ public static uint __uminsi3(uint a, uint b) { return (a<=b) ? a : b; }
+ public static ulong __umindi3(ulong a, ulong b) { return (a<=b) ? a : b; }
+ public static float __minsf3(float a, float b) { return (a<=b) ? a : b; }
+ public static double __mindf3(double a, double b) { return (a<=b) ? a : b; }
+
+ public static int __maxsi3(int a, int b) { return (a>=b) ? a : b; }
+ public static long __maxdi3(long a, long b) { return (a>=b) ? a : b; }
+ public static uint __umaxsi3(uint a, uint b) { return (a>=b) ? a : b; }
+ public static ulong __umaxdi3(ulong a, ulong b) { return (a>=b) ? a : b; }
+ public static float __maxsf3(float a, float b) { return (a>=b) ? a : b; }
+ public static double __maxdf3(double a, double b) { return (a>=b) ? a : b; }
+
+ public static int __abssi2(int a) { return (a>=0) ? a : -a; }
+ public static long __absdi2(long a) { return (a>=0) ? a : -a; }
+ public static float __abssf2(float a) { return (a>=0) ? a : -a; }
+ public static double __absdf2(double a) { return (a>=0) ? a : -a; }
+
+ // Returns the number of leading 0-bits in a, starting at the most
+ // significant bit position. If a is 0, the result is undefined.
+ public static int __clzsi2(uint a)
+ {
+ if (a == 0)
+ return 32; /* __builtin_clz(0) is undefined, anyway */
+ int n = 0;
+ if (a <= 0x0000ffff) { n += 16; a = a << 16; }
+ if (a <= 0x00ffffff) { n += 8; a = a << 8; }
+ if (a <= 0x0fffffff) { n += 4; a = a << 4; }
+ if (a <= 0x3fffffff) { n += 2; a = a << 2; }
+ if (a <= 0x7fffffff) { ++n; }
+ return n;
+ }
+
+ public static int __clzdi2(ulong a)
+ {
+ if (a == 0)
+ return 64; /* __builtin_clz(0) is undefined, anyway */
+ int n = 0;
+ if (a <= 0x00000000ffffffff) { n += 32; a = a << 32; }
+ if (a <= 0x0000ffffffffffff) { n += 16; a = a << 16; }
+ if (a <= 0x00ffffffffffffff) { n += 8; a = a << 8; }
+ if (a <= 0x0fffffffffffffff) { n += 4; a = a << 4; }
+ if (a <= 0x3fffffffffffffff) { n += 2; a = a << 2; }
+ if (a <= 0x7fffffffffffffff) { ++n; }
+ return n;
+ }
+
+ // Returns the number of trailing 0-bits in a, starting at the least
+ // significant bit position. If a is 0, the result is undefined.
+ public static int __ctzsi2(uint a)
+ {
+ if (a == 0)
+ return 32; /* __builtin_ctz(0) is undefined, anyway */
+ int n = 1;
+ if ((a & 0x0000ffff) == 0) { n += 16; a = a >> 16; }
+ if ((a & 0x000000ff) == 0) { n += 8; a = a >> 8; }
+ if ((a & 0x0000000f) == 0) { n += 4; a = a >> 4; }
+ if ((a & 0x00000003) == 0) { n += 2; a = a >> 2; }
+ return n - (int)(a & 1);
+ }
+
+ public static int __ctzdi2(ulong a)
+ {
+ if (a == 0)
+ return 64; /* __builtin_ctz(0) is undefined, anyway */
+ int n = 1;
+ if ((a & 0x00000000ffffffff) == 0) { n += 32; a = a >> 32; }
+ if ((a & 0x000000000000ffff) == 0) { n += 16; a = a >> 16; }
+ if ((a & 0x00000000000000ff) == 0) { n += 8; a = a >> 8; }
+ if ((a & 0x000000000000000f) == 0) { n += 4; a = a >> 4; }
+ if ((a & 0x0000000000000003) == 0) { n += 2; a = a >> 2; }
+ return (n - (int)(a & 1));
+ }
+
+ // Returns one plus the index of the least significant 1-bit of a, or
+ // if a is zero, returns zero.
+ // Should take uint, but __builtin_ffs defines it as taking int.
+ public static int __ffssi2(int a)
+ {
+ int i;
+ if (a == 0)
+ return 0;
+ for (i = 0; i < 32; i++)
+ if ((a & (1 << i)) != 0)
+ break;
+ return i + 1;
+ }
+
+ // Should take ulong, but __builtin_ffs defines it as taking long.
+ public static int __ffsdi2(long a)
+ {
+ int i;
+ if (a == 0)
+ return 0;
+ for (i = 0; i < 64; i++)
+ if ((a & ((long)1 << i)) != 0)
+ break;
+ return i + 1;
+ }
+
+ // Returns the parity of a, i.e. the number of 1-bits in a modulo 2.
+ public static int __paritysi2(uint a)
+ {
+ uint n;
+ n = a ^ (a >> 1);
+ n = n ^ (n >> 2);
+ n = n ^ (n >> 4);
+ n = n ^ (n >> 8);
+ n = n ^ (n >> 16);
+ return (int)(n & 1);
+ }
+
+ public static int __paritydi2(ulong a)
+ {
+ ulong n;
+ n = a ^ (a >> 1);
+ n = n ^ (n >> 2);
+ n = n ^ (n >> 4);
+ n = n ^ (n >> 8);
+ n = n ^ (n >> 16);
+ n = n ^ (n >> 32);
+ return (int)(n & 1);
+ }
+
+ // Returns the number of 1-bits in a.
+ public static int __popcountsi2(uint a)
+ {
+ a = (a & 0x55555555) + ((a >> 1) & 0x55555555);
+ a = (a & 0x33333333) + ((a >> 2) & 0x33333333);
+ a = (a & 0x0f0f0f0f) + ((a >> 4) & 0x0f0f0f0f);
+ a = (a & 0x00ff00ff) + ((a >> 8) & 0x00ff00ff);
+ a = (a & 0x0000ffff) + ((a >> 16) & 0x0000ffff);
+ return (int)a;
+ }
+
+ public static int __popcountdi2(ulong a)
+ {
+ a = (a & 0x5555555555555555) + ((a >> 1) & 0x5555555555555555);
+ a = (a & 0x3333333333333333) + ((a >> 2) & 0x3333333333333333);
+ a = (a & 0x0f0f0f0f0f0f0f0f) + ((a >> 4) & 0x0f0f0f0f0f0f0f0f);
+ a = (a & 0x00ff00ff00ff00ff) + ((a >> 8) & 0x00ff00ff00ff00ff);
+ a = (a & 0x0000ffff0000ffff) + ((a >> 16) & 0x0000ffff0000ffff);
+ a = (a & 0x00000000ffffffff) + ((a >> 32) & 0x00000000ffffffff);
+ return (int)a;
+ }
+
+ public static unsafe bool __isLittleEndian() {
+ // big endian: 3f f0 00 00 00 00 00 00
+ // little endian: 00 00 00 00 00 00 f0 3f
+ double d = 1.0;
+ byte* b = (byte*)&d;
+ return b[0]==0;
+ }
+ }
+
+ namespace CQualifiers {
+ /* Optional modifier class used to mark "const" types */
+ public sealed class IsConst {
+ }
+
+ /* Optional modifier class used to mark "restrict" types */
+ public sealed class IsRestrict {
+ }
+
+ /* Optional modifier class used to mark "volatile" types */
+ public sealed class IsVolatile {
+ }
+ }
+
+ // ------------------------------------------------------------------
+ // Complex types
+ // ------------------------------------------------------------------
+
+ // signed integers
+
+ public struct complex_char {
+ private sbyte re, im;
+
+ public static complex_char complex_char_ctor(sbyte the_re, sbyte the_im)
+ {
+ complex_char result;
+ result.re = the_re;
+ result.im = the_im;
+ return result;
+ }
+
+ public static sbyte complex_char_Re(complex_char c) { return c.re; }
+ public static sbyte complex_char_Im(complex_char c) { return c.im; }
+ public void complex_char_set_Re(sbyte val) { re = val; }
+ public void complex_char_set_Im(sbyte val) { im = val; }
+ }
+
+
+ public struct complex_short {
+ private short re, im;
+
+ public static complex_short complex_short_ctor(short the_re, short the_im)
+ {
+ complex_short result;
+ result.re = the_re;
+ result.im = the_im;
+ return result;
+ }
+
+ public static short complex_short_Re(complex_short c) { return c.re; }
+ public static short complex_short_Im(complex_short c) { return c.im; }
+ public void complex_short_set_Re(short val) { re = val; }
+ public void complex_short_set_Im(short val) { im = val; }
+ }
+
+
+ public struct complex_int {
+ private int re, im;
+
+ public static complex_int complex_int_ctor(int the_re, int the_im)
+ {
+ complex_int result;
+ result.re = the_re;
+ result.im = the_im;
+ return result;
+ }
+
+ public static int complex_int_Re(complex_int c) { return c.re; }
+ public static int complex_int_Im(complex_int c) { return c.im; }
+ public void complex_int_set_Re(int val) { re = val; }
+ public void complex_int_set_Im(int val) { im = val; }
+ }
+
+
+ public struct complex_long {
+ private long re, im;
+
+ public static complex_long complex_long_ctor(long the_re, long the_im)
+ {
+ complex_long result;
+ result.re = the_re;
+ result.im = the_im;
+ return result;
+ }
+
+ public static long complex_long_Re(complex_long c) { return c.re; }
+ public static long complex_long_Im(complex_long c) { return c.im; }
+ public void complex_long_set_Re(long val) { re = val; }
+ public void complex_long_set_Im(long val) { im = val; }
+ }
+
+
+ // unsigned signed integers
+
+ public struct complex_uchar {
+ private byte re, im;
+
+ public static complex_uchar complex_uchar_ctor(byte the_re, byte the_im)
+ {
+ complex_uchar result;
+ result.re = the_re;
+ result.im = the_im;
+ return result;
+ }
+
+ public static byte complex_uchar_Re(complex_uchar c) { return c.re; }
+ public static byte complex_uchar_Im(complex_uchar c) { return c.im; }
+ public void complex_uchar_set_Re(byte val) { re = val; }
+ public void complex_uchar_set_Im(byte val) { im = val; }
+ }
+
+
+ public struct complex_ushort {
+ private ushort re, im;
+
+ public static complex_ushort complex_ushort_ctor(ushort the_re, ushort the_im)
+ {
+ complex_ushort result;
+ result.re = the_re;
+ result.im = the_im;
+ return result;
+ }
+
+ public static ushort complex_ushort_Re(complex_ushort c) { return c.re; }
+ public static ushort complex_ushort_Im(complex_ushort c) { return c.im; }
+ public void complex_ushort_set_Re(ushort val) { re = val; }
+ public void complex_ushort_set_Im(ushort val) { im = val; }
+ }
+
+
+ public struct complex_uint {
+ private uint re, im;
+
+ public static complex_uint complex_uint_ctor(uint the_re, uint the_im)
+ {
+ complex_uint result;
+ result.re = the_re;
+ result.im = the_im;
+ return result;
+ }
+
+ public static uint complex_uint_Re(complex_uint c) { return c.re; }
+ public static uint complex_uint_Im(complex_uint c) { return c.im; }
+ public void complex_uint_set_Re(uint val) { re = val; }
+ public void complex_uint_set_Im(uint val) { im = val; }
+ }
+
+
+ public struct complex_ulong {
+ private ulong re, im;
+
+ public static complex_ulong complex_ulong_ctor(ulong the_re, ulong the_im)
+ {
+ complex_ulong result;
+ result.re = the_re;
+ result.im = the_im;
+ return result;
+ }
+
+ public static ulong complex_ulong_Re(complex_ulong c) { return c.re; }
+ public static ulong complex_ulong_Im(complex_ulong c) { return c.im; }
+ public void complex_ulong_set_Re(ulong val) { re = val; }
+ public void complex_ulong_set_Im(ulong val) { im = val; }
+ }
+
+
+ // floating point
+
+ public struct complex_float {
+ private float re, im;
+
+ public static complex_float complex_float_ctor(float the_re,
+ float the_im)
+ {
+ complex_float result;
+ result.re = the_re;
+ result.im = the_im;
+ return result;
+ }
+
+ public static float complex_float_Re(complex_float c) { return c.re; }
+ public static float complex_float_Im(complex_float c) { return c.im; }
+ public void complex_float_set_Re(float val) { re = val; }
+ public void complex_float_set_Im(float val) { im = val; }
+ }
+
+
+ public struct complex_double {
+ private double re, im;
+
+ public static complex_double complex_double_ctor(double the_re,
+ double the_im)
+ {
+ complex_double result;
+ result.re = the_re;
+ result.im = the_im;
+ return result;
+ }
+
+ public static double complex_double_Re(complex_double c) { return c.re; }
+ public static double complex_double_Im(complex_double c) { return c.im; }
+ public void complex_double_set_Re(double val) { re = val; }
+ public void complex_double_set_Im(double val) { im = val; }
+ }
+
+
+ // ------------------------------------------------------------------
+ // Vector types
+ // ------------------------------------------------------------------
+
+ // 4-byte int vector types: V4QI, V2HI
+ public struct V4QI {
+ private byte f0, f1, f2, f3;
+
+ public static V4QI V4QI_ctor1(byte b0, byte b1, byte b2, byte b3)
+ {
+ V4QI result;
+ result.f0 = b0;
+ result.f1 = b1;
+ result.f2 = b2;
+ result.f3 = b3;
+ return result;
+ }
+
+ public static V4QI V4QI_ctor2(uint f)
+ {
+ V4QI result;
+ result.f0 = (byte) (f >> 24);
+ result.f1 = (byte)((f >> 16) & 0xff);
+ result.f2 = (byte)((f >> 8) & 0xff);
+ result.f3 = (byte) (f & 0xff);
+ return result;
+ }
+
+ public static uint V4QI_to_usi(V4QI v)
+ {
+ return (uint) ((v.f0 << 24) | (v.f1 << 16) | (v.f2 << 8) | v.f3);
+ }
+
+ public static int V4QI_to_si(V4QI v)
+ {
+ return (int) ((v.f0 << 24) | (v.f1 << 16) | (v.f2 << 8) | v.f3);
+ }
+ }
+
+
+ public struct V2HI {
+ private ushort f0, f1;
+
+ public static V2HI V2HI_ctor1(ushort s0, ushort s1)
+ {
+ V2HI result;
+ result.f0 = s0;
+ result.f1 = s1;
+ return result;
+ }
+
+ public static V2HI V2HI_ctor2(uint f)
+ {
+ V2HI result;
+ result.f0 = (ushort)(f >> 16);
+ result.f1 = (ushort)(f & 0xffff);
+ return result;
+ }
+
+ public static uint V2HI_to_usi(V2HI v)
+ {
+ return (uint) ((v.f0 << 16) | v.f1);
+ }
+ public static int V2HI_to_si(V2HI v)
+ {
+ return (int)((v.f0 << 16) | v.f1);
+ }
+ }
+
+ // 8-byte int vector types: V8QI, V4HI, V2SI
+ public struct V8QI {
+ private byte f0, f1, f2, f3, f4, f5, f6, f7;
+
+ public static V8QI V8QI_ctor1(byte b0, byte b1, byte b2, byte b3,
+ byte b4, byte b5, byte b6, byte b7)
+ {
+ V8QI result;
+ result.f0 = b0;
+ result.f1 = b1;
+ result.f2 = b2;
+ result.f3 = b3;
+ result.f4 = b4;
+ result.f5 = b5;
+ result.f6 = b6;
+ result.f7 = b7;
+ return result;
+ }
+
+ public static V8QI V8QI_ctor2(ulong f)
+ {
+ V8QI result;
+ result.f0 = (byte) (f >> 56);
+ result.f1 = (byte)((f >> 48) & 0xff);
+ result.f2 = (byte)((f >> 40) & 0xff);
+ result.f3 = (byte)((f >> 32) & 0xff);
+ result.f4 = (byte)((f >> 24) & 0xff);
+ result.f5 = (byte)((f >> 16) & 0xff);
+ result.f6 = (byte)((f >> 8) & 0xff);
+ result.f7 = (byte) (f & 0xff);
+ return result;
+ }
+
+ public static ulong V8QI_to_udi(V8QI v)
+ {
+ return ((ulong)v.f0 << 56) | ((ulong)v.f1 << 48) |
+ ((ulong)v.f2 << 40) | ((ulong)v.f3 << 32) |
+ ((ulong)v.f4 << 24) | ((ulong)v.f5 << 16) |
+ ((ulong)v.f6 << 8) | (ulong)v.f7;
+ }
+ public static long V8QI_to_di(V8QI v)
+ {
+ return (long)(((ulong)v.f0 << 56) | ((ulong)v.f1 << 48) |
+ ((ulong)v.f2 << 40) | ((ulong)v.f3 << 32) |
+ ((ulong)v.f4 << 24) | ((ulong)v.f5 << 16) |
+ ((ulong)v.f6 << 8) | (ulong)v.f7);
+ }
+ }
+
+
+ public struct V4HI {
+ private ushort f0, f1, f2, f3;
+
+ public static V4HI V4HI_ctor1(ushort b0, ushort b1, ushort b2, ushort b3)
+ {
+ V4HI result;
+ result.f0 = b0;
+ result.f1 = b1;
+ result.f2 = b2;
+ result.f3 = b3;
+ return result;
+ }
+
+ public static V4HI V4HI_ctor2(ulong f)
+ {
+ V4HI result;
+ result.f0 = (ushort) (f >> 48);
+ result.f1 = (ushort)((f >> 32) & 0xffff);
+ result.f2 = (ushort)((f >> 16) & 0xffff);
+ result.f3 = (ushort) (f & 0xffff);
+ return result;
+ }
+
+ public static ulong V4HI_to_udi(V4HI v)
+ {
+ return ((ulong)v.f0 << 48) | ((ulong)v.f1 << 32) |
+ ((ulong)v.f2 << 16) | (ulong)v.f3;
+ }
+ public static long V4HI_to_di(V4HI v)
+ {
+ return (long)(((ulong)v.f0 << 48) | ((ulong)v.f1 << 32) |
+ ((ulong)v.f2 << 16) | (ulong)v.f3);
+ }
+ }
+
+
+ public struct V2SI {
+ private uint f0, f1;
+
+ public static V2SI V2SI_ctor1(uint b0, uint b1)
+ {
+ V2SI result;
+ result.f0 = b0;
+ result.f1 = b1;
+ return result;
+ }
+ public static V2SI V2SI_ctor2(ulong f)
+ {
+ V2SI result;
+ result.f0 = (uint)(f >> 32);
+ result.f1 = (uint)(f & 0xffff);
+ return result;
+ }
+
+ public static ulong V2SI_to_udi(V2SI v)
+ {
+ return ((ulong)v.f0 << 32) | (ulong)v.f1;
+ }
+
+ public static long V2SI_to_di(V2SI v)
+ {
+ return (long)(((ulong)v.f0 << 32) | (ulong)v.f1);
+ }
+ }
+
+
+ // 16-byte int vector types: V4SI
+ public struct V4SI {
+ private uint f0, f1, f2, f3;
+
+ public static V4SI V4SI_ctor1(uint b0, uint b1, uint b2, uint b3)
+ {
+ V4SI result;
+ result.f0 = b0;
+ result.f1 = b1;
+ result.f2 = b2;
+ result.f3 = b3;
+ return result;
+ }
+ }
+
+ public struct V8HI {
+ private ushort f0, f1, f2, f3, f4, f5, f6, f7;
+
+ public static V8HI V8HI_ctor1(ushort b0, ushort b1,
+ ushort b2, ushort b3,
+ ushort b4, ushort b5,
+ ushort b6, ushort b7)
+ {
+ V8HI result;
+ result.f0 = b0;
+ result.f1 = b1;
+ result.f2 = b2;
+ result.f3 = b3;
+ result.f4 = b4;
+ result.f5 = b5;
+ result.f6 = b6;
+ result.f7 = b7;
+ return result;
+ }
+ }
+
+ public struct V16QI {
+ private byte f0, f1, f2, f3, f4, f5, f6, f7,
+ f8, f9, f10, f11, f12, f13, f14, f15;
+
+ public static V16QI V16QI_ctor1(byte b0, byte b1, byte b2, byte b3,
+ byte b4, byte b5, byte b6, byte b7,
+ byte b8, byte b9, byte b10, byte b11,
+ byte b12, byte b13, byte b14, byte b15)
+ {
+ V16QI result;
+ result.f0 = b0;
+ result.f1 = b1;
+ result.f2 = b2;
+ result.f3 = b3;
+ result.f4 = b4;
+ result.f5 = b5;
+ result.f6 = b6;
+ result.f7 = b7;
+ result.f8 = b8;
+ result.f9 = b9;
+ result.f10 = b10;
+ result.f11 = b11;
+ result.f12 = b12;
+ result.f13 = b13;
+ result.f14 = b14;
+ result.f15 = b15;
+ return result;
+ }
+ }
+
+ // 8-byte float vector types: V2SF
+ public struct V2SF {
+ private float f0, f1;
+
+ public static V2SF V2SF_ctor1(float b0, float b1)
+ {
+ V2SF result;
+ result.f0 = b0;
+ result.f1 = b1;
+ return result;
+ }
+
+ public unsafe static long V2SF_to_di(V2SF v)
+ {
+ uint a0 = *(uint*)&v.f0;
+ uint a1 = *(uint*)&v.f1;
+ return (long)(((ulong)a0 << 32) | (ulong)a1);
+ }
+ }
+
+ // 16-byte float vector types: V4SF
+ public struct V4SF {
+ private float f0, f1, f2, f3;
+
+ public static V4SF V4SF_ctor1(float b0, float b1, float b2, float b3)
+ {
+ V4SF result;
+ result.f0 = b0;
+ result.f1 = b1;
+ result.f2 = b2;
+ result.f3 = b3;
+ return result;
+ }
+ }
+}