Commit 97c074fd by Jakub Jelinek Committed by Tom Tromey

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
parent 9180c238
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> 2006-08-10 Simon Martin <simartin@users.sourceforge.net>
PR java/8923 PR java/8923
......
...@@ -243,6 +243,9 @@ lang_specific_driver (int *in_argc, const char *const **in_argv, ...@@ -243,6 +243,9 @@ lang_specific_driver (int *in_argc, const char *const **in_argv,
/* The argument we use to specify the spec file. */ /* The argument we use to specify the spec file. */
char *spec_file = NULL; char *spec_file = NULL;
/* If linking, nonzero if the BC-ABI is in use. */
int link_for_bc_abi = 0;
argc = *in_argc; argc = *in_argc;
argv = *in_argv; argv = *in_argv;
added_libraries = *in_added_libraries; added_libraries = *in_added_libraries;
...@@ -365,6 +368,11 @@ lang_specific_driver (int *in_argc, const char *const **in_argv, ...@@ -365,6 +368,11 @@ lang_specific_driver (int *in_argc, const char *const **in_argv,
else if (strcmp (argv[i], "-static-libgcc") == 0 else if (strcmp (argv[i], "-static-libgcc") == 0
|| strcmp (argv[i], "-static") == 0) || strcmp (argv[i], "-static") == 0)
shared_libgcc = 0; shared_libgcc = 0;
else if (strcmp (argv[i], "-findirect-dispatch") == 0
|| strcmp (argv[i], "--indirect-dispatch") == 0)
{
link_for_bc_abi = 1;
}
else else
/* Pass other options through. */ /* Pass other options through. */
continue; continue;
...@@ -490,6 +498,8 @@ lang_specific_driver (int *in_argc, const char *const **in_argv, ...@@ -490,6 +498,8 @@ lang_specific_driver (int *in_argc, const char *const **in_argv,
num_args += shared_libgcc; num_args += shared_libgcc;
num_args += link_for_bc_abi;
arglist = XNEWVEC (const char *, num_args + 1); arglist = XNEWVEC (const char *, num_args + 1);
j = 0; j = 0;
...@@ -599,6 +609,9 @@ lang_specific_driver (int *in_argc, const char *const **in_argv, ...@@ -599,6 +609,9 @@ lang_specific_driver (int *in_argc, const char *const **in_argv,
if (shared_libgcc) if (shared_libgcc)
arglist[j++] = "-shared-libgcc"; arglist[j++] = "-shared-libgcc";
if (link_for_bc_abi)
arglist[j++] = "-s-bc-abi";
arglist[j] = NULL; arglist[j] = NULL;
*in_argc = j; *in_argc = j;
......
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> 2006-08-15 Kyle Galloway <kgallowa@redhat.com>
* include/java-interp.h (_Jv_InterpMethod::run_debug): New method. * include/java-interp.h (_Jv_InterpMethod::run_debug): New method.
......
...@@ -36,6 +36,10 @@ libsubdir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version) ...@@ -36,6 +36,10 @@ libsubdir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version)
toolexeclib_LTLIBRARIES = libgcj.la libgij.la libgcj-tools.la toolexeclib_LTLIBRARIES = libgcj.la libgij.la libgcj-tools.la
toolexecmainlib_DATA = libgcj.spec toolexecmainlib_DATA = libgcj.spec
if USE_LIBGCJ_BC
toolexeclib_LTLIBRARIES += libgcj_bc.la
endif
if XLIB_AWT if XLIB_AWT
toolexeclib_LTLIBRARIES += lib-gnu-awt-xlib.la toolexeclib_LTLIBRARIES += lib-gnu-awt-xlib.la
endif endif
...@@ -277,6 +281,31 @@ lib_gnu_awt_xlib_la_LDFLAGS = ../libstdc++-v3/src/libstdc++.la \ ...@@ -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) -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LIBGCJ_LD_SYMBOLIC)
lib_gnu_awt_xlib_la_LINK = $(LIBLINK) 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. ## Note that property_files is defined in sources.am.
propertyo_files = $(patsubst classpath/resource/%,%,$(addsuffix .lo,$(property_files))) propertyo_files = $(patsubst classpath/resource/%,%,$(addsuffix .lo,$(property_files)))
...@@ -507,6 +536,22 @@ extra_headers = java/lang/Object.h java/lang/Class.h ...@@ -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: $(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 ## Install the headers. It is fairly ugly that we have to do this by
## hand. ## hand.
install-data-local: install-data-local:
......
...@@ -310,7 +310,7 @@ ac_includes_default="\ ...@@ -310,7 +310,7 @@ ac_includes_default="\
# include <unistd.h> # include <unistd.h>
#endif" #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='' ac_subst_files=''
# Initialize some variables set by options. # Initialize some variables set by options.
...@@ -9263,6 +9263,16 @@ else ...@@ -9263,6 +9263,16 @@ else
fi 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 if test -d sysdep; then true; else mkdir sysdep; fi
ac_config_links="$ac_config_links sysdep/locks.h:sysdep/$sysdeps_dir/locks.h" 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 ...@@ -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" 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_SYNC_SPEC=
# Hash synchronization is only useful with posix threads right now. # Hash synchronization is only useful with posix threads right now.
if test "$enable_hash_synchronization" = yes && test "$THREADS" != "none"; then 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. ...@@ -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;} Usually this means the macro was only invoked conditionally." >&2;}
{ (exit 1); exit 1; }; } { (exit 1); exit 1; }; }
fi 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 if test -z "${USING_GCC_TRUE}" && test -z "${USING_GCC_FALSE}"; then
{ { echo "$as_me:$LINENO: error: conditional \"USING_GCC\" was never defined. { { echo "$as_me:$LINENO: error: conditional \"USING_GCC\" was never defined.
Usually this means the macro was only invoked conditionally." >&5 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 ...@@ -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_WIN32_THREADS_FALSE@,$USING_WIN32_THREADS_FALSE,;t t
s,@USING_NO_THREADS_TRUE@,$USING_NO_THREADS_TRUE,;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,@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,@HASH_SYNC_SPEC@,$HASH_SYNC_SPEC,;t t
s,@USING_GCC_TRUE@,$USING_GCC_TRUE,;t t s,@USING_GCC_TRUE@,$USING_GCC_TRUE,;t t
s,@USING_GCC_FALSE@,$USING_GCC_FALSE,;t t s,@USING_GCC_FALSE@,$USING_GCC_FALSE,;t t
......
...@@ -881,12 +881,19 @@ AC_SUBST(THREADCXXFLAGS) ...@@ -881,12 +881,19 @@ AC_SUBST(THREADCXXFLAGS)
AM_CONDITIONAL(USING_POSIX_THREADS, test "$THREADS" = posix) AM_CONDITIONAL(USING_POSIX_THREADS, test "$THREADS" = posix)
AM_CONDITIONAL(USING_WIN32_THREADS, test "$THREADS" = win32) AM_CONDITIONAL(USING_WIN32_THREADS, test "$THREADS" = win32)
AM_CONDITIONAL(USING_NO_THREADS, test "$THREADS" = none) 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 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/locks.h:sysdep/$sysdeps_dir/locks.h)
AC_CONFIG_LINKS(sysdep/backtrace.h:$fallback_backtrace_h) AC_CONFIG_LINKS(sysdep/backtrace.h:$fallback_backtrace_h)
AC_CONFIG_LINKS(sysdep/descriptor.h:$descriptor_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_SYNC_SPEC=
# Hash synchronization is only useful with posix threads right now. # Hash synchronization is only useful with posix threads right now.
if test "$enable_hash_synchronization" = yes && test "$THREADS" != "none"; then if test "$enable_hash_synchronization" = yes && test "$THREADS" != "none"; then
......
...@@ -31,6 +31,8 @@ ...@@ -31,6 +31,8 @@
# fallback_backtrace_h Header to use for fallback backtrace implementation # fallback_backtrace_h Header to use for fallback backtrace implementation
# (only for targets that don't support DWARF2 unwind) # (only for targets that don't support DWARF2 unwind)
# descriptor_h Header to use for looking past function descriptors # 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_flags=
libgcj_cflags= libgcj_cflags=
...@@ -317,6 +319,15 @@ case "${host}" in ...@@ -317,6 +319,15 @@ case "${host}" in
;; ;;
esac esac
case "${host}" in
*linux*)
use_libgcj_bc=yes
;;
*)
use_libgcj_bc=no
;;
esac
libgcj_cflags="${libgcj_cflags} ${libgcj_flags}" libgcj_cflags="${libgcj_cflags} ${libgcj_flags}"
libgcj_cxxflags="${libgcj_cxxflags} ${libgcj_flags}" libgcj_cxxflags="${libgcj_cxxflags} ${libgcj_flags}"
libgcj_javaflags="${libgcj_javaflags} ${libgcj_flags}" libgcj_javaflags="${libgcj_javaflags} ${libgcj_flags}"
...@@ -153,6 +153,7 @@ LIBGCJ_CFLAGS = @LIBGCJ_CFLAGS@ ...@@ -153,6 +153,7 @@ LIBGCJ_CFLAGS = @LIBGCJ_CFLAGS@
LIBGCJ_CXXFLAGS = @LIBGCJ_CXXFLAGS@ LIBGCJ_CXXFLAGS = @LIBGCJ_CXXFLAGS@
LIBGCJ_JAVAFLAGS = @LIBGCJ_JAVAFLAGS@ LIBGCJ_JAVAFLAGS = @LIBGCJ_JAVAFLAGS@
LIBGCJ_LD_SYMBOLIC = @LIBGCJ_LD_SYMBOLIC@ LIBGCJ_LD_SYMBOLIC = @LIBGCJ_LD_SYMBOLIC@
LIBGCJ_SPEC = @LIBGCJ_SPEC@
LIBICONV = @LIBICONV@ LIBICONV = @LIBICONV@
LIBLTDL = @LIBLTDL@ LIBLTDL = @LIBLTDL@
LIBOBJS = @LIBOBJS@ LIBOBJS = @LIBOBJS@
...@@ -198,6 +199,8 @@ THREADSPEC = @THREADSPEC@ ...@@ -198,6 +199,8 @@ THREADSPEC = @THREADSPEC@
THREADSTARTFILESPEC = @THREADSTARTFILESPEC@ THREADSTARTFILESPEC = @THREADSTARTFILESPEC@
TOOLKIT = @TOOLKIT@ TOOLKIT = @TOOLKIT@
UNZIP = @UNZIP@ 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_FALSE = @USING_BOEHMGC_FALSE@
USING_BOEHMGC_TRUE = @USING_BOEHMGC_TRUE@ USING_BOEHMGC_TRUE = @USING_BOEHMGC_TRUE@
USING_DARWIN_CRT_FALSE = @USING_DARWIN_CRT_FALSE@ USING_DARWIN_CRT_FALSE = @USING_DARWIN_CRT_FALSE@
......
...@@ -152,6 +152,7 @@ LIBGCJ_CFLAGS = @LIBGCJ_CFLAGS@ ...@@ -152,6 +152,7 @@ LIBGCJ_CFLAGS = @LIBGCJ_CFLAGS@
LIBGCJ_CXXFLAGS = @LIBGCJ_CXXFLAGS@ LIBGCJ_CXXFLAGS = @LIBGCJ_CXXFLAGS@
LIBGCJ_JAVAFLAGS = @LIBGCJ_JAVAFLAGS@ LIBGCJ_JAVAFLAGS = @LIBGCJ_JAVAFLAGS@
LIBGCJ_LD_SYMBOLIC = @LIBGCJ_LD_SYMBOLIC@ LIBGCJ_LD_SYMBOLIC = @LIBGCJ_LD_SYMBOLIC@
LIBGCJ_SPEC = @LIBGCJ_SPEC@
LIBICONV = @LIBICONV@ LIBICONV = @LIBICONV@
LIBLTDL = @LIBLTDL@ LIBLTDL = @LIBLTDL@
LIBOBJS = @LIBOBJS@ LIBOBJS = @LIBOBJS@
...@@ -197,6 +198,8 @@ THREADSPEC = @THREADSPEC@ ...@@ -197,6 +198,8 @@ THREADSPEC = @THREADSPEC@
THREADSTARTFILESPEC = @THREADSTARTFILESPEC@ THREADSTARTFILESPEC = @THREADSTARTFILESPEC@
TOOLKIT = @TOOLKIT@ TOOLKIT = @TOOLKIT@
UNZIP = @UNZIP@ 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_FALSE = @USING_BOEHMGC_FALSE@
USING_BOEHMGC_TRUE = @USING_BOEHMGC_TRUE@ USING_BOEHMGC_TRUE = @USING_BOEHMGC_TRUE@
USING_DARWIN_CRT_FALSE = @USING_DARWIN_CRT_FALSE@ USING_DARWIN_CRT_FALSE = @USING_DARWIN_CRT_FALSE@
......
...@@ -7,6 +7,6 @@ ...@@ -7,6 +7,6 @@
*startfile: @THREADSTARTFILESPEC@ %(startfileorig) *startfile: @THREADSTARTFILESPEC@ %(startfileorig)
%rename lib liborig %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 *jc1: @HASH_SYNC_SPEC@ @DIVIDESPEC@ @CHECKREFSPEC@ @JC1GCSPEC@ @EXCEPTIONSPEC@ @BACKTRACESPEC@ @IEEESPEC@ -fkeep-inline-functions
/* 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 () {}
...@@ -141,6 +141,7 @@ LIBGCJ_CFLAGS = @LIBGCJ_CFLAGS@ ...@@ -141,6 +141,7 @@ LIBGCJ_CFLAGS = @LIBGCJ_CFLAGS@
LIBGCJ_CXXFLAGS = @LIBGCJ_CXXFLAGS@ LIBGCJ_CXXFLAGS = @LIBGCJ_CXXFLAGS@
LIBGCJ_JAVAFLAGS = @LIBGCJ_JAVAFLAGS@ LIBGCJ_JAVAFLAGS = @LIBGCJ_JAVAFLAGS@
LIBGCJ_LD_SYMBOLIC = @LIBGCJ_LD_SYMBOLIC@ LIBGCJ_LD_SYMBOLIC = @LIBGCJ_LD_SYMBOLIC@
LIBGCJ_SPEC = @LIBGCJ_SPEC@
LIBICONV = @LIBICONV@ LIBICONV = @LIBICONV@
LIBLTDL = @LIBLTDL@ LIBLTDL = @LIBLTDL@
LIBOBJS = @LIBOBJS@ LIBOBJS = @LIBOBJS@
...@@ -186,6 +187,8 @@ THREADSPEC = @THREADSPEC@ ...@@ -186,6 +187,8 @@ THREADSPEC = @THREADSPEC@
THREADSTARTFILESPEC = @THREADSTARTFILESPEC@ THREADSTARTFILESPEC = @THREADSTARTFILESPEC@
TOOLKIT = @TOOLKIT@ TOOLKIT = @TOOLKIT@
UNZIP = @UNZIP@ 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_FALSE = @USING_BOEHMGC_FALSE@
USING_BOEHMGC_TRUE = @USING_BOEHMGC_TRUE@ USING_BOEHMGC_TRUE = @USING_BOEHMGC_TRUE@
USING_DARWIN_CRT_FALSE = @USING_DARWIN_CRT_FALSE@ USING_DARWIN_CRT_FALSE = @USING_DARWIN_CRT_FALSE@
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment