From: Dave Korn Date: Sun, 21 Mar 2010 19:41:37 +0000 (+0000) Subject: re PR target/42811 (java.lang.ExceptionInInitializerError in ecj1) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=474b97ce0ff47918ce4fb78b4ee970d4009ecf02;p=gcc.git re PR target/42811 (java.lang.ExceptionInInitializerError in ecj1) PR target/42811 * libjava/configure.ac (DLLTOOL): Call AC_CHECK_TOOL. (libgcj_sublib_core_extra_deps): New host-dependent configure var. (LIBGCJ_SUBLIB_CORE_EXTRA_DEPS): AC_SUBST it. * libjava/configure.host (libgcj_sublib_core_extra_deps): Define appropriately on Cygwin and MinGW. (libgcj_sublib_core_extra_deps): Add libgcj-noncore-dummy import stub library on Cygwin and MinGW. * libjava/Makefile.am (LIBJAVA_CORE_EXTRA): Import AC_SUBST'd LIBGCJ_SUBLIB_CORE_EXTRA_DEPS if building sublibs, else define empty. (libgcj_la_DEPENDENCIES): Use it. (DLL_VERSION): New makefile macro. (libgcj-noncore-dummy.dll.a): New build rule for dummy import stub library. (libgcj_noncore_la_LIBADD): Trim superfluous convenience libs. (AM_MAKEFLAGS): Add DLLTOOL recursive propagation. * libjava/libgcj-noncore-dummy.def: New file. * libjava/Makefile.in: Regenerate. * libjava/include/Makefile.in: Likewise. * libjava/testsuite/Makefile.in: Likewise. * libjava/configure: Likewise. * libjava/gcj/Makefile.in: Likewise. From-SVN: r157606 --- diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 9e143318ca9..365968a3ebe 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,28 @@ +2010-03-21 Dave Korn + + PR target/42811 + * libjava/configure.ac (DLLTOOL): Call AC_CHECK_TOOL. + (libgcj_sublib_core_extra_deps): New host-dependent configure var. + (LIBGCJ_SUBLIB_CORE_EXTRA_DEPS): AC_SUBST it. + * libjava/configure.host (libgcj_sublib_core_extra_deps): Define + appropriately on Cygwin and MinGW. + (libgcj_sublib_core_extra_deps): Add libgcj-noncore-dummy import + stub library on Cygwin and MinGW. + * libjava/Makefile.am (LIBJAVA_CORE_EXTRA): Import AC_SUBST'd + LIBGCJ_SUBLIB_CORE_EXTRA_DEPS if building sublibs, else define empty. + (libgcj_la_DEPENDENCIES): Use it. + (DLL_VERSION): New makefile macro. + (libgcj-noncore-dummy.dll.a): New build rule for dummy import stub + library. + (libgcj_noncore_la_LIBADD): Trim superfluous convenience libs. + (AM_MAKEFLAGS): Add DLLTOOL recursive propagation. + * libjava/libgcj-noncore-dummy.def: New file. + * libjava/Makefile.in: Regenerate. + * libjava/include/Makefile.in: Likewise. + * libjava/testsuite/Makefile.in: Likewise. + * libjava/configure: Likewise. + * libjava/gcj/Makefile.in: Likewise. + 2010-03-21 Dave Korn PR target/42811 (prerequisite) diff --git a/libjava/Makefile.am b/libjava/Makefile.am index 11c60dfe09f..190c686e65e 100644 --- a/libjava/Makefile.am +++ b/libjava/Makefile.am @@ -202,11 +202,13 @@ toolexeclib_LTLIBRARIES += libgcj-noncore.la libgcj_noncore_la_LIBADD_SUBOBJECTS = $(NONCORE_PACKAGE_SOURCE_FILES_LO) libgcj_la_LIBADD_SUBOBJECTS = $(CORE_PACKAGE_SOURCE_FILES_LO) LIBJAVA_LDFLAGS_NOUNDEF = $(LIBGCJ_SUBLIB_LTFLAGS) +LIBJAVA_CORE_EXTRA = @LIBGCJ_SUBLIB_CORE_EXTRA_DEPS@ else # If not building sublibraries, everything goes in libgcj, # and it cannot be usefully built shared on PE platforms. libgcj_la_LIBADD_SUBOBJECTS = $(ALL_PACKAGE_SOURCE_FILES_LO) LIBJAVA_LDFLAGS_NOUNDEF = +LIBJAVA_CORE_EXTRA = endif if USE_LIBGCJ_BC @@ -460,7 +462,8 @@ libgcj_la_DEPENDENCIES = libgcj-$(gcc_version).jar \ java/lang/Class.lo \ java/process-$(PLATFORM).lo \ $(ALL_PACKAGE_SOURCE_FILES_LO) \ - $(LIBLTDL) $(libgcj_la_LIBADD) + $(LIBLTDL) $(libgcj_la_LIBADD) \ + $(LIBJAVA_CORE_EXTRA) if ANONVERSCRIPT libgcj_la_DEPENDENCIES += $(srcdir)/libgcj.ver endif @@ -472,17 +475,28 @@ libgcj_la_LINK = $(LIBLINK) $(libgcj_la_LDFLAGS) EXTRA_libgcj_la_SOURCES = java/lang/Object.java if BUILD_SUBLIBS +## This extra target is invoked on windows hosts only by adding it +## to LIBGCJ_SUBLIB_CORE_EXTRA_SRCS in configure.host, which causes +## it to be linked in to the core DLL and generate a circular import +## dependency loop between the two DLLs. This is required to fix +## PR42811 by ensuring that any application that links against +## either always loads both at runtime. +DLL_VERSION=`expr \`grep -v '^\#' $(srcdir)/libtool-version | sed -e 's/\(.*\):\(.*\):.*/\1 + \2/'\`` +libgcj-noncore-dummy.dll.a : $(srcdir)/libgcj-noncore-dummy.def + $(DLLTOOL) -d $^ -l $@ --dllname cyggcj-noncore-$(DLL_VERSION).dll + +## These are the libtool definitions for the noncore library. libgcj_noncore_la_SOURCES = libgcj_noncore_la_LDFLAGS = $(libgcj_la_LDFLAGS) -libgcj_noncore_la_LIBADD = $(libgcj_noncore_la_LIBADD_SUBOBJECTS) \ - $(LIBFFI) $(ZLIBS) $(GCLIBS) libgcj.la +libgcj_noncore_la_LIBADD = $(libgcj_noncore_la_LIBADD_SUBOBJECTS) libgcj.la libgcj_noncore_la_DEPENDENCIES = libgcj-$(gcc_version).jar $(LIBLTDL) \ $(libgcj_noncore_la_LIBADD) libgcj.la if ANONVERSCRIPT libgcj_noncore_la_DEPENDENCIES += $(srcdir)/libgcj.ver endif libgcj_noncore_la_LINK = $(libgcj_la_LINK) -endif + +endif # BUILD_SUBLIBS # We compile libgcj_tools with -findirect-dispatch so that they can # depend on external classes: in particular, gjdoc uses antlr. In @@ -1513,6 +1527,7 @@ AM_MAKEFLAGS = \ "gxx_include_dir=$(gxx_include_dir)" \ "AR=$(AR)" \ "AS=$(AS)" \ + "DLLTOOL=$(DLLTOOL)" \ "LD=$(LD)" \ "LIBCFLAGS=$(LIBCFLAGS)" \ "NM=$(NM)" \ diff --git a/libjava/Makefile.in b/libjava/Makefile.in index 23461147ef2..34ddeae7b6b 100644 --- a/libjava/Makefile.in +++ b/libjava/Makefile.in @@ -184,14 +184,13 @@ am__objects_1 = gnu/gcj/xlib/lib_gnu_awt_xlib_la-natClip.lo \ am_lib_gnu_awt_xlib_la_OBJECTS = $(am__objects_1) lib_gnu_awt_xlib_la_OBJECTS = $(am_lib_gnu_awt_xlib_la_OBJECTS) @XLIB_AWT_TRUE@am_lib_gnu_awt_xlib_la_rpath = -rpath $(toolexeclibdir) -am__DEPENDENCIES_1 = am_libgcj_noncore_la_OBJECTS = libgcj_noncore_la_OBJECTS = $(am_libgcj_noncore_la_OBJECTS) @BUILD_SUBLIBS_TRUE@am_libgcj_noncore_la_rpath = -rpath \ @BUILD_SUBLIBS_TRUE@ $(toolexeclibdir) am_libgcj_tools_la_OBJECTS = classpath/tools/libgcj_tools_la-tools.lo libgcj_tools_la_OBJECTS = $(am_libgcj_tools_la_OBJECTS) -@INTERPRETER_TRUE@am__DEPENDENCIES_2 = gnu/classpath/jdwp.lo \ +@INTERPRETER_TRUE@am__DEPENDENCIES_1 = gnu/classpath/jdwp.lo \ @INTERPRETER_TRUE@ gnu/classpath/jdwp/event.lo \ @INTERPRETER_TRUE@ gnu/classpath/jdwp/event/filters.lo \ @INTERPRETER_TRUE@ gnu/classpath/jdwp/exception.lo \ @@ -200,7 +199,7 @@ libgcj_tools_la_OBJECTS = $(am_libgcj_tools_la_OBJECTS) @INTERPRETER_TRUE@ gnu/classpath/jdwp/transport.lo \ @INTERPRETER_TRUE@ gnu/classpath/jdwp/util.lo \ @INTERPRETER_TRUE@ gnu/classpath/jdwp/value.lo gnu/gcj/jvmti.lo -am__DEPENDENCIES_3 = gnu/awt.lo gnu/awt/j2d.lo gnu/classpath.lo \ +am__DEPENDENCIES_2 = gnu/awt.lo gnu/awt/j2d.lo gnu/classpath.lo \ gnu/classpath/debug.lo gnu/classpath/toolkit.lo gnu/gcj.lo \ gnu/gcj/convert.lo gnu/gcj/io.lo gnu/gcj/runtime.lo \ gnu/gcj/util.lo gnu/java/awt.lo gnu/java/awt/color.lo \ @@ -317,12 +316,13 @@ am__DEPENDENCIES_3 = gnu/awt.lo gnu/awt/j2d.lo gnu/classpath.lo \ javax/swing/undo.lo javax/tools.lo javax/transaction.lo \ javax/transaction/xa.lo org/ietf/jgss.lo sun/awt.lo \ sun/misc.lo sun/reflect.lo sun/reflect/annotation.lo \ - sun/reflect/misc.lo $(am__DEPENDENCIES_2) -am__DEPENDENCIES_4 = $(am__DEPENDENCIES_3) $(propertyo_files) \ + sun/reflect/misc.lo $(am__DEPENDENCIES_1) +am__DEPENDENCIES_3 = $(am__DEPENDENCIES_2) $(propertyo_files) \ $(bc_objects) -@BUILD_SUBLIBS_FALSE@am__DEPENDENCIES_5 = $(am__DEPENDENCIES_4) -@BUILD_SUBLIBS_TRUE@am__DEPENDENCIES_5 = \ +@BUILD_SUBLIBS_FALSE@am__DEPENDENCIES_4 = $(am__DEPENDENCIES_3) +@BUILD_SUBLIBS_TRUE@am__DEPENDENCIES_4 = \ @BUILD_SUBLIBS_TRUE@ $(CORE_PACKAGE_SOURCE_FILES_LO) +am__DEPENDENCIES_5 = am__libgcj_la_SOURCES_DIST = prims.cc jni.cc exception.cc \ stacktrace.cc link.cc defineclass.cc verify.cc jvmti.cc \ interpret.cc gnu/classpath/jdwp/natVMFrame.cc \ @@ -660,6 +660,7 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DIRLTDL = @DIRLTDL@ DIVIDESPEC = @DIVIDESPEC@ +DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ @@ -727,6 +728,7 @@ LIBGCJ_JAVAFLAGS = @LIBGCJ_JAVAFLAGS@ LIBGCJ_LD_SYMBOLIC = @LIBGCJ_LD_SYMBOLIC@ LIBGCJ_LD_SYMBOLIC_FUNCTIONS = @LIBGCJ_LD_SYMBOLIC_FUNCTIONS@ LIBGCJ_SPEC = @LIBGCJ_SPEC@ +LIBGCJ_SUBLIB_CORE_EXTRA_DEPS = @LIBGCJ_SUBLIB_CORE_EXTRA_DEPS@ LIBGCJ_SUBLIB_LTFLAGS = @LIBGCJ_SUBLIB_LTFLAGS@ LIBICONV = @LIBICONV@ LIBLTDL = @LIBLTDL@ @@ -1047,6 +1049,8 @@ CORE_PACKAGE_SOURCE_FILES_LO = $(filter-out $(LOWER_PACKAGE_FILES_LO),$(ALL_PACK @BUILD_SUBLIBS_TRUE@libgcj_la_LIBADD_SUBOBJECTS = $(CORE_PACKAGE_SOURCE_FILES_LO) @BUILD_SUBLIBS_FALSE@LIBJAVA_LDFLAGS_NOUNDEF = @BUILD_SUBLIBS_TRUE@LIBJAVA_LDFLAGS_NOUNDEF = $(LIBGCJ_SUBLIB_LTFLAGS) +@BUILD_SUBLIBS_FALSE@LIBJAVA_CORE_EXTRA = +@BUILD_SUBLIBS_TRUE@LIBJAVA_CORE_EXTRA = @LIBGCJ_SUBLIB_CORE_EXTRA_DEPS@ dbexec_LTLIBRARIES = libjvm.la pkgconfigdir = $(libdir)/pkgconfig jardir = $(datadir)/java @@ -1158,14 +1162,13 @@ libgcj_la_LIBADD = \ libgcj_la_DEPENDENCIES = libgcj-$(gcc_version).jar java/lang/Object.lo \ java/lang/Class.lo java/process-$(PLATFORM).lo \ $(ALL_PACKAGE_SOURCE_FILES_LO) $(LIBLTDL) $(libgcj_la_LIBADD) \ - $(am__append_20) + $(LIBJAVA_CORE_EXTRA) $(am__append_20) libgcj_la_LINK = $(LIBLINK) $(libgcj_la_LDFLAGS) EXTRA_libgcj_la_SOURCES = java/lang/Object.java +@BUILD_SUBLIBS_TRUE@DLL_VERSION = `expr \`grep -v '^\#' $(srcdir)/libtool-version | sed -e 's/\(.*\):\(.*\):.*/\1 + \2/'\`` @BUILD_SUBLIBS_TRUE@libgcj_noncore_la_SOURCES = @BUILD_SUBLIBS_TRUE@libgcj_noncore_la_LDFLAGS = $(libgcj_la_LDFLAGS) -@BUILD_SUBLIBS_TRUE@libgcj_noncore_la_LIBADD = $(libgcj_noncore_la_LIBADD_SUBOBJECTS) \ -@BUILD_SUBLIBS_TRUE@ $(LIBFFI) $(ZLIBS) $(GCLIBS) libgcj.la - +@BUILD_SUBLIBS_TRUE@libgcj_noncore_la_LIBADD = $(libgcj_noncore_la_LIBADD_SUBOBJECTS) libgcj.la @BUILD_SUBLIBS_TRUE@libgcj_noncore_la_DEPENDENCIES = \ @BUILD_SUBLIBS_TRUE@ libgcj-$(gcc_version).jar $(LIBLTDL) \ @BUILD_SUBLIBS_TRUE@ $(libgcj_noncore_la_LIBADD) libgcj.la \ @@ -8770,6 +8773,7 @@ AM_MAKEFLAGS = \ "gxx_include_dir=$(gxx_include_dir)" \ "AR=$(AR)" \ "AS=$(AS)" \ + "DLLTOOL=$(DLLTOOL)" \ "LD=$(LD)" \ "LIBCFLAGS=$(LIBCFLAGS)" \ "NM=$(NM)" \ @@ -10787,6 +10791,8 @@ uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS \ interpret.lo: AM_CXXFLAGS += -fwrapv +@BUILD_SUBLIBS_TRUE@libgcj-noncore-dummy.dll.a : $(srcdir)/libgcj-noncore-dummy.def +@BUILD_SUBLIBS_TRUE@ $(DLLTOOL) -d $^ -l $@ --dllname cyggcj-noncore-$(DLL_VERSION).dll $(db_name): gcj-dbtool$(EXEEXT) @rm -f $(db_name) diff --git a/libjava/configure b/libjava/configure index 605225b19a0..0d2fb703ece 100755 --- a/libjava/configure +++ b/libjava/configure @@ -778,6 +778,7 @@ BUILD_SUBLIBS_FALSE BUILD_SUBLIBS_TRUE LIBGCJ_LD_SYMBOLIC_FUNCTIONS LIBGCJ_LD_SYMBOLIC +LIBGCJ_SUBLIB_CORE_EXTRA_DEPS LIBGCJ_SUBLIB_LTFLAGS LIBGCJ_JAVAFLAGS LIBGCJ_CXXFLAGS @@ -788,6 +789,7 @@ MAINTAINER_MODE_TRUE UNZIP ZIP JAR +DLLTOOL RANLIB AR LD @@ -5567,6 +5569,98 @@ else RANLIB="$ac_cv_prog_RANLIB" fi +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. +set dummy ${ac_tool_prefix}dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_DLLTOOL+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +$as_echo "$DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DLLTOOL"; then + ac_ct_DLLTOOL=$DLLTOOL + # Extract the first word of "dlltool", so it can be a program name with args. +set dummy dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_DLLTOOL+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DLLTOOL"; then + ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_DLLTOOL="dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL +if test -n "$ac_ct_DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +$as_echo "$ac_ct_DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DLLTOOL" = x; then + DLLTOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DLLTOOL=$ac_ct_DLLTOOL + fi +else + DLLTOOL="$ac_cv_prog_DLLTOOL" +fi + for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. @@ -5789,13 +5883,16 @@ fi # libgcj_cxxflags - host specific C++ compiler flags # libgcj_javaflags - host specific Java compiler flags # libgcj_sublib_ltflags - host specific Libtool flags -# (only used when building sublibs) +# libgcj_sublib_core_extra_deps - host specific extra +# dependencies for core sublib +# (these last two only used when building sublibs) # and a number of others; see the list at the start of the file. libgcj_cflags= libgcj_cxxflags= libgcj_javaflags= libgcj_sublib_ltflags= +libgcj_sublib_core_extra_deps= . ${srcdir}/configure.host @@ -5846,6 +5943,7 @@ LIBGCJ_CFLAGS="${libgcj_cflags}" LIBGCJ_CXXFLAGS="${libgcj_cxxflags}" LIBGCJ_JAVAFLAGS="${libgcj_javaflags}" LIBGCJ_SUBLIB_LTFLAGS="${libgcj_sublib_ltflags}" +LIBGCJ_SUBLIB_CORE_EXTRA_DEPS="${libgcj_sublib_core_extra_deps}" LIBGCJ_LD_SYMBOLIC="${libgcj_ld_symbolic}" LIBGCJ_LD_SYMBOLIC_FUNCTIONS="${libgcj_ld_symbolic_functions}" @@ -5855,6 +5953,7 @@ LIBGCJ_LD_SYMBOLIC_FUNCTIONS="${libgcj_ld_symbolic_functions}" + # Only use libltdl for non-newlib builds. if test "x${with_newlib}" = "x" || test "x${with_newlib}" = "xno"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 @@ -13238,7 +13337,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 13241 "configure" +#line 13340 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -13344,7 +13443,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 13347 "configure" +#line 13446 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -19209,7 +19308,7 @@ if test "${enable_sjlj_exceptions+set}" = set; then : enableval=$enable_sjlj_exceptions; : else cat > conftest.$ac_ext << EOF -#line 19212 "configure" +#line 19311 "configure" struct S { ~S(); }; void bar(); void foo() diff --git a/libjava/configure.ac b/libjava/configure.ac index 3721e1c34ed..255fb64595e 100644 --- a/libjava/configure.ac +++ b/libjava/configure.ac @@ -157,6 +157,7 @@ AC_CHECK_TOOL(AS, as) AC_CHECK_TOOL(LD, ld) AC_CHECK_TOOL(AR, ar) AC_CHECK_TOOL(RANLIB, ranlib, :) +AC_CHECK_TOOL(DLLTOOL, dlltool, :) AC_PROG_AWK AC_CHECK_PROGS([JAR], [jar fastjar gjar], no) AC_PATH_PROG([ZIP], [zip], no) @@ -194,13 +195,16 @@ AC_EXEEXT # libgcj_cxxflags - host specific C++ compiler flags # libgcj_javaflags - host specific Java compiler flags # libgcj_sublib_ltflags - host specific Libtool flags -# (only used when building sublibs) +# libgcj_sublib_core_extra_deps - host specific extra +# dependencies for core sublib +# (these last two only used when building sublibs) # and a number of others; see the list at the start of the file. libgcj_cflags= libgcj_cxxflags= libgcj_javaflags= libgcj_sublib_ltflags= +libgcj_sublib_core_extra_deps= . ${srcdir}/configure.host @@ -214,12 +218,14 @@ LIBGCJ_CFLAGS="${libgcj_cflags}" LIBGCJ_CXXFLAGS="${libgcj_cxxflags}" LIBGCJ_JAVAFLAGS="${libgcj_javaflags}" LIBGCJ_SUBLIB_LTFLAGS="${libgcj_sublib_ltflags}" +LIBGCJ_SUBLIB_CORE_EXTRA_DEPS="${libgcj_sublib_core_extra_deps}" LIBGCJ_LD_SYMBOLIC="${libgcj_ld_symbolic}" LIBGCJ_LD_SYMBOLIC_FUNCTIONS="${libgcj_ld_symbolic_functions}" AC_SUBST(LIBGCJ_CFLAGS) AC_SUBST(LIBGCJ_CXXFLAGS) AC_SUBST(LIBGCJ_JAVAFLAGS) AC_SUBST(LIBGCJ_SUBLIB_LTFLAGS) +AC_SUBST(LIBGCJ_SUBLIB_CORE_EXTRA_DEPS) AC_SUBST(LIBGCJ_LD_SYMBOLIC) AC_SUBST(LIBGCJ_LD_SYMBOLIC_FUNCTIONS) diff --git a/libjava/configure.host b/libjava/configure.host index 36039b5fc4a..460ef2fab07 100644 --- a/libjava/configure.host +++ b/libjava/configure.host @@ -18,7 +18,8 @@ # libgcj_cflags Special CFLAGS to use when building # libgcj_cxxflags Special CXXFLAGS to use when building # libgcj_javaflags Special JAVAFLAGS to use when building -# libgcj_sublib_ltflags Special Libtool flags to use when building. +# libgcj_sublib_ltflags Special Libtool flags to use when building sublibs +# libgcj_sublib_core_extra_deps Extra dependencies to add to core sublib # libgcj_interpreter If the bytecode interpreter supports this platform. # enable_java_net_default If java.net native code should be enabled by # default. @@ -43,6 +44,7 @@ libgcj_cflags= libgcj_cxxflags= libgcj_javaflags= libgcj_sublib_ltflags= +libgcj_sublib_core_extra_deps= libgcj_interpreter= enable_java_net_default=yes enable_hash_synchronization_default=no @@ -351,7 +353,9 @@ case "${host}" in BACKTRACESPEC= # Win32 DLLs are limited to 64k exported symbols each. enable_libgcj_sublibs_default=yes - libgcj_sublib_ltflags='-no-undefined -bindir $(bindir)' + libgcj_sublib_ltflags='-no-undefined -bindir $(bindir) \ + -Wl,-u,__ZN3org4ietf4jgss10GSSManagerC1Ev,-L..,-lgcj-noncore-dummy' + libgcj_sublib_core_extra_deps=libgcj-noncore-dummy.dll.a ;; esac diff --git a/libjava/gcj/Makefile.in b/libjava/gcj/Makefile.in index 55524392d98..e73ef0e7140 100644 --- a/libjava/gcj/Makefile.in +++ b/libjava/gcj/Makefile.in @@ -124,6 +124,7 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DIRLTDL = @DIRLTDL@ DIVIDESPEC = @DIVIDESPEC@ +DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ @@ -191,6 +192,7 @@ LIBGCJ_JAVAFLAGS = @LIBGCJ_JAVAFLAGS@ LIBGCJ_LD_SYMBOLIC = @LIBGCJ_LD_SYMBOLIC@ LIBGCJ_LD_SYMBOLIC_FUNCTIONS = @LIBGCJ_LD_SYMBOLIC_FUNCTIONS@ LIBGCJ_SPEC = @LIBGCJ_SPEC@ +LIBGCJ_SUBLIB_CORE_EXTRA_DEPS = @LIBGCJ_SUBLIB_CORE_EXTRA_DEPS@ LIBGCJ_SUBLIB_LTFLAGS = @LIBGCJ_SUBLIB_LTFLAGS@ LIBICONV = @LIBICONV@ LIBLTDL = @LIBLTDL@ diff --git a/libjava/include/Makefile.in b/libjava/include/Makefile.in index 539dd01f188..5e5a4b3d5bf 100644 --- a/libjava/include/Makefile.in +++ b/libjava/include/Makefile.in @@ -124,6 +124,7 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DIRLTDL = @DIRLTDL@ DIVIDESPEC = @DIVIDESPEC@ +DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ @@ -191,6 +192,7 @@ LIBGCJ_JAVAFLAGS = @LIBGCJ_JAVAFLAGS@ LIBGCJ_LD_SYMBOLIC = @LIBGCJ_LD_SYMBOLIC@ LIBGCJ_LD_SYMBOLIC_FUNCTIONS = @LIBGCJ_LD_SYMBOLIC_FUNCTIONS@ LIBGCJ_SPEC = @LIBGCJ_SPEC@ +LIBGCJ_SUBLIB_CORE_EXTRA_DEPS = @LIBGCJ_SUBLIB_CORE_EXTRA_DEPS@ LIBGCJ_SUBLIB_LTFLAGS = @LIBGCJ_SUBLIB_LTFLAGS@ LIBICONV = @LIBICONV@ LIBLTDL = @LIBLTDL@ diff --git a/libjava/libgcj-noncore-dummy.def b/libjava/libgcj-noncore-dummy.def new file mode 100644 index 00000000000..e56f9f6eb29 --- /dev/null +++ b/libjava/libgcj-noncore-dummy.def @@ -0,0 +1,7 @@ + +LIBRARY cyggcj-noncore-11.dll + +EXPORTS + + _ZN3org4ietf4jgss10GSSManagerC1Ev + diff --git a/libjava/testsuite/Makefile.in b/libjava/testsuite/Makefile.in index 5086016cfaf..86862ce8690 100644 --- a/libjava/testsuite/Makefile.in +++ b/libjava/testsuite/Makefile.in @@ -99,6 +99,7 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DIRLTDL = @DIRLTDL@ DIVIDESPEC = @DIVIDESPEC@ +DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ @@ -166,6 +167,7 @@ LIBGCJ_JAVAFLAGS = @LIBGCJ_JAVAFLAGS@ LIBGCJ_LD_SYMBOLIC = @LIBGCJ_LD_SYMBOLIC@ LIBGCJ_LD_SYMBOLIC_FUNCTIONS = @LIBGCJ_LD_SYMBOLIC_FUNCTIONS@ LIBGCJ_SPEC = @LIBGCJ_SPEC@ +LIBGCJ_SUBLIB_CORE_EXTRA_DEPS = @LIBGCJ_SUBLIB_CORE_EXTRA_DEPS@ LIBGCJ_SUBLIB_LTFLAGS = @LIBGCJ_SUBLIB_LTFLAGS@ LIBICONV = @LIBICONV@ LIBLTDL = @LIBLTDL@