# HG changeset patch # User Andrew John Hughes # Date 1372383223 -3600 # Node ID 04d2a30a17cf9d6cfad0088da584f7706dc0d0f6 # Parent 2f50c50bc1d0af7681c09da5c83370a096b51d44 Include latest security patches. 2013-06-27 Andrew John Hughes * Makefile.am, (HOTSPOT_CHANGESET): Update to IcedTea7 2.2.9 tag, bringing in latest security patches. (CORBA_CHANGESET): Likewise. (JAXP_CHANGESET): Likewise. (JAXWS_CHANGESET): Likewise. (JDK_CHANGESET): Likewise. (LANGTOOLS_CHANGESET): Likewise. (OPENJDK_CHANGESET): Likewise. (HOTSPOT_SHA256SUM): Likewise. (CORBA_SHA256SUM): Likewise. (JAXP_SHA256SUM): Likewise. (JAXWS_SHA256SUM): Likewise. (JDK_SHA256SUM): Likewise. (LANGTOOLS_SHA256SUM): Likewise. (OPENJDK_SHA256SUM): Likewise. * patches/boot/ecj-diamond.patch, * patches/boot/ecj-multicatch.patch: Add new cases. * patches/boot/ecj-stringswitch.patch: Update MethodHandleNatives patch, including adding new case. * patches/boot/tobin.patch: Update following move from sun.awt.X11 to sun.awt. diff -r 2f50c50bc1d0 -r 04d2a30a17cf ChangeLog --- a/ChangeLog Wed May 01 00:04:40 2013 +0100 +++ b/ChangeLog Fri Jun 28 02:33:43 2013 +0100 @@ -1,3 +1,31 @@ +2013-06-27 Andrew John Hughes + + * Makefile.am, + (HOTSPOT_CHANGESET): Update to IcedTea7 2.2.9 tag, + bringing in latest security patches. + (CORBA_CHANGESET): Likewise. + (JAXP_CHANGESET): Likewise. + (JAXWS_CHANGESET): Likewise. + (JDK_CHANGESET): Likewise. + (LANGTOOLS_CHANGESET): Likewise. + (OPENJDK_CHANGESET): Likewise. + (HOTSPOT_SHA256SUM): Likewise. + (CORBA_SHA256SUM): Likewise. + (JAXP_SHA256SUM): Likewise. + (JAXWS_SHA256SUM): Likewise. + (JDK_SHA256SUM): Likewise. + (LANGTOOLS_SHA256SUM): Likewise. + (OPENJDK_SHA256SUM): Likewise. + * patches/boot/ecj-diamond.patch, + * patches/boot/ecj-multicatch.patch: + Add new cases. + * patches/boot/ecj-stringswitch.patch: + Update MethodHandleNatives patch, including + adding new case. + * patches/boot/tobin.patch: + Update following move from sun.awt.X11 + to sun.awt. + 2013-05-01 Andrew John Hughes * configure.ac: Bump to 2.2.9pre. diff -r 2f50c50bc1d0 -r 04d2a30a17cf Makefile.am --- a/Makefile.am Wed May 01 00:04:40 2013 +0100 +++ b/Makefile.am Fri Jun 28 02:33:43 2013 +0100 @@ -4,21 +4,21 @@ JDK_UPDATE_VERSION = 05 COMBINED_VERSION = $(JDK_UPDATE_VERSION)-$(OPENJDK_VERSION) -HOTSPOT_CHANGESET = 168d05b42b89 -CORBA_CHANGESET = 529355376925 -JAXP_CHANGESET = 839055d03a54 -JAXWS_CHANGESET = c7ac0744f92f -JDK_CHANGESET = 1a455d17b871 -LANGTOOLS_CHANGESET = ae5ba074188d -OPENJDK_CHANGESET = 1a406488fe33 +HOTSPOT_CHANGESET = 89a7d38e2e31 +CORBA_CHANGESET = 4fdf74f61b48 +JAXP_CHANGESET = 5ce90e84aa21 +JAXWS_CHANGESET = 5942fdde2af6 +JDK_CHANGESET = 25f39684638a +LANGTOOLS_CHANGESET = 1c14c3a8ea14 +OPENJDK_CHANGESET = 0cc24300e6de -HOTSPOT_SHA256SUM = 873651a61cffe2e37f16bf6e6558e2d72fd7a9a50319fd83e3854710ba9eea65 -CORBA_SHA256SUM = b4f0eca0f37b581ace14f24b5aea2db99321e027c4bc2a044b9c796d45804a07 -JAXP_SHA256SUM = cb1007e7c9bdfc1a12d85dbc31adc2fb33ef4f6e0e36efda95ad3ba80556289b -JAXWS_SHA256SUM = b12a65e8793065da0f4243f2b1029e9e1c6c15611612aeb5d8c45f1e58a91875 -JDK_SHA256SUM = 829ed69c856e7eb344a15f3f3d06166bc6627a6eb5ceec0ccef6ae742ec3d9e6 -LANGTOOLS_SHA256SUM = 8193a0309874143e10e8002d8c5fcf10aefc012af74d8a3bb4416611dfe9fb7f -OPENJDK_SHA256SUM = 196845c4edcf0d82ed72661b381c83f2d0e6e0d4b8952e002decd3483280388e +HOTSPOT_SHA256SUM = 895802e8e5d3661ef9ed7f8530a595c899f056faf73b4cfa7d603777ba8f28f0 +CORBA_SHA256SUM = 01da9cb128138afa48f9d17e800f90d1fea54db876551fe10145f4aaac01b0b3 +JAXP_SHA256SUM = 479516db3d57f1cf6ec67c26229fb70f59499a6794b90cbabb4c47d930d13229 +JAXWS_SHA256SUM = 535c443eb71aead164a9e790f368c8424a51190d25027847820a6705bee3ff72 +JDK_SHA256SUM = 858fa92c115de0aa917622d2e173604f53c3c8bd75119622d1711485c695f430 +LANGTOOLS_SHA256SUM = b6b53a5f89c046abd8f38d0b4626611ca688c1de7cbdc2e52790d9aebd7dacf3 +OPENJDK_SHA256SUM = 070c32f4126887949b2363a4379a367d7fc7f1c0ffa4d782f430c3e39a2961e9 CACAO_VERSION = a567bcb7f589 CACAO_SHA256SUM = d49f79debc131a5694cae6ab3ba2864e7f3249ee8d9dc09aae8afdd4dc6b09f9 diff -r 2f50c50bc1d0 -r 04d2a30a17cf patches/boot/ecj-diamond.patch --- a/patches/boot/ecj-diamond.patch Wed May 01 00:04:40 2013 +0100 +++ b/patches/boot/ecj-diamond.patch Fri Jun 28 02:33:43 2013 +0100 @@ -6215,3 +6215,63 @@ List threads = new ArrayList(); for (int i = 0; i < threadCount; i++) { RandomCollector r = new RandomCollector(); +diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/io/ObjectStreamClass.java openjdk-boot/jdk/src/share/classes/java/io/ObjectStreamClass.java +--- openjdk-boot.orig/jdk/src/share/classes/java/io/ObjectStreamClass.java 2013-06-27 16:06:42.289384018 +0100 ++++ openjdk-boot/jdk/src/share/classes/java/io/ObjectStreamClass.java 2013-06-27 16:07:06.489768521 +0100 +@@ -1164,7 +1164,7 @@ + end = end.getSuperclass(); + } + +- HashSet oscNames = new HashSet<>(3); ++ HashSet oscNames = new HashSet(3); + + for (ObjectStreamClass d = this; d != null; d = d.superDesc) { + if (oscNames.contains(d.name)) { +diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/font/CreatedFontTracker.java openjdk-boot/jdk/src/share/classes/sun/font/CreatedFontTracker.java +--- openjdk-boot.orig/jdk/src/share/classes/sun/font/CreatedFontTracker.java 2013-06-27 16:06:53.297558922 +0100 ++++ openjdk-boot/jdk/src/share/classes/sun/font/CreatedFontTracker.java 2013-06-27 16:07:32.294178507 +0100 +@@ -106,7 +106,7 @@ + * Note that this only applies to createFont() from an InputStream object. + */ + private static class TempFileDeletionHook { +- private static HashMap files = new HashMap<>(); ++ private static HashMap files = new HashMap(); + + private static Thread t = null; + static void init() { +diff --git a/src/share/classes/com/sun/media/sound/AbstractLine.java b/src/share/classes/com/sun/media/sound/AbstractLine.java +--- openjdk-boot.orig/jdk/src/share/classes/com/sun/media/sound/AbstractLine.java ++++ openjdk-boot/jdk/src/share/classes/com/sun/media/sound/AbstractLine.java +@@ -54,7 +54,7 @@ + * Contains event dispatcher per thread group. + */ + private static final Map dispatchers = +- new WeakHashMap<>(); ++ new WeakHashMap(); + + /** + * Constructs a new AbstractLine. +diff --git a/src/share/classes/com/sun/media/sound/RealTimeSequencer.java b/src/share/classes/com/sun/media/sound/RealTimeSequencer.java +--- openjdk-boot.orig/jdk/src/share/classes/com/sun/media/sound/RealTimeSequencer.java ++++ openjdk-boot/jdk/src/share/classes/com/sun/media/sound/RealTimeSequencer.java +@@ -59,7 +59,7 @@ + * dispatcher instance with a factory in EventDispatcher + */ + private static final Map dispatchers = +- new WeakHashMap<>(); ++ new WeakHashMap(); + + /** + * All RealTimeSequencers share this info object. +diff -Nru openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/ch/SctpNet.java openjdk-boot/jdk/src/solaris/classes/sun/nio/ch/SctpNet.java +--- openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/ch/SctpNet.java 2013-06-27 20:05:19.200970932 +0100 ++++ openjdk-boot/jdk/src/solaris/classes/sun/nio/ch/SctpNet.java 2013-06-27 20:05:33.857203747 +0100 +@@ -113,7 +113,7 @@ + SocketAddress[] saa) + { + SecurityManager sm = System.getSecurityManager(); +- Set set = new HashSet<>(saa.length); ++ Set set = new HashSet(saa.length); + for (SocketAddress sa : saa) { + set.add(getRevealedLocalAddress(sa, sm)); + } diff -r 2f50c50bc1d0 -r 04d2a30a17cf patches/boot/ecj-multicatch.patch --- a/patches/boot/ecj-multicatch.patch Wed May 01 00:04:40 2013 +0100 +++ b/patches/boot/ecj-multicatch.patch Fri Jun 28 02:33:43 2013 +0100 @@ -205,3 +205,54 @@ throw new InternalError(e.toString()); } catch (InvocationTargetException e) { Throwable t = e.getCause(); +diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/jmx/remote/internal/ArrayNotificationBuffer.java openjdk-boot/jdk/src/share/classes/com/sun/jmx/remote/internal/ArrayNotificationBuffer.java +--- openjdk-boot.orig/jdk/src/share/classes/com/sun/jmx/remote/internal/ArrayNotificationBuffer.java 2013-06-27 15:56:57.456088537 +0100 ++++ openjdk-boot/jdk/src/share/classes/com/sun/jmx/remote/internal/ArrayNotificationBuffer.java 2013-06-27 16:02:12.857102777 +0100 +@@ -402,7 +402,13 @@ + try { + ServerNotifForwarder.checkMBeanPermission(this.mBeanServer, + candidate.getObjectName(),"addNotificationListener"); +- } catch (InstanceNotFoundException | SecurityException e) { ++ } catch (InstanceNotFoundException e) { ++ if (logger.debugOn()) { ++ logger.debug("fetchNotifications", "candidate: " + candidate + " skipped. exception " + e); ++ } ++ ++nextSeq; ++ continue; ++ } catch (SecurityException e) { + if (logger.debugOn()) { + logger.debug("fetchNotifications", "candidate: " + candidate + " skipped. exception " + e); + } +diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/ProcessBuilder.java openjdk-boot/jdk/src/share/classes/java/lang/ProcessBuilder.java +--- openjdk-boot.orig/jdk/src/share/classes/java/lang/ProcessBuilder.java 2013-06-27 15:56:27.295609027 +0100 ++++ openjdk-boot/jdk/src/share/classes/java/lang/ProcessBuilder.java 2013-06-27 16:00:59.631938678 +0100 +@@ -1024,10 +1024,10 @@ + dir, + redirects, + redirectErrorStream); +- } catch (IOException | IllegalArgumentException e) { ++ } catch (IOException e) { + String exceptionInfo = ": " + e.getMessage(); + Throwable cause = e; +- if ((e instanceof IOException) && security != null) { ++ if (security != null) { + // Can not disclose the fail reason for read-protected files. + try { + security.checkRead(prog); +@@ -1039,6 +1039,16 @@ + // It's much easier for us to create a high-quality error + // message than the low-level C code which found the problem. + throw new IOException( ++ "Cannot run program \"" + prog + "\"" ++ + (dir == null ? "" : " (in directory \"" + dir + "\")") ++ + exceptionInfo, ++ cause); ++ } catch (IllegalArgumentException e) { ++ String exceptionInfo = ": " + e.getMessage(); ++ Throwable cause = e; ++ // It's much easier for us to create a high-quality error ++ // message than the low-level C code which found the problem. ++ throw new IOException( + "Cannot run program \"" + prog + "\"" + + (dir == null ? "" : " (in directory \"" + dir + "\")") + + exceptionInfo, diff -r 2f50c50bc1d0 -r 04d2a30a17cf patches/boot/ecj-stringswitch.patch --- a/patches/boot/ecj-stringswitch.patch Wed May 01 00:04:40 2013 +0100 +++ b/patches/boot/ecj-stringswitch.patch Fri Jun 28 02:33:43 2013 +0100 @@ -302,59 +302,29 @@ throw new IllegalArgumentException( diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MethodHandleNatives.java openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandleNatives.java ---- openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MethodHandleNatives.java 2013-01-14 22:25:02.000000000 +0000 -+++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandleNatives.java 2013-01-15 02:19:34.315049222 +0000 -@@ -411,111 +411,106 @@ - static boolean isCallerSensitive(MemberName mem) { - if (!mem.isInvocable()) return false; // fields are not caller sensitive - Class defc = mem.getDeclaringClass(); -- switch (mem.getName()) { +--- openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MethodHandleNatives.java 2013-06-21 21:46:14.000000000 +0100 ++++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandleNatives.java 2013-06-26 02:23:21.025257579 +0100 +@@ -421,110 +421,105 @@ + // this method is also called by test/sun/reflect/CallerSensitiveFinder + // to validate the hand-maintained list + private static boolean isCallerSensitiveMethod(Class defc, String method) { +- switch (method) { - case "doPrivileged": - case "doPrivilegedWithCombiner": -+ String memName = mem.getName(); -+ if ("doPrivileged".equals(memName) || -+ "doPrivilegedWithCombiner".equals(memName)) { ++ if ("doPrivileged".equals(method) || ++ "doPrivilegedWithCombiner".equals(method)) { return defc == java.security.AccessController.class; - case "checkMemberAccess": -+ } else if ("checkMemberAccess".equals(memName)) { - return canBeCalledVirtual(mem, java.lang.SecurityManager.class); ++ } else if ("checkMemberAccess".equals(method)) { + return defc == java.lang.SecurityManager.class; - case "getUnsafe": -+ } else if ("getUnsafe".equals(memName)) { ++ } else if ("getUnsafe".equals(method)) { return defc == sun.misc.Unsafe.class; - case "lookup": -+ } else if ("lookup".equals(memName)) { ++ } else if ("lookup".equals(method)) { return defc == java.lang.invoke.MethodHandles.class; -- case "findStatic": -- case "findVirtual": -- case "findConstructor": -- case "findSpecial": -- case "findGetter": -- case "findSetter": -- case "findStaticGetter": -- case "findStaticSetter": -- case "bind": -- case "unreflect": -- case "unreflectSpecial": -- case "unreflectConstructor": -- case "unreflectGetter": -- case "unreflectSetter": -+ } else if ("findStatic".equals(memName) || -+ "findVirtual".equals(memName) || -+ "findConstructor".equals(memName) || -+ "findSpecial".equals(memName) || -+ "findGetter".equals(memName) || -+ "findSetter".equals(memName) || -+ "findStaticGetter".equals(memName) || -+ "findStaticSetter".equals(memName) || -+ "bind".equals(memName) || -+ "unreflect".equals(memName) || -+ "unreflectSpecial".equals(memName) || -+ "unreflectConstructor".equals(memName) || -+ "unreflectGetter".equals(memName) || -+ "unreflectSetter".equals(memName)) { - return defc == java.lang.invoke.MethodHandles.Lookup.class; - case "invoke": -+ } else if ("invoke".equals(memName)) { ++ } else if ("invoke".equals(method)) { return defc == java.lang.reflect.Method.class; - case "get": - case "getBoolean": @@ -374,33 +344,37 @@ - case "setLong": - case "setFloat": - case "setDouble": -+ } else if ("get".equals(memName) || -+ "getBoolean".equals(memName) || -+ "getByte".equals(memName) || -+ "getChar".equals(memName) || -+ "getShort".equals(memName) || -+ "getInt".equals(memName) || -+ "getFloat".equals(memName) || -+ "getDouble".equals(memName) || -+ "set".equals(memName) || -+ "setBoolean".equals(memName) || -+ "setByte".equals(memName) || -+ "setChar".equals(memName) || -+ "setShort".equals(memName) || -+ "setInt".equals(memName) || -+ "setLong".equals(memName) || -+ "setFloat".equals(memName) || -+ "setDouble".equals(memName)) { ++ } else if ("get".equals(method) || ++ "getBoolean".equals(method) || ++ "getByte".equals(method) || ++ "getChar".equals(method) || ++ "getShort".equals(method) || ++ "getInt".equals(method) || ++ "getLong".equals(method) || ++ "getFloat".equals(method) || ++ "getDouble".equals(method) || ++ "set".equals(method) || ++ "setBoolean".equals(method) || ++ "setByte".equals(method) || ++ "setChar".equals(method) || ++ "setShort".equals(method) || ++ "setInt".equals(method) || ++ "setLong".equals(method) || ++ "setFloat".equals(method) || ++ "setDouble".equals(method)) { return defc == java.lang.reflect.Field.class; - case "newInstance": -+ } else if ("newInstance".equals(memName)) { ++ } else if ("newInstance".equals(method)) { if (defc == java.lang.reflect.Constructor.class) return true; if (defc == java.lang.Class.class) return true; - break; +- case "getFields": ++ } else if ("getFields".equals(method)) { + return defc == java.lang.Class.class || + defc == javax.sql.rowset.serial.SerialJavaObject.class; - case "forName": - case "getClassLoader": - case "getClasses": -- case "getFields": - case "getMethods": - case "getConstructors": - case "getDeclaredClasses": @@ -413,81 +387,117 @@ - case "getDeclaredField": - case "getDeclaredMethod": - case "getDeclaredConstructor": -+ } else if ("forName".equals(memName) || -+ "getClassLoader".equals(memName) || -+ "getClasses".equals(memName) || -+ "getFields".equals(memName) || -+ "getMethods".equals(memName) || -+ "getConstructors".equals(memName) || -+ "getDeclaredClasses".equals(memName) || -+ "getDeclaredFields".equals(memName) || -+ "getDeclaredMethods".equals(memName) || -+ "getDeclaredConstructors".equals(memName) || -+ "getField".equals(memName) || -+ "getMethod".equals(memName) || -+ "getConstructor".equals(memName) || -+ "getDeclaredField".equals(memName) || -+ "getDeclaredMethod".equals(memName) || -+ "getDeclaredConstructor".equals(memName)) { +- case "getEnclosingClass": +- case "getEnclosingMethod": +- case "getEnclosingConstructor": ++ } else if ("forName".equals(method) || ++ "getClassLoader".equals(method) || ++ "getClasses".equals(method) || ++ "getFields".equals(method) || ++ "getMethods".equals(method) || ++ "getConstructors".equals(method) || ++ "getDeclaredClasses".equals(method) || ++ "getDeclaredFields".equals(method) || ++ "getDeclaredMethods".equals(method) || ++ "getDeclaredConstructors".equals(method) || ++ "getField".equals(method) || ++ "getMethod".equals(method) || ++ "getConstructor".equals(method) || ++ "getDeclaredField".equals(method) || ++ "getDeclaredMethod".equals(method) || ++ "getDeclaredConstructor".equals(method) || ++ "getEnclosingClass".equals(method) || ++ "getEnclosingMethod".equals(method) || ++ "getEnclosingConstructor".equals(method)) { return defc == java.lang.Class.class; - case "getConnection": - case "getDriver": - case "getDrivers": - case "deregisterDriver": -+ } else if ("getConnection".equals(memName) || -+ "getDriver".equals(memName) || -+ "getDrivers".equals(memName) || -+ "deregisterDriver".equals(memName)) { ++ } else if ("getConnection".equals(method) || ++ "getDriver".equals(method) || ++ "getDrivers".equals(method) || ++ "deregisterDriver".equals(method)) { return defc == java.sql.DriverManager.class; +- - case "newUpdater": -+ } else if ("newUpdater".equals(memName)) { ++ } else if ("newUpdater".equals(method)) { if (defc == java.util.concurrent.atomic.AtomicIntegerFieldUpdater.class) return true; if (defc == java.util.concurrent.atomic.AtomicLongFieldUpdater.class) return true; if (defc == java.util.concurrent.atomic.AtomicReferenceFieldUpdater.class) return true; - break; - case "getContextClassLoader": -+ } else if ("getContextClassLoader".equals(memName)) { - return canBeCalledVirtual(mem, java.lang.Thread.class); ++ } else if ("getContextClassLoader".equals(method)) { + return defc == java.lang.Thread.class; - case "getPackage": - case "getPackages": -+ } else if ("getPackage".equals(memName) || -+ "getPackages".equals(memName)) { ++ } else if ("getPackage".equals(method) || ++ "getPackages".equals(method)) { return defc == java.lang.Package.class; - case "getParent": - case "getSystemClassLoader": -+ } else if ("getParent".equals(memName) || -+ "getSystemClassLoader".equals(memName)) { ++ } else if ("getParent".equals(method) || ++ "getSystemClassLoader".equals(method)) { return defc == java.lang.ClassLoader.class; - case "load": - case "loadLibrary": -+ } else if ("load".equals(memName) || -+ "loadLibrary".equals(memName)) { ++ } else if ("load".equals(method) || ++ "loadLibrary".equals(method)) { if (defc == java.lang.Runtime.class) return true; if (defc == java.lang.System.class) return true; - break; - case "getCallerClass": -+ } else if ("getCallerClass".equals(memName)) { ++ } else if ("getCallerClass".equals(method)) { if (defc == sun.reflect.Reflection.class) return true; if (defc == java.lang.System.class) return true; - break; - case "getCallerClassLoader": -+ } else if ("getCallerClassLoader".equals(memName)) { ++ } else if ("getCallerClassLoader".equals(method)) { return defc == java.lang.ClassLoader.class; - case "registerAsParallelCapable": -+ } else if ("registerAsParallelCapable".equals(memName)) { - return canBeCalledVirtual(mem, java.lang.ClassLoader.class); ++ } else if ("registerAsParallelCapable".equals(method)) { + return defc == java.lang.ClassLoader.class; - case "getProxyClass": - case "newProxyInstance": -+ } else if ("getProxyClass".equals(memName) || -+ "newProxyInstance".equals(memName)) { ++ } else if ("getProxyClass".equals(method) || ++ "newProxyInstance".equals(method)) { return defc == java.lang.reflect.Proxy.class; - case "asInterfaceInstance": -+ } else if ("asInterfaceInstance".equals(memName)) { ++ } else if ("asInterfaceInstance".equals(method)) { return defc == java.lang.invoke.MethodHandleProxies.class; - case "getBundle": - case "clearCache": -+ } else if ("getBundle".equals(memName) || -+ "clearCache".equals(memName)) { ++ } else if ("getBundle".equals(method) || ++ "clearCache".equals(method)) { return defc == java.util.ResourceBundle.class; +- case "getType": ++ } else if ("getType".equals(method)) { + return defc == java.io.ObjectStreamField.class; +- case "forClass": ++ } else if ("forClass".equals(method)) { + return defc == java.io.ObjectStreamClass.class; +- case "getLogger": ++ } else if ("getLogger".equals(method)) { + return defc == java.util.logging.Logger.class; +- case "getAnonymousLogger": ++ } else if ("getAnonymousLogger".equals(method)) { + return defc == java.util.logging.Logger.class; } return false; +diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MethodHandleNatives.java openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandleNatives.java +--- openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MethodHandleNatives.java 2013-06-27 16:08:36.739202429 +0100 ++++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandleNatives.java 2013-06-27 16:40:02.673171484 +0100 +@@ -528,10 +528,10 @@ + private static boolean canBeCalledVirtual(MemberName mem) { + assert(mem.isInvocable()); + Class defc = mem.getDeclaringClass(); +- switch (mem.getName()) { +- case "checkMemberAccess": ++ String memName = mem.getName(); ++ if ("checkMemberAccess".equals(memName)) { + return canBeCalledVirtual(mem, java.lang.SecurityManager.class); +- case "getContextClassLoader": ++ } else if ("getContextClassLoader".equals(memName)) { + return canBeCalledVirtual(mem, java.lang.Thread.class); + } + return false; diff -r 2f50c50bc1d0 -r 04d2a30a17cf patches/boot/tobin.patch --- a/patches/boot/tobin.patch Wed May 01 00:04:40 2013 +0100 +++ b/patches/boot/tobin.patch Fri Jun 28 02:33:43 2013 +0100 @@ -1,38 +1,44 @@ -diff -Nru ../openjdk.orig/openjdk-boot/jdk/make/sun/xawt/Makefile openjdk-boot/jdk/make/sun/xawt/Makefile ---- ../openjdk.orig/openjdk-boot/jdk/make/sun/xawt/Makefile 2009-10-30 16:49:39.000000000 +0000 -+++ openjdk-boot/jdk/make/sun/xawt/Makefile 2009-10-30 16:59:16.000000000 +0000 -@@ -294,11 +294,7 @@ +diff -Nru openjdk-boot.orig/jdk/make/sun/awt/Makefile openjdk-boot/jdk/make/sun/awt/Makefile +--- openjdk-boot.orig/jdk/make/sun/awt/Makefile 2013-06-25 16:52:46.810177400 +0100 ++++ openjdk-boot/jdk/make/sun/awt/Makefile 2013-06-25 16:54:43.856035962 +0100 +@@ -245,16 +245,12 @@ + $(ICONPATH)/security-icon-yellow48.png TEMPDIR_CLASSES = $(TEMPDIR)/classes +- ++ + generated.clean: + $(RM) -r $(GEN_DIR)/*.java + $(RM) -r $(TEMPDIR)/.gen_icons --$(TEMPDIR_CLASSES)/sun/awt/X11/ToBin.class: ToBin.java +-$(TEMPDIR_CLASSES)/sun/awt/ToBin.class: ToBin.java - @$(prep-target) - $(BOOT_JAVAC_CMD) -d $(TEMPDIR_CLASSES) $< - --$(TEMPDIR)/.gen_icons: $(TEMPDIR_CLASSES)/sun/awt/X11/ToBin.class $(ICONS) +-$(TEMPDIR)/.gen_icons: $(TEMPDIR_CLASSES)/sun/awt/ToBin.class $(ICONS) +$(TEMPDIR)/.gen_icons: $(ICONS) $(prep-target) for i in $(ICONS); do \ filename=`basename $$i`; \ -@@ -308,20 +304,14 @@ - $(ECHO) "package sun.awt.X11;" >> $$classname ; \ - $(ECHO) "public class XAWTIcon32_$$name {" >> $$classname; \ - $(ECHO) "public static int[] $$name = { " >> $$classname; \ +@@ -264,20 +260,14 @@ + $(ECHO) "package sun.awt;" >> $$classname ; \ + $(ECHO) "public class AWTIcon32_$$name {" >> $$classname; \ + $(ECHO) "public final static int[] $$name = { " >> $$classname; \ - $(CAT) $$i | \ - $(BOOT_JAVA_CMD) -cp $(TEMPDIR_CLASSES) \ - -Djava.awt.headless=true \ -- sun.awt.X11.ToBin >> $$classname; \ +- sun.awt.ToBin >> $$classname; \ + $(ECHO) "0,0" >> $$classname ; \ $(ECHO) "}; }" >> $$classname; \ - classname=$(GEN_DIR)/XAWTIcon64_$$name.java; \ + classname=$(GEN_DIR)/AWTIcon64_$$name.java; \ $(RM) $$classname; \ - $(ECHO) "package sun.awt.X11;" >> $$classname ; \ - $(ECHO) "public class XAWTIcon64_$$name {" >> $$classname; \ - $(ECHO) "public static long[] $$name = { " >> $$classname; \ + $(ECHO) "package sun.awt;" >> $$classname ; \ + $(ECHO) "public class AWTIcon64_$$name {" >> $$classname; \ + $(ECHO) "public final static long[] $$name = { " >> $$classname; \ - $(CAT) $$i | \ - $(BOOT_JAVA_CMD) -cp $(TEMPDIR_CLASSES) \ - -Djava.awt.headless=true \ -- sun.awt.X11.ToBin >> $$classname; \ +- sun.awt.ToBin >> $$classname; \ + $(ECHO) "0,0" >> $$classname ; \ $(ECHO) "}; }" >> $$classname; \ done