jvspec.c (lang_specific_driver): Add -s-bc-abi when needed.

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.

Co-Authored-By: Bryce McKinlay <bryce@mckinlay.net.nz>

From-SVN: r116204
This commit is contained in:
Jakub Jelinek 2006-08-17 03:03:21 +02:00 committed by Tom Tromey
parent 9180c238de
commit 97c074fd44
13 changed files with 307 additions and 39 deletions

View File

@ -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

View File

@ -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;

View File

@ -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.

View File

@ -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:

View File

@ -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...

28
libjava/configure vendored
View File

@ -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

View File

@ -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

View File

@ -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}"

View File

@ -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@

View File

@ -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@

View File

@ -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

94
libjava/libgcj_bc.c Normal file
View File

@ -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 () {}

View File

@ -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@