summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2006-08-17 01:03:21 +0000
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2006-08-17 01:03:21 +0000
commit919df38169fae42392ee8e62910bb49e53e62932 (patch)
tree95b7d3068d6d990fedb42e0c637b55e97c1f98bd
parentf98a9d6fc2fe2cdc5773a7a84aa1f0ea88912d73 (diff)
downloadppe42-gcc-919df38169fae42392ee8e62910bb49e53e62932.tar.gz
ppe42-gcc-919df38169fae42392ee8e62910bb49e53e62932.zip
gcc/java/ChangeLog
* jvspec.c (lang_specific_driver): Add -s-bc-abi when needed. libjava/ChangeLog * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@116204 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/java/ChangeLog5
-rw-r--r--gcc/java/jvspec.c13
-rw-r--r--libjava/ChangeLog18
-rw-r--r--libjava/Makefile.am45
-rw-r--r--libjava/Makefile.in114
-rwxr-xr-xlibjava/configure28
-rw-r--r--libjava/configure.ac7
-rw-r--r--libjava/configure.host11
-rw-r--r--libjava/gcj/Makefile.in3
-rw-r--r--libjava/include/Makefile.in3
-rw-r--r--libjava/libgcj.spec.in2
-rw-r--r--libjava/libgcj_bc.c94
-rw-r--r--libjava/testsuite/Makefile.in3
13 files changed, 307 insertions, 39 deletions
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 <jakub@redhat.com>
+ Bryce McKinlay <bryce@mckinlay.net.nz>
+
+ * jvspec.c (lang_specific_driver): Add -s-bc-abi when needed.
+
2006-08-10 Simon Martin <simartin@users.sourceforge.net>
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 <jakub@redhat.com>
+ Bryce McKinlay <bryce@mckinlay.net.nz>
+
+ * 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 <kgallowa@redhat.com>
* 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 <unistd.h>
#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 <stdlib.h>
+#include <stdio.h>
+
+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@
OpenPOWER on IntegriCloud