diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index d1728f82b50..81970f5077f 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,8 @@ +2006-08-16 Jakub Jelinek + Bryce McKinlay + + * jvspec.c (lang_specific_driver): Add -s-bc-abi when needed. + 2006-08-10 Simon Martin PR java/8923 diff --git a/gcc/java/jvspec.c b/gcc/java/jvspec.c index 63f49ff74b3..f64d438807c 100644 --- a/gcc/java/jvspec.c +++ b/gcc/java/jvspec.c @@ -243,6 +243,9 @@ lang_specific_driver (int *in_argc, const char *const **in_argv, /* The argument we use to specify the spec file. */ char *spec_file = NULL; + /* If linking, nonzero if the BC-ABI is in use. */ + int link_for_bc_abi = 0; + argc = *in_argc; argv = *in_argv; added_libraries = *in_added_libraries; @@ -365,6 +368,11 @@ lang_specific_driver (int *in_argc, const char *const **in_argv, else if (strcmp (argv[i], "-static-libgcc") == 0 || strcmp (argv[i], "-static") == 0) shared_libgcc = 0; + else if (strcmp (argv[i], "-findirect-dispatch") == 0 + || strcmp (argv[i], "--indirect-dispatch") == 0) + { + link_for_bc_abi = 1; + } else /* Pass other options through. */ continue; @@ -490,6 +498,8 @@ lang_specific_driver (int *in_argc, const char *const **in_argv, num_args += shared_libgcc; + num_args += link_for_bc_abi; + arglist = XNEWVEC (const char *, num_args + 1); j = 0; @@ -599,6 +609,9 @@ lang_specific_driver (int *in_argc, const char *const **in_argv, if (shared_libgcc) arglist[j++] = "-shared-libgcc"; + if (link_for_bc_abi) + arglist[j++] = "-s-bc-abi"; + arglist[j] = NULL; *in_argc = j; diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 1fa075c04f6..5d324c23b34 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,21 @@ +2006-08-16 Jakub Jelinek + Bryce McKinlay + + * configure, Makefile.in: Rebuilt. + * Makefile.am (toolexeclib_LTLIBRARIES): Add libgcj_bc.la. + (libgcj_bc_la_SOURCES): New variable. + (libgcj_bc_la_LDFLAGS): Likewise. + (libgcj_bc_la_LIBADD): Likewise. + (libgcj_bc_la_DEPENDENCIES): Likewise. + (libgcj_bc_la_LINK): Likewise. + (libgcj_bc_dummy_LINK): Likewise. + (libgcj_bc.la): New target. + (install-exec-hook): Likewise. + * libgcj.spec.in (*lib): Use LIBGCJ_SPEC. + * libgcj_bc.c: New file. + * configure.ac (LIBGCJ_SPEC): New subst. + * configure.host (use_libgcj_bc): New variable. + 2006-08-15 Kyle Galloway * include/java-interp.h (_Jv_InterpMethod::run_debug): New method. diff --git a/libjava/Makefile.am b/libjava/Makefile.am index 06049fd7d51..f04f993380a 100644 --- a/libjava/Makefile.am +++ b/libjava/Makefile.am @@ -36,6 +36,10 @@ libsubdir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version) toolexeclib_LTLIBRARIES = libgcj.la libgij.la libgcj-tools.la toolexecmainlib_DATA = libgcj.spec +if USE_LIBGCJ_BC +toolexeclib_LTLIBRARIES += libgcj_bc.la +endif + if XLIB_AWT toolexeclib_LTLIBRARIES += lib-gnu-awt-xlib.la endif @@ -277,6 +281,31 @@ lib_gnu_awt_xlib_la_LDFLAGS = ../libstdc++-v3/src/libstdc++.la \ -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LIBGCJ_LD_SYMBOLIC) lib_gnu_awt_xlib_la_LINK = $(LIBLINK) +## Support for libgcj_bc: dummy shared library. +## +## This lets us have one soname in BC objects and another in C++ ABI objects. +libgcj_bc_la_SOURCES = libgcj_bc.c +libgcj_bc_la_LDFLAGS = -rpath $(toolexeclibdir) -no-static -version-info 1:0:0 +libgcj_bc_la_LIBADD = libgcj.la +libgcj_bc_la_DEPENDENCIES = libgcj.la +libgcj_bc_la_LINK = $(LIBLINK) +## This is specific to Linux/{Free,Net,Open}BSD/Hurd and perhaps few others. +## USE_LIBGCJ_BC shouldn't be set on other targets. +libgcj_bc_dummy_LINK = $(CC) -L$(here)/.libs $(CFLAGS) $(LDFLAGS) -shared \ + -fPIC -nostdlib + +## This rule creates the libgcj_bc dummy library in the .libs directory, for use +## when testing. +libgcj_bc.la: $(libgcj_bc_la_OBJECTS) $(libgcj_bc_la_DEPENDENCIES) + $(libgcj_bc_la_LINK) $(am_libgcj_bc_la_rpath) $(libgcj_bc_la_LDFLAGS) \ + $(libgcj_bc_la_OBJECTS) $(libgcj_bc_la_LIBADD) $(LIBS) || exit; \ + rm .libs/libgcj_bc.so; \ + mv .libs/libgcj_bc.so.1.0.0 .libs/libgcj_bc.so; \ + $(libgcj_bc_dummy_LINK) -xc /dev/null -Wl,-soname,libgcj_bc.so.1 \ + -o .libs/libgcj_bc.so.1.0.0 -lgcj || exit; \ + rm .libs/libgcj_bc.so.1; \ + $(LN_S) libgcj_bc.so.1.0.0 .libs/libgcj_bc.so.1 + ## Note that property_files is defined in sources.am. propertyo_files = $(patsubst classpath/resource/%,%,$(addsuffix .lo,$(property_files))) @@ -507,6 +536,22 @@ extra_headers = java/lang/Object.h java/lang/Class.h $(extra_headers) $(srcdir)/java/lang/Object.h $(srcdir)/java/lang/Class.h: @: +## Support for libgcj_bc: dummy shared library used only at link-time. +if USE_LIBGCJ_BC +## Install libgcj_bc dummy lib in the target directory. We also need to delete +## libtool's .la file, this prevents libtool resetting the lib again +## later. +install-exec-hook: install-toolexeclibLTLIBRARIES + @echo Installing dummy lib libgcj_bc.so.1.0.0; \ + rm $(toolexeclibdir)/libgcj_bc.so; \ + mv $(toolexeclibdir)/libgcj_bc.so.1.0.0 $(toolexeclibdir)/libgcj_bc.so; \ + $(libgcj_bc_dummy_LINK) -xc /dev/null -Wl,-soname,libgcj_bc.so.1 \ + -o $(toolexeclibdir)/libgcj_bc.so.1.0.0 -lgcj || exit; \ + rm $(toolexeclibdir)/libgcj_bc.so.1; \ + $(LN_S) libgcj_bc.so.1.0.0 $(toolexeclibdir)/libgcj_bc.so.1; \ + rm $(toolexeclibdir)/libgcj_bc.la; +endif + ## Install the headers. It is fairly ugly that we have to do this by ## hand. install-data-local: diff --git a/libjava/Makefile.in b/libjava/Makefile.in index d0c360f4767..2a6f7d1c74e 100644 --- a/libjava/Makefile.in +++ b/libjava/Makefile.in @@ -41,21 +41,22 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ @TESTSUBDIR_TRUE@am__append_1 = testsuite -@XLIB_AWT_TRUE@am__append_2 = lib-gnu-awt-xlib.la +@USE_LIBGCJ_BC_TRUE@am__append_2 = libgcj_bc.la +@XLIB_AWT_TRUE@am__append_3 = lib-gnu-awt-xlib.la @NATIVE_TRUE@bin_PROGRAMS = jv-convert$(EXEEXT) gij$(EXEEXT) \ @NATIVE_TRUE@ grmic$(EXEEXT) grmiregistry$(EXEEXT) \ @NATIVE_TRUE@ gcj-dbtool$(EXEEXT) gappletviewer$(EXEEXT) \ @NATIVE_TRUE@ gjarsigner$(EXEEXT) gkeytool$(EXEEXT) -@BASH_JAR_TRUE@am__append_3 = scripts/jar -@USING_GCC_TRUE@am__append_4 = $(WARNINGS) -@USING_BOEHMGC_TRUE@am__append_5 = boehm.cc -@USING_NOGC_TRUE@am__append_6 = nogc.cc -@USING_POSIX_PLATFORM_TRUE@am__append_7 = posix.cc -@USING_WIN32_PLATFORM_TRUE@am__append_8 = win32.cc -@USING_DARWIN_CRT_TRUE@am__append_9 = darwin.cc -@USING_POSIX_THREADS_TRUE@am__append_10 = posix-threads.cc -@USING_WIN32_THREADS_TRUE@am__append_11 = win32-threads.cc -@USING_NO_THREADS_TRUE@am__append_12 = no-threads.cc +@BASH_JAR_TRUE@am__append_4 = scripts/jar +@USING_GCC_TRUE@am__append_5 = $(WARNINGS) +@USING_BOEHMGC_TRUE@am__append_6 = boehm.cc +@USING_NOGC_TRUE@am__append_7 = nogc.cc +@USING_POSIX_PLATFORM_TRUE@am__append_8 = posix.cc +@USING_WIN32_PLATFORM_TRUE@am__append_9 = win32.cc +@USING_DARWIN_CRT_TRUE@am__append_10 = darwin.cc +@USING_POSIX_THREADS_TRUE@am__append_11 = posix-threads.cc +@USING_WIN32_THREADS_TRUE@am__append_12 = win32-threads.cc +@USING_NO_THREADS_TRUE@am__append_13 = no-threads.cc DIST_COMMON = README $(am__configure_deps) $(srcdir)/../compile \ $(srcdir)/../config.guess $(srcdir)/../config.sub \ $(srcdir)/../depcomp $(srcdir)/../install-sh \ @@ -67,7 +68,7 @@ DIST_COMMON = README $(am__configure_deps) $(srcdir)/../compile \ $(top_srcdir)/scripts/jar.in COPYING ChangeLog NEWS THANKS @MAINTAINER_MODE_TRUE@@NATIVE_TRUE@noinst_PROGRAMS = \ @MAINTAINER_MODE_TRUE@@NATIVE_TRUE@ gen-from-JIS$(EXEEXT) -@XLIB_AWT_TRUE@am__append_13 = $(xlib_nat_headers) +@XLIB_AWT_TRUE@am__append_14 = $(xlib_nat_headers) subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \ @@ -368,6 +369,9 @@ am_libgcj_la_OBJECTS = prims.lo jni.lo jvmti.lo exception.lo \ $(am__objects_6) $(am__objects_7) $(am__objects_8) \ $(am__objects_9) $(am__objects_10) libgcj_la_OBJECTS = $(am_libgcj_la_OBJECTS) +am_libgcj_bc_la_OBJECTS = libgcj_bc.lo +libgcj_bc_la_OBJECTS = $(am_libgcj_bc_la_OBJECTS) +@USE_LIBGCJ_BC_TRUE@am_libgcj_bc_la_rpath = -rpath $(toolexeclibdir) am_libgij_la_OBJECTS = gij.lo libgij_la_OBJECTS = $(am_libgij_la_OBJECTS) am_libjvm_la_OBJECTS = jni-libjvm.lo @@ -423,18 +427,19 @@ LTGCJCOMPILE = $(LIBTOOL) --mode=compile $(GCJ) $(AM_GCJFLAGS) \ $(GCJFLAGS) GCJLD = $(GCJ) SOURCES = $(lib_gnu_awt_xlib_la_SOURCES) $(libgcj_tools_la_SOURCES) \ - $(libgcj_la_SOURCES) $(libgij_la_SOURCES) $(libjvm_la_SOURCES) \ + $(libgcj_la_SOURCES) $(libgcj_bc_la_SOURCES) \ + $(libgij_la_SOURCES) $(libjvm_la_SOURCES) \ $(gappletviewer_SOURCES) $(gcj_dbtool_SOURCES) \ $(gen_from_JIS_SOURCES) $(gij_SOURCES) $(gjarsigner_SOURCES) \ $(gkeytool_SOURCES) $(grmic_SOURCES) $(grmiregistry_SOURCES) \ $(jv_convert_SOURCES) DIST_SOURCES = $(lib_gnu_awt_xlib_la_SOURCES) \ $(libgcj_tools_la_SOURCES) $(am__libgcj_la_SOURCES_DIST) \ - $(libgij_la_SOURCES) $(libjvm_la_SOURCES) \ - $(gappletviewer_SOURCES) $(gcj_dbtool_SOURCES) \ - $(am__gen_from_JIS_SOURCES_DIST) $(gij_SOURCES) \ - $(gjarsigner_SOURCES) $(gkeytool_SOURCES) $(grmic_SOURCES) \ - $(grmiregistry_SOURCES) $(jv_convert_SOURCES) + $(libgcj_bc_la_SOURCES) $(libgij_la_SOURCES) \ + $(libjvm_la_SOURCES) $(gappletviewer_SOURCES) \ + $(gcj_dbtool_SOURCES) $(am__gen_from_JIS_SOURCES_DIST) \ + $(gij_SOURCES) $(gjarsigner_SOURCES) $(gkeytool_SOURCES) \ + $(grmic_SOURCES) $(grmiregistry_SOURCES) $(jv_convert_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-exec-recursive install-info-recursive \ @@ -539,6 +544,7 @@ LIBGCJ_CFLAGS = @LIBGCJ_CFLAGS@ LIBGCJ_CXXFLAGS = @LIBGCJ_CXXFLAGS@ LIBGCJ_JAVAFLAGS = @LIBGCJ_JAVAFLAGS@ LIBGCJ_LD_SYMBOLIC = @LIBGCJ_LD_SYMBOLIC@ +LIBGCJ_SPEC = @LIBGCJ_SPEC@ LIBICONV = @LIBICONV@ LIBLTDL = @LIBLTDL@ LIBOBJS = @LIBOBJS@ @@ -584,6 +590,8 @@ THREADSPEC = @THREADSPEC@ THREADSTARTFILESPEC = @THREADSTARTFILESPEC@ TOOLKIT = @TOOLKIT@ UNZIP = @UNZIP@ +USE_LIBGCJ_BC_FALSE = @USE_LIBGCJ_BC_FALSE@ +USE_LIBGCJ_BC_TRUE = @USE_LIBGCJ_BC_TRUE@ USING_BOEHMGC_FALSE = @USING_BOEHMGC_FALSE@ USING_BOEHMGC_TRUE = @USING_BOEHMGC_TRUE@ USING_DARWIN_CRT_FALSE = @USING_DARWIN_CRT_FALSE@ @@ -702,7 +710,7 @@ write_entries_to_file = $(shell rm -f $(2) || :) $(shell touch $(2)) $(foreach o # This is required by TL_AC_GXX_INCLUDE_DIR. libsubdir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version) toolexeclib_LTLIBRARIES = libgcj.la libgij.la libgcj-tools.la \ - $(am__append_2) + $(am__append_2) $(am__append_3) toolexecmainlib_DATA = libgcj.spec dbexec_LTLIBRARIES = libjvm.la pkgconfigdir = $(libdir)/pkgconfig @@ -718,7 +726,7 @@ propdir = $(libdir) db_name = classmap.db db_pathtail = gcj-$(gcc_version)/$(db_name) @NATIVE_TRUE@dbexec_DATA = $(db_name) -bin_SCRIPTS = addr2name.awk $(am__append_3) +bin_SCRIPTS = addr2name.awk $(am__append_4) GCJ_WITH_FLAGS = $(GCJ) --encoding=UTF-8 -Wno-deprecated GCJLINK = $(LIBTOOL) --tag=GCJ --mode=link $(GCJ) -L$(here) $(JC1FLAGS) \ $(LDFLAGS) -o $@ @@ -756,7 +764,7 @@ AM_GCJFLAGS = \ --encoding=UTF-8 \ -Wno-deprecated -fbootstrap-classes -AM_CFLAGS = @LIBGCJ_CFLAGS@ $(am__append_4) +AM_CFLAGS = @LIBGCJ_CFLAGS@ $(am__append_5) PEDANTIC_CFLAGS = -ansi -pedantic -Wall -Wno-long-long JCFLAGS = -g JC1FLAGS = @LIBGCJ_JAVAFLAGS@ $(GCJFLAGS) @@ -781,9 +789,9 @@ libgij_la_LDFLAGS = -rpath $(toolexeclibdir) \ libgcj_la_SOURCES = prims.cc jni.cc jvmti.cc exception.cc \ stacktrace.cc link.cc defineclass.cc interpret.cc verify.cc \ java/lang/Class.java java/lang/Object.java $(nat_source_files) \ - $(am__append_5) $(am__append_6) $(am__append_7) \ - $(am__append_8) $(am__append_9) $(am__append_10) \ - $(am__append_11) $(am__append_12) + $(am__append_6) $(am__append_7) $(am__append_8) \ + $(am__append_9) $(am__append_10) $(am__append_11) \ + $(am__append_12) $(am__append_13) nat_files = $(nat_source_files:.cc=.lo) xlib_nat_files = $(xlib_nat_source_files:.cc=.lo) @@ -834,6 +842,14 @@ lib_gnu_awt_xlib_la_LDFLAGS = ../libstdc++-v3/src/libstdc++.la \ -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LIBGCJ_LD_SYMBOLIC) lib_gnu_awt_xlib_la_LINK = $(LIBLINK) +libgcj_bc_la_SOURCES = libgcj_bc.c +libgcj_bc_la_LDFLAGS = -rpath $(toolexeclibdir) -no-static -version-info 1:0:0 +libgcj_bc_la_LIBADD = libgcj.la +libgcj_bc_la_DEPENDENCIES = libgcj.la +libgcj_bc_la_LINK = $(LIBLINK) +libgcj_bc_dummy_LINK = $(CC) -L$(here)/.libs $(CFLAGS) $(LDFLAGS) -shared \ + -fPIC -nostdlib + propertyo_files = $(patsubst classpath/resource/%,%,$(addsuffix .lo,$(property_files))) CLEANFILES = libgcj-$(gcc_version).jar libgcj-tools-$(gcc_version).jar DISTCLEANFILES = native.dirs @@ -7446,7 +7462,7 @@ gnu/gcj/xlib/natXImage.cc \ gnu/gcj/xlib/natXUnmapEvent.cc sourcesdir = $(jardir) -headers_to_make = $(nat_headers) $(am__append_13) +headers_to_make = $(nat_headers) $(am__append_14) # Work around what appears to be a GNU make bug handling MAKEFLAGS # values defined in terms of make variables, as is the case for CC and @@ -8269,6 +8285,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jni-libjvm.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jni.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jvmti.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgcj_bc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/link.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/no-threads.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nogc.Plo@am__quote@ @@ -9082,6 +9099,7 @@ distclean-generic: maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." +@USE_LIBGCJ_BC_FALSE@install-exec-hook: clean: clean-recursive clean-am: clean-binPROGRAMS clean-dbexecLTLIBRARIES clean-generic \ @@ -9111,6 +9129,8 @@ install-data-am: install-data-local install-jarDATA \ install-exec-am: install-binPROGRAMS install-binSCRIPTS \ install-dbexecDATA install-dbexecLTLIBRARIES \ install-toolexeclibLTLIBRARIES install-toolexecmainlibDATA + @$(NORMAL_INSTALL) + $(MAKE) $(AM_MAKEFLAGS) install-exec-hook install-info: install-info-recursive @@ -9157,18 +9177,18 @@ uninstall-info: uninstall-info-recursive install install-am install-binPROGRAMS install-binSCRIPTS \ install-data install-data-am install-data-local \ install-dbexecDATA install-dbexecLTLIBRARIES install-exec \ - install-exec-am install-info install-info-am install-jarDATA \ - install-man install-pkgconfigDATA install-strip \ - install-toolexeclibLTLIBRARIES install-toolexecmainlibDATA \ - installcheck installcheck-am installdirs installdirs-am \ - maintainer-clean maintainer-clean-generic \ - maintainer-clean-recursive mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool mostlyclean-local \ - mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \ - uninstall uninstall-am uninstall-binPROGRAMS \ - uninstall-binSCRIPTS uninstall-dbexecDATA \ - uninstall-dbexecLTLIBRARIES uninstall-info-am \ - uninstall-jarDATA uninstall-pkgconfigDATA \ + install-exec-am install-exec-hook install-info install-info-am \ + install-jarDATA install-man install-pkgconfigDATA \ + install-strip install-toolexeclibLTLIBRARIES \ + install-toolexecmainlibDATA installcheck installcheck-am \ + installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic maintainer-clean-recursive \ + mostlyclean mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool mostlyclean-local mostlyclean-recursive \ + pdf pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \ + uninstall-binPROGRAMS uninstall-binSCRIPTS \ + uninstall-dbexecDATA uninstall-dbexecLTLIBRARIES \ + uninstall-info-am uninstall-jarDATA uninstall-pkgconfigDATA \ uninstall-toolexeclibLTLIBRARIES uninstall-toolexecmainlibDATA @@ -9176,6 +9196,16 @@ $(db_name): gcj-dbtool$(EXEEXT) @rm -f $(db_name) ./gcj-dbtool -n $(db_name) || touch $(db_name) +libgcj_bc.la: $(libgcj_bc_la_OBJECTS) $(libgcj_bc_la_DEPENDENCIES) + $(libgcj_bc_la_LINK) $(am_libgcj_bc_la_rpath) $(libgcj_bc_la_LDFLAGS) \ + $(libgcj_bc_la_OBJECTS) $(libgcj_bc_la_LIBADD) $(LIBS) || exit; \ + rm .libs/libgcj_bc.so; \ + mv .libs/libgcj_bc.so.1.0.0 .libs/libgcj_bc.so; \ + $(libgcj_bc_dummy_LINK) -xc /dev/null -Wl,-soname,libgcj_bc.so.1 \ + -o .libs/libgcj_bc.so.1.0.0 -lgcj || exit; \ + rm .libs/libgcj_bc.so.1; \ + $(LN_S) libgcj_bc.so.1.0.0 .libs/libgcj_bc.so.1 + $(propertyo_files): %.lo: classpath/resource/% $(mkinstalldirs) `dirname $@`; \ $(LTGCJCOMPILE) -o $@ -c $< -Wc,--resource,$(@:.lo=) @@ -11742,6 +11772,16 @@ java/lang/ConcreteProcess$$ProcessManager.h: classpath/lib/java/lang/ConcretePro $(extra_headers) $(srcdir)/java/lang/Object.h $(srcdir)/java/lang/Class.h: @: +@USE_LIBGCJ_BC_TRUE@install-exec-hook: install-toolexeclibLTLIBRARIES +@USE_LIBGCJ_BC_TRUE@ @echo Installing dummy lib libgcj_bc.so.1.0.0; \ +@USE_LIBGCJ_BC_TRUE@ rm $(toolexeclibdir)/libgcj_bc.so; \ +@USE_LIBGCJ_BC_TRUE@ mv $(toolexeclibdir)/libgcj_bc.so.1.0.0 $(toolexeclibdir)/libgcj_bc.so; \ +@USE_LIBGCJ_BC_TRUE@ $(libgcj_bc_dummy_LINK) -xc /dev/null -Wl,-soname,libgcj_bc.so.1 \ +@USE_LIBGCJ_BC_TRUE@ -o $(toolexeclibdir)/libgcj_bc.so.1.0.0 -lgcj || exit; \ +@USE_LIBGCJ_BC_TRUE@ rm $(toolexeclibdir)/libgcj_bc.so.1; \ +@USE_LIBGCJ_BC_TRUE@ $(LN_S) libgcj_bc.so.1.0.0 $(toolexeclibdir)/libgcj_bc.so.1; \ +@USE_LIBGCJ_BC_TRUE@ rm $(toolexeclibdir)/libgcj_bc.la; + install-data-local: $(PRE_INSTALL) @echo Creating list of headers to install... diff --git a/libjava/configure b/libjava/configure index e305b1f3658..195b035fa74 100755 --- a/libjava/configure +++ b/libjava/configure @@ -310,7 +310,7 @@ ac_includes_default="\ # include #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os build_libsubdir build_subdir host_subdir target_subdir libgcj_basedir host host_cpu host_vendor host_os target target_cpu target_vendor target_os target_noncanonical LN_S mkinstalldirs CC ac_ct_CC EXEEXT OBJEXT CXX ac_ct_CXX CFLAGS CXXFLAGS LDFLAGS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE AS ac_ct_AS LD ac_ct_LD AR ac_ct_AR RANLIB ac_ct_RANLIB JAR ZIP UNZIP BASH_JAR_TRUE BASH_JAR_FALSE MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT LIBGCJ_CFLAGS LIBGCJ_CXXFLAGS LIBGCJ_JAVAFLAGS LIBGCJ_LD_SYMBOLIC LIBGCJDEBUG TOOLKIT XLIB_AWT_TRUE XLIB_AWT_FALSE GCJH INCLTDL LIBLTDL DIRLTDL LIBTOOL CXXCPP CPPFLAGS GCJ GCJFLAGS GCJDEPMODE am__fastdepGCJ_TRUE am__fastdepGCJ_FALSE subdirs TESTSUBDIR_TRUE TESTSUBDIR_FALSE JAVA_HOME_SET_TRUE JAVA_HOME_SET_FALSE JAVA_HOME INTERPRETER LIBFFI LIBFFIINCS PLATFORM_INNER_NAT_HDRS CPP EGREP USING_WIN32_PLATFORM_TRUE USING_WIN32_PLATFORM_FALSE USING_POSIX_PLATFORM_TRUE USING_POSIX_PLATFORM_FALSE USING_DARWIN_CRT_TRUE USING_DARWIN_CRT_FALSE SYSTEMSPEC LIBGCJTESTSPEC ZLIBSPEC ZLIBTESTSPEC X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS extra_ldflags_libjava GCLIBS GCINCS GCDEPS GCSPEC JC1GCSPEC GCTESTSPEC USING_BOEHMGC_TRUE USING_BOEHMGC_FALSE USING_NOGC_TRUE USING_NOGC_FALSE THREADLIBS THREADINCS THREADDEPS THREADSPEC THREADSTARTFILESPEC THREADLDFLAGS THREADCXXFLAGS USING_POSIX_THREADS_TRUE USING_POSIX_THREADS_FALSE USING_WIN32_THREADS_TRUE USING_WIN32_THREADS_FALSE USING_NO_THREADS_TRUE USING_NO_THREADS_FALSE HASH_SYNC_SPEC USING_GCC_TRUE USING_GCC_FALSE LIBICONV LTLIBICONV PKG_CONFIG GTK_CFLAGS GTK_LIBS GLIB_CFLAGS GLIB_LIBS LIBART_CFLAGS LIBART_LIBS CLASSPATH_SEPARATOR ac_ct_GCJ ZLIBS SYS_ZLIBS ZINCS DIVIDESPEC CHECKREFSPEC EXCEPTIONSPEC BACKTRACESPEC IEEESPEC NATIVE_TRUE NATIVE_FALSE NEEDS_DATA_START_TRUE NEEDS_DATA_START_FALSE GCC_UNWIND_INCLUDE toolexecdir toolexecmainlibdir toolexeclibdir dbexecdir GCJVERSION gxx_include_dir libstdcxx_incdir ALLOCA PERL SYSDEP_SOURCES LD_START_STATIC_SPEC LD_FINISH_STATIC_SPEC here LIBOBJS LTLIBOBJS' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os build_libsubdir build_subdir host_subdir target_subdir libgcj_basedir host host_cpu host_vendor host_os target target_cpu target_vendor target_os target_noncanonical LN_S mkinstalldirs CC ac_ct_CC EXEEXT OBJEXT CXX ac_ct_CXX CFLAGS CXXFLAGS LDFLAGS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE AS ac_ct_AS LD ac_ct_LD AR ac_ct_AR RANLIB ac_ct_RANLIB JAR ZIP UNZIP BASH_JAR_TRUE BASH_JAR_FALSE MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT LIBGCJ_CFLAGS LIBGCJ_CXXFLAGS LIBGCJ_JAVAFLAGS LIBGCJ_LD_SYMBOLIC LIBGCJDEBUG TOOLKIT XLIB_AWT_TRUE XLIB_AWT_FALSE GCJH INCLTDL LIBLTDL DIRLTDL LIBTOOL CXXCPP CPPFLAGS GCJ GCJFLAGS GCJDEPMODE am__fastdepGCJ_TRUE am__fastdepGCJ_FALSE subdirs TESTSUBDIR_TRUE TESTSUBDIR_FALSE JAVA_HOME_SET_TRUE JAVA_HOME_SET_FALSE JAVA_HOME INTERPRETER LIBFFI LIBFFIINCS PLATFORM_INNER_NAT_HDRS CPP EGREP USING_WIN32_PLATFORM_TRUE USING_WIN32_PLATFORM_FALSE USING_POSIX_PLATFORM_TRUE USING_POSIX_PLATFORM_FALSE USING_DARWIN_CRT_TRUE USING_DARWIN_CRT_FALSE SYSTEMSPEC LIBGCJTESTSPEC ZLIBSPEC ZLIBTESTSPEC X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS extra_ldflags_libjava GCLIBS GCINCS GCDEPS GCSPEC JC1GCSPEC GCTESTSPEC USING_BOEHMGC_TRUE USING_BOEHMGC_FALSE USING_NOGC_TRUE USING_NOGC_FALSE THREADLIBS THREADINCS THREADDEPS THREADSPEC THREADSTARTFILESPEC THREADLDFLAGS THREADCXXFLAGS USING_POSIX_THREADS_TRUE USING_POSIX_THREADS_FALSE USING_WIN32_THREADS_TRUE USING_WIN32_THREADS_FALSE USING_NO_THREADS_TRUE USING_NO_THREADS_FALSE USE_LIBGCJ_BC_TRUE USE_LIBGCJ_BC_FALSE LIBGCJ_SPEC HASH_SYNC_SPEC USING_GCC_TRUE USING_GCC_FALSE LIBICONV LTLIBICONV PKG_CONFIG GTK_CFLAGS GTK_LIBS GLIB_CFLAGS GLIB_LIBS LIBART_CFLAGS LIBART_LIBS CLASSPATH_SEPARATOR ac_ct_GCJ ZLIBS SYS_ZLIBS ZINCS DIVIDESPEC CHECKREFSPEC EXCEPTIONSPEC BACKTRACESPEC IEEESPEC NATIVE_TRUE NATIVE_FALSE NEEDS_DATA_START_TRUE NEEDS_DATA_START_FALSE GCC_UNWIND_INCLUDE toolexecdir toolexecmainlibdir toolexeclibdir dbexecdir GCJVERSION gxx_include_dir libstdcxx_incdir ALLOCA PERL SYSDEP_SOURCES LD_START_STATIC_SPEC LD_FINISH_STATIC_SPEC here LIBOBJS LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. @@ -9263,6 +9263,16 @@ else fi + +if test "$use_libgcj_bc" = yes; then + USE_LIBGCJ_BC_TRUE= + USE_LIBGCJ_BC_FALSE='#' +else + USE_LIBGCJ_BC_TRUE='#' + USE_LIBGCJ_BC_FALSE= +fi + + if test -d sysdep; then true; else mkdir sysdep; fi ac_config_links="$ac_config_links sysdep/locks.h:sysdep/$sysdeps_dir/locks.h" @@ -9271,6 +9281,12 @@ if test -d sysdep; then true; else mkdir sysdep; fi ac_config_links="$ac_config_links sysdep/descriptor.h:$descriptor_h" +LIBGCJ_SPEC="%{s-bc-abi:} -lgcj" +if test "$use_libgcj_bc" = yes; then + LIBGCJ_SPEC="%{s-bc-abi:-lgcj_bc;:-lgcj}" +fi + + HASH_SYNC_SPEC= # Hash synchronization is only useful with posix threads right now. if test "$enable_hash_synchronization" = yes && test "$THREADS" != "none"; then @@ -16878,6 +16894,13 @@ echo "$as_me: error: conditional \"USING_NO_THREADS\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi +if test -z "${USE_LIBGCJ_BC_TRUE}" && test -z "${USE_LIBGCJ_BC_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"USE_LIBGCJ_BC\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"USE_LIBGCJ_BC\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi if test -z "${USING_GCC_TRUE}" && test -z "${USING_GCC_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"USING_GCC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 @@ -17622,6 +17645,9 @@ s,@USING_WIN32_THREADS_TRUE@,$USING_WIN32_THREADS_TRUE,;t t s,@USING_WIN32_THREADS_FALSE@,$USING_WIN32_THREADS_FALSE,;t t s,@USING_NO_THREADS_TRUE@,$USING_NO_THREADS_TRUE,;t t s,@USING_NO_THREADS_FALSE@,$USING_NO_THREADS_FALSE,;t t +s,@USE_LIBGCJ_BC_TRUE@,$USE_LIBGCJ_BC_TRUE,;t t +s,@USE_LIBGCJ_BC_FALSE@,$USE_LIBGCJ_BC_FALSE,;t t +s,@LIBGCJ_SPEC@,$LIBGCJ_SPEC,;t t s,@HASH_SYNC_SPEC@,$HASH_SYNC_SPEC,;t t s,@USING_GCC_TRUE@,$USING_GCC_TRUE,;t t s,@USING_GCC_FALSE@,$USING_GCC_FALSE,;t t diff --git a/libjava/configure.ac b/libjava/configure.ac index cc53350cd79..72c67e4c7ab 100644 --- a/libjava/configure.ac +++ b/libjava/configure.ac @@ -881,12 +881,19 @@ AC_SUBST(THREADCXXFLAGS) AM_CONDITIONAL(USING_POSIX_THREADS, test "$THREADS" = posix) AM_CONDITIONAL(USING_WIN32_THREADS, test "$THREADS" = win32) AM_CONDITIONAL(USING_NO_THREADS, test "$THREADS" = none) +AM_CONDITIONAL(USE_LIBGCJ_BC, test "$use_libgcj_bc" = yes) if test -d sysdep; then true; else mkdir sysdep; fi AC_CONFIG_LINKS(sysdep/locks.h:sysdep/$sysdeps_dir/locks.h) AC_CONFIG_LINKS(sysdep/backtrace.h:$fallback_backtrace_h) AC_CONFIG_LINKS(sysdep/descriptor.h:$descriptor_h) +LIBGCJ_SPEC="%{s-bc-abi:} -lgcj" +if test "$use_libgcj_bc" = yes; then + LIBGCJ_SPEC="%{s-bc-abi:-lgcj_bc;:-lgcj}" +fi +AC_SUBST(LIBGCJ_SPEC) + HASH_SYNC_SPEC= # Hash synchronization is only useful with posix threads right now. if test "$enable_hash_synchronization" = yes && test "$THREADS" != "none"; then diff --git a/libjava/configure.host b/libjava/configure.host index 6aa969cbdf0..b2bdd5355f6 100644 --- a/libjava/configure.host +++ b/libjava/configure.host @@ -31,6 +31,8 @@ # fallback_backtrace_h Header to use for fallback backtrace implementation # (only for targets that don't support DWARF2 unwind) # descriptor_h Header to use for looking past function descriptors +# use_libgcj_bc Whether to build a "libgcj-bc" library for BC-ABI +# binaries to link against. libgcj_flags= libgcj_cflags= @@ -317,6 +319,15 @@ case "${host}" in ;; esac +case "${host}" in + *linux*) + use_libgcj_bc=yes + ;; + *) + use_libgcj_bc=no + ;; +esac + libgcj_cflags="${libgcj_cflags} ${libgcj_flags}" libgcj_cxxflags="${libgcj_cxxflags} ${libgcj_flags}" libgcj_javaflags="${libgcj_javaflags} ${libgcj_flags}" diff --git a/libjava/gcj/Makefile.in b/libjava/gcj/Makefile.in index 44db450cbd2..116620f5073 100644 --- a/libjava/gcj/Makefile.in +++ b/libjava/gcj/Makefile.in @@ -153,6 +153,7 @@ LIBGCJ_CFLAGS = @LIBGCJ_CFLAGS@ LIBGCJ_CXXFLAGS = @LIBGCJ_CXXFLAGS@ LIBGCJ_JAVAFLAGS = @LIBGCJ_JAVAFLAGS@ LIBGCJ_LD_SYMBOLIC = @LIBGCJ_LD_SYMBOLIC@ +LIBGCJ_SPEC = @LIBGCJ_SPEC@ LIBICONV = @LIBICONV@ LIBLTDL = @LIBLTDL@ LIBOBJS = @LIBOBJS@ @@ -198,6 +199,8 @@ THREADSPEC = @THREADSPEC@ THREADSTARTFILESPEC = @THREADSTARTFILESPEC@ TOOLKIT = @TOOLKIT@ UNZIP = @UNZIP@ +USE_LIBGCJ_BC_FALSE = @USE_LIBGCJ_BC_FALSE@ +USE_LIBGCJ_BC_TRUE = @USE_LIBGCJ_BC_TRUE@ USING_BOEHMGC_FALSE = @USING_BOEHMGC_FALSE@ USING_BOEHMGC_TRUE = @USING_BOEHMGC_TRUE@ USING_DARWIN_CRT_FALSE = @USING_DARWIN_CRT_FALSE@ diff --git a/libjava/include/Makefile.in b/libjava/include/Makefile.in index 992ad3b1b91..a1018272b71 100644 --- a/libjava/include/Makefile.in +++ b/libjava/include/Makefile.in @@ -152,6 +152,7 @@ LIBGCJ_CFLAGS = @LIBGCJ_CFLAGS@ LIBGCJ_CXXFLAGS = @LIBGCJ_CXXFLAGS@ LIBGCJ_JAVAFLAGS = @LIBGCJ_JAVAFLAGS@ LIBGCJ_LD_SYMBOLIC = @LIBGCJ_LD_SYMBOLIC@ +LIBGCJ_SPEC = @LIBGCJ_SPEC@ LIBICONV = @LIBICONV@ LIBLTDL = @LIBLTDL@ LIBOBJS = @LIBOBJS@ @@ -197,6 +198,8 @@ THREADSPEC = @THREADSPEC@ THREADSTARTFILESPEC = @THREADSTARTFILESPEC@ TOOLKIT = @TOOLKIT@ UNZIP = @UNZIP@ +USE_LIBGCJ_BC_FALSE = @USE_LIBGCJ_BC_FALSE@ +USE_LIBGCJ_BC_TRUE = @USE_LIBGCJ_BC_TRUE@ USING_BOEHMGC_FALSE = @USING_BOEHMGC_FALSE@ USING_BOEHMGC_TRUE = @USING_BOEHMGC_TRUE@ USING_DARWIN_CRT_FALSE = @USING_DARWIN_CRT_FALSE@ diff --git a/libjava/libgcj.spec.in b/libjava/libgcj.spec.in index f48212509bf..cf24170ec77 100644 --- a/libjava/libgcj.spec.in +++ b/libjava/libgcj.spec.in @@ -7,6 +7,6 @@ *startfile: @THREADSTARTFILESPEC@ %(startfileorig) %rename lib liborig -*lib: @LD_START_STATIC_SPEC@ -lgcj @LD_FINISH_STATIC_SPEC@ -lm @LIBICONV@ @GCSPEC@ @THREADSPEC@ @ZLIBSPEC@ @SYSTEMSPEC@ %(libgcc) %(liborig) +*lib: @LD_START_STATIC_SPEC@ @LIBGCJ_SPEC@ @LD_FINISH_STATIC_SPEC@ -lm @LIBICONV@ @GCSPEC@ @THREADSPEC@ @ZLIBSPEC@ @SYSTEMSPEC@ %(libgcc) %(liborig) *jc1: @HASH_SYNC_SPEC@ @DIVIDESPEC@ @CHECKREFSPEC@ @JC1GCSPEC@ @EXCEPTIONSPEC@ @BACKTRACESPEC@ @IEEESPEC@ -fkeep-inline-functions diff --git a/libjava/libgcj_bc.c b/libjava/libgcj_bc.c new file mode 100644 index 00000000000..66a14682f8c --- /dev/null +++ b/libjava/libgcj_bc.c @@ -0,0 +1,94 @@ +/* libgcj_bc.c */ + +/* Copyright (C) 2006 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +/* This file is used to build libgcj_bc.so, a 'fake' library that is + used at link time only. It ensures that binaries built with the + BC-ABI link against a constant SONAME. This way, BC-ABI binaries + continue to work if the SONAME underlying libgcj.so changes. */ + +#include +#include + +static void print_wrong_lib_msg () +{ + fprintf (stderr, "libgcj error: \ +This is libgcj_bc.so, a fake library used only for linking.\n\ +Please create a symlink from libgcj_bc.so.1 to the real libgcj.so.\n"); + exit (1); +} + +/* Functions called from code generated by gcj. */ + +void __gcj_personality_v0 () {} +void _Jv_AllocObject () {} +void _Jv_AllocObjectNoFinalizer () {} +void _Jv_InitClass () {} +void _Jv_ResolvePoolEntry () {} +void _Jv_Throw () {} +void _Jv_MonitorEnter () {} +void _Jv_NewPrimArray () {} +void _Jv_NewObjectArray () {} +void _Jv_NewMultiArray () {} +void _Jv_ThrowBadArrayIndex () {} +void _Jv_ThrowNullPointerException () {} +void _Jv_ThrowAbstractMethodError () {} +void _Jv_ThrowNoSuchFieldError () {} +void _Jv_CheckCast () {} +void _Jv_IsInstanceOf () {} +void _Jv_CheckArrayStore () {} +void _Jv_LookupInterfaceMethodIdx () {} + +void _Jv_RegisterClasses () +{ + print_wrong_lib_msg (); +} + +void _Jv_RegisterNewClasses () +{ + print_wrong_lib_msg (); +} + +/* Symbols used by jvgenmain (-fmain). */ + +void JvRunMain () {} +const char **_Jv_Compiler_Properties; + +/* Functions used by -fjni. */ + +void _Jv_LookupJNIMethod () {} +void _Jv_GetJNIEnvNewFrame () {} +void _Jv_UnwrapJNIweakReference () {} + + +/* Checked divide (-fuse-divide-subroutine). */ + +void _Jv_divI () {} +void _Jv_remI () {} +void _Jv_divJ () {} +void _Jv_remJ () {} + + +/* CNI Functions. */ + +void _Jv_AllocBytes () {} +void _Jv_AllocString () {} +void _Jv_NewString () {} +void _Jv_NewStringLatin1 () {} +void _Jv_GetStringChars () {} +void _Jv_GetStringUTFLength () {} +void _Jv_GetStringUTFRegion () {} +void _Jv_NewStringUTF () {} +void _Jv_Malloc () {} +void _Jv_Realloc () {} +void _Jv_Free () {} +void _Jv_CreateJavaVM () {} +void _Jv_AttachCurrentThread () {} +void _Jv_AttachCurrentThreadAsDaemon () {} +void _Jv_DetachCurrentThread () {} diff --git a/libjava/testsuite/Makefile.in b/libjava/testsuite/Makefile.in index 73026dd2246..485b8eaa9a1 100644 --- a/libjava/testsuite/Makefile.in +++ b/libjava/testsuite/Makefile.in @@ -141,6 +141,7 @@ LIBGCJ_CFLAGS = @LIBGCJ_CFLAGS@ LIBGCJ_CXXFLAGS = @LIBGCJ_CXXFLAGS@ LIBGCJ_JAVAFLAGS = @LIBGCJ_JAVAFLAGS@ LIBGCJ_LD_SYMBOLIC = @LIBGCJ_LD_SYMBOLIC@ +LIBGCJ_SPEC = @LIBGCJ_SPEC@ LIBICONV = @LIBICONV@ LIBLTDL = @LIBLTDL@ LIBOBJS = @LIBOBJS@ @@ -186,6 +187,8 @@ THREADSPEC = @THREADSPEC@ THREADSTARTFILESPEC = @THREADSTARTFILESPEC@ TOOLKIT = @TOOLKIT@ UNZIP = @UNZIP@ +USE_LIBGCJ_BC_FALSE = @USE_LIBGCJ_BC_FALSE@ +USE_LIBGCJ_BC_TRUE = @USE_LIBGCJ_BC_TRUE@ USING_BOEHMGC_FALSE = @USING_BOEHMGC_FALSE@ USING_BOEHMGC_TRUE = @USING_BOEHMGC_TRUE@ USING_DARWIN_CRT_FALSE = @USING_DARWIN_CRT_FALSE@