diff -pur libjava/boehm.cc libjava/boehm.cc
--- libjava/boehm.cc	2007-10-22 23:24:35.000000000 +0200
+++ libjava/boehm.cc	2014-05-05 15:48:50.774414000 +0200
@@ -747,7 +747,8 @@ _Jv_GCAttachThread ()
   // The registration interface is only defined on posixy systems and
   // only actually works if pthread_getattr_np is defined.
   // FIXME: until gc7 it is simpler to disable this on solaris.
-#if defined(HAVE_PTHREAD_GETATTR_NP) && !defined(GC_SOLARIS_THREADS)
+#if defined(HAVE_PTHREAD_GETATTR_NP) && !defined(GC_SOLARIS_THREADS) \
+    && !defined(GC_WIN32_THREADS)
   GC_register_my_thread ();
 #endif
 }
@@ -755,7 +756,8 @@ _Jv_GCAttachThread ()
 void
 _Jv_GCDetachThread ()
 {
-#if defined(HAVE_PTHREAD_GETATTR_NP) && !defined(GC_SOLARIS_THREADS)
+#if defined(HAVE_PTHREAD_GETATTR_NP) && !defined(GC_SOLARIS_THREADS) \
+    && !defined(GC_WIN32_THREADS)
   GC_unregister_my_thread ();
 #endif
 }
diff -pur libjava/configure.host libjava/configure.host
--- libjava/configure.host	2013-04-16 10:49:51.000000000 +0200
+++ libjava/configure.host	2014-05-08 08:41:16.678710900 +0200
@@ -365,6 +365,13 @@ EOF
 esac
 
 case "${host}" in
+  x86_64-*-cygwin* | x86_64-*-mingw*)
+	# Win32 DLLs are limited to 64k exported symbols each.
+	enable_libgcj_sublibs_default=yes
+	libgcj_sublib_ltflags='$(lt_host_flags) \
+	    -Wl,-u,_ZN3org4ietf4jgss10GSSManagerC1Ev,-L..,-lgcj-noncore-dummy'
+	libgcj_sublib_core_extra_deps=libgcj-noncore-dummy.dll.a
+  ;;
   *-cygwin* | *-mingw*)
 	fallback_backtrace_h=sysdep/i386/backtrace.h  
 	# We need a frame pointer on Windows, so override BACKTRACESPEC
diff -pur libjava/java/lang/natClass.cc libjava/java/lang/natClass.cc
--- libjava/java/lang/natClass.cc	2011-12-12 11:40:27.000000000 +0100
+++ libjava/java/lang/natClass.cc	2014-05-05 15:48:50.915039000 +0200
@@ -1870,9 +1870,9 @@ _Jv_InterfaceAssignableFrom (jclass sour
 {
   for (int i = 0; i < source->interface_count; i++)
     {
-      jclass interface = source->interfaces[i];
-      if (iface == interface
-          || _Jv_InterfaceAssignableFrom (interface, iface))
+      jclass source_interface = source->interfaces[i];
+      if (iface == source_interface
+          || _Jv_InterfaceAssignableFrom (source_interface, iface))
         return true;      
     }
     
