summaryrefslogtreecommitdiff
path: root/libjava
diff options
context:
space:
mode:
authordavek <davek@138bc75d-0d04-0410-961f-82ee72b054a4>2010-03-21 19:41:37 +0000
committerdavek <davek@138bc75d-0d04-0410-961f-82ee72b054a4>2010-03-21 19:41:37 +0000
commit7525020730265abd1e07fcc07d0e707a5a140825 (patch)
tree3802590e4709444b1219175a10f94cc33e72acb9 /libjava
parente43d82e2fc8667da0839b901a6539d6f73fd99f7 (diff)
downloadgcc-7525020730265abd1e07fcc07d0e707a5a140825.tar.gz
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@157606 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava')
-rw-r--r--libjava/ChangeLog25
-rw-r--r--libjava/Makefile.am23
-rw-r--r--libjava/Makefile.in28
-rwxr-xr-xlibjava/configure107
-rw-r--r--libjava/configure.ac8
-rw-r--r--libjava/configure.host8
-rw-r--r--libjava/gcj/Makefile.in2
-rw-r--r--libjava/include/Makefile.in2
-rw-r--r--libjava/libgcj-noncore-dummy.def7
-rw-r--r--libjava/testsuite/Makefile.in2
10 files changed, 190 insertions, 22 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 9e143318ca9..365968a3ebe 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,5 +1,30 @@
2010-03-21 Dave Korn <dave.korn.cygwin@gmail.com>
+ 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 <dave.korn.cygwin@gmail.com>
+
PR target/42811 (prerequisite)
* jvmti.cc (_Jv_GetJVMTIEnv): Avoid use of uninitialised memory.
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@