view patches/boot/ecj-multicatch.patch @ 2892:11416bb1b308 icedtea-2.7.0pre07

Bump to icedtea-2.7.0pre07. Upstream changes: - Bump to icedtea-2.7.0pre07 - PR2938: Fix build of 8148487 backport - PR3102: Extend 8022594 to AixPollPort - S4858370: JDWP: Memory Leak: GlobalRefs never deleted when processing invokeMethod command - S4963723: Implement SHA-224 - S6414899: P11Digest should support cloning - S6425769: Allow specifying an address to bind JMX remote connector - S6854417: TESTBUG: java/util/regex/RegExTest.java fails intermittently - S6953295: Move few sun.security.{util, x509, pkcs} classes used by keytool/jarsigner to another package - S6956398: make ephemeral DH key match the length of the certificate key - S6961123: setWMClass fails to null-terminate WM_CLASS string - S6966259: Make PrincipalName and Realm immutable - S7044060: Need to support NSA Suite B Cryptography algorithms - S7060849: Eliminate pack200 build warnings - S7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror - S7069870: Parts of the JDK erroneously rely on generic array initializers with diamond - S7081817: test/sun/security/provider/certpath/X509CertPath/IllegalCertiticates.java failing - S7102686: Restructure timestamp code so that jars and modules can more easily share the same code - S7105780: Add SSLSocket client/SSLEngine server to templates directory - S7127906: (launcher) convert the launcher regression tests to java - S7142339: PKCS7.java is needlessly creating SHA1PRNG SecureRandom instances when timestamping is not done - S7152582: PKCS11 tests should use the NSS libraries available in the OS - S7167988: PKIX CertPathBuilder in reverse mode doesn't work if more than one trust anchor is specified - S7192202: Make sure keytool prints both unknown and unparseable extensions - S7194449: String resources for Key Tool and Policy Tool should be in their respective packages - S7196855: autotest.sh fails on ubuntu because libsoftokn.so not found - S7200682: TEST_BUG: keytool/autotest.sh still has problems with libsoftokn.so - S8002116: This JdbReadTwiceTest.sh gets an exit 1 - S8002306: (se) Selector.open fails if invoked with thread interrupt status set [win] - S8004007: test/sun/tools/jinfo/Basic.sh fails on when runSA is set to true - S8005226: java/rmi/transport/pinClientSocketFactory/PinClientSocketFactory.java fails intermittently - S8006935: Need to take care of long secret keys in HMAC/PRF compuation - S8007890: [TESTBUG] JcmdWithNMTDisabled.java fails when invoked with NMT explicitly turned on - S8009636: JARSigner including TimeStamp PolicyID (TSAPolicyID) as defined in RFC3161 - S8014097: add doPrivileged methods with limited privilege scope - S8019341: Update CookieHttpsClientTest to use the newer framework. - S8021191: Add isAuthorized check to limited doPrivileged methods - S8022228: Intermittent test failures in sun/security/ssl/javax/net/ssl/NewAPIs - S8022439: Fix lint warnings in sun.security.ec - S8022594: Potential deadlock in <clinit> of sun.nio.ch.Util/IOUtil - S8023546: sun/security/mscapi/ShortRSAKey1024.sh fails intermittently - S8027705: com/sun/jdi/JdbMethodExitTest.sh fails when a background thread is generating events. - S8028537: PPC64: Updated the JDK regression tests to run on AIX - S8028780: JDK KRB5 module throws OutOfMemoryError when CCache is corrupt - S8036132: Tab characters in test/com/sun/jdi files - S8036612: [parfait] JNI exception pending in jdk/src/windows/native/sun/security/mscapi/security.cpp - S8037557: test SessionCacheSizeTests.java timeout - S8038837: Add support to jarsigner for specifying timestamp hash algorithm - S8038963: com/sun/jdi tests fail because cygwin's ps sometimes misses processes - S8039921: SHA1WithDSA with key > 1024 bits not working - S8044419: TEST_BUG: com/sun/jdi/JdbReadTwiceTest.sh fails when run under root - S8048030: Expectations should be consistent - S8059054: Better URL processing - S8059661: Test SoftReference and OOM behavior - S8064331: JavaSecurityAccess.doIntersectionPrivilege() drops the information about the domain combiner of the stack ACC - S8068761: [TEST_BUG] java/nio/channels/ServerSocketChannel/AdaptServerSocket.java failed with SocketTimeoutException - S8068842: Better JAXP data handling - S8072753: Nondeterministic wrong answer on arithmetic - S8072932: Test fails with java.security.AccessControlException: access denied ("java.security.SecurityPermission" "getDomainCombiner") - S8073735: [TEST_BUG] compiler/loopopts/CountedLoopProblem.java got OOME - S8074068: Cleanup in src/share/classes/sun/security/x509/ - S8074146: [TEST_BUG] jdb has succeded to read an unreadable file - S8075773: jps running as root fails after the fix of JDK-8050807 - S8076339: Better handling of remote object invocation - S8076383: Better CORBA exception handling - S8076387: Better CORBA value handling - S8076392: Improve IIOPInputStream consistency - S8076413: Better JRMP message handling - S8076506: Increment minor version of HSx for 7u91 and initialize the build number - S8078427: More supportive home environment - S8078440: Safer managed types - S8078822: 8068842 fix missed one new file PrimeNumberSequenceGenerator.java - S8079323: Serialization compatibility for Templates: need to exclude Hashtable from serialization - S8079410: Hotspot version to share the same update and build version from JDK - S8079718: IIOP Input Stream Hooking - S8080541: More direct property handling - S8080688: Service for DGC services - S8081297: SSL Problem with Tomcat - S8081475: SystemTap does not work when JDK is compiled with GCC 5 - S8081760: Better group dynamics - S8086092: More palette improvements - S8086733: Improve namespace handling - S8087118: Remove missing package from java.security files - S8087120: [GCC5] java.lang.StackOverflowError on Zero JVM initialization on non x86 platforms. - S8087350: Improve array conversions - S8098547: (tz) Support tzdata2015e - S8103671: More objective stream classes - S8103675: Better Binary searches - S8129952: Ensure thread consistency - S8130078: Document better processing - S8130193: Improve HTTP connections - S8130253: ObjectStreamClass.getFields too restrictive - S8130710: Better attributes processing - S8130735: javax.swing.TimerQueue: timer fires late when another timer starts - S8130864: Better server identity handling - S8130891: (bf) More direct buffering - S8131181: Increment minor version of HSx for 7u95 and initialize the build number - S8131291: Perfect parameter patterning - S8132042: Preserve layout presentation - S8132051: Better byte behavior - S8132082: Let OracleUcrypto accept RSAPrivateKey - S8132210: Reinforce JMX collector internals - S8132988: Better printing dialogues - S8133321: (tz) Support tzdata2015f - S8133962: More general limits - S8134297: NPE in GSSNameElement nameType check - S8134605: Partial rework of the fix for 8081297 - S8134650: Xsl transformation gives different results in 8u66 - S8134861: XSLT: Extension func call cause exception if namespace URI contains partial package name - S8135043: ObjectStreamClass.getField(String) too restrictive - S8135307: CompletionFailure thrown when calling FieldDoc.type, if the field's type is missing - S8137060: JMX memory management improvements - S8138593: Make DSA more fair - S8138716: (tz) Support tzdata2015g - S8139008: Better state table management - S8139012: Better font substitutions - S8139017: More stable image decoding - S8139436: sun.security.mscapi.KeyStore might load incomplete data - S8140244: Port fix of JDK-8075773 to MacOSX - S8140244, PR3171: Port fix of JDK-8075773 to AIX - S8140344: add support for 3 digit update release numbers - S8140543: Arrange font actions - S8141213: [Parfait]Potentially blocking function GetArrayLength called in JNI critical region at line 239 of jdk/src/share/native/sun/awt/image/jpeg/jpegdecoder.c in function GET_ARRAYS - S8141229: [Parfait] Null pointer dereference in cmsstrcasecmp of cmserr.c - S8141287: Add MD5 to jdk.certpath.disabledAlgorithms - Take 2 - S8142882: rebinding of the receiver of a DirectMethodHandle may allow a protected method to be accessed - S8142928: [TEST_BUG] sun/security/provider/certpath/ReverseBuilder/ReverseBuild.java 8u71 failure - S8143002: [Parfait] JNI exception pending in fontpath.c:1300 - S8143132: L10n resource file translation update - S8143167: Better buffering of XML strings - S8143185: Cleanup for handling proxies - S8143941: Update splashscreen displays - S8144313: Test SessionTimeOutTests can be timeout - S8144430: Improve JMX connections - S8144773: Further reduce use of MD5 - S8144955: Wrong changes were pushed with 8143942 - S8145017: Add support for 3 digit hotspot minor version numbers - S8145446: Perfect pipe placement - S8145551: Test failed with Crash for Improved font lookups - S8145982: JMXInterfaceBindingTest is failing intermittently - S8146015: JMXInterfaceBindingTest is failing intermittently for IPv6 addresses - S8146387: Test SSLSession/SessionCacheSizeTests socket accept timed out - S8146477: [TEST_BUG] ClientJSSEServerJSSE.java failing again - S8146494: Better ligature substitution - S8146498: Better device table adjustments - S8146669: Test SessionTimeOutTests fails intermittently - S8146967: [TEST_BUG] javax/security/auth/SubjectDomainCombiner/Optimize.java should use 4-args ProtectionDomain constructor - S8146993: Several javax/management/remote/mandatory regression tests fail after JDK-8138811 - S8147466: Add -fno-strict-overflow to IndicRearrangementProcessor{,2}.cpp - S8147567: InterpreterRuntime::post_field_access not updated for boolean in JDK-8132051 - S8147771: Construction of static protection domains under Javax custom policy - S8147857: [TEST] RMIConnector logs attribute names incorrectly - S8148446: (tz) Support tzdata2016a - S8148475: Missing SA Bytecode updates. - S8148487: PPC64: Better byte behavior - S8148872: Complete name checking - S8149170: Better byte behavior for native arguments - S8149367: PolicyQualifierInfo/index_Ctor JCk test fails with IOE: Invalid encoding for PolicyQualifierInfo - S8149962: Better delineation of XML processing - S8150012: Better byte behavior for reflection - S8150752: Share Class Data - S8150790: 8u75 L10n resource file translation update - S8151841: Build needs additional flags to compile with GCC 6 - S8151876: (tz) Support tzdata2016d - S8151925: Font reference improvements - S8152335: Improve MethodHandle consistency - S8152479: Coded byte streams - S8153673: [BACKOUT] JDWP: Memory Leak: GlobalRefs never deleted when processing invokeMethod command - S8154210: Zero: Better byte behaviour - S8154413: AArch64: Better byte behaviour - S8155981: Bolster bytecode verification - S8155985: Persistent Parameter Processing - S8157077: 8u101 L10n resource file updates - S8158571: Additional method handle validation - S8161262: Fix jdk build with gcc 4.1.2: -fno-strict-overflow not known. - S8162344: The API changes made by CR 7064075 need to be reverted ChangeLog: 2016-09-24 Andrew John Hughes <gnu.andrew@member.fsf.org> Bump to icedtea-2.7.0pre07. * Makefile.am, (JDK_UPDATE_VERSION): Set to 111. (BUILD_VERSION): Set to b01. (CORBA_CHANGESET): Update to icedtea-2.7.0pre07. (JAXP_CHANGESET): Likewise. (JAXWS_CHANGESET): Likewise. (JDK_CHANGESET): Likewise. (LANGTOOLS_CHANGESET): Likewise. (OPENJDK_CHANGESET): Likewise. (CORBA_SHA256SUM): Likewise. (JAXP_SHA256SUM): Likewise. (JAXWS_SHA256SUM): Likewise. (JDK_SHA256SUM): Likewise. (LANGTOOLS_SHA256SUM): Likewise. (OPENJDK_SHA256SUM): Likewise. * configure.ac: Bump to 2.7.0pre07. * hotspot.map.in: Update to icedtea-2.7.0pre07. * patches/boot/ecj-diamond.patch: Add numerous cases in JAXP classes, along with com.sun.java.util.jar.pack, java.security.Provider, java.security.Security, javax.crypto.Cipher, javax.crypto.CryptoAllPermission, javax.crypto.CryptoPermissions, javax.crypto.CryptoPolicyParser, javax.crypto.JceSecurity, javax.crypto.JceSecurityManager, javax.management.remote.rmi.RMIJRMPServerImpl, sun.reflect.annotation.AnnotationInvocationHandler, sun.security.krb5.Krb5ServiceLocator, sun.security.provider.certpath.CertStoreHelper, sun.security.provider.certpath.ssl.SSLServerCertStore, sun.security.provider.certpath.URICertStore and sun.security.ssl.DHCrypt * patches/boot/ecj-multicatch.patch: Add sun.security.krb5.PrincipalName, java.lang.invoke.MemberName, sun.invoke.util.VerifyAccess, javax.crypto.EncryptedPrivateKeyInfo, javax.crypto.SealedObject, sun.security.provider.certpath.URICertStore, sun.security.ssl.RSAClientKeyExchange, sun.security.pkcs11.P11KeyStore, sun.security.pkcs11.P11RSAKeyFactory and sun.security.tools.keytool.Main * patches/boot/ecj-stringswitch.patch: Add cases in sun.security.krb5.Config, sun.security.provider.certpath.X509CertPath, sun.security.ssl.HandshakeMessage, sun.security.ssl.X509KeyManagerImpl, sun.security.pkcs11.Config, sun.security.pkcs11.P11Key, sun.security.sasl.digest.DigestMD5Base, sun.security.sasl.digest.DigestMD5Server, sun.security.sasl.ntlm.NTLMClient, sun.security.sasl.ntlm.NTLMServer and sun.security.sasl.util.AbstractSaslImpl. * patches/boot/ecj-trywithresources.patch: Add cases in sun.security.provider.certpath.URICertStore, sun.security.tools.KeyStoreUtil, sun.security.tools.keytool.Main.
author Andrew John Hughes <gnu_andrew@member.fsf.org>
date Wed, 28 Sep 2016 07:32:57 +0100
parents 761344512703
children df0f259a2fcc
line wrap: on
line source

diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xml/internal/serializer/Encodings.java openjdk-boot/jaxp/src/com/sun/org/apache/xml/internal/serializer/Encodings.java
--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xml/internal/serializer/Encodings.java	2015-07-19 18:19:26.000000000 +0100
+++ openjdk-boot/jaxp/src/com/sun/org/apache/xml/internal/serializer/Encodings.java	2015-09-08 09:48:23.152974575 +0100
@@ -145,7 +145,9 @@
                 final String name = c.name();
                 ei = new EncodingInfo(name, name);
                 _encodingInfos.putEncoding(normalizedEncoding, ei);
-            } catch (IllegalCharsetNameException | UnsupportedCharsetException x) {
+            } catch (IllegalCharsetNameException x) {
+                ei = new EncodingInfo(null,null);
+            } catch (UnsupportedCharsetException x) {
                 ei = new EncodingInfo(null,null);
             }
         }
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	2015-07-31 14:21:55.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/com/sun/jmx/remote/internal/ArrayNotificationBuffer.java	2015-09-08 09:48:23.156974510 +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/io/PrintStream.java openjdk-boot/jdk/src/share/classes/java/io/PrintStream.java
--- openjdk-boot.orig/jdk/src/share/classes/java/io/PrintStream.java	2015-07-31 14:21:55.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/java/io/PrintStream.java	2015-09-08 09:48:23.156974510 +0100
@@ -91,7 +91,10 @@
         requireNonNull(csn, "charsetName");
         try {
             return Charset.forName(csn);
-        } catch (IllegalCharsetNameException|UnsupportedCharsetException unused) {
+        } catch (IllegalCharsetNameException unused) {
+            // UnsupportedEncodingException should be thrown
+            throw new UnsupportedEncodingException(csn);
+        } catch (UnsupportedCharsetException unused) {
             // UnsupportedEncodingException should be thrown
             throw new UnsupportedEncodingException(csn);
         }
diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/io/PrintWriter.java openjdk-boot/jdk/src/share/classes/java/io/PrintWriter.java
--- openjdk-boot.orig/jdk/src/share/classes/java/io/PrintWriter.java	2015-07-31 14:21:55.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/java/io/PrintWriter.java	2015-09-08 09:48:23.156974510 +0100
@@ -85,7 +85,10 @@
         Objects.requireNonNull(csn, "charsetName");
         try {
             return Charset.forName(csn);
-        } catch (IllegalCharsetNameException|UnsupportedCharsetException unused) {
+        } catch (IllegalCharsetNameException unused) {
+            // UnsupportedEncodingException should be thrown
+            throw new UnsupportedEncodingException(csn);
+        } catch (UnsupportedCharsetException unused) {
             // UnsupportedEncodingException should be thrown
             throw new UnsupportedEncodingException(csn);
         }
diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/BoundMethodHandle.java openjdk-boot/jdk/src/share/classes/java/lang/invoke/BoundMethodHandle.java
--- openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/BoundMethodHandle.java	2015-07-31 14:21:55.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/BoundMethodHandle.java	2015-09-08 09:48:23.156974510 +0100
@@ -748,7 +748,9 @@
             Class<?> fieldType = Wrapper.forBasicType(types.charAt(index)).primitiveType();
             try {
                 return LOOKUP.findGetter(cbmhClass, fieldName, fieldType);
-            } catch (NoSuchFieldException | IllegalAccessException e) {
+            } catch (NoSuchFieldException e) {
+                throw newInternalError(e);
+            } catch (IllegalAccessException e) {
                 throw newInternalError(e);
             }
         }
@@ -802,7 +804,13 @@
         static MethodHandle makeCbmhCtor(Class<? extends BoundMethodHandle> cbmh, String types) {
             try {
                 return linkConstructor(LOOKUP.findConstructor(cbmh, MethodType.fromMethodDescriptorString(makeSignature(types, true), null)));
-            } catch (NoSuchMethodException | IllegalAccessException | IllegalArgumentException | TypeNotPresentException e) {
+            } catch (NoSuchMethodException e) {
+                throw newInternalError(e);
+            } catch (IllegalAccessException e) {
+                throw newInternalError(e);
+            } catch (IllegalArgumentException e) {
+                throw newInternalError(e);
+            } catch (TypeNotPresentException e) {
                 throw newInternalError(e);
             }
         }
diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/LambdaForm.java openjdk-boot/jdk/src/share/classes/java/lang/invoke/LambdaForm.java
--- openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/LambdaForm.java	2015-07-31 14:21:55.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/LambdaForm.java	2015-09-08 09:48:23.156974510 +0100
@@ -456,9 +456,11 @@
                 traceInterpreter("compileToBytecode", this);
             isCompiled = true;
             return vmentry;
-        } catch (Error | Exception ex) {
+        } catch (Error ex) {
             throw newInternalError(this.toString(), ex);
-        }
+        } catch (Exception ex) {
+            throw newInternalError(this.toString(), ex);
+	}
     }
 
     private static final ConcurrentHashMap<String,LambdaForm> PREPARED_FORMS;
@@ -1548,9 +1550,11 @@
             MemberName zmem = new MemberName(LambdaForm.class, "zero"+bt, MethodType.methodType(wrap.primitiveType()), REF_invokeStatic);
             try {
                 zmem = IMPL_NAMES.resolveOrFail(REF_invokeStatic, zmem, null, NoSuchMethodException.class);
-            } catch (IllegalAccessException|NoSuchMethodException ex) {
+            } catch (IllegalAccessException ex) {
                 throw newInternalError(ex);
-            }
+            } catch (NoSuchMethodException ex) {
+                throw newInternalError(ex);
+	    }
             NamedFunction zcon = new NamedFunction(zmem);
             Name n = new Name(zcon).newIndex(0);
             assert(n.type == ALL_TYPES.charAt(tn));
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	2015-07-31 14:21:55.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandleNatives.java	2015-09-08 09:48:23.156974510 +0100
@@ -264,7 +264,12 @@
                     continue;
                 }
                 throw new InternalError(err);
-            } catch (NoSuchFieldException | IllegalAccessException ex) {
+            } catch (NoSuchFieldException ex) {
+                String err = (name+": JVM has "+vmval+" which Java does not define");
+                // ignore exotic ops the JVM cares about; we just wont issue them
+                //System.err.println("warning: "+err);
+                continue;
+            } catch (IllegalAccessException ex) {
                 String err = (name+": JVM has "+vmval+" which Java does not define");
                 // ignore exotic ops the JVM cares about; we just wont issue them
                 //System.err.println("warning: "+err);
diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/management/ManagementFactory.java openjdk-boot/jdk/src/share/classes/java/lang/management/ManagementFactory.java
--- openjdk-boot.orig/jdk/src/share/classes/java/lang/management/ManagementFactory.java	2015-07-31 14:21:55.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/java/lang/management/ManagementFactory.java	2015-09-08 09:48:23.156974510 +0100
@@ -606,7 +606,9 @@
             // create an MXBean proxy
             return JMX.newMXBeanProxy(connection, objName, mxbeanInterface,
                                       emitter);
-        } catch (InstanceNotFoundException|MalformedObjectNameException e) {
+        } catch (InstanceNotFoundException e) {
+            throw new IllegalArgumentException(e);
+        } catch (MalformedObjectNameException e) {
             throw new IllegalArgumentException(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	2015-07-31 14:21:55.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/java/lang/ProcessBuilder.java	2015-09-08 09:48:23.156974510 +0100
@@ -1030,10 +1030,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);
@@ -1045,6 +1045,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 -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/reflect/Proxy.java openjdk-boot/jdk/src/share/classes/java/lang/reflect/Proxy.java
--- openjdk-boot.orig/jdk/src/share/classes/java/lang/reflect/Proxy.java	2015-07-31 14:21:55.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/java/lang/reflect/Proxy.java	2015-09-08 09:48:23.156974510 +0100
@@ -762,7 +762,9 @@
     private static Object newInstance(Constructor<?> cons, InvocationHandler h) {
         try {
             return cons.newInstance(new Object[] {h} );
-        } catch (IllegalAccessException | InstantiationException e) {
+        } catch (IllegalAccessException e) {
+            throw new InternalError(e.toString());
+        } catch (InstantiationException e) {
             throw new InternalError(e.toString());
         } catch (InvocationTargetException e) {
             Throwable t = e.getCause();
diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/nio/charset/Charset.java openjdk-boot/jdk/src/share/classes/java/nio/charset/Charset.java
--- openjdk-boot.orig/jdk/src/share/classes/java/nio/charset/Charset.java	2015-07-31 14:21:55.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/java/nio/charset/Charset.java	2015-09-08 09:48:23.156974510 +0100
@@ -440,8 +440,9 @@
                                 } catch (ClassNotFoundException x) {
                                     // Extended charsets not available
                                     // (charsets.jar not present)
-                                } catch (InstantiationException |
-                                         IllegalAccessException x) {
+                                } catch (InstantiationException x) {
+                                  throw new Error(x);
+                                } catch (IllegalAccessException x) {
                                   throw new Error(x);
                                 }
                                 return null;
diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/Formatter.java openjdk-boot/jdk/src/share/classes/java/util/Formatter.java
--- openjdk-boot.orig/jdk/src/share/classes/java/util/Formatter.java	2015-07-31 14:21:55.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/java/util/Formatter.java	2015-09-08 09:48:23.156974510 +0100
@@ -1857,7 +1857,10 @@
         Objects.requireNonNull(csn, "charsetName");
         try {
             return Charset.forName(csn);
-        } catch (IllegalCharsetNameException|UnsupportedCharsetException unused) {
+        } catch (IllegalCharsetNameException unused) {
+            // UnsupportedEncodingException should be thrown
+            throw new UnsupportedEncodingException(csn);
+        } catch (UnsupportedCharsetException unused) {
             // UnsupportedEncodingException should be thrown
             throw new UnsupportedEncodingException(csn);
         }
diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/Scanner.java openjdk-boot/jdk/src/share/classes/java/util/Scanner.java
--- openjdk-boot.orig/jdk/src/share/classes/java/util/Scanner.java	2015-07-31 14:21:55.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/java/util/Scanner.java	2015-09-08 09:48:23.160974446 +0100
@@ -633,7 +633,10 @@
         Objects.requireNonNull(csn, "charsetName");
         try {
             return Charset.forName(csn);
-        } catch (IllegalCharsetNameException|UnsupportedCharsetException e) {
+        } catch (IllegalCharsetNameException e) {
+            // IllegalArgumentException should be thrown
+            throw new IllegalArgumentException(e);
+        } catch (UnsupportedCharsetException e) {
             // IllegalArgumentException should be thrown
             throw new IllegalArgumentException(e);
         }
@@ -684,7 +687,9 @@
         Objects.requireNonNull(charsetName, "charsetName");
         try {
             return Charset.forName(charsetName).newDecoder();
-        } catch (IllegalCharsetNameException|UnsupportedCharsetException unused) {
+        } catch (IllegalCharsetNameException unused) {
+            throw new IllegalArgumentException(charsetName);
+        } catch (UnsupportedCharsetException unused) {
             throw new IllegalArgumentException(charsetName);
         }
     }
diff -Nru openjdk-boot.orig/jdk/src/share/classes/javax/crypto/CipherInputStream.java openjdk-boot/jdk/src/share/classes/javax/crypto/CipherInputStream.java
--- openjdk-boot.orig/jdk/src/share/classes/javax/crypto/CipherInputStream.java	2015-07-31 14:21:55.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/javax/crypto/CipherInputStream.java	2015-09-08 09:49:34.295820122 +0100
@@ -116,7 +116,10 @@
             done = true;
             try {
                 obuffer = cipher.doFinal();
-            } catch (IllegalBlockSizeException | BadPaddingException e) {
+            } catch (IllegalBlockSizeException e) {
+                obuffer = null;
+                throw new IOException(e);
+            } catch (BadPaddingException e) {
                 obuffer = null;
                 throw new IOException(e);
             }
@@ -322,7 +325,10 @@
             try {
                 cipher.doFinal();
             }
-            catch (BadPaddingException | IllegalBlockSizeException ex) {
+            catch (BadPaddingException ex) {
+                // Catch exceptions as the rest of the stream is unused.
+            }
+            catch (IllegalBlockSizeException ex) {
                 // Catch exceptions as the rest of the stream is unused.
             }
         }
diff -Nru openjdk-boot.orig/jdk/src/share/classes/javax/crypto/CipherOutputStream.java openjdk-boot/jdk/src/share/classes/javax/crypto/CipherOutputStream.java
--- openjdk-boot.orig/jdk/src/share/classes/javax/crypto/CipherOutputStream.java	2015-07-31 14:21:55.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/javax/crypto/CipherOutputStream.java	2015-09-08 09:48:23.164974381 +0100
@@ -208,7 +208,9 @@
         closed = true;
         try {
             obuffer = cipher.doFinal();
-        } catch (IllegalBlockSizeException | BadPaddingException e) {
+        } catch (IllegalBlockSizeException e) {
+            obuffer = null;
+        } catch (BadPaddingException e) {
             obuffer = null;
         }
         try {
diff -Nru openjdk-boot.orig/jdk/src/share/classes/javax/swing/SortingFocusTraversalPolicy.java openjdk-boot/jdk/src/share/classes/javax/swing/SortingFocusTraversalPolicy.java
--- openjdk-boot.orig/jdk/src/share/classes/javax/swing/SortingFocusTraversalPolicy.java	2015-07-31 14:21:55.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/javax/swing/SortingFocusTraversalPolicy.java	2015-09-08 09:48:23.160974446 +0100
@@ -113,7 +113,10 @@
                         Method m = c.getDeclaredMethod("legacyMergeSort", new Class[]{Object[].class, Comparator.class});
                         m.setAccessible(true);
                         return m;
-                    } catch (ClassNotFoundException | NoSuchMethodException e) {
+                    } catch (ClassNotFoundException e) {
+                        // using default sorting algo
+                        return null;
+                    } catch (NoSuchMethodException e) {
                         // using default sorting algo
                         return null;
                     }
@@ -181,7 +184,9 @@
         Object[] a = l.toArray();
         try {
             legacyMergeSortMethod.invoke(null, a, c);
-        } catch (IllegalAccessException | InvocationTargetException e) {
+        } catch (InvocationTargetException e) {
+            return false;
+        } catch (IllegalAccessException e) {
             return false;
         }
         ListIterator<Component> i = l.listIterator();
diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/invoke/util/ValueConversions.java openjdk-boot/jdk/src/share/classes/sun/invoke/util/ValueConversions.java
--- openjdk-boot.orig/jdk/src/share/classes/sun/invoke/util/ValueConversions.java	2015-07-31 14:21:55.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/sun/invoke/util/ValueConversions.java	2015-09-08 09:48:23.160974446 +0100
@@ -482,7 +482,9 @@
             FILL_NEW_TYPED_ARRAY = IMPL_LOOKUP
                     .findStatic(THIS_CLASS, "fillNewTypedArray",
                           MethodType.methodType(Object[].class, Object[].class, Integer.class, Object[].class));
-        } catch (NoSuchMethodException | IllegalAccessException ex) {
+        } catch (NoSuchMethodException ex) {
+            throw newInternalError("uncaught exception", ex);
+        } catch (IllegalAccessException ex) {
             throw newInternalError("uncaught exception", ex);
         }
     }
diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/rmi/server/ActivationGroupImpl.java openjdk-boot/jdk/src/share/classes/sun/rmi/server/ActivationGroupImpl.java
--- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/server/ActivationGroupImpl.java	2015-07-31 14:21:55.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/sun/rmi/server/ActivationGroupImpl.java	2015-09-08 09:48:23.160974446 +0100
@@ -296,7 +296,16 @@
             active.put(id, entry);
             return entry.mobj;
 
-        } catch (NoSuchMethodException | NoSuchMethodError e) {
+        } catch (NoSuchMethodException e) {
+            /* user forgot to provide activatable constructor?
+             * or code recompiled and user forgot to provide
+             *  activatable constructor?
+             */
+            throw new ActivationException
+                ("Activatable object must provide an activation"+
+                 " constructor", e );
+
+        } catch (NoSuchMethodError e) {
             /* user forgot to provide activatable constructor?
              * or code recompiled and user forgot to provide
              *  activatable constructor?
diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/rmi/server/LoaderHandler.java openjdk-boot/jdk/src/share/classes/sun/rmi/server/LoaderHandler.java
--- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/server/LoaderHandler.java	2015-07-31 14:21:55.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/sun/rmi/server/LoaderHandler.java	2015-09-08 09:48:23.160974446 +0100
@@ -262,11 +262,14 @@
 
                     annotation = urlsToPath(urls);
                 }
-            } catch (SecurityException | IOException e) {
+            } catch (SecurityException e) {
                 /*
                  * SecurityException: If access was denied to the knowledge of
                  * the class loader's URLs, fall back to the default behavior.
                  *
+		 */
+            } catch (IOException e) {
+                /*
                  * IOException: This shouldn't happen, although it is declared
                  * to be thrown by openConnection() and getPermission().  If it
                  * does happen, forget about this class loader's URLs and
diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/proxy/RMIMasterSocketFactory.java openjdk-boot/jdk/src/share/classes/sun/rmi/transport/proxy/RMIMasterSocketFactory.java
--- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/proxy/RMIMasterSocketFactory.java	2015-07-31 14:21:55.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/sun/rmi/transport/proxy/RMIMasterSocketFactory.java	2015-09-08 09:48:23.160974446 +0100
@@ -208,7 +208,9 @@
 
             return initialSocket;
 
-        } catch (UnknownHostException | NoRouteToHostException e) {
+        } catch (UnknownHostException e) {
+            initialFailure = e;
+        } catch (NoRouteToHostException e) {
             initialFailure = e;
         } catch (SocketException e) {
             if (eagerHttpFallback) {
@@ -273,7 +275,9 @@
                 }
                 // if connector ever does get socket, it won't be used
                 connector.notUsed();
-            } catch (UnknownHostException | NoRouteToHostException e) {
+            } catch (UnknownHostException e) {
+                initialFailure = e;
+            } catch (NoRouteToHostException e) {
                 initialFailure = e;
             } catch (SocketException e) {
                 if (eagerHttpFallback) {
diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/tcp/TCPEndpoint.java openjdk-boot/jdk/src/share/classes/sun/rmi/transport/tcp/TCPEndpoint.java
--- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/tcp/TCPEndpoint.java	2015-07-31 14:21:55.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/sun/rmi/transport/tcp/TCPEndpoint.java	2015-09-08 09:48:23.160974446 +0100
@@ -623,7 +623,10 @@
             try {
                 TCPEndpoint.shedConnectionCaches();
                 // REMIND: should we retry createSocket?
-            } catch (OutOfMemoryError | Exception mem) {
+            } catch (OutOfMemoryError mem) {
+                // don't quit if out of memory
+                // or shed fails non-catastrophically
+            } catch (Exception mem) {
                 // don't quit if out of memory
                 // or shed fails non-catastrophically
             }
diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/PAData.java openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/PAData.java
--- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/PAData.java	2015-07-31 14:21:55.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/PAData.java	2015-09-08 09:48:23.160974446 +0100
@@ -280,7 +280,9 @@
                                     .append(info.getSalt())
                                     .append('\n');
                         }
-                    } catch (IOException|Asn1Exception e) {
+                    } catch (Asn1Exception e) {
+                        sb.append("\t <Unparseable PA-ETYPE-INFO>\n");
+                    } catch (IOException e) {
                         sb.append("\t <Unparseable PA-ETYPE-INFO>\n");
                     }
                 }
@@ -307,7 +309,9 @@
                                         .encodeBuffer(s2kparams));
                             }
                         }
-                    } catch (IOException|Asn1Exception e) {
+                    } catch (IOException e) {
+                        sb.append("\t <Unparseable PA-ETYPE-INFO>\n");
+                    } catch (Asn1Exception e) {
                         sb.append("\t <Unparseable PA-ETYPE-INFO>\n");
                     }
                 }
diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/SecureRandom.java openjdk-boot/jdk/src/share/classes/sun/security/provider/SecureRandom.java
--- openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/SecureRandom.java	2015-07-31 14:21:55.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/sun/security/provider/SecureRandom.java	2015-09-08 09:48:23.160974446 +0100
@@ -100,7 +100,15 @@
              * performance overhead.
              */
             digest = MessageDigest.getInstance("SHA", "SUN");
-        } catch (NoSuchProviderException | NoSuchAlgorithmException e) {
+        } catch (NoSuchProviderException e) {
+            // Fallback to any available.
+            try {
+                digest = MessageDigest.getInstance("SHA");
+            } catch (NoSuchAlgorithmException exc) {
+                throw new InternalError(
+                    "internal error: SHA-1 not available.");
+            }
+        } catch (NoSuchAlgorithmException e) {
             // Fallback to any available.
             try {
                 digest = MessageDigest.getInstance("SHA");
@@ -274,7 +282,15 @@
              * performance overhead.
              */
             digest = MessageDigest.getInstance("SHA", "SUN");
-        } catch (NoSuchProviderException | NoSuchAlgorithmException e) {
+        } catch (NoSuchProviderException e) {
+            // Fallback to any available.
+            try {
+                digest = MessageDigest.getInstance("SHA");
+            } catch (NoSuchAlgorithmException exc) {
+                throw new InternalError(
+                    "internal error: SHA-1 not available.");
+            }
+        } catch (NoSuchAlgorithmException e) {
             // Fallback to any available.
             try {
                 digest = MessageDigest.getInstance("SHA");
diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/ECDHCrypt.java openjdk-boot/jdk/src/share/classes/sun/security/ssl/ECDHCrypt.java
--- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/ECDHCrypt.java	2015-07-31 14:21:55.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/ECDHCrypt.java	2015-09-08 11:53:31.962469733 +0100
@@ -118,7 +118,10 @@
             ECPublicKeySpec spec = new ECPublicKeySpec(point, params);
             PublicKey peerPublicKey = kf.generatePublic(spec);
             return getAgreedSecret(peerPublicKey);
-        } catch (GeneralSecurityException | java.io.IOException e) {
+        } catch (GeneralSecurityException e) {
+            throw (SSLHandshakeException) new SSLHandshakeException(
+                "Could not generate secret").initCause(e);
+        } catch (java.io.IOException e) {
             throw (SSLHandshakeException) new SSLHandshakeException(
                 "Could not generate secret").initCause(e);
         }
@@ -144,7 +147,10 @@
                 throw new SSLHandshakeException(
                     "ECPublicKey does not comply to algorithm constraints");
             }
-        } catch (GeneralSecurityException | java.io.IOException e) {
+        } catch (GeneralSecurityException e) {
+            throw (SSLHandshakeException) new SSLHandshakeException(
+                    "Could not generate ECPublicKey").initCause(e);
+        } catch (java.io.IOException e) {
             throw (SSLHandshakeException) new SSLHandshakeException(
                     "Could not generate ECPublicKey").initCause(e);
         }
diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/Handshaker.java openjdk-boot/jdk/src/share/classes/sun/security/ssl/Handshaker.java
--- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/Handshaker.java	2015-07-31 14:21:55.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/Handshaker.java	2015-09-08 09:48:23.160974446 +0100
@@ -1096,8 +1096,7 @@
             KeyGenerator kg = JsseJce.getKeyGenerator(masterAlg);
             kg.init(spec);
             return kg.generateKey();
-        } catch (InvalidAlgorithmParameterException |
-                NoSuchAlgorithmException iae) {
+        } catch (InvalidAlgorithmParameterException iae) {
             // unlikely to happen, otherwise, must be a provider exception
             //
             // For RSA premaster secrets, do not signal a protocol error
@@ -1105,6 +1104,12 @@
             if (debug != null && Debug.isOn("handshake")) {
                 System.out.println("RSA master secret generation error:");
                 iae.printStackTrace(System.out);
+            }
+            throw new ProviderException(iae);
+	} catch (NoSuchAlgorithmException iae) {
+            if (debug != null && Debug.isOn("handshake")) {
+                System.out.println("RSA master secret generation error:");
+                iae.printStackTrace(System.out);
             }
             throw new ProviderException(iae);
         }
diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/util/UntrustedCertificates.java openjdk-boot/jdk/src/share/classes/sun/security/util/UntrustedCertificates.java
--- openjdk-boot.orig/jdk/src/share/classes/sun/security/util/UntrustedCertificates.java	2015-07-31 14:21:55.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/sun/security/util/UntrustedCertificates.java	2015-09-08 09:48:23.160974446 +0100
@@ -65,7 +65,10 @@
                 throw new RuntimeException("Duplicate untrusted certificate: " +
                     cert.getSubjectX500Principal());
             }
-        } catch (CertificateException | IOException e) {
+	} catch (CertificateException e) {
+            throw new RuntimeException(
+                        "Incorrect untrusted certificate: " + alias, e);
+	} catch (IOException e) {
             throw new RuntimeException(
                         "Incorrect untrusted certificate: " + alias, e);
         }
diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/text/bidi/BidiBase.java openjdk-boot/jdk/src/share/classes/sun/text/bidi/BidiBase.java
--- openjdk-boot.orig/jdk/src/share/classes/sun/text/bidi/BidiBase.java	2015-07-31 14:21:55.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/sun/text/bidi/BidiBase.java	2015-09-08 09:48:23.160974446 +0100
@@ -3478,7 +3478,9 @@
             try {
                 Field f = clazz.getField(name);
                 return f.get(null);
-            } catch (NoSuchFieldException | IllegalAccessException x) {
+            } catch (NoSuchFieldException x) {
+                throw new AssertionError(x);
+            } catch (IllegalAccessException x) {
                 throw new AssertionError(x);
             }
         }
diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/tools/jcmd/JCmd.java openjdk-boot/jdk/src/share/classes/sun/tools/jcmd/JCmd.java
--- openjdk-boot.orig/jdk/src/share/classes/sun/tools/jcmd/JCmd.java	2015-07-31 14:21:55.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/sun/tools/jcmd/JCmd.java	2015-09-08 09:48:23.160974446 +0100
@@ -94,7 +94,7 @@
                         && mainClass.indexOf(arg.getProcessSubstring()) != -1) {
                             pids.add(vmd.id());
                     }
-                } catch (MonitorException|URISyntaxException e) {
+                } catch (MonitorException e) {
                     if (e.getMessage() != null) {
                         System.err.println(e.getMessage());
                     } else {
@@ -105,7 +105,18 @@
                             e.printStackTrace();
                         }
                     }
-                }
+                } catch (URISyntaxException e) {
+                    if (e.getMessage() != null) {
+                        System.err.println(e.getMessage());
+                    } else {
+                        Throwable cause = e.getCause();
+                        if ((cause != null) && (cause.getMessage() != null)) {
+                            System.err.println(cause.getMessage());
+                        } else {
+                            e.printStackTrace();
+                        }
+                    }
+		}
             }
             if (pids.isEmpty()) {
                 System.err.println("Could not find any processes matching : '"
@@ -191,9 +202,11 @@
         try {
             String mainClass = getMainClass(vmd);
             return mainClass != null && mainClass.equals(JCmd.class.getName());
-        } catch (URISyntaxException|MonitorException ex) {
+        } catch (URISyntaxException ex) {
             return false;
-        }
+        } catch (MonitorException ex) {
+	    return false;
+	}
     }
 
     private static String getMainClass(VirtualMachineDescriptor vmd)
diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/tools/jconsole/Resources.java openjdk-boot/jdk/src/share/classes/sun/tools/jconsole/Resources.java
--- openjdk-boot.orig/jdk/src/share/classes/sun/tools/jconsole/Resources.java	2015-07-31 14:21:55.000000000 +0100
+++ openjdk-boot/jdk/src/share/classes/sun/tools/jconsole/Resources.java	2015-09-08 09:48:23.160974446 +0100
@@ -129,7 +129,9 @@
     private static void setFieldValue(Field field, String value) {
         try {
             field.set(null, value);
-        } catch (IllegalArgumentException | IllegalAccessException e) {
+        } catch (IllegalArgumentException e) {
+            throw new Error("Unable to access or set message for field " + field.getName());
+        } catch (IllegalAccessException e) {
             throw new Error("Unable to access or set message for field " + field.getName());
         }
     }
@@ -200,8 +202,16 @@
         try {
             return KeyEvent.class.getDeclaredField("VK_" + c.toUpperCase())
                     .getInt(null);
-        } catch (IllegalArgumentException | IllegalAccessException
-                | NoSuchFieldException | SecurityException e) {
+        } catch (IllegalArgumentException e) {
+            // Missing VK is okay
+            return 0;
+        } catch (IllegalAccessException e) {
+            // Missing VK is okay
+            return 0;
+        } catch (NoSuchFieldException e) {
+            // Missing VK is okay
+            return 0;
+        } catch (SecurityException e) {
             // Missing VK is okay
             return 0;
         }
diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/PrincipalName.java openjdk-boot/jdk/src/share/classes/sun/security/krb5/PrincipalName.java
--- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/PrincipalName.java	2016-09-21 20:40:40.276914774 +0100
+++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/PrincipalName.java	2016-09-21 20:41:14.560360126 +0100
@@ -421,7 +421,9 @@
                                 hostName.toLowerCase(Locale.ENGLISH)+".")) {
                         hostName = canonicalized;
                     }
-                } catch (UnknownHostException | SecurityException e) {
+                } catch (UnknownHostException e) {
+                    // not canonicalized or no permission to do so, use old
+                } catch (SecurityException e) {
                     // not canonicalized or no permission to do so, use old
                 }
                 nameParts[1] = hostName.toLowerCase(Locale.ENGLISH);
diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MemberName.java openjdk-boot/jdk/src/share/classes/java/lang/invoke/MemberName.java
--- openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MemberName.java	2016-09-23 15:15:03.191967011 +0100
+++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/MemberName.java	2016-09-23 15:22:20.332755375 +0100
@@ -862,7 +862,12 @@
                 m = MethodHandleNatives.resolve(m, lookupClass);
                 m.checkForTypeAlias(m.getDeclaringClass());
                 m.resolution = null;
-            } catch (ClassNotFoundException | LinkageError ex) {
+            } catch (ClassNotFoundException ex) {
+                // JVM reports that the "bytecode behavior" would get an error
+                assert(!m.isResolved());
+                m.resolution = ex;
+                return m;
+            } catch (LinkageError ex) {
                 // JVM reports that the "bytecode behavior" would get an error
                 assert(!m.isResolved());
                 m.resolution = ex;
diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/invoke/util/VerifyAccess.java openjdk-boot/jdk/src/share/classes/sun/invoke/util/VerifyAccess.java
--- openjdk-boot.orig/jdk/src/share/classes/sun/invoke/util/VerifyAccess.java	2016-09-23 15:15:03.199966880 +0100
+++ openjdk-boot/jdk/src/share/classes/sun/invoke/util/VerifyAccess.java	2016-09-23 15:22:46.000332273 +0100
@@ -222,7 +222,9 @@
                     public Class<?> run() {
                         try {
                             return Class.forName(name, false, refcLoader);
-                        } catch (ClassNotFoundException | LinkageError e) {
+                        } catch (ClassNotFoundException e) {
+                            return null; // Assume the class is not found
+                        } catch (LinkageError e) {
                             return null; // Assume the class is not found
                         }
                     }
diff -Nru openjdk-boot.orig/jdk/src/share/classes/javax/crypto/EncryptedPrivateKeyInfo.java openjdk-boot/jdk/src/share/classes/javax/crypto/EncryptedPrivateKeyInfo.java
--- openjdk-boot.orig/jdk/src/share/classes/javax/crypto/EncryptedPrivateKeyInfo.java	2016-09-23 16:23:05.180335751 +0100
+++ openjdk-boot/jdk/src/share/classes/javax/crypto/EncryptedPrivateKeyInfo.java	2016-09-23 16:27:25.492014703 +0100
@@ -249,9 +249,13 @@
         try {
             encoded = cipher.doFinal(encryptedData);
             checkPKCS8Encoding(encoded);
-        } catch (GeneralSecurityException |
-                 IOException |
-                 IllegalStateException ex) {
+        } catch (GeneralSecurityException ex) {
+            throw new InvalidKeySpecException(
+                    "Cannot retrieve the PKCS8EncodedKeySpec", ex);
+        } catch (IOException ex) {
+            throw new InvalidKeySpecException(
+                    "Cannot retrieve the PKCS8EncodedKeySpec", ex);
+        } catch (IllegalStateException ex) {
             throw new InvalidKeySpecException(
                     "Cannot retrieve the PKCS8EncodedKeySpec", ex);
         }
@@ -276,7 +280,10 @@
         } catch (NoSuchAlgorithmException nsae) {
             // rethrow
             throw nsae;
-        } catch (GeneralSecurityException | IOException ex) {
+        } catch (GeneralSecurityException ex) {
+            throw new InvalidKeyException(
+                    "Cannot retrieve the PKCS8EncodedKeySpec", ex);
+        } catch (IOException ex) {
             throw new InvalidKeyException(
                     "Cannot retrieve the PKCS8EncodedKeySpec", ex);
         }
diff -Nru openjdk-boot.orig/jdk/src/share/classes/javax/crypto/SealedObject.java openjdk-boot/jdk/src/share/classes/javax/crypto/SealedObject.java
--- openjdk-boot.orig/jdk/src/share/classes/javax/crypto/SealedObject.java	2016-09-23 16:23:05.192335551 +0100
+++ openjdk-boot/jdk/src/share/classes/javax/crypto/SealedObject.java	2016-09-23 16:24:51.118576883 +0100
@@ -353,7 +353,9 @@
 
         try {
             return unseal(key, provider);
-        } catch (IllegalBlockSizeException | BadPaddingException ex) {
+        } catch (IllegalBlockSizeException ex) {
+            throw new InvalidKeyException(ex.getMessage());
+        } catch (BadPaddingException ex) {
             throw new InvalidKeyException(ex.getMessage());
         }
     }
diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/certpath/URICertStore.java openjdk-boot/jdk/src/share/classes/sun/security/provider/certpath/URICertStore.java
--- openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/certpath/URICertStore.java	2016-09-23 17:07:13.421018536 +0100
+++ openjdk-boot/jdk/src/share/classes/sun/security/provider/certpath/URICertStore.java	2016-09-23 17:07:55.180339579 +0100
@@ -307,7 +307,12 @@
                     factory.generateCertificates(in);
             }
             return getMatchingCerts(certs, selector);
-        } catch (IOException | CertificateException e) {
+        } catch (IOException e) {
+            if (debug != null) {
+                debug.println("Exception fetching certificates:");
+                e.printStackTrace();
+            }
+        } catch (CertificateException e) {
             if (debug != null) {
                 debug.println("Exception fetching certificates:");
                 e.printStackTrace();
@@ -414,7 +419,12 @@
                 crl = (X509CRL) factory.generateCRL(in);
             }
             return getMatchingCRLs(crl, selector);
-        } catch (IOException | CRLException e) {
+        } catch (IOException e) {
+            if (debug != null) {
+                debug.println("Exception fetching CRL:");
+                e.printStackTrace();
+            }
+        } catch (CRLException e) {
             if (debug != null) {
                 debug.println("Exception fetching CRL:");
                 e.printStackTrace();
diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/RSAClientKeyExchange.java openjdk-boot/jdk/src/share/classes/sun/security/ssl/RSAClientKeyExchange.java
--- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/RSAClientKeyExchange.java	2016-09-23 17:07:13.457017951 +0100
+++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/RSAClientKeyExchange.java	2016-09-23 17:15:54.756537449 +0100
@@ -173,8 +173,14 @@
                     clientVersion, serverVersion, encodedSecret),
                     generator);
             return kg.generateKey();
-        } catch (InvalidAlgorithmParameterException |
-                NoSuchAlgorithmException iae) {
+        } catch (InvalidAlgorithmParameterException iae) {
+            // unlikely to happen, otherwise, must be a provider exception
+            if (debug != null && Debug.isOn("handshake")) {
+                System.out.println("RSA premaster secret generation error:");
+                iae.printStackTrace(System.out);
+            }
+            throw new RuntimeException("Could not generate premaster secret", iae);
+        } catch (NoSuchAlgorithmException iae) {
             // unlikely to happen, otherwise, must be a provider exception
             if (debug != null && Debug.isOn("handshake")) {
                 System.out.println("RSA premaster secret generation error:");
diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/pkcs11/P11KeyStore.java openjdk-boot/jdk/src/share/classes/sun/security/pkcs11/P11KeyStore.java
--- openjdk-boot.orig/jdk/src/share/classes/sun/security/pkcs11/P11KeyStore.java	2016-09-23 18:04:55.125088351 +0100
+++ openjdk-boot/jdk/src/share/classes/sun/security/pkcs11/P11KeyStore.java	2016-09-23 18:10:03.312134476 +0100
@@ -325,7 +325,9 @@
 
             // did not find anything
             return null;
-        } catch (PKCS11Exception | KeyStoreException e) {
+        } catch (PKCS11Exception e) {
+            throw new ProviderException(e);
+        } catch (KeyStoreException e) {
             throw new ProviderException(e);
         } finally {
             token.releaseSession(session);
@@ -450,7 +452,9 @@
             } else if (key instanceof SecretKey) {
                 entry = new KeyStore.SecretKeyEntry((SecretKey)key);
             }
-        } catch (NullPointerException | IllegalArgumentException e) {
+        } catch (NullPointerException e) {
+            throw new KeyStoreException(e);
+        } catch (IllegalArgumentException e) {
             throw new KeyStoreException(e);
         }
         engineSetEntry(alias, entry, new KeyStore.PasswordProtection(password));
@@ -556,7 +560,9 @@
                 } else {
                     throw new KeyStoreException("unexpected entry type");
                 }
-            } catch (PKCS11Exception | CertificateException e) {
+            } catch (PKCS11Exception e) {
+                throw new KeyStoreException(e);
+            } catch (CertificateException e) {
                 throw new KeyStoreException(e);
             }
         }
@@ -758,7 +764,11 @@
             if (debug != null) {
                 dumpTokenMap();
             }
-        } catch (LoginException | KeyStoreException | PKCS11Exception e) {
+        } catch (LoginException e) {
+            throw new IOException("load failed", e);
+        } catch (KeyStoreException e) {
+            throw new IOException("load failed", e);
+        } catch (PKCS11Exception e) {
             throw new IOException("load failed", e);
         }
     }
@@ -838,7 +848,11 @@
             if (debug != null) {
                 dumpTokenMap();
             }
-        } catch (LoginException | KeyStoreException | PKCS11Exception e) {
+        } catch (LoginException e) {
+            throw new IOException("load failed", e);
+        } catch (KeyStoreException e) {
+            throw new IOException("load failed", e);
+        } catch (PKCS11Exception e) {
             throw new IOException("load failed", e);
         }
     }
@@ -1028,7 +1042,9 @@
                 storeCert(alias, xcert);
                 module.setTrust(token, xcert);
                 mapLabels();
-            } catch (PKCS11Exception | CertificateException e) {
+            } catch (PKCS11Exception e) {
+                throw new KeyStoreException(e);
+            } catch (CertificateException e) {
                 throw new KeyStoreException(e);
             }
 
@@ -1090,7 +1106,9 @@
                         storePkey(alias, (KeyStore.PrivateKeyEntry)entry);
                     }
 
-                } catch (PKCS11Exception | CertificateException pe) {
+                } catch (PKCS11Exception pe) {
+                    throw new KeyStoreException(pe);
+                } catch (CertificateException pe) {
                     throw new KeyStoreException(pe);
                 }
 
@@ -1128,7 +1146,9 @@
                 if (debug != null) {
                     dumpTokenMap();
                 }
-            } catch (PKCS11Exception | CertificateException pe) {
+            } catch (PKCS11Exception pe) {
+                throw new KeyStoreException(pe);
+            } catch (CertificateException pe) {
                 throw new KeyStoreException(pe);
             }
         }
diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/pkcs11/P11RSAKeyFactory.java openjdk-boot/jdk/src/share/classes/sun/security/pkcs11/P11RSAKeyFactory.java
--- openjdk-boot.orig/jdk/src/share/classes/sun/security/pkcs11/P11RSAKeyFactory.java	2016-09-23 18:04:55.137088159 +0100
+++ openjdk-boot/jdk/src/share/classes/sun/security/pkcs11/P11RSAKeyFactory.java	2016-09-23 18:06:53.927179034 +0100
@@ -130,7 +130,10 @@
                 rs.getModulus(),
                 rs.getPublicExponent()
             );
-        } catch (PKCS11Exception | InvalidKeyException e) {
+        } catch (PKCS11Exception e) {
+            throw new InvalidKeySpecException
+                ("Could not create RSA public key", e);
+        } catch (InvalidKeyException e) {
             throw new InvalidKeySpecException
                 ("Could not create RSA public key", e);
         }
@@ -174,7 +177,10 @@
                 throw new InvalidKeySpecException("Only RSAPrivate(Crt)KeySpec "
                     + "and PKCS8EncodedKeySpec supported for RSA private keys");
             }
-        } catch (PKCS11Exception | InvalidKeyException e) {
+        } catch (PKCS11Exception e) {
+            throw new InvalidKeySpecException
+                ("Could not create RSA private key", e);
+        } catch (InvalidKeyException e) {
             throw new InvalidKeySpecException
                 ("Could not create RSA private key", e);
         }
--- openjdk-boot.orig/jdk/src/share/classes/sun/security/tools/keytool/Main.java	2016-09-23 18:24:05.646575464 +0100
+++ openjdk-boot/jdk/src/share/classes/sun/security/tools/keytool/Main.java	2016-09-23 18:24:20.022343797 +0100
@@ -2538,7 +2538,9 @@
         X509Certificate cert = null;
         try {
             cert = (X509Certificate)cf.generateCertificate(in);
-        } catch (ClassCastException | CertificateException ce) {
+        } catch (ClassCastException ce) {
+            throw new Exception(rb.getString("Input.not.an.X.509.certificate"));
+        } catch (CertificateException ce) {
             throw new Exception(rb.getString("Input.not.an.X.509.certificate"));
         }