aboutsummaryrefslogtreecommitdiff
path: root/java/openjdk8
diff options
context:
space:
mode:
authorGreg Lewis <glewis@FreeBSD.org>2015-07-19 14:23:54 +0000
committerGreg Lewis <glewis@FreeBSD.org>2015-07-19 14:23:54 +0000
commit8088e0cda1ff0aa065274972fcfc56c3d90cab3a (patch)
treee5a81c85994e8d9b9193d03aeb4c01ba2e442a19 /java/openjdk8
parent6499621583542b3c98b92f70fd851dedffb0ce05 (diff)
downloadports-8088e0cda1ff0aa065274972fcfc56c3d90cab3a.tar.gz
ports-8088e0cda1ff0aa065274972fcfc56c3d90cab3a.zip
Notes
Diffstat (limited to 'java/openjdk8')
-rw-r--r--java/openjdk8/Makefile5
-rw-r--r--java/openjdk8/files/patch-8u51-b169265
-rw-r--r--java/openjdk8/files/patch-bsd1730
-rw-r--r--java/openjdk8/files/patch-bsd-test484
-rw-r--r--java/openjdk8/files/patch-hotspot-src-os-bsd-vm-os_bsd.cpp31
-rw-r--r--java/openjdk8/files/patch-hotspot-src-os-bsd-vm-vmError_bsd.cpp63
-rw-r--r--java/openjdk8/files/patch-jdk-make-lib-Awt2dLibraries.gmk32
-rw-r--r--java/openjdk8/files/patch-jdk-make-lib-CoreLibraries.gmk10
-rw-r--r--java/openjdk8/files/patch-jdk-make-lib-ServiceabilityLibraries.gmk12
-rw-r--r--java/openjdk8/files/patch-jdk-src-share-classes-sun-print-PSPrinterJob.java41
-rw-r--r--java/openjdk8/files/patch-jdk-src-solaris-bin-java_md_solinux.c53
-rw-r--r--java/openjdk8/files/patch-jdk_src_share_native_sun_awt_splashscreen_splashscreen__gif.c14
-rw-r--r--java/openjdk8/files/patch-langtools-test-Makefile11
-rw-r--r--java/openjdk8/files/patch-static-libjli121
14 files changed, 10892 insertions, 980 deletions
diff --git a/java/openjdk8/Makefile b/java/openjdk8/Makefile
index c6cf55cff544..2be19b8f8bc5 100644
--- a/java/openjdk8/Makefile
+++ b/java/openjdk8/Makefile
@@ -2,7 +2,6 @@
PORTNAME= openjdk
PORTVERSION= ${JDK_MAJOR_VERSION}.${JDK_UPDATE_VERSION}.${JDK_BUILD_NUMBER:S/^0//}
-PORTREVISION= 2
CATEGORIES= java devel
MASTER_SITES= http://download.java.net/openjdk/jdk${JDK_MAJOR_VERSION}/promoted/b${DIST_BUILD_NUMBER}/:jdk \
https://adopt-openjdk.ci.cloudbees.com/job/jtreg/${JTREG_JENKINS_BUILD}/artifact/:jtreg \
@@ -94,8 +93,8 @@ NO_CCACHE= yes
NOPRECIOUSMAKEVARS= yes
JDK_MAJOR_VERSION= 8
-JDK_UPDATE_VERSION= 45
-JDK_BUILD_NUMBER= 14
+JDK_UPDATE_VERSION= 51
+JDK_BUILD_NUMBER= 16
DIST_BUILD_NUMBER= 132
JTREG_VERSION= 4.1
JTREG_BUILD_NUMBER= b08
diff --git a/java/openjdk8/files/patch-8u51-b16 b/java/openjdk8/files/patch-8u51-b16
new file mode 100644
index 000000000000..324004024292
--- /dev/null
+++ b/java/openjdk8/files/patch-8u51-b16
@@ -0,0 +1,9265 @@
+--- ./.hgtags Tue Mar 17 11:22:18 2015 -0700
++++ ./.hgtags Mon Jun 01 11:40:12 2015 -0700
+@@ -354,6 +354,7 @@
+ fde671d8b2537b6be61f67e583164b5b8b33ac5b jdk8u31-b13
+ a198f93b1e0be5edce7a351b1399cb5c4e64c8f4 jdk8u31-b31
+ 99c79d83152585991682bd86e21fdcfe6f6ab9b2 jdk8u31-b32
++cf4ebf47413902376f66d2cddaf0282d49699ba7 jdk8u31-b33
+ 0dccc4aca1859b1ff7dca9db214f7f38c4ddbbce jdk8u40-b00
+ f8736a40a35df0c8055c8a94b96e5381b381ad33 jdk8u40-b01
+ b6a148730f2b14193c308bc9c866c36ee6c08ed3 jdk8u40-b02
+@@ -382,6 +383,8 @@
+ e26f15704e37f28acebb22378c4785891aaec637 jdk8u40-b25
+ 7a552439756eaad0618ae82a94c034edb65f5d7e jdk8u40-b26
+ 12deacac825756e266e91a906db9edab73c4c90b jdk8u40-b27
++eee2ebbb97f136cd458d4f3a825ee40d0046f425 jdk8u40-b31
++b92f3d486e47d29dfb1ea2096db295077328368e jdk8u40-b32
+ ec4bcc6e4dcf190a165106627ed3eef1e7d94d0c jdk8u45-b00
+ 635ba0c81b894a88ff737fefc9d7af398f761643 jdk8u45-b01
+ 801c65bb74b770600a2d48189764e416e5cfe265 jdk8u45-b02
+@@ -396,3 +399,23 @@
+ 6738b8755c80905e3eecedf94e27f03d23f02ba9 jdk8u45-b11
+ 54709b761404dd3bc1b58acf5582fa9bd70ff59a jdk8u45-b12
+ 6b2f1bf5c72873d01b37103fc20ac7a63e7881dd jdk8u45-b13
++15b679d327da9ee99c05d7ddd75512ce335d5994 jdk8u45-b14
++438cc91b51330a61a790f0a0ac64816b565d25f0 jdk8u45-b15
++5a4ccc33ab26b635f91ddd424742b0009a37bcc0 jdk8u45-b31
++4597cb5171773416c4b2e1843db8592a69ff7a99 jdk8u45-b32
++a1682688c9aec33c172146ce4be8d3969e7d76bb jdk8u51-b00
++e04f2ee2d03d9927d2012286a9bcbf511eb887ae jdk8u51-b01
++4dee64570ad013eb5e1cb16304f9eff558c1c5e9 jdk8u51-b02
++df8e9cbe5a8a7ce9cf2e0a78910302d08e2dbb53 jdk8u51-b03
++1d29a8f9bd262c4f3556e0250db80d8dc64d95d3 jdk8u51-b04
++046d1cfaedc892bfd49570d42dd655338278d476 jdk8u51-b05
++7875bd6e35fb6af4b150dda213d7812bdb9fcba1 jdk8u51-b06
++2c7a34442763e809d2cf1459d5b8d6d5528f6494 jdk8u51-b07
++a96b442d99131e87c7c974a0fa277a5f971732c6 jdk8u51-b08
++3a95f1e13da9720a6243c0bd41688544b037e182 jdk8u51-b09
++d99f3f935397fdc65dcb776a97110e8ff5cc519c jdk8u51-b10
++29612174658436601ba833993227ae96117f632c jdk8u51-b11
++f07a9ef02d513435e19fd70abcce2871d1c91342 jdk8u51-b12
++6ef21f3e0946aaab8dc1f4e9cad21dacb97c4f8c jdk8u51-b13
++5a2078b398485d21fa6577cf9481aa488d2e28d0 jdk8u51-b14
++54b6481aa9e2f39699a96a4572b825b6d81f434f jdk8u51-b15
+--- ./corba/.hgtags Tue Mar 17 11:22:27 2015 -0700
++++ ./corba/.hgtags Mon Jun 01 11:40:22 2015 -0700
+@@ -352,6 +352,7 @@
+ f89b454638d89ee5f44422b7a5b8e5651260e68f jdk8u31-b13
+ 705d3a4298f44f0a14925bfee5017f5824b6c0ca jdk8u31-b31
+ 072d325a052a5894019b74118803bf5fb9e30692 jdk8u31-b32
++bfd820cde577ba687222196e6c5159d9763df887 jdk8u31-b33
+ 7d1e0f0b63f1d66c77924d8b2a1accdf8f7480db jdk8u40-b00
+ c5d9822a3c18cd9e274dfe99e91c33e02bd8f8f4 jdk8u40-b01
+ 504b4455570e14b7fc0a837a09c6401c603516d9 jdk8u40-b02
+@@ -380,6 +381,8 @@
+ 2220744100b8487976debff79e5d0c7d70738bda jdk8u40-b25
+ cab2b99c6bb2e15165a58eaa36157788f82592f1 jdk8u40-b26
+ bd0186cd2419129357b110fe3f13519f68b29774 jdk8u40-b27
++28a1dbd4bb9ec97427790c88d21514af2f878c94 jdk8u40-b31
++663a3151c688bc3f4c092bcad21cc81e29139d62 jdk8u40-b32
+ 5761efbc739fdedcbff224e22f920e88b29af4cf jdk8u45-b00
+ 6a52852476c9ccb2d52153d1b94b675e863bb28c jdk8u45-b01
+ 3b9d342f9f584465ea5976e06357b45682f9681d jdk8u45-b02
+@@ -394,3 +397,23 @@
+ 08c2ce4b6d59bc6b29e61fd8562b9e3d39b257a5 jdk8u45-b11
+ c9bf2543c0c045ef31f0296bc355381e1a4bd4ac jdk8u45-b12
+ 326f02235e7a9a6da78428410320dcc980827d40 jdk8u45-b13
++50fb9bed64c9366b7bf68bddcdc553cd7295d905 jdk8u45-b14
++4afc048fe6ff7fc3fdbdadd8027549805c426d0d jdk8u45-b15
++e67045c893eaf5e3336c4fd849786fa15b81b601 jdk8u45-b31
++f2aeb52cb7cef1f984661a583baac67402f633a5 jdk8u45-b32
++72d116eea419824044f8dd4ae9d3a012946f72a4 jdk8u51-b00
++b9638b9fe23876fd2413f336ee1d4e05d409e6a9 jdk8u51-b01
++bc5562ed3c2d69ffbff357e96d9e383479042000 jdk8u51-b02
++75c09ffd6c62f90153e4b043e0b40db4fa03954d jdk8u51-b03
++66908961baaec267141b1e80d04feed0c93f68fe jdk8u51-b04
++1c0a26d561f3a6b2d5a4c91161d7c92409d5f227 jdk8u51-b05
++dba5c9ee56abce73e1f6ed99a36a99d6907266c6 jdk8u51-b06
++00d57e68b59879ee59352ae18c7e40216d9e2243 jdk8u51-b07
++47492841bb10e6c995c68be533d2b4905856a17e jdk8u51-b08
++b9e5fa1d3f251d5cce02d1e7ff97279064aecdb1 jdk8u51-b09
++0011162b38bf4dab36c72bf25640c59d7128274a jdk8u51-b10
++4d59046bdb8a05cfb9e07d8e18d44956f700fe29 jdk8u51-b11
++e51a2deadf774452d98b339d65d33c72a466a453 jdk8u51-b12
++4886143e8749caf2ec42a6e77c70a98516e140a3 jdk8u51-b13
++1fbfa02e524872a75e98ee3a80e2472fa7012fde jdk8u51-b14
++d6e1f914c954f98caa31edd0037837830774dfb6 jdk8u51-b15
+--- ./corba/src/share/classes/com/sun/corba/se/impl/io/IIOPInputStream.java Tue Mar 17 11:22:27 2015 -0700
++++ ./corba/src/share/classes/com/sun/corba/se/impl/io/IIOPInputStream.java Mon Jun 01 11:40:22 2015 -0700
+@@ -2417,8 +2417,8 @@
+ private void throwAwayData(ValueMember[] fields,
+ com.sun.org.omg.SendingContext.CodeBase sender)
+ throws InvalidClassException, StreamCorruptedException,
+- ClassNotFoundException, IOException
+- {
++ ClassNotFoundException, IOException {
++
+ for (int i = 0; i < fields.length; ++i) {
+
+ try {
+@@ -2553,8 +2553,7 @@
+
+ }
+
+- private static void setObjectField(Object o, Class c, String fieldName, Object v)
+- {
++ private static void setObjectField(Object o, Class c, String fieldName, Object v) {
+ try {
+ Field fld = c.getDeclaredField( fieldName ) ;
+ Class fieldCl = fld.getType();
+@@ -2564,9 +2563,15 @@
+ long key = bridge.objectFieldOffset( fld ) ;
+ bridge.putObject( o, key, v ) ;
+ } catch (Exception e) {
+- throw utilWrapper.errorSetObjectField( e, fieldName,
+- o.toString(),
+- v.toString() ) ;
++ if (o != null) {
++ throw utilWrapper.errorSetObjectField( e, fieldName,
++ o.toString(),
++ v.toString() ) ;
++ } else {
++ throw utilWrapper.errorSetObjectField( e, fieldName,
++ "null " + c.getName() + " object",
++ v.toString() ) ;
++ }
+ }
+ }
+
+@@ -2574,12 +2579,22 @@
+ {
+ try {
+ Field fld = c.getDeclaredField( fieldName ) ;
+- long key = bridge.objectFieldOffset( fld ) ;
+- bridge.putBoolean( o, key, v ) ;
++ if ((fld != null) && (fld.getType() == Boolean.TYPE)) {
++ long key = bridge.objectFieldOffset( fld ) ;
++ bridge.putBoolean( o, key, v ) ;
++ } else {
++ throw new InvalidObjectException("Field Type mismatch");
++ }
+ } catch (Exception e) {
++ if (o != null) {
+ throw utilWrapper.errorSetBooleanField( e, fieldName,
+ o.toString(),
+ new Boolean(v) ) ;
++ } else {
++ throw utilWrapper.errorSetBooleanField( e, fieldName,
++ "null " + c.getName() + " object",
++ new Boolean(v) ) ;
++ }
+ }
+ }
+
+@@ -2587,12 +2602,22 @@
+ {
+ try {
+ Field fld = c.getDeclaredField( fieldName ) ;
+- long key = bridge.objectFieldOffset( fld ) ;
+- bridge.putByte( o, key, v ) ;
++ if ((fld != null) && (fld.getType() == Byte.TYPE)) {
++ long key = bridge.objectFieldOffset( fld ) ;
++ bridge.putByte( o, key, v ) ;
++ } else {
++ throw new InvalidObjectException("Field Type mismatch");
++ }
+ } catch (Exception e) {
+- throw utilWrapper.errorSetByteField( e, fieldName,
+- o.toString(),
+- new Byte(v) ) ;
++ if (o != null) {
++ throw utilWrapper.errorSetByteField( e, fieldName,
++ o.toString(),
++ new Byte(v) ) ;
++ } else {
++ throw utilWrapper.errorSetByteField( e, fieldName,
++ "null " + c.getName() + " object",
++ new Byte(v) ) ;
++ }
+ }
+ }
+
+@@ -2600,12 +2625,22 @@
+ {
+ try {
+ Field fld = c.getDeclaredField( fieldName ) ;
+- long key = bridge.objectFieldOffset( fld ) ;
+- bridge.putChar( o, key, v ) ;
++ if ((fld != null) && (fld.getType() == Character.TYPE)) {
++ long key = bridge.objectFieldOffset( fld ) ;
++ bridge.putChar( o, key, v ) ;
++ } else {
++ throw new InvalidObjectException("Field Type mismatch");
++ }
+ } catch (Exception e) {
+- throw utilWrapper.errorSetCharField( e, fieldName,
+- o.toString(),
+- new Character(v) ) ;
++ if (o != null) {
++ throw utilWrapper.errorSetCharField( e, fieldName,
++ o.toString(),
++ new Character(v) ) ;
++ } else {
++ throw utilWrapper.errorSetCharField( e, fieldName,
++ "null " + c.getName() + " object",
++ new Character(v) ) ;
++ }
+ }
+ }
+
+@@ -2613,12 +2648,22 @@
+ {
+ try {
+ Field fld = c.getDeclaredField( fieldName ) ;
+- long key = bridge.objectFieldOffset( fld ) ;
+- bridge.putShort( o, key, v ) ;
++ if ((fld != null) && (fld.getType() == Short.TYPE)) {
++ long key = bridge.objectFieldOffset( fld ) ;
++ bridge.putShort( o, key, v ) ;
++ } else {
++ throw new InvalidObjectException("Field Type mismatch");
++ }
+ } catch (Exception e) {
++ if (o != null) {
+ throw utilWrapper.errorSetShortField( e, fieldName,
+ o.toString(),
+ new Short(v) ) ;
++ } else {
++ throw utilWrapper.errorSetShortField( e, fieldName,
++ "null " + c.getName() + " object",
++ new Short(v) ) ;
++ }
+ }
+ }
+
+@@ -2626,12 +2671,22 @@
+ {
+ try {
+ Field fld = c.getDeclaredField( fieldName ) ;
+- long key = bridge.objectFieldOffset( fld ) ;
+- bridge.putInt( o, key, v ) ;
++ if ((fld != null) && (fld.getType() == Integer.TYPE)) {
++ long key = bridge.objectFieldOffset( fld ) ;
++ bridge.putInt( o, key, v ) ;
++ } else {
++ throw new InvalidObjectException("Field Type mismatch");
++ }
+ } catch (Exception e) {
+- throw utilWrapper.errorSetIntField( e, fieldName,
+- o.toString(),
+- new Integer(v) ) ;
++ if (o != null) {
++ throw utilWrapper.errorSetIntField( e, fieldName,
++ o.toString(),
++ new Integer(v) ) ;
++ } else {
++ throw utilWrapper.errorSetIntField( e, fieldName,
++ "null " + c.getName() + " object",
++ new Integer(v) ) ;
++ }
+ }
+ }
+
+@@ -2639,12 +2694,22 @@
+ {
+ try {
+ Field fld = c.getDeclaredField( fieldName ) ;
+- long key = bridge.objectFieldOffset( fld ) ;
+- bridge.putLong( o, key, v ) ;
++ if ((fld != null) && (fld.getType() == Long.TYPE)) {
++ long key = bridge.objectFieldOffset( fld ) ;
++ bridge.putLong( o, key, v ) ;
++ } else {
++ throw new InvalidObjectException("Field Type mismatch");
++ }
+ } catch (Exception e) {
+- throw utilWrapper.errorSetLongField( e, fieldName,
+- o.toString(),
+- new Long(v) ) ;
++ if (o != null) {
++ throw utilWrapper.errorSetLongField( e, fieldName,
++ o.toString(),
++ new Long(v) ) ;
++ } else {
++ throw utilWrapper.errorSetLongField( e, fieldName,
++ "null " + c.getName() + " object",
++ new Long(v) ) ;
++ }
+ }
+ }
+
+@@ -2652,12 +2717,22 @@
+ {
+ try {
+ Field fld = c.getDeclaredField( fieldName ) ;
+- long key = bridge.objectFieldOffset( fld ) ;
+- bridge.putFloat( o, key, v ) ;
++ if ((fld != null) && (fld.getType() == Float.TYPE)) {
++ long key = bridge.objectFieldOffset( fld ) ;
++ bridge.putFloat( o, key, v ) ;
++ } else {
++ throw new InvalidObjectException("Field Type mismatch");
++ }
+ } catch (Exception e) {
+- throw utilWrapper.errorSetFloatField( e, fieldName,
+- o.toString(),
+- new Float(v) ) ;
++ if (o != null) {
++ throw utilWrapper.errorSetFloatField( e, fieldName,
++ o.toString(),
++ new Float(v) ) ;
++ } else {
++ throw utilWrapper.errorSetFloatField( e, fieldName,
++ "null " + c.getName() + " object",
++ new Float(v) ) ;
++ }
+ }
+ }
+
+@@ -2665,12 +2740,22 @@
+ {
+ try {
+ Field fld = c.getDeclaredField( fieldName ) ;
+- long key = bridge.objectFieldOffset( fld ) ;
+- bridge.putDouble( o, key, v ) ;
++ if ((fld != null) && (fld.getType() == Double.TYPE)) {
++ long key = bridge.objectFieldOffset( fld ) ;
++ bridge.putDouble( o, key, v ) ;
++ } else {
++ throw new InvalidObjectException("Field Type mismatch");
++ }
+ } catch (Exception e) {
+- throw utilWrapper.errorSetDoubleField( e, fieldName,
+- o.toString(),
+- new Double(v) ) ;
++ if (o != null) {
++ throw utilWrapper.errorSetDoubleField( e, fieldName,
++ o.toString(),
++ new Double(v) ) ;
++ } else {
++ throw utilWrapper.errorSetDoubleField( e, fieldName,
++ "null " + c.getName() + " object",
++ new Double(v) ) ;
++ }
+ }
+ }
+
+--- ./hotspot/.hgtags Tue Mar 17 11:22:51 2015 -0700
++++ ./hotspot/.hgtags Mon Jun 01 11:40:55 2015 -0700
+@@ -565,6 +565,7 @@
+ 4206e725d584be942c25ff46ff23d8e299ca4a4c jdk8u31-b13
+ b517d3a9aebf0fee64808f9a7c0ef8e0b82d5ed3 jdk8u31-b31
+ 15d8108258cb60a58bdd03b9ff8e77dd6727a804 jdk8u31-b32
++26b1dc6891c4fae03575a9090f7d04bd631d9164 jdk8u31-b33
+ 1b3abbeee961dee49780c0e4af5337feb918c555 jdk8u40-b10
+ f10fe402dfb1543723b4b117a7cba3ea3d4159f1 hs25.40-b15
+ 99372b2fee0eb8b3452f47230e84aa6e97003184 jdk8u40-b11
+@@ -594,6 +595,8 @@
+ 698dd28ecc785ffc43e3f12266b13e85382c26a8 jdk8u40-b25
+ f39b6944ad447269b81e06ca5da9edff9e9e67c8 jdk8u40-b26
+ 6824e2475e0432e27f9cc51838bc34ea5fbf5113 jdk8u40-b27
++8220f68a195f6eeed2f5fb6e8a303726b512e899 jdk8u40-b31
++850a290eb1088a61178d1910c500e170ef4f4386 jdk8u40-b32
+ b95f13f05f553309cd74d6ccf8fcedb259c6716c jdk8u45-b00
+ 41c3c456e326185053f0654be838f4b0bfb38078 jdk8u45-b01
+ 626fd8c2eec63e2a2dff3839bfe12c0431bf00a4 jdk8u45-b02
+@@ -608,3 +611,23 @@
+ f4822d12204179e6a3e7aaf98991b6171670cbf2 jdk8u45-b11
+ dc29108bcbcbfcd49eaa9135368306dc85db73a6 jdk8u45-b12
+ efbf340fc7f56e49735111c23cef030413146409 jdk8u45-b13
++5321d26956b283b7cb73b04b91db41c7c9fe9158 jdk8u45-b14
++a5ba7c9a0b916ea088aaac5d40e17b4675c2b026 jdk8u45-b15
++894b92a02c533bcd1203c4beb5b6ec067b63466e jdk8u45-b31
++1428b6aa09c4e17202b801530c3c4993c7ce8e5b jdk8u45-b32
++b22b01407a8140041545afe1f2d6335db4d94ba5 jdk8u51-b00
++c1de2652a48c1d4a0c96707acc73db3cd317df2a jdk8u51-b01
++8f03c2f5fc170da5fca2cf65734941efb619feca jdk8u51-b02
++cf295659243009ded76b6c14307c177a02f9fe82 jdk8u51-b03
++0b3f449553884d88f6c9d7ab067fa858f18cc3f1 jdk8u51-b04
++6ce994385353023e6b3f9c5ef331f390b324a355 jdk8u51-b05
++3816de51b5e7d6050584057fae5f2262dae53d7e jdk8u51-b06
++5c017acbaf015fb8ecca6f00870965f3deb4e1ac jdk8u51-b07
++631d4029d851b59613e6748e17447001a682276e jdk8u51-b08
++ce81c4487dd1e9f89d4570a8cd25e349f6bae00d jdk8u51-b09
++928e1994ad43272f808ca22b9cc1b08a7ce2824f jdk8u51-b10
++1a122beb9dc6881850ef1d1250f40a83709b8b72 jdk8u51-b11
++05c80f1060f0c0d5720de9eadd09162af1168eab jdk8u51-b12
++07e103f3f43886a3b47945e5295eb5accad505de jdk8u51-b13
++a4eea4bee2d4fdb05f1a8358d70ec6adb1135526 jdk8u51-b14
++9a70cba6a3c3e44486f9c199d03a16b2b09d0a13 jdk8u51-b15
+--- ./hotspot/make/hotspot_version Tue Mar 17 11:22:51 2015 -0700
++++ ./hotspot/make/hotspot_version Mon Jun 01 11:40:55 2015 -0700
+@@ -34,8 +34,8 @@
+ HOTSPOT_VM_COPYRIGHT=Copyright 2015
+
+ HS_MAJOR_VER=25
+-HS_MINOR_VER=45
+-HS_BUILD_NUMBER=02
++HS_MINOR_VER=51
++HS_BUILD_NUMBER=03
+
+ JDK_MAJOR_VER=1
+ JDK_MINOR_VER=8
+--- ./hotspot/src/share/vm/c1/c1_LIRGenerator.cpp Tue Mar 17 11:22:51 2015 -0700
++++ ./hotspot/src/share/vm/c1/c1_LIRGenerator.cpp Mon Jun 01 11:40:55 2015 -0700
+@@ -2204,7 +2204,15 @@
+ if (log2_scale != 0) {
+ // temporary fix (platform dependent code without shift on Intel would be better)
+ // TODO: ARM also allows embedded shift in the address
+- __ shift_left(index_op, log2_scale, index_op);
++ LIR_Opr tmp = new_pointer_register();
++ if (TwoOperandLIRForm) {
++ __ move(index_op, tmp);
++ index_op = tmp;
++ }
++ __ shift_left(index_op, log2_scale, tmp);
++ if (!TwoOperandLIRForm) {
++ index_op = tmp;
++ }
+ }
+
+ LIR_Address* addr = new LIR_Address(base_op, index_op, x->basic_type());
+--- ./hotspot/src/share/vm/classfile/systemDictionary.cpp Tue Mar 17 11:22:51 2015 -0700
++++ ./hotspot/src/share/vm/classfile/systemDictionary.cpp Mon Jun 01 11:40:55 2015 -0700
+@@ -2349,9 +2349,6 @@
+ assert(!THREAD->is_Compiler_thread(), "");
+ Handle method_type =
+ SystemDictionary::find_method_handle_type(signature, accessing_klass, CHECK_(empty));
+- if (false) { // FIXME: Decide if the Java upcall should resolve signatures.
+- method_type = java_lang_String::create_from_symbol(signature, CHECK_(empty));
+- }
+
+ KlassHandle mh_klass = SystemDictionary::MethodHandle_klass();
+ int ref_kind = JVM_REF_invokeVirtual;
+@@ -2383,6 +2380,24 @@
+ return unpack_method_and_appendix(mname, accessing_klass, appendix_box, appendix_result, THREAD);
+ }
+
++// Decide if we can globally cache a lookup of this class, to be returned to any client that asks.
++// We must ensure that all class loaders everywhere will reach this class, for any client.
++// This is a safe bet for public classes in java.lang, such as Object and String.
++// We also include public classes in java.lang.invoke, because they appear frequently in system-level method types.
++// Out of an abundance of caution, we do not include any other classes, not even for packages like java.util.
++static bool is_always_visible_class(oop mirror) {
++ Klass* klass = java_lang_Class::as_Klass(mirror);
++ if (klass->oop_is_objArray()) {
++ klass = ObjArrayKlass::cast(klass)->bottom_klass(); // check element type
++ }
++ if (klass->oop_is_typeArray()) {
++ return true; // primitive array
++ }
++ assert(klass->oop_is_instance(), klass->external_name());
++ return klass->is_public() &&
++ (InstanceKlass::cast(klass)->is_same_class_package(SystemDictionary::Object_klass()) || // java.lang
++ InstanceKlass::cast(klass)->is_same_class_package(SystemDictionary::MethodHandle_klass())); // java.lang.invoke
++}
+
+ // Ask Java code to find or construct a java.lang.invoke.MethodType for the given
+ // signature, as interpreted relative to the given class loader.
+@@ -2405,32 +2420,33 @@
+ }
+
+ Handle class_loader, protection_domain;
+- bool is_on_bcp = true; // keep this true as long as we can materialize from the boot classloader
++ if (accessing_klass.not_null()) {
++ class_loader = Handle(THREAD, InstanceKlass::cast(accessing_klass())->class_loader());
++ protection_domain = Handle(THREAD, InstanceKlass::cast(accessing_klass())->protection_domain());
++ }
++ bool can_be_cached = true;
+ int npts = ArgumentCount(signature).size();
+ objArrayHandle pts = oopFactory::new_objArray(SystemDictionary::Class_klass(), npts, CHECK_(empty));
+ int arg = 0;
+- Handle rt; // the return type from the signature
++ Handle rt; // the return type from the signature
+ ResourceMark rm(THREAD);
+ for (SignatureStream ss(signature); !ss.is_done(); ss.next()) {
+ oop mirror = NULL;
+- if (is_on_bcp) {
+- // Note: class_loader & protection_domain are both null at this point.
+- mirror = ss.as_java_mirror(class_loader, protection_domain,
++ if (can_be_cached) {
++ // Use neutral class loader to lookup candidate classes to be placed in the cache.
++ mirror = ss.as_java_mirror(Handle(), Handle(),
+ SignatureStream::ReturnNull, CHECK_(empty));
+- if (mirror == NULL) {
+- // fall back from BCP to accessing_klass
+- if (accessing_klass.not_null()) {
+- class_loader = Handle(THREAD, InstanceKlass::cast(accessing_klass())->class_loader());
+- protection_domain = Handle(THREAD, InstanceKlass::cast(accessing_klass())->protection_domain());
+- }
+- is_on_bcp = false;
++ if (mirror == NULL || (ss.is_object() && !is_always_visible_class(mirror))) {
++ // Fall back to accessing_klass context.
++ can_be_cached = false;
+ }
+ }
+- if (!is_on_bcp) {
++ if (!can_be_cached) {
+ // Resolve, throwing a real error if it doesn't work.
+ mirror = ss.as_java_mirror(class_loader, protection_domain,
+ SignatureStream::NCDFError, CHECK_(empty));
+ }
++ assert(!oopDesc::is_null(mirror), ss.as_symbol(THREAD)->as_C_string());
+ if (ss.at_return_type())
+ rt = Handle(THREAD, mirror);
+ else
+@@ -2462,7 +2478,7 @@
+ &args, CHECK_(empty));
+ Handle method_type(THREAD, (oop) result.get_jobject());
+
+- if (is_on_bcp) {
++ if (can_be_cached) {
+ // We can cache this MethodType inside the JVM.
+ MutexLocker ml(SystemDictionary_lock, THREAD);
+ spe = invoke_method_table()->find_entry(index, hash, signature, null_iid);
+--- ./hotspot/src/share/vm/prims/jvmtiClassFileReconstituter.hpp Tue Mar 17 11:22:51 2015 -0700
++++ ./hotspot/src/share/vm/prims/jvmtiClassFileReconstituter.hpp Mon Jun 01 11:40:55 2015 -0700
+@@ -68,11 +68,11 @@
+
+ ~JvmtiConstantPoolReconstituter() {
+ if (_symmap != NULL) {
+- os::free(_symmap, mtClass);
++ delete _symmap;
+ _symmap = NULL;
+ }
+ if (_classmap != NULL) {
+- os::free(_classmap, mtClass);
++ delete _classmap;
+ _classmap = NULL;
+ }
+ }
+--- ./jaxp/.hgtags Tue Mar 17 11:23:49 2015 -0700
++++ ./jaxp/.hgtags Mon Jun 01 11:41:52 2015 -0700
+@@ -354,6 +354,7 @@
+ 1dd828fd98f1b84de5dcadb904322b711e7489ff jdk8u31-b13
+ dcc563c9db9ef290a0783378d43a039cd92a08e3 jdk8u31-b31
+ 119f4ae3151f4134a5e62034e66a4c17f524838b jdk8u31-b32
++d8a594fd8507343dc23fa18c01b17c96fced47fd jdk8u31-b33
+ 3a1bba8076da4e54882123e98e219eab1c31ccef jdk8u40-b00
+ f219da378d0768ff042d77221e5d20676ecc16f0 jdk8u40-b01
+ 16ef2134c32a4e60b5a60105b371163aa5936278 jdk8u40-b02
+@@ -382,6 +383,8 @@
+ 4c0d4c38279c5790aa5b61b03c4cfa9b2a58bc72 jdk8u40-b25
+ f693ef62c207dd0290957c95bd62ab653afe4626 jdk8u40-b26
+ 56f6ca79467d04eb95383102046836b6ac7d2811 jdk8u40-b27
++7e43d4e20a33b8b6bd06112e39d367b51de921a7 jdk8u40-b31
++8facbe662ec106f1aae271f5c59909e124938c40 jdk8u40-b32
+ 9286acc600a779acb8bcfab38e82d4f50704afe3 jdk8u45-b00
+ 9fded65e1d36e3388111955d50ebf8511dd0345e jdk8u45-b01
+ 62566a3dbe5982565ce3e468ee3980b7937a86cc jdk8u45-b02
+@@ -396,3 +399,23 @@
+ d4042340fe0aa9d33a161890e179bc21b6c7b8e6 jdk8u45-b11
+ 91d1102264e9b58b2ada4b5f112d472f0d86092b jdk8u45-b12
+ a15025742f201f05ead3d731780a4ad437524491 jdk8u45-b13
++e0167ec9d7596ab9ac52a8c3b85c1aef5d3fbd92 jdk8u45-b14
++bf813e10d0bac17866ef2389baa8a1e6494e7800 jdk8u45-b15
++74452b827b62c31220709d14a65e71f37795199a jdk8u45-b31
++90fe13eb35388e095383bcb81eeb6d24875e3054 jdk8u45-b32
++ef437e576e3654f6f9c0cc116a0a824f382b9007 jdk8u51-b00
++d6ddc9950ff55dc9be44704ed59555e221a8fcc9 jdk8u51-b01
++da0ad0f75f08d8fbb4ee4d395e4386a4660b854e jdk8u51-b02
++34737dfadd630afba60b6ad63a696ae335d7e960 jdk8u51-b03
++75f055aeee9f9cab28a58e1deea9ecb8885b63d0 jdk8u51-b04
++5e57ca784de9ce92547c12d0bc3795c42794b962 jdk8u51-b05
++36c97b41563b7bed72014da6e497398c78616d5b jdk8u51-b06
++046bcf8f8e0059fa53136b06547112933d5284d6 jdk8u51-b07
++710b56801de0147716d91be7226b125b5a64c2ef jdk8u51-b08
++3b4c837abdf678ea2e60efcd2d20cc9ff1123c06 jdk8u51-b09
++7aacd8c67160af67f7c9d81974d021eeb229929e jdk8u51-b10
++04005432fba4982e5c073be55b917f8a11c838f0 jdk8u51-b11
++966c04d5702882603a02f5ba4a4e5d19d47960f6 jdk8u51-b12
++3f5353208a226a31d9ad86018a17fe5f3b102d4b jdk8u51-b13
++361ad9121468776eee1d647044481d80e8334ffa jdk8u51-b14
++14975d905d764c5a18b60b991b97375d42dcecd7 jdk8u51-b15
+--- ./jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_sv.java Tue Mar 17 11:23:49 2015 -0700
++++ ./jaxp/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_sv.java Mon Jun 01 11:41:52 2015 -0700
+@@ -1223,10 +1223,10 @@
+ "Gammal syntax: Namnet p\u00E5 'expr'-attributet har \u00E4ndrats till 'select'."},
+
+ { WG_NO_LOCALE_IN_FORMATNUMBER,
+- "Xalan hanterar \u00E4nnu inte spr\u00E5knamnet i funktionen format-number."},
++ "Xalan hanterar \u00E4nnu inte spr\u00E5kkonventionen i funktionen format-number."},
+
+ { WG_LOCALE_NOT_FOUND,
+- "Varning: Hittade inte spr\u00E5kinst\u00E4llning f\u00F6r xml:lang={0}"},
++ "Varning: Hittade inte spr\u00E5kkonvention f\u00F6r xml:lang={0}"},
+
+ { WG_CANNOT_MAKE_URL_FROM,
+ "Kan inte skapa URL fr\u00E5n: {0}"},
+@@ -1326,8 +1326,8 @@
+ { "version", ">>>>>>> Xalan version "},
+ { "version2", "<<<<<<<"},
+ { "yes", "ja"},
+- { "line", "Rad #"},
+- { "column","Kolumn #"},
++ { "line", "Rad nr"},
++ { "column","Kolumn nr"},
+ { "xsldone", "XSLProcessor: utf\u00F6rd"},
+
+
+--- ./jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMessages_de.java Tue Mar 17 11:23:49 2015 -0700
++++ ./jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMessages_de.java Mon Jun 01 11:41:52 2015 -0700
+@@ -597,6 +597,9 @@
+ {ErrorMsg.JAXP_INVALID_ATTR_ERR,
+ "TransformerFactory erkennt Attribut \"{0}\" nicht."},
+
++ {ErrorMsg.JAXP_INVALID_ATTR_VALUE_ERR,
++ "Falscher Wert f\u00FCr Attribut ''{0}'' angegeben."},
++
+ /*
+ * Note to translators: "setResult()" and "startDocument()" are Java
+ * method names that should not be translated.
+--- ./jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMessages_es.java Tue Mar 17 11:23:49 2015 -0700
++++ ./jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMessages_es.java Mon Jun 01 11:41:52 2015 -0700
+@@ -597,6 +597,9 @@
+ {ErrorMsg.JAXP_INVALID_ATTR_ERR,
+ "TransformerFactory no reconoce el atributo ''{0}''."},
+
++ {ErrorMsg.JAXP_INVALID_ATTR_VALUE_ERR,
++ "Valor no v\u00E1lido especificado para el atributo ''{0}''."},
++
+ /*
+ * Note to translators: "setResult()" and "startDocument()" are Java
+ * method names that should not be translated.
+--- ./jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMessages_fr.java Tue Mar 17 11:23:49 2015 -0700
++++ ./jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMessages_fr.java Mon Jun 01 11:41:52 2015 -0700
+@@ -597,6 +597,9 @@
+ {ErrorMsg.JAXP_INVALID_ATTR_ERR,
+ "TransformerFactory ne reconna\u00EEt pas l''attribut ''{0}''."},
+
++ {ErrorMsg.JAXP_INVALID_ATTR_VALUE_ERR,
++ "La valeur indiqu\u00E9e pour l''attribut ''{0}'' est incorrecte."},
++
+ /*
+ * Note to translators: "setResult()" and "startDocument()" are Java
+ * method names that should not be translated.
+--- ./jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMessages_it.java Tue Mar 17 11:23:49 2015 -0700
++++ ./jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMessages_it.java Mon Jun 01 11:41:52 2015 -0700
+@@ -597,6 +597,9 @@
+ {ErrorMsg.JAXP_INVALID_ATTR_ERR,
+ "TransformerFactory non riconosce l''attributo ''{0}''."},
+
++ {ErrorMsg.JAXP_INVALID_ATTR_VALUE_ERR,
++ "Valore errato specificato per l''attributo ''{0}''."},
++
+ /*
+ * Note to translators: "setResult()" and "startDocument()" are Java
+ * method names that should not be translated.
+--- ./jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMessages_ja.java Tue Mar 17 11:23:49 2015 -0700
++++ ./jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMessages_ja.java Mon Jun 01 11:41:52 2015 -0700
+@@ -597,6 +597,9 @@
+ {ErrorMsg.JAXP_INVALID_ATTR_ERR,
+ "TransformerFactory\u306F\u5C5E\u6027''{0}''\u3092\u8A8D\u8B58\u3057\u307E\u305B\u3093\u3002"},
+
++ {ErrorMsg.JAXP_INVALID_ATTR_VALUE_ERR,
++ "''{0}''\u5C5E\u6027\u306B\u6307\u5B9A\u3055\u308C\u305F\u5024\u304C\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093\u3002"},
++
+ /*
+ * Note to translators: "setResult()" and "startDocument()" are Java
+ * method names that should not be translated.
+--- ./jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMessages_ko.java Tue Mar 17 11:23:49 2015 -0700
++++ ./jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMessages_ko.java Mon Jun 01 11:41:52 2015 -0700
+@@ -597,6 +597,9 @@
+ {ErrorMsg.JAXP_INVALID_ATTR_ERR,
+ "TransformerFactory\uC5D0\uC11C ''{0}'' \uC18D\uC131\uC744 \uC778\uC2DD\uD558\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4."},
+
++ {ErrorMsg.JAXP_INVALID_ATTR_VALUE_ERR,
++ "''{0}'' \uC18D\uC131\uC5D0 \uB300\uD574 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC740 \uAC12\uC774 \uC9C0\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4."},
++
+ /*
+ * Note to translators: "setResult()" and "startDocument()" are Java
+ * method names that should not be translated.
+--- ./jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMessages_pt_BR.java Tue Mar 17 11:23:49 2015 -0700
++++ ./jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMessages_pt_BR.java Mon Jun 01 11:41:52 2015 -0700
+@@ -597,6 +597,9 @@
+ {ErrorMsg.JAXP_INVALID_ATTR_ERR,
+ "TransformerFactory n\u00E3o reconhece o atributo ''{0}''."},
+
++ {ErrorMsg.JAXP_INVALID_ATTR_VALUE_ERR,
++ "Valor incorreto especificado para o atributo ''{0}''."},
++
+ /*
+ * Note to translators: "setResult()" and "startDocument()" are Java
+ * method names that should not be translated.
+--- ./jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMessages_sv.java Tue Mar 17 11:23:49 2015 -0700
++++ ./jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMessages_sv.java Mon Jun 01 11:41:52 2015 -0700
+@@ -597,6 +597,9 @@
+ {ErrorMsg.JAXP_INVALID_ATTR_ERR,
+ "TransformerFactory k\u00E4nner inte igen attributet ''{0}''."},
+
++ {ErrorMsg.JAXP_INVALID_ATTR_VALUE_ERR,
++ "Fel v\u00E4rde har angetts f\u00F6r attributet ''{0}''."},
++
+ /*
+ * Note to translators: "setResult()" and "startDocument()" are Java
+ * method names that should not be translated.
+--- ./jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMessages_zh_CN.java Tue Mar 17 11:23:49 2015 -0700
++++ ./jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMessages_zh_CN.java Mon Jun 01 11:41:52 2015 -0700
+@@ -597,6 +597,9 @@
+ {ErrorMsg.JAXP_INVALID_ATTR_ERR,
+ "TransformerFactory \u65E0\u6CD5\u8BC6\u522B\u5C5E\u6027 ''{0}''\u3002"},
+
++ {ErrorMsg.JAXP_INVALID_ATTR_VALUE_ERR,
++ "\u4E3A ''{0}'' \u5C5E\u6027\u6307\u5B9A\u7684\u503C\u4E0D\u6B63\u786E\u3002"},
++
+ /*
+ * Note to translators: "setResult()" and "startDocument()" are Java
+ * method names that should not be translated.
+--- ./jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMessages_zh_TW.java Tue Mar 17 11:23:49 2015 -0700
++++ ./jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMessages_zh_TW.java Mon Jun 01 11:41:52 2015 -0700
+@@ -597,6 +597,9 @@
+ {ErrorMsg.JAXP_INVALID_ATTR_ERR,
+ "TransformerFactory \u7121\u6CD5\u8FA8\u8B58\u5C6C\u6027 ''{0}''\u3002"},
+
++ {ErrorMsg.JAXP_INVALID_ATTR_VALUE_ERR,
++ "\u70BA ''{0}'' \u5C6C\u6027\u6307\u5B9A\u7684\u503C\u4E0D\u6B63\u78BA\u3002"},
++
+ /*
+ * Note to translators: "setResult()" and "startDocument()" are Java
+ * method names that should not be translated.
+--- ./jaxp/src/com/sun/org/apache/xalan/internal/xsltc/runtime/BasisLibrary.java Tue Mar 17 11:23:49 2015 -0700
++++ ./jaxp/src/com/sun/org/apache/xalan/internal/xsltc/runtime/BasisLibrary.java Mon Jun 01 11:41:52 2015 -0700
+@@ -270,7 +270,7 @@
+ if (Double.isNaN(start))
+ return(EMPTYSTRING);
+
+- final int strlen = value.length();
++ final int strlen = getStringLength(value);
+ int istart = (int)Math.round(start) - 1;
+
+ if (istart > strlen)
+@@ -278,6 +278,7 @@
+ if (istart < 1)
+ istart = 0;
+ try {
++ istart = value.offsetByCodePoints(0, istart);
+ return value.substring(istart);
+ } catch (IndexOutOfBoundsException e) {
+ runTimeError(RUN_TIME_INTERNAL_ERR, "substring()");
+@@ -297,24 +298,30 @@
+ return(EMPTYSTRING);
+
+ int istart = (int)Math.round(start) - 1;
++ int ilength = (int)Math.round(length);
+ final int isum;
+ if (Double.isInfinite(length))
+ isum = Integer.MAX_VALUE;
+ else
+- isum = istart + (int)Math.round(length);
++ isum = istart + ilength;
+
+- final int strlen = value.length();
++ final int strlen = getStringLength(value);
+ if (isum < 0 || istart > strlen)
+ return(EMPTYSTRING);
+
+- if (istart < 0)
++ if (istart < 0) {
++ ilength += istart;
+ istart = 0;
++ }
+
+ try {
+- if (isum > strlen)
++ istart = value.offsetByCodePoints(0, istart);
++ if (isum > strlen) {
+ return value.substring(istart);
+- else
+- return value.substring(istart, isum);
++ } else {
++ int offset = value.offsetByCodePoints(istart, ilength);
++ return value.substring(istart, offset);
++ }
+ } catch (IndexOutOfBoundsException e) {
+ runTimeError(RUN_TIME_INTERNAL_ERR, "substring()");
+ return null;
+--- ./jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLDTDScannerImpl.java Tue Mar 17 11:23:49 2015 -0700
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLDTDScannerImpl.java Mon Jun 01 11:41:52 2015 -0700
+@@ -1418,7 +1418,7 @@
+ // AttValue
+ boolean isVC = !fStandalone && (fSeenExternalDTD || fSeenExternalPE) ;
+ scanAttributeValue(defaultVal, nonNormalizedDefaultVal, atName,
+- fAttributes, 0, isVC);
++ fAttributes, 0, isVC, elName);
+ }
+ return defaultType;
+
+--- ./jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLDocumentFragmentScannerImpl.java Tue Mar 17 11:23:49 2015 -0700
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLDocumentFragmentScannerImpl.java Mon Jun 01 11:41:52 2015 -0700
+@@ -1546,7 +1546,7 @@
+
+ scanAttributeValue(tmpStr, fTempString2,
+ fAttributeQName.rawname, attributes,
+- attIndex, isVC);
++ attIndex, isVC, fCurrentElement.rawname);
+
+ // content
+ int oldLen = attributes.getLength();
+--- ./jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLNSDocumentScannerImpl.java Tue Mar 17 11:23:49 2015 -0700
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLNSDocumentScannerImpl.java Mon Jun 01 11:41:52 2015 -0700
+@@ -438,7 +438,7 @@
+ XMLString tmpStr = getString();
+ scanAttributeValue(tmpStr, fTempString2,
+ fAttributeQName.rawname, attributes,
+- attrIndex, isVC);
++ attrIndex, isVC, fCurrentElement.rawname);
+
+ String value = null;
+ //fTempString.toString();
+--- ./jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLScanner.java Tue Mar 17 11:23:49 2015 -0700
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLScanner.java Mon Jun 01 11:41:52 2015 -0700
+@@ -812,6 +812,7 @@
+ * @param attrIndex The index of the attribute to use from the list.
+ * @param checkEntities true if undeclared entities should be reported as VC violation,
+ * false if undeclared entities should be reported as WFC violation.
++ * @param eleName The name of element to which this attribute belongs.
+ *
+ * <strong>Note:</strong> This method uses fStringBuffer2, anything in it
+ * at the time of calling is lost.
+@@ -820,13 +821,13 @@
+ XMLString nonNormalizedValue,
+ String atName,
+ XMLAttributes attributes, int attrIndex,
+- boolean checkEntities)
++ boolean checkEntities, String eleName)
+ throws IOException, XNIException {
+ XMLStringBuffer stringBuffer = null;
+ // quote
+ int quote = fEntityScanner.peekChar();
+ if (quote != '\'' && quote != '"') {
+- reportFatalError("OpenQuoteExpected", new Object[]{atName});
++ reportFatalError("OpenQuoteExpected", new Object[]{eleName, atName});
+ }
+
+ fEntityScanner.scanChar();
+@@ -952,7 +953,7 @@
+ }
+ } else if (c == '<') {
+ reportFatalError("LessthanInAttValue",
+- new Object[] { null, atName });
++ new Object[] { eleName, atName });
+ fEntityScanner.scanChar();
+ if (entityDepth == fEntityDepth && fNeedNonNormalizedValue) {
+ fStringBuffer2.append((char)c);
+@@ -987,7 +988,7 @@
+ }
+ } else if (c != -1 && isInvalidLiteral(c)) {
+ reportFatalError("InvalidCharInAttValue",
+- new Object[] {Integer.toString(c, 16)});
++ new Object[] {eleName, atName, Integer.toString(c, 16)});
+ fEntityScanner.scanChar();
+ if (entityDepth == fEntityDepth && fNeedNonNormalizedValue) {
+ fStringBuffer2.append((char)c);
+@@ -1016,7 +1017,7 @@
+ // quote
+ int cquote = fEntityScanner.scanChar();
+ if (cquote != quote) {
+- reportFatalError("CloseQuoteExpected", new Object[]{atName});
++ reportFatalError("CloseQuoteExpected", new Object[]{eleName, atName});
+ }
+ } // scanAttributeValue()
+
+--- ./jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_sv.properties Tue Mar 17 11:23:49 2015 -0700
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_sv.properties Mon Jun 01 11:41:52 2015 -0700
+@@ -121,7 +121,7 @@
+ InvalidByte = Ogiltig byte {0} i UTF-8-sekvensen f\u00F6r {1}-byte.
+ ExpectedByte = F\u00F6rv\u00E4ntad byte {0} i UTF-8-sekvensen f\u00F6r {1}-byte.
+ InvalidHighSurrogate = H\u00F6ga surrogatbitar i UTF-8-sekvens f\u00E5r inte \u00F6verskrida 0x10, men 0x{0} hittades.
+- OperationNotSupported = Operation "{0}" st\u00F6ds inte i l\u00E4saren {1}.
++ OperationNotSupported = \u00C5tg\u00E4rden "{0}" st\u00F6ds inte i l\u00E4saren {1}.
+ InvalidASCII = Byte "{0}" ing\u00E5r inte i ASCII-teckenupps\u00E4ttningen (7 bitar).
+ CharConversionFailure = En enhet som fastst\u00E4lls anv\u00E4nda ett visst kodformat f\u00E5r inte inneh\u00E5lla sekvenser som \u00E4r otill\u00E5tna i kodningen.
+
+--- ./jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_sv.java Tue Mar 17 11:23:49 2015 -0700
++++ ./jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_sv.java Mon Jun 01 11:41:52 2015 -0700
+@@ -375,8 +375,8 @@
+
+ { "BAD_CODE", "Parameter f\u00F6r createMessage ligger utanf\u00F6r gr\u00E4nsv\u00E4rdet"},
+ { "FORMAT_FAILED", "Undantag utl\u00F6st vid messageFormat-anrop"},
+- { "line", "Rad #"},
+- { "column","Kolumn #"},
++ { "line", "Rad nr"},
++ { "column","Kolumn nr"},
+
+ {ER_SERIALIZER_NOT_CONTENTHANDLER,
+ "Serializerklassen ''{0}'' implementerar inte org.xml.sax.ContentHandler."},
+--- ./jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_sv.java Tue Mar 17 11:23:49 2015 -0700
++++ ./jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_sv.java Mon Jun 01 11:41:52 2015 -0700
+@@ -480,7 +480,7 @@
+ "FEL! Hittade inte ENDOP efter OP_LOCATIONPATH"},
+
+ { ER_ERROR_OCCURED,
+- "Fel intr\u00E4ffade!"},
++ "Ett fel har intr\u00E4ffat!"},
+
+ { ER_ILLEGAL_VARIABLE_REFERENCE,
+ "VariableReference angiven f\u00F6r variabel som \u00E4r utanf\u00F6r kontext eller som saknar definition! Namn = {0}"},
+@@ -825,7 +825,7 @@
+ // Warnings...
+
+ { WG_LOCALE_NAME_NOT_HANDLED,
+- "spr\u00E5knamnet i funktionen format-number har \u00E4nnu inte hanterats!"},
++ "spr\u00E5kkonventionsnamnet i funktionen format-number har \u00E4nnu inte hanterats!"},
+
+ { WG_PROPERTY_NOT_SUPPORTED,
+ "XSL-egenskapen st\u00F6ds inte: {0}"},
+@@ -871,8 +871,8 @@
+ { "version", ">>>>>>> Xalan version "},
+ { "version2", "<<<<<<<"},
+ { "yes", "ja"},
+- { "line", "Rad #"},
+- { "column", "Kolumn #"},
++ { "line", "Rad nr"},
++ { "column", "Kolumn nr"},
+ { "xsldone", "XSLProcessor: utf\u00F6rd"},
+ { "xpath_option", "xpath-alternativ: "},
+ { "optionIN", " [-in inputXMLURL]"},
+--- ./jaxws/.hgtags Tue Mar 17 11:23:59 2015 -0700
++++ ./jaxws/.hgtags Mon Jun 01 11:42:03 2015 -0700
+@@ -352,6 +352,7 @@
+ 9d0c737694ece23547c0a27dcd0ba6cbcdf577f2 jdk8u31-b13
+ 49e91817cbe1b14f856c26f6e55b7151e3f8c3a8 jdk8u31-b31
+ 9e20c5acb448c5f9b05a4e9b4efc222b3b616c23 jdk8u31-b32
++ea23d583e36301301612946d34ff6aa90d795dd9 jdk8u31-b33
+ 31d43d250c836c13fcc87025837783788c5cd0de jdk8u40-b00
+ 262fb5353ffa661f88b4a9cf2581fcad8c2a43f7 jdk8u40-b01
+ 8043f77ef8a4ded9505269a356c4e2f4f9604cd9 jdk8u40-b02
+@@ -380,6 +381,8 @@
+ b6120aaf2aeef7c5608d578e15e82db7eb24fb2e jdk8u40-b25
+ 1bcb30bdd9883cc7fc1bf70800ea03a4429eaa80 jdk8u40-b26
+ a5f2cdedb940511674e153dce8d3cbc3a0598c9e jdk8u40-b27
++a342e6841e8d3bbef44d4158c980be2ab903e10a jdk8u40-b31
++8960bce00f1abecad665291b0077d6e673c0ff64 jdk8u40-b32
+ 667a4aee3720373f5c286a50f537afd0ff4b65ae jdk8u45-b00
+ cb6added4913f4899bd1689e77be1fe4efcff4f1 jdk8u45-b01
+ 855a7b9302053546e4da94b67cc3b8956f5b4985 jdk8u45-b02
+@@ -394,3 +397,23 @@
+ 855fd9dfcbee177b508413dbab6e46b57dd367c4 jdk8u45-b11
+ 3f6c3f48179ac8bab98509be8708edcea32727b6 jdk8u45-b12
+ 15fb2359f5f86dbacc1bc120f663853b5292cd14 jdk8u45-b13
++bad02ac45d59b5096032cf42bb880dcddffa84b4 jdk8u45-b14
++cc7d796b8f12cc11d415f8ae0ef2d952274fc069 jdk8u45-b15
++8a7494ab96913de396a8f38dd324ac52c44b1a80 jdk8u45-b31
++1c022144b99b859336914740e571c672e51ee1b9 jdk8u45-b32
++74aae7549ef8c6e9f394b75c840bf293e2664858 jdk8u51-b00
++78d8cafb17e46dd2453704f679ca1e431e4df0ba jdk8u51-b01
++9bd6f57d97e5423d5f25774b095124cbe1eeb9c1 jdk8u51-b02
++a9ed1bcefec1ee0d30ea8cf700cf0813d8588eb0 jdk8u51-b03
++3d07c26d5012f47ef274043a6204db686769d65d jdk8u51-b04
++834da1120e80f17356475a5d3f06a678355dbbf6 jdk8u51-b05
++243ba3774d18cfe2e56fa0e0474255787c360d07 jdk8u51-b06
++13d1721eae3bdea08dcd7b84e0856e6769caafc9 jdk8u51-b07
++cbba234a2b481b236e2bf78c892111b86f6bba81 jdk8u51-b08
++9116c6bb2ffa6bb624ad39f7a98b7b9bed4512dc jdk8u51-b09
++783b917616ab6977f9b3157667d1493636ba66d1 jdk8u51-b10
++5a69995912aae8bd61758e95a3b5edac167b6acc jdk8u51-b11
++1a855f69de645c4bd485d5fb6d9a524994278a16 jdk8u51-b12
++880b67345f557d5613071d09c1cf234a7e1b8759 jdk8u51-b13
++4a6824c3fd8d74f83daac1a79952786837a9848c jdk8u51-b14
++dde8e5b2366b9a08d7448c3cef2cabc710cc9da5 jdk8u51-b15
+--- ./jaxws/src/share/jaxws_classes/com/sun/tools/internal/jxc/model/nav/ApNavigator.java Tue Mar 17 11:23:59 2015 -0700
++++ ./jaxws/src/share/jaxws_classes/com/sun/tools/internal/jxc/model/nav/ApNavigator.java Mon Jun 01 11:42:03 2015 -0700
+@@ -30,7 +30,12 @@
+ import com.sun.source.util.Trees;
+ import com.sun.xml.internal.bind.v2.model.nav.Navigator;
+ import com.sun.xml.internal.bind.v2.runtime.Location;
+-
++import java.lang.annotation.Annotation;
++import java.util.ArrayList;
++import java.util.Collection;
++import java.util.HashMap;
++import java.util.List;
++import java.util.Map;
+ import javax.annotation.processing.ProcessingEnvironment;
+ import javax.lang.model.element.AnnotationMirror;
+ import javax.lang.model.element.Element;
+@@ -52,12 +57,6 @@
+ import javax.lang.model.util.Elements;
+ import javax.lang.model.util.SimpleTypeVisitor6;
+ import javax.lang.model.util.Types;
+-import java.lang.annotation.Annotation;
+-import java.util.Collection;
+-import java.util.HashMap;
+-import java.util.HashSet;
+-import java.util.List;
+-import java.util.Map;
+
+ /**
+ * {@link Navigator} implementation for annotation processing.
+@@ -241,7 +240,7 @@
+
+ public VariableElement[] getEnumConstants(TypeElement clazz) {
+ List<? extends Element> elements = env.getElementUtils().getAllMembers(clazz);
+- Collection<VariableElement> constants = new HashSet<VariableElement>();
++ Collection<VariableElement> constants = new ArrayList<VariableElement>();
+ for (Element element : elements) {
+ if (element.getKind().equals(ElementKind.ENUM_CONSTANT)) {
+ constants.add((VariableElement) element);
+--- ./jdk/.hgtags Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/.hgtags Tue Jun 02 13:49:09 2015 +0300
+@@ -353,9 +353,11 @@
+ a21dd7999d1e4ba612c951c2c78504d23eb7243a jdk8u31-b11
+ 6a12f34816d2ee12368274fc21225384a8893426 jdk8u31-b12
+ 1fbdd5d80d0671decd8acb5adb64866f609e986f jdk8u31-b13
+-ced84cf3eebc69f7e04b0098d85dcb3a6b872586 jdk8u31-b31
+ 367c7f061c5831ee54cd197f727e06109a67875b jdk8u31-b14
+ 287e3219f3f531b2f20b50b180802a563a782b26 jdk8u31-b15
++ced84cf3eebc69f7e04b0098d85dcb3a6b872586 jdk8u31-b31
++46338075c4262057099e57638e0758817052da0d jdk8u31-b32
++a1c3099e1b90230435e890ca56adc8a5aa5149ff jdk8u31-b33
+ e6ed015afbbf3459ba3297e270b4f3170e989c80 jdk8u40-b00
+ 6e223d48080ef40f4ec11ecbcd19b4a20813b9eb jdk8u40-b01
+ 4797cd0713b44b009525f1276d571ade7e24f3f5 jdk8u40-b02
+@@ -384,6 +386,8 @@
+ f0d5cb59b0e6a67fa102465458cc4725c6e59089 jdk8u40-b25
+ 97f258823d7d8ee0ec7d774b79cd30492520cc10 jdk8u40-b26
+ d4453d784fb6c52e4ed998b167588551e2fd43c5 jdk8u40-b27
++5a45234e0fc14ff943e13dc1f8966818acaeb4de jdk8u40-b31
++d8ac13c5eafe422d3425dc1aebebfcdf8ca67e2d jdk8u40-b32
+ 1ecc234bd38950a2bc047aa253a5e803f0836a4e jdk8u45-b00
+ e0c7864bbca3f76cde680722f2ae58dff2bff61d jdk8u45-b01
+ 9505c0392cddbfb905401e9fccc23262edc3254f jdk8u45-b02
+@@ -398,3 +402,23 @@
+ c669323bd55ac59ad26c7ee4f47a6daefc82af8e jdk8u45-b11
+ 6a8f9512afa687632f0a0d881bbdb446d984a74c jdk8u45-b12
+ 55a75b0db87693e1e186752f553c337cb035a38e jdk8u45-b13
++20e6cadfac43717a81d99daff5e769de695992cd jdk8u45-b14
++7087623dfa7033f8738d537864e4bac6b8528172 jdk8u45-b15
++c7fbbf6133c339fb56f03241de28666774023d5d jdk8u45-b31
++ea547c5a1217fe7916f366950d0e3156e4225aa5 jdk8u45-b32
++ac97b69b88e37c18c1b077be8b1f100b6803fea5 jdk8u51-b00
++2e0732282470f7a02d57af5fc8542efa9db7b3e4 jdk8u51-b01
++cc75137936f9a8e97017e7e18b1064b76238116f jdk8u51-b02
++f732971e3d20664164a3797cf0b1a4cb80470959 jdk8u51-b03
++6d6c0c93e822dc0e37d657060488de934ac2eb4c jdk8u51-b04
++7d9a58baae72804f0852890cf9fc75e6a759b608 jdk8u51-b05
++93e6b2bbc9ff46b3fea1fe89b810259d150a9fc4 jdk8u51-b06
++286b9a885fcc6245fdf2b20697473ec3b35f2538 jdk8u51-b07
++f7da0b943b9381aaf378d0c7b337dd7654335293 jdk8u51-b08
++7e8459e7a45cb5b49de376893e3a95bfa92d0325 jdk8u51-b09
++dcc75a75d3a30270fbf52d0d0b0504319882e419 jdk8u51-b10
++3ed614d4eee7c3225d48ed7c90622dd888cd143e jdk8u51-b11
++0010682d9a2b81daf7c08239161f7c2a91977299 jdk8u51-b12
++217fa7205549d196c60f814bf3fc9795d756f493 jdk8u51-b13
++b7403e15864dc0c1f9740d66af91bddb3e2215e8 jdk8u51-b14
++192bda44c0c463104c96058bb815a546b282ca43 jdk8u51-b15
+--- ./jdk/make/data/tzdata/VERSION Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/make/data/tzdata/VERSION Tue Jun 02 13:49:09 2015 +0300
+@@ -21,4 +21,4 @@
+ # or visit www.oracle.com if you need additional information or have any
+ # questions.
+ #
+-tzdata2015a
++tzdata2015d
+--- ./jdk/make/data/tzdata/africa Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/make/data/tzdata/africa Tue Jun 02 13:49:09 2015 +0300
+@@ -342,35 +342,29 @@
+ # above) says DST had no affect on electricity consumption. There is
+ # no information about when DST will end this fall. See:
+ # http://abcnews.go.com/International/wireStory/el-sissi-pushes-egyptians-line-23614833
++
++# From Steffen Thorsen (2015-04-08):
++# Egypt will start DST on midnight after Thursday, April 30, 2015.
++# This is based on a law (no 35) from May 15, 2014 saying it starts the last
++# Thursday of April.... Clocks will still be turned back for Ramadan, but
++# dates not yet announced....
++# http://almogaz.com/news/weird-news/2015/04/05/1947105 ...
++# http://www.timeanddate.com/news/time/egypt-starts-dst-2015.html
++
++# From Ahmed Nazmy (2015-04-20):
++# Egypt's ministers cabinet just announced ... that it will cancel DST at
++# least for 2015.
+ #
+-# For now, guess that later spring and fall transitions will use
+-# 2010's rules, and guess that Egypt will switch to standard time at
+-# 24:00 the last Thursday before Ramadan, and back to DST at 00:00 the
+-# first Friday after Ramadan. To implement this,
+-# transition dates for 2015 through 2037 were determined by running
+-# the following program under GNU Emacs 24.3, with the results integrated
+-# by hand into the table below. Ramadan again intrudes on the guessed
+-# DST starting in 2038, but that's beyond our somewhat-arbitrary cutoff.
+-# (let ((islamic-year 1436))
+-# (while (< islamic-year 1460)
+-# (let ((a (calendar-islamic-to-absolute (list 9 1 islamic-year)))
+-# (b (calendar-islamic-to-absolute (list 10 1 islamic-year)))
+-# (friday 5))
+-# (while (/= friday (mod a 7))
+-# (setq a (1- a)))
+-# (while (/= friday (mod b 7))
+-# (setq b (1+ b)))
+-# (setq a (1- a))
+-# (setq b (1- b))
+-# (setq a (calendar-gregorian-from-absolute a))
+-# (setq b (calendar-gregorian-from-absolute b))
+-# (insert
+-# (format
+-# (concat "Rule\tEgypt\t%d\tonly\t-\t%s\t%2d\t24:00\t0\t-\n"
+-# "Rule\tEgypt\t%d\tonly\t-\t%s\t%2d\t24:00\t1:00\tS\n")
+-# (car (cdr (cdr a))) (calendar-month-name (car a) t) (car (cdr a))
+-# (car (cdr (cdr b))) (calendar-month-name (car b) t) (car (cdr b)))))
+-# (setq islamic-year (+ 1 islamic-year))))
++# From Tim Parenti (2015-04-20):
++# http://english.ahram.org.eg/WriterArticles/NewsContentP/1/128195/Egypt/No-daylight-saving-this-summer-Egypts-prime-minist.aspx
++# "Egypt's cabinet agreed on Monday not to switch clocks for daylight saving
++# time this summer, and carry out studies on the possibility of canceling the
++# practice altogether in future years."
++#
++# From Paul Eggert (2015-04-20):
++# For now, assume DST will be canceled. Any resumption would likely
++# use different rules anyway.
++
+ Rule Egypt 2008 only - Aug lastThu 24:00 0 -
+ Rule Egypt 2009 only - Aug 20 24:00 0 -
+ Rule Egypt 2010 only - Aug 10 24:00 0 -
+@@ -379,22 +373,7 @@
+ Rule Egypt 2014 only - May 15 24:00 1:00 S
+ Rule Egypt 2014 only - Jun 26 24:00 0 -
+ Rule Egypt 2014 only - Jul 31 24:00 1:00 S
+-Rule Egypt 2014 max - Sep lastThu 24:00 0 -
+-Rule Egypt 2015 2019 - Apr lastFri 0:00s 1:00 S
+-Rule Egypt 2015 only - Jun 11 24:00 0 -
+-Rule Egypt 2015 only - Jul 23 24:00 1:00 S
+-Rule Egypt 2016 only - Jun 2 24:00 0 -
+-Rule Egypt 2016 only - Jul 7 24:00 1:00 S
+-Rule Egypt 2017 only - May 25 24:00 0 -
+-Rule Egypt 2017 only - Jun 29 24:00 1:00 S
+-Rule Egypt 2018 only - May 10 24:00 0 -
+-Rule Egypt 2018 only - Jun 14 24:00 1:00 S
+-Rule Egypt 2019 only - May 2 24:00 0 -
+-Rule Egypt 2019 only - Jun 6 24:00 1:00 S
+-Rule Egypt 2020 only - May 28 24:00 1:00 S
+-Rule Egypt 2021 only - May 13 24:00 1:00 S
+-Rule Egypt 2022 only - May 5 24:00 1:00 S
+-Rule Egypt 2023 max - Apr lastFri 0:00s 1:00 S
++Rule Egypt 2014 only - Sep lastThu 24:00 0 -
+
+ # Zone NAME GMTOFF RULES FORMAT [UNTIL]
+ Zone Africa/Cairo 2:05:09 - LMT 1900 Oct
+--- ./jdk/make/data/tzdata/antarctica Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/make/data/tzdata/antarctica Tue Jun 02 13:49:09 2015 +0300
+@@ -38,41 +38,6 @@
+ # I made up all time zone abbreviations mentioned here; corrections welcome!
+ # FORMAT is 'zzz' and GMTOFF is 0 for locations while uninhabited.
+
+-# These rules are stolen from the 'southamerica' file.
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+-Rule ArgAQ 1964 1966 - Mar 1 0:00 0 -
+-Rule ArgAQ 1964 1966 - Oct 15 0:00 1:00 S
+-Rule ArgAQ 1967 only - Apr 2 0:00 0 -
+-Rule ArgAQ 1967 1968 - Oct Sun>=1 0:00 1:00 S
+-Rule ArgAQ 1968 1969 - Apr Sun>=1 0:00 0 -
+-Rule ArgAQ 1974 only - Jan 23 0:00 1:00 S
+-Rule ArgAQ 1974 only - May 1 0:00 0 -
+-Rule ChileAQ 1972 1986 - Mar Sun>=9 3:00u 0 -
+-Rule ChileAQ 1974 1987 - Oct Sun>=9 4:00u 1:00 S
+-Rule ChileAQ 1987 only - Apr 12 3:00u 0 -
+-Rule ChileAQ 1988 1989 - Mar Sun>=9 3:00u 0 -
+-Rule ChileAQ 1988 only - Oct Sun>=1 4:00u 1:00 S
+-Rule ChileAQ 1989 only - Oct Sun>=9 4:00u 1:00 S
+-Rule ChileAQ 1990 only - Mar 18 3:00u 0 -
+-Rule ChileAQ 1990 only - Sep 16 4:00u 1:00 S
+-Rule ChileAQ 1991 1996 - Mar Sun>=9 3:00u 0 -
+-Rule ChileAQ 1991 1997 - Oct Sun>=9 4:00u 1:00 S
+-Rule ChileAQ 1997 only - Mar 30 3:00u 0 -
+-Rule ChileAQ 1998 only - Mar Sun>=9 3:00u 0 -
+-Rule ChileAQ 1998 only - Sep 27 4:00u 1:00 S
+-Rule ChileAQ 1999 only - Apr 4 3:00u 0 -
+-Rule ChileAQ 1999 2010 - Oct Sun>=9 4:00u 1:00 S
+-Rule ChileAQ 2000 2007 - Mar Sun>=9 3:00u 0 -
+-# N.B.: the end of March 29 in Chile is March 30 in Universal time,
+-# which is used below in specifying the transition.
+-Rule ChileAQ 2008 only - Mar 30 3:00u 0 -
+-Rule ChileAQ 2009 only - Mar Sun>=9 3:00u 0 -
+-Rule ChileAQ 2010 only - Apr Sun>=1 3:00u 0 -
+-Rule ChileAQ 2011 only - May Sun>=2 3:00u 0 -
+-Rule ChileAQ 2011 only - Aug Sun>=16 4:00u 1:00 S
+-Rule ChileAQ 2012 2015 - Apr Sun>=23 3:00u 0 -
+-Rule ChileAQ 2012 2014 - Sep Sun>=2 4:00u 1:00 S
+-
+ # Argentina - year-round bases
+ # Belgrano II, Confin Coast, -770227-0343737, since 1972-02-05
+ # Carlini, Potter Cove, King George Island, -6414-0602320, since 1982-01
+@@ -367,21 +332,7 @@
+ # USA - year-round bases
+ #
+ # Palmer, Anvers Island, since 1965 (moved 2 miles in 1968)
+-#
+-# From Ethan Dicks (1996-10-06):
+-# It keeps the same time as Punta Arenas, Chile, because, just like us
+-# and the South Pole, that's the other end of their supply line....
+-# I verified with someone who was there that since 1980,
+-# Palmer has followed Chile. Prior to that, before the Falklands War,
+-# Palmer used to be supplied from Argentina.
+-#
+-# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+-Zone Antarctica/Palmer 0 - zzz 1965
+- -4:00 ArgAQ AR%sT 1969 Oct 5
+- -3:00 ArgAQ AR%sT 1982 May
+- -4:00 ChileAQ CL%sT 2015 Apr 26 3:00u
+- -3:00 - CLT
+-#
++# See 'southamerica' for Antarctica/Palmer, since it uses South American DST.
+ #
+ # McMurdo Station, Ross Island, since 1955-12
+ # Amundsen-Scott South Pole Station, continuously occupied since 1956-11-20
+--- ./jdk/make/data/tzdata/asia Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/make/data/tzdata/asia Tue Jun 02 13:49:09 2015 +0300
+@@ -1927,6 +1927,13 @@
+ # was at the start of 2008-03-31 (the day of Steffen Thorsen's report);
+ # this is almost surely wrong.
+
++# From Ganbold Tsagaankhuu (2015-03-10):
++# It seems like yesterday Mongolian Government meeting has concluded to use
++# daylight saving time in Mongolia.... Starting at 2:00AM of last Saturday of
++# March 2015, daylight saving time starts. And 00:00AM of last Saturday of
++# September daylight saving time ends. Source:
++# http://zasag.mn/news/view/8969
++
+ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+ Rule Mongol 1983 1984 - Apr 1 0:00 1:00 S
+ Rule Mongol 1983 only - Oct 1 0:00 0 -
+@@ -1947,6 +1954,8 @@
+ Rule Mongol 2001 only - Apr lastSat 2:00 1:00 S
+ Rule Mongol 2001 2006 - Sep lastSat 2:00 0 -
+ Rule Mongol 2002 2006 - Mar lastSat 2:00 1:00 S
++Rule Mongol 2015 max - Mar lastSat 2:00 1:00 S
++Rule Mongol 2015 max - Sep lastSat 0:00 0 -
+
+ # Zone NAME GMTOFF RULES FORMAT [UNTIL]
+ # Hovd, a.k.a. Chovd, Dund-Us, Dzhargalant, Khovd, Jirgalanta
+@@ -2365,13 +2374,19 @@
+ # official source...:
+ # http://www.palestinecabinet.gov.ps/ar/Views/ViewDetails.aspx?pid=1252
+
+-# From Paul Eggert (2013-09-24):
+-# For future dates, guess the last Thursday in March at 24:00 through
+-# the first Friday on or after September 21 at 00:00. This is consistent with
+-# the predictions in today's editions of the following URLs,
+-# which are for Gaza and Hebron respectively:
+-# http://www.timeanddate.com/worldclock/timezone.html?n=702
+-# http://www.timeanddate.com/worldclock/timezone.html?n=2364
++# From Steffen Thorsen (2015-03-03):
++# Sources such as http://www.alquds.com/news/article/view/id/548257
++# and http://www.raya.ps/ar/news/890705.html say Palestine areas will
++# start DST on 2015-03-28 00:00 which is one day later than expected.
++#
++# From Paul Eggert (2015-03-03):
++# http://www.timeanddate.com/time/change/west-bank/ramallah?year=2014
++# says that the fall 2014 transition was Oct 23 at 24:00.
++# For future dates, guess the last Friday in March at 24:00 through
++# the first Friday on or after October 21 at 00:00. This is consistent with
++# the predictions in today's editions of the following URLs:
++# http://www.timeanddate.com/time/change/gaza-strip/gaza
++# http://www.timeanddate.com/time/change/west-bank/hebron
+
+ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+ Rule EgyptAsia 1957 only - May 10 0:00 1:00 S
+@@ -2397,9 +2412,11 @@
+ Rule Palestine 2011 only - Aug 1 0:00 0 -
+ Rule Palestine 2011 only - Aug 30 0:00 1:00 S
+ Rule Palestine 2011 only - Sep 30 0:00 0 -
+-Rule Palestine 2012 max - Mar lastThu 24:00 1:00 S
++Rule Palestine 2012 2014 - Mar lastThu 24:00 1:00 S
+ Rule Palestine 2012 only - Sep 21 1:00 0 -
+-Rule Palestine 2013 max - Sep Fri>=21 0:00 0 -
++Rule Palestine 2013 only - Sep Fri>=21 0:00 0 -
++Rule Palestine 2014 max - Oct Fri>=21 0:00 0 -
++Rule Palestine 2015 max - Mar lastFri 24:00 1:00 S
+
+ # Zone NAME GMTOFF RULES FORMAT [UNTIL]
+ Zone Asia/Gaza 2:17:52 - LMT 1900 Oct
+--- ./jdk/make/data/tzdata/australasia Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/make/data/tzdata/australasia Tue Jun 02 13:49:09 2015 +0300
+@@ -396,6 +396,7 @@
+ 9:39:00 - LMT 1901 # Agana
+ 10:00 - GST 2000 Dec 23 # Guam
+ 10:00 - ChST # Chamorro Standard Time
++Link Pacific/Guam Pacific/Saipan # N Mariana Is
+
+ # Kiribati
+ # Zone NAME GMTOFF RULES FORMAT [UNTIL]
+@@ -411,12 +412,7 @@
+ 14:00 - LINT
+
+ # N Mariana Is
+-# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+-Zone Pacific/Saipan -14:17:00 - LMT 1844 Dec 31
+- 9:43:00 - LMT 1901
+- 9:00 - MPT 1969 Oct # N Mariana Is Time
+- 10:00 - MPT 2000 Dec 23
+- 10:00 - ChST # Chamorro Standard Time
++# See Pacific/Guam.
+
+ # Marshall Is
+ # Zone NAME GMTOFF RULES FORMAT [UNTIL]
+@@ -586,6 +582,7 @@
+ -11:00 - NST 1967 Apr # N=Nome
+ -11:00 - BST 1983 Nov 30 # B=Bering
+ -11:00 - SST # S=Samoa
++Link Pacific/Pago_Pago Pacific/Midway # in US minor outlying islands
+
+ # Samoa (formerly and also known as Western Samoa)
+
+@@ -767,23 +764,7 @@
+ # uninhabited
+
+ # Midway
+-#
+-# From Mark Brader (2005-01-23):
+-# [Fallacies and Fantasies of Air Transport History, by R.E.G. Davies,
+-# published 1994 by Paladwr Press, McLean, VA, USA; ISBN 0-9626483-5-3]
+-# reproduced a Pan American Airways timetable from 1936, for their weekly
+-# "Orient Express" flights between San Francisco and Manila, and connecting
+-# flights to Chicago and the US East Coast. As it uses some time zone
+-# designations that I've never seen before:....
+-# Fri. 6:30A Lv. HONOLOLU (Pearl Harbor), H.I. H.L.T. Ar. 5:30P Sun.
+-# " 3:00P Ar. MIDWAY ISLAND . . . . . . . . . M.L.T. Lv. 6:00A "
+-#
+-Zone Pacific/Midway -11:49:28 - LMT 1901
+- -11:00 - NST 1956 Jun 3
+- -11:00 1:00 NDT 1956 Sep 2
+- -11:00 - NST 1967 Apr # N=Nome
+- -11:00 - BST 1983 Nov 30 # B=Bering
+- -11:00 - SST # S=Samoa
++# See Pacific/Pago_Pago.
+
+ # Palmyra
+ # uninhabited since World War II; was probably like Pacific/Kiritimati
+--- ./jdk/make/data/tzdata/backward Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/make/data/tzdata/backward Tue Jun 02 13:49:09 2015 +0300
+@@ -43,6 +43,7 @@
+ Link America/Indiana/Knox America/Knox_IN
+ Link America/Kentucky/Louisville America/Louisville
+ Link America/Argentina/Mendoza America/Mendoza
++Link America/Toronto America/Montreal
+ Link America/Rio_Branco America/Porto_Acre
+ Link America/Argentina/Cordoba America/Rosario
+ Link America/Denver America/Shiprock
+--- ./jdk/make/data/tzdata/europe Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/make/data/tzdata/europe Tue Jun 02 13:49:09 2015 +0300
+@@ -99,7 +99,7 @@
+ # 1:00:14 SET Swedish (1879-1899)*
+ # 2:00 EET EEST Eastern Europe
+ # 3:00 FET Further-eastern Europe (2011-2014)*
+-# 3:00 MSK MSD MSM* Moscow
++# 3:00 MSK MSD MSM* Minsk, Moscow
+
+ # From Peter Ilieve (1994-12-04),
+ # The original six [EU members]: Belgium, France, (West) Germany, Italy,
+@@ -2423,7 +2423,7 @@
+ 4:00 Russia VOL%sT 1989 Mar 26 2:00s # Volgograd T
+ 3:00 Russia VOL%sT 1991 Mar 31 2:00s
+ 4:00 - VOLT 1992 Mar 29 2:00s
+- 3:00 Russia MSK 2011 Mar 27 2:00s
++ 3:00 Russia MSK/MSD 2011 Mar 27 2:00s
+ 4:00 - MSK 2014 Oct 26 2:00s
+ 3:00 - MSK
+
+--- ./jdk/make/data/tzdata/northamerica Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/make/data/tzdata/northamerica Tue Jun 02 13:49:09 2015 +0300
+@@ -250,9 +250,14 @@
+ # The law doesn't give abbreviations.
+ #
+ # From Paul Eggert (2000-01-08), following a heads-up from Rives McDow:
+-# Public law 106-564 (2000-12-23) introduced the abbreviation
+-# "Chamorro Standard Time" for time in Guam and the Northern Marianas.
+-# See the file "australasia".
++# Public law 106-564 (2000-12-23) introduced ... "Chamorro Standard Time"
++# for time in Guam and the Northern Marianas. See the file "australasia".
++#
++# From Paul Eggert (2015-04-17):
++# HST and HDT are standardized abbreviations for Hawaii-Aleutian
++# standard and daylight times. See section 9.47 (p 234) of the
++# U.S. Government Printing Office Style Manual (2008)
++# http://www.gpo.gov/fdsys/pkg/GPO-STYLEMANUAL-2008/pdf/GPO-STYLEMANUAL-2008.pdf
+
+ # From Arthur David Olson, 2005-08-09
+ # The following was signed into law on 2005-08-08.
+@@ -559,7 +564,7 @@
+ -11:00 - BST 1969
+ -11:00 US B%sT 1983 Oct 30 2:00
+ -10:00 US AH%sT 1983 Nov 30
+- -10:00 US HA%sT
++ -10:00 US H%sT
+ # The following switches don't quite make our 1970 cutoff.
+ #
+ # Shanks writes that part of southwest Alaska (e.g. Aniak)
+@@ -1354,14 +1359,9 @@
+
+ # Quebec
+
+-# From Paul Eggert (2013-08-30):
+-# Since 1970 most of Quebec has been like Toronto.
+-# However, because earlier versions of the tz database mistakenly relied on data
+-# from Shanks & Pottenger saying that Quebec differed from Ontario after 1970,
+-# a separate entry was created for most of Quebec. We're loath to lose
+-# its pre-1970 info, even though the tz database is normally limited to
+-# zones that differ after 1970, so keep this otherwise out-of-scope entry.
+-
++# From Paul Eggert (2015-03-24):
++# See America/Toronto for most of Quebec, including Montreal.
++#
+ # Matthews and Vincent (1998) also write that Quebec east of the -63
+ # meridian is supposed to observe AST, but residents as far east as
+ # Natashquan use EST/EDT, and residents east of Natashquan use AST.
+@@ -1375,39 +1375,10 @@
+ # For lack of better info, guess this practice began around 1970, contra to
+ # Shanks & Pottenger who have this region observing AST/ADT.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+-Rule Mont 1917 only - Mar 25 2:00 1:00 D
+-Rule Mont 1917 only - Apr 24 0:00 0 S
+-Rule Mont 1919 only - Mar 31 2:30 1:00 D
+-Rule Mont 1919 only - Oct 25 2:30 0 S
+-Rule Mont 1920 only - May 2 2:30 1:00 D
+-Rule Mont 1920 1922 - Oct Sun>=1 2:30 0 S
+-Rule Mont 1921 only - May 1 2:00 1:00 D
+-Rule Mont 1922 only - Apr 30 2:00 1:00 D
+-Rule Mont 1924 only - May 17 2:00 1:00 D
+-Rule Mont 1924 1926 - Sep lastSun 2:30 0 S
+-Rule Mont 1925 1926 - May Sun>=1 2:00 1:00 D
+-Rule Mont 1927 1937 - Apr lastSat 24:00 1:00 D
+-Rule Mont 1927 1937 - Sep lastSat 24:00 0 S
+-Rule Mont 1938 1940 - Apr lastSun 0:00 1:00 D
+-Rule Mont 1938 1939 - Sep lastSun 0:00 0 S
+-Rule Mont 1946 1973 - Apr lastSun 2:00 1:00 D
+-Rule Mont 1945 1948 - Sep lastSun 2:00 0 S
+-Rule Mont 1949 1950 - Oct lastSun 2:00 0 S
+-Rule Mont 1951 1956 - Sep lastSun 2:00 0 S
+-Rule Mont 1957 1973 - Oct lastSun 2:00 0 S
+-
+ # Zone NAME GMTOFF RULES FORMAT [UNTIL]
+ Zone America/Blanc-Sablon -3:48:28 - LMT 1884
+ -4:00 Canada A%sT 1970
+ -4:00 - AST
+-Zone America/Montreal -4:54:16 - LMT 1884
+- -5:00 Mont E%sT 1918
+- -5:00 Canada E%sT 1919
+- -5:00 Mont E%sT 1942 Feb 9 2:00s
+- -5:00 Canada E%sT 1946
+- -5:00 Mont E%sT 1974
+- -5:00 Canada E%sT
+
+ # Ontario
+
+@@ -1898,17 +1869,115 @@
+ # Dawson switched to PST in 1973. Inuvik switched to MST in 1979.
+ # Mathew Englander (1996-10-07) gives the following refs:
+ # * 1967. Paragraph 28(34)(g) of the Interpretation Act, S.C. 1967-68,
+-# c. 7 defines Yukon standard time as UTC-9. This is still valid;
++# c. 7 defines Yukon standard time as UTC-9....
+ # see Interpretation Act, R.S.C. 1985, c. I-21, s. 35(1).
++# [http://canlii.ca/t/7vhg]
+ # * C.O. 1973/214 switched Yukon to PST on 1973-10-28 00:00.
+ # * O.I.C. 1980/02 established DST.
+ # * O.I.C. 1987/056 changed DST to Apr firstSun 2:00 to Oct lastSun 2:00.
+-# Shanks & Pottenger say Yukon's 1973-10-28 switch was at 2:00; go
+-# with Englander.
+-# From Chris Walton (2006-06-26):
+-# Here is a link to the old daylight saving portion of the interpretation
+-# act which was last updated in 1987:
+-# http://www.gov.yk.ca/legislation/regs/oic1987_056.pdf
++
++# From Brian Inglis (2015-04-14):
++#
++# I tried to trace the history of Yukon time and found the following
++# regulations, giving the reference title and URL if found, regulation name,
++# and relevant quote if available. Each regulation specifically revokes its
++# predecessor. The final reference is to the current Interpretation Act
++# authorizing and resulting from these regulatory changes.
++#
++# Only recent regulations were retrievable via Yukon government site search or
++# index, and only some via Canadian legal sources. Other sources used include
++# articles titled "Standard Time and Time Zones in Canada" from JRASC via ADS
++# Abstracts, cited by ADO for 1932 ..., and updated versions from 1958 and
++# 1970 quoted below; each article includes current extracts from provincial
++# and territorial ST and DST regulations at the end, summaries and details of
++# standard times and daylight saving time at many locations across Canada,
++# with time zone maps, tables and calculations for Canadian Sunrise, Sunset,
++# and LMST; they also cover many countries and global locations, with a chart
++# and table showing current Universal Time offsets, and may be useful as
++# another source of information for 1970 and earlier.
++#
++# * Standard Time and Time Zones in Canada; Smith, C.C.; JRASC, Vol. 26,
++# pp.49-77; February 1932; SAO/NASA Astrophysics Data System (ADS)
++# http://adsabs.harvard.edu/abs/1932JRASC..26...49S from p.75:
++# Yukon Interpretation Ordinance
++# Yukon standard time is the local mean time at the one hundred and
++# thirty-fifth meridian.
++#
++# * Standard Time and Time Zones in Canada; Smith, C.C.; Thomson, Malcolm M.;
++# JRASC, Vol. 52, pp.193-223; October 1958; SAO/NASA Astrophysics Data System
++# (ADS) http://adsabs.harvard.edu/abs/1958JRASC..52..193S from pp.220-1:
++# Yukon Interpretation Ordinance, 1955, Chap. 16.
++#
++# (1) Subject to this section, standard time shall be reckoned as nine
++# hours behind Greenwich Time and called Yukon Standard Time.
++#
++# (2) Notwithstanding subsection (1), the Commissioner may make regulations
++# varying the manner of reckoning standard time.
++#
++# * Yukon Territory Commissioner's Order 1966-20 Interpretation Ordinance
++# http://? - no online source found
++#
++# * Standard Time and Time Zones in Canada; Thomson, Malcolm M.; JRASC,
++# Vol. 64, pp.129-162; June 1970; SAO/NASA Astrophysics Data System (ADS)
++# http://adsabs.harvard.edu/abs/1970JRASC..64..129T from p.156: Yukon
++# Territory Commissioner's Order 1967-59 Interpretation Ordinance ...
++#
++# 1. Commissioner's Order 1966-20 dated at Whitehorse in the Yukon
++# Territory on 27th January, 1966, is hereby revoked.
++#
++# 2. Yukon (East) Standard Time as defined by section 36 of the
++# Interpretation Ordinance from and after mid-night on the 28th day of May,
++# 1967 shall be reckoned in the same manner as Pacific Standard Time, that
++# is to say, eight hours behind Greenwich Time in the area of the Yukon
++# Territory lying east of the 138th degree longitude west.
++#
++# 3. In the remainder of the Territory, lying west of the 138th degree
++# longitude west, Yukon (West) Standard Time shall be reckoned as nine
++# hours behind Greenwich Time.
++#
++# * Yukon Standard Time defined as Pacific Standard Time, YCO 1973/214
++# http://www.canlii.org/en/yk/laws/regu/yco-1973-214/latest/yco-1973-214.html
++# C.O. 1973/214 INTERPRETATION ACT ...
++#
++# 1. Effective October 28, 1973 Commissioner's Order 1967/59 is hereby
++# revoked.
++#
++# 2. Yukon Standard Time as defined by section 36 of the Interpretation
++# Act from and after midnight on the twenty-eighth day of October, 1973
++# shall be reckoned in the same manner as Pacific Standard Time, that is
++# to say eight hours behind Greenwich Time.
++#
++# * O.I.C. 1980/02 INTERPRETATION ACT
++# http://? - no online source found
++#
++# * Yukon Daylight Saving Time, YOIC 1987/56
++# http://www.canlii.org/en/yk/laws/regu/yoic-1987-56/latest/yoic-1987-56.html
++# O.I.C. 1987/056 INTERPRETATION ACT ...
++#
++# In every year between
++# (a) two o'clock in the morning in the first Sunday in April, and
++# (b) two o'clock in the morning in the last Sunday in October,
++# Standard Time shall be reckoned as seven hours behind Greenwich Time and
++# called Yukon Daylight Saving Time.
++# ...
++# Dated ... 9th day of March, A.D., 1987.
++#
++# * Yukon Daylight Saving Time 2006, YOIC 2006/127
++# http://www.canlii.org/en/yk/laws/regu/yoic-2006-127/latest/yoic-2006-127.html
++# O.I.C. 2006/127 INTERPRETATION ACT ...
++#
++# 1. In Yukon each year the time for general purposes shall be 7 hours
++# behind Greenwich mean time during the period commencing at two o'clock
++# in the forenoon on the second Sunday of March and ending at two o'clock
++# in the forenoon on the first Sunday of November and shall be called
++# Yukon Daylight Saving Time.
++#
++# 2. Order-in-Council 1987/56 is revoked.
++#
++# 3. This order comes into force January 1, 2007.
++#
++# * Interpretation Act, RSY 2002, c 125
++# http://www.canlii.org/en/yk/laws/stat/rsy-2002-c-125/latest/rsy-2002-c-125.html
+
+ # From Rives McDow (1999-09-04):
+ # Nunavut ... moved ... to incorporate the whole territory into one time zone.
+@@ -2134,7 +2203,7 @@
+ -7:00 NT_YK M%sT 1980
+ -7:00 Canada M%sT
+ Zone America/Whitehorse -9:00:12 - LMT 1900 Aug 20
+- -9:00 NT_YK Y%sT 1966 Jul 1 2:00
++ -9:00 NT_YK Y%sT 1967 May 28 0:00
+ -8:00 NT_YK P%sT 1980
+ -8:00 Canada P%sT
+ Zone America/Dawson -9:17:40 - LMT 1900 Aug 20
+@@ -2335,8 +2404,24 @@
+ # "...the new time zone will come into effect at two o'clock on the first Sunday
+ # of February, when we will have to advance the clock one hour from its current
+ # time..."
++# Also, the new zone will not use DST.
+ #
+-# Also, the new zone will not use DST.
++# From Carlos Raúl Perasso (2015-02-02):
++# The decree that modifies the Mexican Hour System Law has finally
++# been published at the Diario Oficial de la Federación
++# http://www.dof.gob.mx/nota_detalle.php?codigo=5380123&fecha=31/01/2015
++# It establishes 5 zones for Mexico:
++# 1- Zona Centro (Central Zone): Corresponds to longitude 90 W,
++# includes most of Mexico, excluding what's mentioned below.
++# 2- Zona Pacífico (Pacific Zone): Longitude 105 W, includes the
++# states of Baja California Sur; Chihuahua; Nayarit (excluding Bahía
++# de Banderas which lies in Central Zone); Sinaloa and Sonora.
++# 3- Zona Noroeste (Northwest Zone): Longitude 120 W, includes the
++# state of Baja California.
++# 4- Zona Sureste (Southeast Zone): Longitude 75 W, includes the state
++# of Quintana Roo.
++# 5- The islands, reefs and keys shall take their timezone from the
++# longitude they are located at.
+
+ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+ Rule Mexico 1939 only - Feb 5 0:00 1:00 D
+@@ -2531,14 +2616,9 @@
+ ###############################################################################
+
+ # Anguilla
++# Antigua and Barbuda
+ # See America/Port_of_Spain.
+
+-# Antigua and Barbuda
+-# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+-Zone America/Antigua -4:07:12 - LMT 1912 Mar 2
+- -5:00 - EST 1951
+- -4:00 - AST
+-
+ # Bahamas
+ #
+ # For 1899 Milne gives -5:09:29.5; round that.
+@@ -2604,10 +2684,7 @@
+ -4:00 US A%sT
+
+ # Cayman Is
+-# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+-Zone America/Cayman -5:25:32 - LMT 1890 # Georgetown
+- -5:07:11 - KMT 1912 Feb # Kingston Mean Time
+- -5:00 - EST
++# See America/Panama.
+
+ # Costa Rica
+
+@@ -3130,6 +3207,7 @@
+ Zone America/Panama -5:18:08 - LMT 1890
+ -5:19:36 - CMT 1908 Apr 22 # Colón Mean Time
+ -5:00 - EST
++Link America/Panama America/Cayman
+
+ # Puerto Rico
+ # There are too many San Juans elsewhere, so we'll use 'Puerto_Rico'.
+--- ./jdk/make/data/tzdata/southamerica Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/make/data/tzdata/southamerica Tue Jun 02 13:49:09 2015 +0300
+@@ -1121,6 +1121,60 @@
+
+ # Chile
+
++# From Paul Eggert (2015-04-03):
++# Shanks & Pottenger says America/Santiago introduced standard time in
++# 1890 and rounds its UTC offset to 70W40; guess that in practice this
++# was the same offset as in 1916-1919. It also says Pacific/Easter
++# standardized on 109W22 in 1890; assume this didn't change the clocks.
++#
++# Dates for America/Santiago from 1910 to 2004 are primarily from
++# the following source, cited by Oscar van Vlijmen (2006-10-08):
++# [1] Chile Law
++# http://www.webexhibits.org/daylightsaving/chile.html
++# This contains a copy of a this official table:
++# Cambios en la hora oficial de Chile desde 1900 (retrieved 2008-03-30)
++# http://web.archive.org/web/20080330200901/http://www.horaoficial.cl/cambio.htm
++# [1] needs several corrections, though.
++#
++# The first set of corrections is from:
++# [2] History of the Official Time of Chile
++# http://www.horaoficial.cl/ing/horaof_ing.html (retrieved 2012-03-06). See:
++# http://web.archive.org/web/20120306042032/http://www.horaoficial.cl/ing/horaof_ing.html
++# This is an English translation of:
++# Historia de la hora oficial de Chile (retrieved 2012-10-24). See:
++# http://web.archive.org/web/20121024234627/http://www.horaoficial.cl/horaof.htm
++# A fancier Spanish version (requiring mouse-clicking) is at:
++# http://www.horaoficial.cl/historia_hora.html
++# Conflicts between [1] and [2] were resolved as follows:
++#
++# - [1] says the 1910 transition was Jan 1, [2] says Jan 10 and cites
++# Boletín Nº 1, Aviso Nº 1 (1910). Go with [2].
++#
++# - [1] says SMT was -4:42:45, [2] says Chile's official time from
++# 1916 to 1919 was -4:42:46.3, the meridian of Chile's National
++# Astronomical Observatory (OAN), then located in what is now
++# Quinta Normal in Santiago. Go with [2], rounding it to -4:42:46.
++#
++# - [1] says the 1918 transition was Sep 1, [2] says Sep 10 and cites
++# Boletín Nº 22, Aviso Nº 129/1918 (1918-08-23). Go with [2].
++#
++# - [1] does not give times for transitions; assume they occur
++# at midnight mainland time, the current common practice. However,
++# go with [2]'s specification of 23:00 for the 1947-05-21 transition.
++#
++# Another correction to [1] is from Jesper Nørgaard Welen, who
++# wrote (2006-10-08), "I think that there are some obvious mistakes in
++# the suggested link from Oscar van Vlijmen,... for instance entry 66
++# says that GMT-4 ended 1990-09-12 while entry 67 only begins GMT-3 at
++# 1990-09-15 (they should have been 1990-09-15 and 1990-09-16
++# respectively), but anyhow it clears up some doubts too."
++#
++# Data for Pacific/Easter from 1910 through 1967 come from Shanks &
++# Pottenger. After that, for lack of better info assume
++# Pacific/Easter is always two hours behind America/Santiago;
++# this is known to work for DST transitions starting in 2008 and
++# may well be true for earlier transitions.
++
+ # From Eduardo Krell (1995-10-19):
+ # The law says to switch to DST at midnight [24:00] on the second SATURDAY
+ # of October.... The law is the same for March and October.
+@@ -1133,78 +1187,35 @@
+ # Because of the same drought, the government decided to end DST later,
+ # on April 3, (one-time change).
+
+-# From Oscar van Vlijmen (2006-10-08):
+-# http://www.horaoficial.cl/cambio.htm
+-
+-# From Jesper Nørgaard Welen (2006-10-08):
+-# I think that there are some obvious mistakes in the suggested link
+-# from Oscar van Vlijmen,... for instance entry 66 says that GMT-4
+-# ended 1990-09-12 while entry 67 only begins GMT-3 at 1990-09-15
+-# (they should have been 1990-09-15 and 1990-09-16 respectively), but
+-# anyhow it clears up some doubts too.
+-
+-# From Paul Eggert (2014-08-12):
+-# The following data entries for Chile and America/Santiago are from
+-# <http://www.horaoficial.cl/horaof.htm> (2006-09-20), transcribed by
+-# Jesper Nørgaard Welen. The data entries for Pacific/Easter are from Shanks
+-# & Pottenger, except with DST transitions after 1932 cloned from
+-# America/Santiago. The pre-1980 Pacific/Easter data entries are dubious,
+-# but we have no other source.
+-
+ # From Germán Poo-Caamaño (2008-03-03):
+ # Due to drought, Chile extends Daylight Time in three weeks. This
+ # is one-time change (Saturday 3/29 at 24:00 for America/Santiago
+ # and Saturday 3/29 at 22:00 for Pacific/Easter)
+ # The Supreme Decree is located at
+ # http://www.shoa.cl/servicios/supremo316.pdf
+-# and the instructions for 2008 are located in:
+-# http://www.horaoficial.cl/cambio.htm
+-
++#
+ # From José Miguel Garrido (2008-03-05):
+-# ...
+-# You could see the announces of the change on
+ # http://www.shoa.cl/noticias/2008/04hora/hora.htm
+
+ # From Angel Chiang (2010-03-04):
+ # Subject: DST in Chile exceptionally extended to 3 April due to earthquake
+ # http://www.gobiernodechile.cl/viewNoticia.aspx?idArticulo=30098
+-# (in Spanish, last paragraph).
+ #
+-# This is breaking news. There should be more information available later.
+-
+ # From Arthur David Olson (2010-03-06):
+ # Angel Chiang's message confirmed by Julio Pacheco; Julio provided a patch.
+
+-# From Glenn Eychaner (2011-03-02):
+-# It appears that the Chilean government has decided to postpone the
+-# change from summer time to winter time again, by three weeks to April
+-# 2nd:
+-# http://www.emol.com/noticias/nacional/detalle/detallenoticias.asp?idnoticia=467651
+-#
+-# This is not yet reflected in the official "cambio de hora" site, but
+-# probably will be soon:
+-# http://www.horaoficial.cl/cambio.htm
+-
+-# From Arthur David Olson (2011-03-02):
+-# The emol.com article mentions a water shortage as the cause of the
+-# postponement, which may mean that it's not a permanent change.
+-
+ # From Glenn Eychaner (2011-03-28):
+-# The article:
+ # http://diario.elmercurio.com/2011/03/28/_portada/_portada/noticias/7565897A-CA86-49E6-9E03-660B21A4883E.htm?id=3D{7565897A-CA86-49E6-9E03-660B21A4883E}
+-#
+ # In English:
+ # Chile's clocks will go back an hour this year on the 7th of May instead
+ # of this Saturday. They will go forward again the 3rd Saturday in
+-# August, not in October as they have since 1968. This is a pilot plan
+-# which will be reevaluated in 2012.
++# August, not in October as they have since 1968.
+
+ # From Mauricio Parada (2012-02-22), translated by Glenn Eychaner (2012-02-23):
+ # As stated in the website of the Chilean Energy Ministry
+ # http://www.minenergia.cl/ministerio/noticias/generales/gobierno-anuncia-fechas-de-cambio-de.html
+ # The Chilean Government has decided to postpone the entrance into winter time
+-# (to leave DST) from March 11 2012 to April 28th 2012. The decision has not
+-# been yet formalized but it will within the next days.
++# (to leave DST) from March 11 2012 to April 28th 2012....
+ # Quote from the website communication:
+ #
+ # 6. For the year 2012, the dates of entry into winter time will be as follows:
+@@ -1229,22 +1240,17 @@
+ # DST Start: first Saturday of September 2014 (Sun 07 Sep 2014 04:00 UTC)
+ # http://www.diariooficial.interior.gob.cl//media/2014/02/19/do-20140219.pdf
+
+-# From Juan Correa (2015-01-28):
+-# ... today the Ministry of Energy announced that Chile will drop DST, will keep
+-# "summer time" (UTC -3 / UTC -5) all year round....
+-# http://www.minenergia.cl/ministerio/noticias/generales/ministerio-de-energia-anuncia.html
+-
+-# NOTE: ChileAQ rules for Antarctic bases are stored separately in the
+-# 'antarctica' file.
++# From Eduardo Romero Urra (2015-03-03):
++# Today has been published officially that Chile will use the DST time
++# permanently until March 25 of 2017
++# http://www.diariooficial.interior.gob.cl/media/2015/03/03/1-large.jpg
++#
++# From Paul Eggert (2015-03-03):
++# For now, assume that the extension will persist indefinitely.
+
+ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+-Rule Chile 1927 1932 - Sep 1 0:00 1:00 S
++Rule Chile 1927 1931 - Sep 1 0:00 1:00 S
+ Rule Chile 1928 1932 - Apr 1 0:00 0 -
+-Rule Chile 1942 only - Jun 1 4:00u 0 -
+-Rule Chile 1942 only - Aug 1 5:00u 1:00 S
+-Rule Chile 1946 only - Jul 15 4:00u 1:00 S
+-Rule Chile 1946 only - Sep 1 3:00u 0:00 -
+-Rule Chile 1947 only - Apr 1 4:00u 0 -
+ Rule Chile 1968 only - Nov 3 4:00u 1:00 S
+ Rule Chile 1969 only - Mar 30 3:00u 0 -
+ Rule Chile 1969 only - Nov 23 4:00u 1:00 S
+@@ -1255,10 +1261,8 @@
+ Rule Chile 1973 only - Sep 30 4:00u 1:00 S
+ Rule Chile 1974 1987 - Oct Sun>=9 4:00u 1:00 S
+ Rule Chile 1987 only - Apr 12 3:00u 0 -
+-Rule Chile 1988 1989 - Mar Sun>=9 3:00u 0 -
+-Rule Chile 1988 only - Oct Sun>=1 4:00u 1:00 S
+-Rule Chile 1989 only - Oct Sun>=9 4:00u 1:00 S
+-Rule Chile 1990 only - Mar 18 3:00u 0 -
++Rule Chile 1988 1990 - Mar Sun>=9 3:00u 0 -
++Rule Chile 1988 1989 - Oct Sun>=9 4:00u 1:00 S
+ Rule Chile 1990 only - Sep 16 4:00u 1:00 S
+ Rule Chile 1991 1996 - Mar Sun>=9 3:00u 0 -
+ Rule Chile 1991 1997 - Oct Sun>=9 4:00u 1:00 S
+@@ -1281,17 +1285,23 @@
+ # (1996-09) says 1998-03-08. Ignore these.
+ # Zone NAME GMTOFF RULES FORMAT [UNTIL]
+ Zone America/Santiago -4:42:46 - LMT 1890
+- -4:42:46 - SMT 1910 # Santiago Mean Time
++ -4:42:46 - SMT 1910 Jan 10 # Santiago Mean Time
+ -5:00 - CLT 1916 Jul 1 # Chile Time
+- -4:42:46 - SMT 1918 Sep 1 # Santiago Mean Time
+- -4:00 - CLT 1919 Jul 1 # Chile Time
+- -4:42:46 - SMT 1927 Sep 1 # Santiago Mean Time
+- -5:00 Chile CL%sT 1947 May 22 # Chile Time
++ -4:42:46 - SMT 1918 Sep 10
++ -4:00 - CLT 1919 Jul 1
++ -4:42:46 - SMT 1927 Sep 1
++ -5:00 Chile CL%sT 1932 Sep 1
++ -4:00 - CLT 1942 Jun 1
++ -5:00 - CLT 1942 Aug 1
++ -4:00 - CLT 1946 Jul 15
++ -4:00 1:00 CLST 1946 Sep 1 # central Chile
++ -4:00 - CLT 1947 Apr 1
++ -5:00 - CLT 1947 May 21 23:00
+ -4:00 Chile CL%sT 2015 Apr 26 3:00u
+ -3:00 - CLT
+-Zone Pacific/Easter -7:17:44 - LMT 1890
++Zone Pacific/Easter -7:17:28 - LMT 1890
+ -7:17:28 - EMT 1932 Sep # Easter Mean Time
+- -7:00 Chile EAS%sT 1982 Mar 13 3:00u # Easter Time
++ -7:00 Chile EAS%sT 1982 Mar 14 3:00u # Easter Time
+ -6:00 Chile EAS%sT 2015 Apr 26 3:00u
+ -5:00 - EAST
+ #
+@@ -1299,6 +1309,25 @@
+ # Other Chilean locations, including Juan Fernández Is, Desventuradas Is,
+ # and Antarctic bases, are like America/Santiago.
+
++# Antarctic base using South American rules
++# (See the file 'antarctica' for more.)
++#
++# Palmer, Anvers Island, since 1965 (moved 2 miles in 1968)
++#
++# From Ethan Dicks (1996-10-06):
++# It keeps the same time as Punta Arenas, Chile, because, just like us
++# and the South Pole, that's the other end of their supply line....
++# I verified with someone who was there that since 1980,
++# Palmer has followed Chile. Prior to that, before the Falklands War,
++# Palmer used to be supplied from Argentina.
++#
++# Zone NAME GMTOFF RULES FORMAT [UNTIL]
++Zone Antarctica/Palmer 0 - zzz 1965
++ -4:00 Arg AR%sT 1969 Oct 5
++ -3:00 Arg AR%sT 1982 May
++ -4:00 Chile CL%sT 2015 Apr 26 3:00u
++ -3:00 - CLT
++
+ # Colombia
+
+ # Milne gives 4:56:16.4 for Bogotá time in 1899; round to nearest. He writes,
+@@ -1626,6 +1655,7 @@
+
+ # These all agree with Trinidad and Tobago since 1970.
+ Link America/Port_of_Spain America/Anguilla
++Link America/Port_of_Spain America/Antigua
+ Link America/Port_of_Spain America/Dominica
+ Link America/Port_of_Spain America/Grenada
+ Link America/Port_of_Spain America/Guadeloupe
+--- ./jdk/src/macosx/bin/java_md_macosx.c Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/macosx/bin/java_md_macosx.c Tue Jun 02 13:49:09 2015 +0300
+@@ -616,7 +616,11 @@
+ if (access(libjava, F_OK) == 0) {
+ return JNI_TRUE;
+ }
+-
++ /* ensure storage for path + /jre + NULL */
++ if ((JLI_StrLen(path) + 4 + 1) > pathsize) {
++ JLI_TraceLauncher("Insufficient space to store JRE path\n");
++ return JNI_FALSE;
++ }
+ /* Does the app ship a private JRE in <apphome>/jre directory? */
+ JLI_Snprintf(libjava, sizeof(libjava), "%s/jre/lib/" JAVA_DLL, path);
+ if (access(libjava, F_OK) == 0) {
+--- ./jdk/src/macosx/classes/sun/lwawt/macosx/CClipboard.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/macosx/classes/sun/lwawt/macosx/CClipboard.java Tue Jun 02 13:49:09 2015 +0300
+@@ -57,6 +57,18 @@
+ }
+
+ @Override
++ public synchronized Transferable getContents(Object requestor) {
++ checkPasteboardAndNotify();
++ return super.getContents(requestor);
++ }
++
++ @Override
++ protected synchronized Transferable getContextContents() {
++ checkPasteboardAndNotify();
++ return super.getContextContents();
++ }
++
++ @Override
+ protected void setContentsNative(Transferable contents) {
+ FlavorTable flavorMap = getDefaultFlavorTable();
+ // Don't use delayed Clipboard rendering for the Transferable's data.
+@@ -116,13 +128,20 @@
+ private native void declareTypes(long[] formats, SunClipboard newOwner);
+ private native void setData(byte[] data, long format);
+
++ void checkPasteboardAndNotify() {
++ if (checkPasteboardWithoutNotification()) {
++ notifyChanged();
++ lostOwnershipNow(null);
++ }
++ }
++
+ /**
+ * Invokes native check whether a change count on the general pasteboard is different
+ * than when we set it. The different count value means the current owner lost
+ * pasteboard ownership and someone else put data on the clipboard.
+ * @since 1.7
+ */
+- native void checkPasteboard();
++ native boolean checkPasteboardWithoutNotification();
+
+ /*** Native Callbacks ***/
+ private void notifyLostOwnership() {
+--- ./jdk/src/macosx/classes/sun/lwawt/macosx/CEmbeddedFrame.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/macosx/classes/sun/lwawt/macosx/CEmbeddedFrame.java Tue Jun 02 13:49:09 2015 +0300
+@@ -120,7 +120,7 @@
+ // it won't be invoced if focuse is moved to a html element
+ // on the same page.
+ CClipboard clipboard = (CClipboard) Toolkit.getDefaultToolkit().getSystemClipboard();
+- clipboard.checkPasteboard();
++ clipboard.checkPasteboardAndNotify();
+ }
+ if (parentWindowActive) {
+ responder.handleWindowFocusEvent(focused, null);
+--- ./jdk/src/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java Tue Jun 02 13:49:09 2015 +0300
+@@ -488,6 +488,9 @@
+ } else {
+ deliverZoom(true);
+
++ // We need an up to date size of the peer, so we flush the native events
++ // to be sure that there are no setBounds requests in the queue.
++ LWCToolkit.flushNativeSelectors();
+ this.normalBounds = peer.getBounds();
+
+ GraphicsConfiguration config = getPeer().getGraphicsConfiguration();
+--- ./jdk/src/macosx/classes/sun/lwawt/macosx/LWCToolkit.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/macosx/classes/sun/lwawt/macosx/LWCToolkit.java Tue Jun 02 13:49:09 2015 +0300
+@@ -833,7 +833,7 @@
+ /**
+ * Just spin a single empty block synchronously.
+ */
+- private static native void flushNativeSelectors();
++ static native void flushNativeSelectors();
+
+ @Override
+ public Clipboard createPlatformClipboard() {
+--- ./jdk/src/macosx/native/sun/awt/AWTView.m Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/macosx/native/sun/awt/AWTView.m Tue Jun 02 13:49:09 2015 +0300
+@@ -889,9 +889,9 @@
+ // text, or 'text in progress'. We also need to send the event if we get an insert text out of the blue!
+ // (i.e., when the user uses the Character palette or Inkwell), or when the string to insert is a complex
+ // Unicode value.
+- NSUInteger utf8Length = [aString lengthOfBytesUsingEncoding:NSUTF8StringEncoding];
++ NSUInteger utf16Length = [aString lengthOfBytesUsingEncoding:NSUTF16StringEncoding];
+
+- if ([self hasMarkedText] || !fProcessingKeystroke || (utf8Length > 1)) {
++ if ([self hasMarkedText] || !fProcessingKeystroke || (utf16Length > 2)) {
+ JNIEnv *env = [ThreadUtilities getJNIEnv];
+
+ static JNF_MEMBER_CACHE(jm_selectPreviousGlyph, jc_CInputMethod, "selectPreviousGlyph", "()V");
+--- ./jdk/src/macosx/native/sun/awt/CClipboard.m Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/macosx/native/sun/awt/CClipboard.m Tue Jun 02 13:49:09 2015 +0300
+@@ -171,6 +171,8 @@
+ else [args removeLastObject];
+ }
+
++
++
+ - (void) checkPasteboard:(id)application {
+ AWT_ASSERT_APPKIT_THREAD;
+
+@@ -202,6 +204,19 @@
+ }
+ }
+
++- (BOOL) checkPasteboardWithoutNotification:(id)application {
++ AWT_ASSERT_APPKIT_THREAD;
++
++ NSInteger newChangeCount = [[NSPasteboard generalPasteboard] changeCount];
++
++ if (fChangeCount != newChangeCount) {
++ fChangeCount = newChangeCount;
++ return YES;
++ } else {
++ return NO;
++ }
++}
++
+ @end
+
+ /*
+@@ -348,16 +363,17 @@
+ * Method: checkPasteboard
+ * Signature: ()V
+ */
+-JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CClipboard_checkPasteboard
+-(JNIEnv *env, jobject inObject )
++JNIEXPORT jboolean JNICALL Java_sun_lwawt_macosx_CClipboard_checkPasteboardWithoutNotification
++(JNIEnv *env, jobject inObject)
+ {
++ __block BOOL ret = NO;
+ JNF_COCOA_ENTER(env);
+-
+ [ThreadUtilities performOnMainThreadWaiting:YES block:^(){
+- [[CClipboard sharedClipboard] checkPasteboard:nil];
++ ret = [[CClipboard sharedClipboard] checkPasteboardWithoutNotification:nil];
+ }];
+-
++
+ JNF_COCOA_EXIT(env);
++ return ret;
+ }
+
+
+--- ./jdk/src/share/classes/com/sun/crypto/provider/AESCrypt.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/com/sun/crypto/provider/AESCrypt.java Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -37,7 +37,7 @@
+ package com.sun.crypto.provider;
+
+ import java.security.InvalidKeyException;
+-import java.util.Arrays;
++import java.security.MessageDigest;
+
+ /**
+ * Rijndael --pronounced Reindaal-- is a symmetric cipher with a 128-bit
+@@ -88,7 +88,7 @@
+ key.length + " bytes");
+ }
+
+- if (!Arrays.equals(key, lastKey)) {
++ if (!MessageDigest.isEqual(key, lastKey)) {
+ // re-generate session key 'sessionK' when cipher key changes
+ makeSessionKey(key);
+ lastKey = key.clone(); // save cipher key
+--- ./jdk/src/share/classes/com/sun/crypto/provider/CipherCore.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/com/sun/crypto/provider/CipherCore.java Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -568,7 +568,7 @@
+ // check key+iv for encryption in GCM mode
+ requireReinit =
+ Arrays.equals(ivBytes, lastEncIv) &&
+- Arrays.equals(keyBytes, lastEncKey);
++ MessageDigest.isEqual(keyBytes, lastEncKey);
+ if (requireReinit) {
+ throw new InvalidAlgorithmParameterException
+ ("Cannot reuse iv for GCM encryption");
+--- ./jdk/src/share/classes/com/sun/crypto/provider/DESKey.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/com/sun/crypto/provider/DESKey.java Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -25,6 +25,7 @@
+
+ package com.sun.crypto.provider;
+
++import java.security.MessageDigest;
+ import java.security.KeyRep;
+ import java.security.InvalidKeyException;
+ import javax.crypto.SecretKey;
+@@ -113,7 +114,7 @@
+ return false;
+
+ byte[] thatKey = ((SecretKey)obj).getEncoded();
+- boolean ret = java.util.Arrays.equals(this.key, thatKey);
++ boolean ret = MessageDigest.isEqual(this.key, thatKey);
+ java.util.Arrays.fill(thatKey, (byte)0x00);
+ return ret;
+ }
+--- ./jdk/src/share/classes/com/sun/crypto/provider/DESedeKey.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/com/sun/crypto/provider/DESedeKey.java Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -25,6 +25,7 @@
+
+ package com.sun.crypto.provider;
+
++import java.security.MessageDigest;
+ import java.security.KeyRep;
+ import java.security.InvalidKeyException;
+ import javax.crypto.SecretKey;
+@@ -114,7 +115,7 @@
+ return false;
+
+ byte[] thatKey = ((SecretKey)obj).getEncoded();
+- boolean ret = java.util.Arrays.equals(this.key, thatKey);
++ boolean ret = MessageDigest.isEqual(this.key, thatKey);
+ java.util.Arrays.fill(thatKey, (byte)0x00);
+ return ret;
+ }
+--- ./jdk/src/share/classes/com/sun/crypto/provider/GCTR.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/com/sun/crypto/provider/GCTR.java Tue Jun 02 13:49:09 2015 +0300
+@@ -38,7 +38,17 @@
+ * under section 6.5. It needs to be constructed w/ an initialized
+ * cipher object, and initial counter block(ICB). Given an input X
+ * of arbitrary length, it processes and returns an output which has
+- * the same length as X.
++ * the same length as X. The invariants of this class are:
++ *
++ * (1) The length of intialCounterBlk (and also of its clones, e.g.,
++ * fields counter and counterSave) is equal to AES_BLOCK_SIZE.
++ *
++ * (2) After construction, the field counter never becomes null, it
++ * always contains a byte array of length AES_BLOCK_SIZE.
++ *
++ * If any invariant is broken, failures can occur because the
++ * AESCrypt.encryptBlock method can be intrinsified on the HotSpot VM
++ * (see JDK-8067648 for details).
+ *
+ * <p>This function is used in the implementation of GCM mode.
+ *
+@@ -59,6 +69,10 @@
+ // NOTE: cipher should already be initialized
+ GCTR(SymmetricCipher cipher, byte[] initialCounterBlk) {
+ this.aes = cipher;
++ if (initialCounterBlk.length != AES_BLOCK_SIZE) {
++ throw new RuntimeException("length of initial counter block (" + initialCounterBlk.length +
++ ") not equal to AES_BLOCK_SIZE (" + AES_BLOCK_SIZE + ")");
++ }
+ this.icb = initialCounterBlk;
+ this.counter = icb.clone();
+ }
+@@ -137,6 +151,8 @@
+ * Restores the content of this object to the previous saved one.
+ */
+ void restore() {
+- this.counter = this.counterSave;
++ if (this.counterSave != null) {
++ this.counter = this.counterSave;
++ }
+ }
+ }
+--- ./jdk/src/share/classes/com/sun/crypto/provider/PBEKey.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/com/sun/crypto/provider/PBEKey.java Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -25,6 +25,7 @@
+
+ package com.sun.crypto.provider;
+
++import java.security.MessageDigest;
+ import java.security.KeyRep;
+ import java.security.spec.InvalidKeySpecException;
+ import javax.crypto.SecretKey;
+@@ -107,7 +108,7 @@
+ return false;
+
+ byte[] thatEncoded = that.getEncoded();
+- boolean ret = java.util.Arrays.equals(this.key, thatEncoded);
++ boolean ret = MessageDigest.isEqual(this.key, thatEncoded);
+ java.util.Arrays.fill(thatEncoded, (byte)0x00);
+ return ret;
+ }
+--- ./jdk/src/share/classes/com/sun/crypto/provider/PBKDF2KeyImpl.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/com/sun/crypto/provider/PBKDF2KeyImpl.java Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -30,6 +30,7 @@
+ import java.nio.CharBuffer;
+ import java.nio.charset.Charset;
+ import java.util.Arrays;
++import java.security.MessageDigest;
+ import java.security.KeyRep;
+ import java.security.GeneralSecurityException;
+ import java.security.NoSuchAlgorithmException;
+@@ -152,7 +153,7 @@
+ SecretKey sk = (SecretKey)obj;
+ return prf.getAlgorithm().equalsIgnoreCase(
+ sk.getAlgorithm()) &&
+- Arrays.equals(password, sk.getEncoded());
++ MessageDigest.isEqual(password, sk.getEncoded());
+ }
+ };
+ prf.init(macKey);
+@@ -238,7 +239,7 @@
+ if (!(that.getFormat().equalsIgnoreCase("RAW")))
+ return false;
+ byte[] thatEncoded = that.getEncoded();
+- boolean ret = Arrays.equals(key, that.getEncoded());
++ boolean ret = MessageDigest.isEqual(key, that.getEncoded());
+ java.util.Arrays.fill(thatEncoded, (byte)0x00);
+ return ret;
+ }
+--- ./jdk/src/share/classes/com/sun/jndi/dns/DnsClient.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/com/sun/jndi/dns/DnsClient.java Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -184,119 +184,124 @@
+ Exception caughtException = null;
+ boolean[] doNotRetry = new boolean[servers.length];
+
+- //
+- // The UDP retry strategy is to try the 1st server, and then
+- // each server in order. If no answer, double the timeout
+- // and try each server again.
+- //
+- for (int retry = 0; retry < retries; retry++) {
++ try {
++ //
++ // The UDP retry strategy is to try the 1st server, and then
++ // each server in order. If no answer, double the timeout
++ // and try each server again.
++ //
++ for (int retry = 0; retry < retries; retry++) {
+
+- // Try each name server.
+- for (int i = 0; i < servers.length; i++) {
+- if (doNotRetry[i]) {
+- continue;
+- }
+-
+- // send the request packet and wait for a response.
+- try {
+- if (debug) {
+- dprint("SEND ID (" + (retry + 1) + "): " + xid);
++ // Try each name server.
++ for (int i = 0; i < servers.length; i++) {
++ if (doNotRetry[i]) {
++ continue;
+ }
+
+- byte[] msg = null;
+- msg = doUdpQuery(pkt, servers[i], serverPorts[i],
+- retry, xid);
+- //
+- // If the matching response is not got within the
+- // given timeout, check if the response was enqueued
+- // by some other thread, if not proceed with the next
+- // server or retry.
+- //
+- if (msg == null) {
+- if (resps.size() > 0) {
+- msg = lookupResponse(xid);
++ // send the request packet and wait for a response.
++ try {
++ if (debug) {
++ dprint("SEND ID (" + (retry + 1) + "): " + xid);
+ }
+- if (msg == null) { // try next server or retry
++
++ byte[] msg = null;
++ msg = doUdpQuery(pkt, servers[i], serverPorts[i],
++ retry, xid);
++ //
++ // If the matching response is not got within the
++ // given timeout, check if the response was enqueued
++ // by some other thread, if not proceed with the next
++ // server or retry.
++ //
++ if (msg == null) {
++ if (resps.size() > 0) {
++ msg = lookupResponse(xid);
++ }
++ if (msg == null) { // try next server or retry
++ continue;
++ }
++ }
++ Header hdr = new Header(msg, msg.length);
++
++ if (auth && !hdr.authoritative) {
++ caughtException = new NameNotFoundException(
++ "DNS response not authoritative");
++ doNotRetry[i] = true;
+ continue;
+ }
+- }
+- Header hdr = new Header(msg, msg.length);
++ if (hdr.truncated) { // message is truncated -- try TCP
+
+- if (auth && !hdr.authoritative) {
+- caughtException = new NameNotFoundException(
+- "DNS response not authoritative");
+- doNotRetry[i] = true;
+- continue;
+- }
+- if (hdr.truncated) { // message is truncated -- try TCP
++ // Try each server, starting with the one that just
++ // provided the truncated message.
++ for (int j = 0; j < servers.length; j++) {
++ int ij = (i + j) % servers.length;
++ if (doNotRetry[ij]) {
++ continue;
++ }
++ try {
++ Tcp tcp =
++ new Tcp(servers[ij], serverPorts[ij]);
++ byte[] msg2;
++ try {
++ msg2 = doTcpQuery(tcp, pkt);
++ } finally {
++ tcp.close();
++ }
++ Header hdr2 = new Header(msg2, msg2.length);
++ if (hdr2.query) {
++ throw new CommunicationException(
++ "DNS error: expecting response");
++ }
++ checkResponseCode(hdr2);
+
+- // Try each server, starting with the one that just
+- // provided the truncated message.
+- for (int j = 0; j < servers.length; j++) {
+- int ij = (i + j) % servers.length;
+- if (doNotRetry[ij]) {
+- continue;
+- }
+- try {
+- Tcp tcp =
+- new Tcp(servers[ij], serverPorts[ij]);
+- byte[] msg2;
+- try {
+- msg2 = doTcpQuery(tcp, pkt);
+- } finally {
+- tcp.close();
++ if (!auth || hdr2.authoritative) {
++ // Got a valid response
++ hdr = hdr2;
++ msg = msg2;
++ break;
++ } else {
++ doNotRetry[ij] = true;
++ }
++ } catch (Exception e) {
++ // Try next server, or use UDP response
+ }
+- Header hdr2 = new Header(msg2, msg2.length);
+- if (hdr2.query) {
+- throw new CommunicationException(
+- "DNS error: expecting response");
+- }
+- checkResponseCode(hdr2);
++ } // servers
++ }
++ return new ResourceRecords(msg, msg.length, hdr, false);
+
+- if (!auth || hdr2.authoritative) {
+- // Got a valid response
+- hdr = hdr2;
+- msg = msg2;
+- break;
+- } else {
+- doNotRetry[ij] = true;
+- }
+- } catch (Exception e) {
+- // Try next server, or use UDP response
+- }
+- } // servers
+- }
+- return new ResourceRecords(msg, msg.length, hdr, false);
+-
+- } catch (IOException e) {
+- if (debug) {
+- dprint("Caught IOException:" + e);
+- }
+- if (caughtException == null) {
+- caughtException = e;
+- }
+- // Use reflection to allow pre-1.4 compilation.
+- // This won't be needed much longer.
+- if (e.getClass().getName().equals(
+- "java.net.PortUnreachableException")) {
++ } catch (IOException e) {
++ if (debug) {
++ dprint("Caught IOException:" + e);
++ }
++ if (caughtException == null) {
++ caughtException = e;
++ }
++ // Use reflection to allow pre-1.4 compilation.
++ // This won't be needed much longer.
++ if (e.getClass().getName().equals(
++ "java.net.PortUnreachableException")) {
++ doNotRetry[i] = true;
++ }
++ } catch (NameNotFoundException e) {
++ // This is authoritative, so return immediately
++ throw e;
++ } catch (CommunicationException e) {
++ if (caughtException == null) {
++ caughtException = e;
++ }
++ } catch (NamingException e) {
++ if (caughtException == null) {
++ caughtException = e;
++ }
+ doNotRetry[i] = true;
+ }
+- } catch (NameNotFoundException e) {
+- throw e;
+- } catch (CommunicationException e) {
+- if (caughtException == null) {
+- caughtException = e;
+- }
+- } catch (NamingException e) {
+- if (caughtException == null) {
+- caughtException = e;
+- }
+- doNotRetry[i] = true;
+- }
+- } // servers
+- } // retries
++ } // servers
++ } // retries
+
+- reqs.remove(xid);
++ } finally {
++ reqs.remove(xid); // cleanup
++ }
++
+ if (caughtException instanceof NamingException) {
+ throw (NamingException) caughtException;
+ }
+--- ./jdk/src/share/classes/java/io/ObjectInputStream.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/java/io/ObjectInputStream.java Tue Jun 02 13:49:09 2015 +0300
+@@ -1829,6 +1829,8 @@
+ throws IOException
+ {
+ SerialCallbackContext oldContext = curContext;
++ if (oldContext != null)
++ oldContext.check();
+ curContext = null;
+ try {
+ boolean blocked = desc.hasBlockExternalData();
+@@ -1853,6 +1855,8 @@
+ skipCustomData();
+ }
+ } finally {
++ if (oldContext != null)
++ oldContext.check();
+ curContext = oldContext;
+ }
+ /*
+@@ -1883,12 +1887,12 @@
+ ObjectStreamClass slotDesc = slots[i].desc;
+
+ if (slots[i].hasData) {
+- if (obj != null &&
+- slotDesc.hasReadObjectMethod() &&
+- handles.lookupException(passHandle) == null)
+- {
++ if (obj == null || handles.lookupException(passHandle) != null) {
++ defaultReadFields(null, slotDesc); // skip field values
++ } else if (slotDesc.hasReadObjectMethod()) {
+ SerialCallbackContext oldContext = curContext;
+-
++ if (oldContext != null)
++ oldContext.check();
+ try {
+ curContext = new SerialCallbackContext(obj, slotDesc);
+
+@@ -1905,6 +1909,8 @@
+ handles.markException(passHandle, ex);
+ } finally {
+ curContext.setUsed();
++ if (oldContext!= null)
++ oldContext.check();
+ curContext = oldContext;
+ }
+
+@@ -1917,6 +1923,7 @@
+ } else {
+ defaultReadFields(obj, slotDesc);
+ }
++
+ if (slotDesc.hasWriteObjectData()) {
+ skipCustomData();
+ } else {
+--- ./jdk/src/share/classes/java/io/SerialCallbackContext.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/java/io/SerialCallbackContext.java Tue Jun 02 13:49:09 2015 +0300
+@@ -60,6 +60,13 @@
+ return desc;
+ }
+
++ public void check() throws NotActiveException {
++ if (thread != null && thread != Thread.currentThread()) {
++ throw new NotActiveException(
++ "expected thread: " + thread + ", but got: " + Thread.currentThread());
++ }
++ }
++
+ private void checkAndSetUsed() throws NotActiveException {
+ if (thread != Thread.currentThread()) {
+ throw new NotActiveException(
+--- ./jdk/src/share/classes/java/net/InetAddress.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/java/net/InetAddress.java Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1995, 2013, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1995, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -203,16 +203,33 @@
+ static transient boolean preferIPv6Address = false;
+
+ static class InetAddressHolder {
++ /**
++ * Reserve the original application specified hostname.
++ *
++ * The original hostname is useful for domain-based endpoint
++ * identification (see RFC 2818 and RFC 6125). If an address
++ * was created with a raw IP address, a reverse name lookup
++ * may introduce endpoint identification security issue via
++ * DNS forging.
++ *
++ * Oracle JSSE provider is using this original hostname, via
++ * sun.misc.JavaNetAccess, for SSL/TLS endpoint identification.
++ *
++ * Note: May define a new public method in the future if necessary.
++ */
++ private String originalHostName;
+
+ InetAddressHolder() {}
+
+ InetAddressHolder(String hostName, int address, int family) {
++ this.originalHostName = hostName;
+ this.hostName = hostName;
+ this.address = address;
+ this.family = family;
+ }
+
+ void init(String hostName, int family) {
++ this.originalHostName = hostName;
+ this.hostName = hostName;
+ if (family != -1) {
+ this.family = family;
+@@ -225,6 +242,10 @@
+ return hostName;
+ }
+
++ String getOriginalHostName() {
++ return originalHostName;
++ }
++
+ /**
+ * Holds a 32-bit IPv4 address.
+ */
+--- ./jdk/src/share/classes/java/net/URLClassLoader.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/java/net/URLClassLoader.java Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -774,6 +774,10 @@
+ public URLClassPath getURLClassPath (URLClassLoader u) {
+ return u.ucp;
+ }
++
++ public String getOriginalHostName(InetAddress ia) {
++ return ia.holder.getOriginalHostName();
++ }
+ }
+ );
+ ClassLoader.registerAsParallelCapable();
+--- ./jdk/src/share/classes/java/rmi/server/RemoteObjectInvocationHandler.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/java/rmi/server/RemoteObjectInvocationHandler.java Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -31,6 +31,7 @@
+ import java.rmi.Remote;
+ import java.rmi.UnexpectedException;
+ import java.rmi.activation.Activatable;
++import java.security.PrivilegedAction;
+ import java.util.Map;
+ import java.util.WeakHashMap;
+ import sun.rmi.server.Util;
+@@ -56,6 +57,25 @@
+ {
+ private static final long serialVersionUID = 2L;
+
++ // set to true if invocation handler allows finalize method (legacy behavior)
++ private static final boolean allowFinalizeInvocation;
++
++ static {
++ String propName = "sun.rmi.server.invocationhandler.allowFinalizeInvocation";
++ String allowProp = java.security.AccessController.doPrivileged(
++ new PrivilegedAction<String>() {
++ @Override
++ public String run() {
++ return System.getProperty(propName);
++ }
++ });
++ if ("".equals(allowProp)) {
++ allowFinalizeInvocation = true;
++ } else {
++ allowFinalizeInvocation = Boolean.parseBoolean(allowProp);
++ }
++ }
++
+ /**
+ * A weak hash map, mapping classes to weak hash maps that map
+ * method objects to method hashes.
+@@ -144,6 +164,9 @@
+ {
+ if (method.getDeclaringClass() == Object.class) {
+ return invokeObjectMethod(proxy, method, args);
++ } else if ("finalize".equals(method.getName()) && method.getParameterCount() == 0 &&
++ !allowFinalizeInvocation) {
++ return null; // ignore
+ } else {
+ return invokeRemoteMethod(proxy, method, args);
+ }
+--- ./jdk/src/share/classes/java/security/Identity.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/java/security/Identity.java Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -261,7 +261,7 @@
+ certificates.addElement(certificate);
+ }
+
+- private boolean keyEquals(Key aKey, Key anotherKey) {
++ private boolean keyEquals(PublicKey aKey, PublicKey anotherKey) {
+ String aKeyFormat = aKey.getFormat();
+ String anotherKeyFormat = anotherKey.getFormat();
+ if ((aKeyFormat == null) ^ (anotherKeyFormat == null))
+--- ./jdk/src/share/classes/java/security/MessageDigest.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/java/security/MessageDigest.java Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -440,6 +440,10 @@
+ * @return true if the digests are equal, false otherwise.
+ */
+ public static boolean isEqual(byte[] digesta, byte[] digestb) {
++ if (digesta == digestb) return true;
++ if (digesta == null || digestb == null) {
++ return false;
++ }
+ if (digesta.length != digestb.length) {
+ return false;
+ }
+--- ./jdk/src/share/classes/java/security/Signature.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/java/security/Signature.java Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -1316,7 +1316,7 @@
+ byte[] out = cipher.doFinal(sigBytes);
+ byte[] dataBytes = data.toByteArray();
+ data.reset();
+- return Arrays.equals(out, dataBytes);
++ return MessageDigest.isEqual(out, dataBytes);
+ } catch (BadPaddingException e) {
+ // e.g. wrong public key used
+ // return false rather than throwing exception
+--- ./jdk/src/share/classes/java/security/cert/X509CRLSelector.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/java/security/cert/X509CRLSelector.java Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -679,10 +679,14 @@
+ nowPlusSkew = new Date(dateAndTime.getTime() + skew);
+ nowMinusSkew = new Date(dateAndTime.getTime() - skew);
+ }
++
++ // Check that the test date is within the validity interval:
++ // [ thisUpdate - MAX_CLOCK_SKEW,
++ // nextUpdate + MAX_CLOCK_SKEW ]
+ if (nowMinusSkew.after(nextUpdate)
+ || nowPlusSkew.before(crlThisUpdate)) {
+ if (debug != null) {
+- debug.println("X509CRLSelector.match: update out of range");
++ debug.println("X509CRLSelector.match: update out-of-range");
+ }
+ return false;
+ }
+--- ./jdk/src/share/classes/javax/crypto/CipherInputStream.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/javax/crypto/CipherInputStream.java Tue Jun 02 13:49:09 2015 +0300
+@@ -25,7 +25,11 @@
+
+ package javax.crypto;
+
+-import java.io.*;
++import java.io.InputStream;
++import java.io.FilterInputStream;
++import java.io.IOException;
++import javax.crypto.BadPaddingException;
++import javax.crypto.IllegalBlockSizeException;
+
+ /**
+ * A CipherInputStream is composed of an InputStream and a Cipher so
+@@ -88,8 +92,6 @@
+ private int ofinish = 0;
+ // stream status
+ private boolean closed = false;
+- // The stream has been read from. False if the stream has never been read.
+- private boolean read = false;
+
+ /**
+ * private convenience function.
+@@ -101,11 +103,15 @@
+ * return (ofinish-ostart) (we have this many bytes for you)
+ * return 0 (no data now, but could have more later)
+ * return -1 (absolutely no more data)
++ *
++ * Note: Exceptions are only thrown after the stream is completely read.
++ * For AEAD ciphers a read() of any length will internally cause the
++ * whole stream to be read fully and verify the authentication tag before
++ * returning decrypted data or exceptions.
+ */
+ private int getMoreData() throws IOException {
+ if (done) return -1;
+ int readin = input.read(ibuffer);
+- read = true;
+ if (readin == -1) {
+ done = true;
+ try {
+@@ -308,17 +314,16 @@
+
+ closed = true;
+ input.close();
+- try {
+- // throw away the unprocessed data
+- if (!done) {
++
++ // Throw away the unprocessed data and throw no crypto exceptions.
++ // AEAD ciphers are fully readed before closing. Any authentication
++ // exceptions would occur while reading.
++ if (!done) {
++ try {
+ cipher.doFinal();
+ }
+- }
+- catch (BadPaddingException | IllegalBlockSizeException ex) {
+- /* If no data has been read from the stream to be en/decrypted,
+- we supress any exceptions, and close quietly. */
+- if (read) {
+- throw new IOException(ex);
++ catch (BadPaddingException | IllegalBlockSizeException ex) {
++ // Catch exceptions as the rest of the stream is unused.
+ }
+ }
+ ostart = 0;
+--- ./jdk/src/share/classes/javax/crypto/spec/SecretKeySpec.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/javax/crypto/spec/SecretKeySpec.java Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -25,6 +25,7 @@
+
+ package javax.crypto.spec;
+
++import java.security.MessageDigest;
+ import java.security.spec.KeySpec;
+ import javax.crypto.SecretKey;
+
+@@ -226,6 +227,6 @@
+
+ byte[] thatKey = ((SecretKey)obj).getEncoded();
+
+- return java.util.Arrays.equals(this.key, thatKey);
++ return MessageDigest.isEqual(this.key, thatKey);
+ }
+ }
+--- ./jdk/src/share/classes/javax/management/MBeanServerInvocationHandler.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/javax/management/MBeanServerInvocationHandler.java Tue Jun 02 13:49:09 2015 +0300
+@@ -141,6 +141,12 @@
+ if (connection == null) {
+ throw new IllegalArgumentException("Null connection");
+ }
++ if (Proxy.isProxyClass(connection.getClass())) {
++ if (MBeanServerInvocationHandler.class.isAssignableFrom(
++ Proxy.getInvocationHandler(connection).getClass())) {
++ throw new IllegalArgumentException("Wrapping MBeanServerInvocationHandler");
++ }
++ }
+ if (objectName == null) {
+ throw new IllegalArgumentException("Null object name");
+ }
+@@ -418,6 +424,10 @@
+ new Class<?>[] {Object.class})
+ && isLocal(proxy, method))
+ return true;
++ if (methodName.equals("finalize")
++ && method.getParameterTypes().length == 0) {
++ return true;
++ }
+ return false;
+ }
+
+@@ -453,6 +463,9 @@
+ connection + "[" + objectName + "])";
+ } else if (methodName.equals("hashCode")) {
+ return objectName.hashCode()+connection.hashCode();
++ } else if (methodName.equals("finalize")) {
++ // ignore the finalizer invocation via proxy
++ return null;
+ }
+
+ throw new RuntimeException("Unexpected method name: " + methodName);
+--- ./jdk/src/share/classes/javax/management/remote/rmi/RMIConnectionImpl.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/javax/management/remote/rmi/RMIConnectionImpl.java Tue Jun 02 13:49:09 2015 +0300
+@@ -32,7 +32,6 @@
+ import java.security.AccessControlContext;
+ import java.security.AccessController;
+ import java.security.Permission;
+-import java.security.PermissionCollection;
+ import java.security.Permissions;
+ import java.security.PrivilegedAction;
+ import java.security.PrivilegedActionException;
+@@ -59,6 +58,7 @@
+ import com.sun.jmx.remote.util.ClassLogger;
+ import com.sun.jmx.remote.util.EnvHelp;
+ import com.sun.jmx.remote.util.OrderClassLoaders;
++import javax.management.loading.ClassLoaderRepository;
+
+ /**
+ * <p>Implementation of the {@link RMIConnection} interface. User
+@@ -131,20 +131,24 @@
+
+ final ClassLoader dcl = defaultClassLoader;
+
+- this.classLoaderWithRepository =
+- AccessController.doPrivileged(
+- new PrivilegedAction<ClassLoaderWithRepository>() {
+- public ClassLoaderWithRepository run() {
+- return new ClassLoaderWithRepository(
+- mbeanServer.getClassLoaderRepository(),
+- dcl);
+- }
+- },
+-
+- withPermissions( new MBeanPermission("*", "getClassLoaderRepository"),
+- new RuntimePermission("createClassLoader"))
+- );
+-
++ ClassLoaderRepository repository = AccessController.doPrivileged(
++ new PrivilegedAction<ClassLoaderRepository>() {
++ public ClassLoaderRepository run() {
++ return mbeanServer.getClassLoaderRepository();
++ }
++ },
++ withPermissions(new MBeanPermission("*", "getClassLoaderRepository"))
++ );
++ this.classLoaderWithRepository = AccessController.doPrivileged(
++ new PrivilegedAction<ClassLoaderWithRepository>() {
++ public ClassLoaderWithRepository run() {
++ return new ClassLoaderWithRepository(
++ repository,
++ dcl);
++ }
++ },
++ withPermissions(new RuntimePermission("createClassLoader"))
++ );
+
+ this.defaultContextClassLoader =
+ AccessController.doPrivileged(
+--- ./jdk/src/share/classes/sun/awt/datatransfer/SunClipboard.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/sun/awt/datatransfer/SunClipboard.java Tue Jun 02 13:49:09 2015 +0300
+@@ -150,7 +150,7 @@
+ * AppContext as it is currently retrieved or null otherwise
+ * @since 1.5
+ */
+- private synchronized Transferable getContextContents() {
++ protected synchronized Transferable getContextContents() {
+ AppContext context = AppContext.getAppContext();
+ return (context == contentsContext) ? contents : null;
+ }
+@@ -281,42 +281,41 @@
+ return;
+ }
+
+- final Runnable runnable = new Runnable() {
+- public void run() {
+- final SunClipboard sunClipboard = SunClipboard.this;
+- ClipboardOwner owner = null;
+- Transferable contents = null;
+-
+- synchronized (sunClipboard) {
+- final AppContext context = sunClipboard.contentsContext;
+-
+- if (context == null) {
+- return;
+- }
+-
+- if (disposedContext == null || context == disposedContext) {
+- owner = sunClipboard.owner;
+- contents = sunClipboard.contents;
+- sunClipboard.contentsContext = null;
+- sunClipboard.owner = null;
+- sunClipboard.contents = null;
+- sunClipboard.clearNativeContext();
+- context.removePropertyChangeListener
+- (AppContext.DISPOSED_PROPERTY_NAME, sunClipboard);
+- } else {
+- return;
+- }
+- }
+- if (owner != null) {
+- owner.lostOwnership(sunClipboard, contents);
+- }
+- }
+- };
+-
+- SunToolkit.postEvent(context, new PeerEvent(this, runnable,
++ SunToolkit.postEvent(context, new PeerEvent(this, () -> lostOwnershipNow(disposedContext),
+ PeerEvent.PRIORITY_EVENT));
+ }
+
++ protected void lostOwnershipNow(final AppContext disposedContext) {
++ final SunClipboard sunClipboard = SunClipboard.this;
++ ClipboardOwner owner = null;
++ Transferable contents = null;
++
++ synchronized (sunClipboard) {
++ final AppContext context = sunClipboard.contentsContext;
++
++ if (context == null) {
++ return;
++ }
++
++ if (disposedContext == null || context == disposedContext) {
++ owner = sunClipboard.owner;
++ contents = sunClipboard.contents;
++ sunClipboard.contentsContext = null;
++ sunClipboard.owner = null;
++ sunClipboard.contents = null;
++ sunClipboard.clearNativeContext();
++ context.removePropertyChangeListener
++ (AppContext.DISPOSED_PROPERTY_NAME, sunClipboard);
++ } else {
++ return;
++ }
++ }
++ if (owner != null) {
++ owner.lostOwnership(sunClipboard, contents);
++ }
++ }
++
++
+ protected abstract void clearNativeContext();
+
+ protected abstract void setContentsNative(Transferable contents);
+--- ./jdk/src/share/classes/sun/misc/JavaNetAccess.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/sun/misc/JavaNetAccess.java Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2006, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -26,10 +26,17 @@
+ package sun.misc;
+
+ import java.net.URLClassLoader;
++import java.net.InetAddress;
+
+ public interface JavaNetAccess {
+ /**
+ * return the URLClassPath belonging to the given loader
+ */
+ URLClassPath getURLClassPath (URLClassLoader u);
++
++ /**
++ * Return the original application specified hostname of
++ * the given InetAddress object.
++ */
++ String getOriginalHostName(InetAddress ia);
+ }
+--- ./jdk/src/share/classes/sun/security/jgss/GSSUtil.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/sun/security/jgss/GSSUtil.java Tue Jun 02 13:49:09 2015 +0300
+@@ -59,6 +59,8 @@
+ GSSUtil.createOid("1.2.840.113554.1.2.2");
+ public static final Oid GSS_KRB5_MECH_OID2 =
+ GSSUtil.createOid("1.3.5.1.5.2");
++ public static final Oid GSS_KRB5_MECH_OID_MS =
++ GSSUtil.createOid("1.2.840.48018.1.2.2");
+
+ public static final Oid GSS_SPNEGO_MECH_OID =
+ GSSUtil.createOid("1.3.6.1.5.5.2");
+@@ -101,7 +103,8 @@
+
+ public static boolean isKerberosMech(Oid oid) {
+ return (GSS_KRB5_MECH_OID.equals(oid) ||
+- GSS_KRB5_MECH_OID2.equals(oid));
++ GSS_KRB5_MECH_OID2.equals(oid) ||
++ GSS_KRB5_MECH_OID_MS.equals(oid));
+
+ }
+
+--- ./jdk/src/share/classes/sun/security/jgss/spnego/SpNegoContext.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/sun/security/jgss/spnego/SpNegoContext.java Tue Jun 02 13:49:09 2015 +0300
+@@ -540,14 +540,21 @@
+ // get the token for mechanism
+ byte[] accept_token;
+
+- if (mechList[0].equals(mech_wanted)) {
++ if (mechList[0].equals(mech_wanted) ||
++ (GSSUtil.isKerberosMech(mechList[0]) &&
++ GSSUtil.isKerberosMech(mech_wanted))) {
+ // get the mechanism token
++ if (DEBUG && !mech_wanted.equals(mechList[0])) {
++ System.out.println("SpNegoContext.acceptSecContext: " +
++ "negotiated mech adjusted to " + mechList[0]);
++ }
+ byte[] mechToken = initToken.getMechToken();
+ if (mechToken == null) {
+ throw new GSSException(GSSException.FAILURE, -1,
+ "mechToken is missing");
+ }
+ accept_token = GSS_acceptSecContext(mechToken);
++ mech_wanted = mechList[0];
+ } else {
+ accept_token = null;
+ }
+--- ./jdk/src/share/classes/sun/security/pkcs11/P11Key.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/sun/security/pkcs11/P11Key.java Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -165,7 +165,7 @@
+ } else {
+ otherEnc = other.getEncoded();
+ }
+- return Arrays.equals(thisEnc, otherEnc);
++ return MessageDigest.isEqual(thisEnc, otherEnc);
+ }
+
+ public int hashCode() {
+--- ./jdk/src/share/classes/sun/security/pkcs11/wrapper/Functions.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/sun/security/pkcs11/wrapper/Functions.java Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
+ */
+
+ /* Copyright (c) 2002 Graz University of Technology. All rights reserved.
+@@ -447,22 +447,6 @@
+ /**
+ * Check the given arrays for equalitiy. This method considers both arrays as
+ * equal, if both are <code>null</code> or both have the same length and
+- * contain exactly the same byte values.
+- *
+- * @param array1 The first array.
+- * @param array2 The second array.
+- * @return True, if both arrays are <code>null</code> or both have the same
+- * length and contain exactly the same byte values. False, otherwise.
+- * @preconditions
+- * @postconditions
+- */
+- public static boolean equals(byte[] array1, byte[] array2) {
+- return Arrays.equals(array1, array2);
+- }
+-
+- /**
+- * Check the given arrays for equalitiy. This method considers both arrays as
+- * equal, if both are <code>null</code> or both have the same length and
+ * contain exactly the same char values.
+ *
+ * @param array1 The first array.
+@@ -472,7 +456,7 @@
+ * @preconditions
+ * @postconditions
+ */
+- public static boolean equals(char[] array1, char[] array2) {
++ private static boolean equals(char[] array1, char[] array2) {
+ return Arrays.equals(array1, array2);
+ }
+
+--- ./jdk/src/share/classes/sun/security/pkcs12/PKCS12KeyStore.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/sun/security/pkcs12/PKCS12KeyStore.java Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -2012,7 +2012,7 @@
+ "(MAC algorithm: " + m.getAlgorithm() + ")");
+ }
+
+- if (!Arrays.equals(macData.getDigest(), macResult)) {
++ if (!MessageDigest.isEqual(macData.getDigest(), macResult)) {
+ throw new SecurityException("Failed PKCS12" +
+ " integrity checking");
+ }
+--- ./jdk/src/share/classes/sun/security/provider/certpath/OCSPResponse.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/sun/security/provider/certpath/OCSPResponse.java Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -151,8 +151,8 @@
+ private static final int DEFAULT_MAX_CLOCK_SKEW = 900000;
+
+ /**
+- * Integer value indicating the maximum allowable clock skew, in seconds,
+- * to be used for the OCSP check.
++ * Integer value indicating the maximum allowable clock skew,
++ * in milliseconds, to be used for the OCSP check.
+ */
+ private static final int MAX_CLOCK_SKEW = initializeClockSkew();
+
+@@ -586,13 +586,14 @@
+ "Unable to verify OCSP Response's signature");
+ }
+
+- // Check freshness of OCSPResponse
+ if (nonce != null) {
+ if (responseNonce != null && !Arrays.equals(nonce, responseNonce)) {
+ throw new CertPathValidatorException("Nonces don't match");
+ }
+ }
+
++ // Check freshness of OCSPResponse
++
+ long now = (date == null) ? System.currentTimeMillis() : date.getTime();
+ Date nowPlusSkew = new Date(now + MAX_CLOCK_SKEW);
+ Date nowMinusSkew = new Date(now - MAX_CLOCK_SKEW);
+@@ -602,13 +603,18 @@
+ if (sr.nextUpdate != null) {
+ until = " until " + sr.nextUpdate;
+ }
+- debug.println("Response's validity interval is from " +
++ debug.println("OCSP response validity interval is from " +
+ sr.thisUpdate + until);
++ debug.println("Checking validity of OCSP response on: " +
++ new Date(now));
+ }
+
+- // Check that the test date is within the validity interval
+- if ((sr.thisUpdate != null && nowPlusSkew.before(sr.thisUpdate)) ||
+- (sr.nextUpdate != null && nowMinusSkew.after(sr.nextUpdate)))
++ // Check that the test date is within the validity interval:
++ // [ thisUpdate - MAX_CLOCK_SKEW,
++ // MAX(thisUpdate, nextUpdate) + MAX_CLOCK_SKEW ]
++ if (nowPlusSkew.before(sr.thisUpdate) ||
++ nowMinusSkew.after(
++ sr.nextUpdate != null ? sr.nextUpdate : sr.thisUpdate))
+ {
+ throw new CertPathValidatorException(
+ "Response is unreliable: its validity " +
+--- ./jdk/src/share/classes/sun/security/provider/certpath/PKIXCertPathValidator.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/sun/security/provider/certpath/PKIXCertPathValidator.java Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -159,12 +159,19 @@
+ ValidatorParams params)
+ throws CertPathValidatorException
+ {
++ // check if anchor is untrusted
++ UntrustedChecker untrustedChecker = new UntrustedChecker();
++ X509Certificate anchorCert = anchor.getTrustedCert();
++ if (anchorCert != null) {
++ untrustedChecker.check(anchorCert);
++ }
++
+ int certPathLen = params.certificates().size();
+
+ // create PKIXCertPathCheckers
+ List<PKIXCertPathChecker> certPathCheckers = new ArrayList<>();
+ // add standard checkers that we will be using
+- certPathCheckers.add(new UntrustedChecker());
++ certPathCheckers.add(untrustedChecker);
+ certPathCheckers.add(new AlgorithmChecker(anchor));
+ certPathCheckers.add(new KeyChecker(certPathLen,
+ params.targetCertConstraints()));
+--- ./jdk/src/share/classes/sun/security/rsa/RSASignature.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/sun/security/rsa/RSASignature.java Tue Jun 02 13:49:09 2015 +0300
+@@ -27,7 +27,6 @@
+
+ import java.io.IOException;
+ import java.nio.ByteBuffer;
+-import java.util.Arrays;
+
+ import java.security.*;
+ import java.security.interfaces.*;
+@@ -194,7 +193,7 @@
+ byte[] decrypted = RSACore.rsa(sigBytes, publicKey);
+ byte[] unpadded = padding.unpad(decrypted);
+ byte[] decodedDigest = decodeSignature(digestOID, unpadded);
+- return Arrays.equals(digest, decodedDigest);
++ return MessageDigest.isEqual(digest, decodedDigest);
+ } catch (javax.crypto.BadPaddingException e) {
+ // occurs if the app has used the wrong RSA public key
+ // or if sigBytes is invalid
+--- ./jdk/src/share/classes/sun/security/ssl/CipherSuite.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/sun/security/ssl/CipherSuite.java Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -968,7 +968,7 @@
+ * 1. Prefer Suite B compliant cipher suites, see RFC6460 (To be
+ * changed later, see below).
+ * 2. Prefer the stronger bulk cipher, in the order of AES_256(GCM),
+- * AES_128(GCM), AES_256, AES_128, 3DES-EDE, RC-4.
++ * AES_128(GCM), AES_256, AES_128, 3DES-EDE.
+ * 3. Prefer the stronger MAC algorithm, in the order of SHA384,
+ * SHA256, SHA, MD5.
+ * 4. Prefer the better performance of key exchange and digital
+@@ -1115,20 +1115,6 @@
+ add("SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA",
+ 0x0013, --p, K_DHE_DSS, B_3DES, N);
+
+- // RC-4
+- add("TLS_ECDHE_ECDSA_WITH_RC4_128_SHA",
+- 0xC007, --p, K_ECDHE_ECDSA, B_RC4_128, N);
+- add("TLS_ECDHE_RSA_WITH_RC4_128_SHA",
+- 0xC011, --p, K_ECDHE_RSA, B_RC4_128, N);
+- add("SSL_RSA_WITH_RC4_128_SHA",
+- 0x0005, --p, K_RSA, B_RC4_128, N);
+- add("TLS_ECDH_ECDSA_WITH_RC4_128_SHA",
+- 0xC002, --p, K_ECDH_ECDSA, B_RC4_128, N);
+- add("TLS_ECDH_RSA_WITH_RC4_128_SHA",
+- 0xC00C, --p, K_ECDH_RSA, B_RC4_128, N);
+- add("SSL_RSA_WITH_RC4_128_MD5",
+- 0x0004, --p, K_RSA, B_RC4_128, N);
+-
+ // Renegotiation protection request Signalling Cipher Suite Value (SCSV)
+ add("TLS_EMPTY_RENEGOTIATION_INFO_SCSV",
+ 0x00ff, --p, K_SCSV, B_NULL, T);
+@@ -1178,6 +1164,20 @@
+ add("SSL_DH_anon_WITH_3DES_EDE_CBC_SHA",
+ 0x001b, --p, K_DH_ANON, B_3DES, N);
+
++ // RC-4
++ add("TLS_ECDHE_ECDSA_WITH_RC4_128_SHA",
++ 0xC007, --p, K_ECDHE_ECDSA, B_RC4_128, N);
++ add("TLS_ECDHE_RSA_WITH_RC4_128_SHA",
++ 0xC011, --p, K_ECDHE_RSA, B_RC4_128, N);
++ add("SSL_RSA_WITH_RC4_128_SHA",
++ 0x0005, --p, K_RSA, B_RC4_128, N);
++ add("TLS_ECDH_ECDSA_WITH_RC4_128_SHA",
++ 0xC002, --p, K_ECDH_ECDSA, B_RC4_128, N);
++ add("TLS_ECDH_RSA_WITH_RC4_128_SHA",
++ 0xC00C, --p, K_ECDH_RSA, B_RC4_128, N);
++ add("SSL_RSA_WITH_RC4_128_MD5",
++ 0x0004, --p, K_RSA, B_RC4_128, N);
++
+ add("TLS_ECDH_anon_WITH_RC4_128_SHA",
+ 0xC016, --p, K_ECDH_ANON, B_RC4_128, N);
+ add("SSL_DH_anon_WITH_RC4_128_MD5",
+--- ./jdk/src/share/classes/sun/security/ssl/ClientHandshaker.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/sun/security/ssl/ClientHandshaker.java Tue Jun 02 13:49:09 2015 +0300
+@@ -485,7 +485,7 @@
+ 0, clientVerifyData.length);
+ System.arraycopy(serverVerifyData, 0, verifyData,
+ clientVerifyData.length, serverVerifyData.length);
+- if (!Arrays.equals(verifyData,
++ if (!MessageDigest.isEqual(verifyData,
+ serverHelloRI.getRenegotiatedConnection())) {
+ fatalSE(Alerts.alert_handshake_failure,
+ "Incorrect verify data in ServerHello " +
+@@ -675,6 +675,14 @@
+ // NOTREACHED
+ }
+ ephemeralServerKey = mesg.getPublicKey();
++
++ // check constraints of RSA PublicKey
++ if (!algorithmConstraints.permits(
++ EnumSet.of(CryptoPrimitive.KEY_AGREEMENT), ephemeralServerKey)) {
++
++ throw new SSLHandshakeException("RSA ServerKeyExchange " +
++ "does not comply to algorithm constraints");
++ }
+ }
+
+
+@@ -692,6 +700,9 @@
+ dh = new DHCrypt(mesg.getModulus(), mesg.getBase(),
+ sslContext.getSecureRandom());
+ serverDH = mesg.getServerPublicKey();
++
++ // check algorithm constraints
++ dh.checkConstraints(algorithmConstraints, serverDH);
+ }
+
+ private void serverKeyExchange(ECDH_ServerKeyExchange mesg)
+@@ -702,6 +713,14 @@
+ ECPublicKey key = mesg.getPublicKey();
+ ecdh = new ECDHCrypt(key.getParams(), sslContext.getSecureRandom());
+ ephemeralServerKey = key;
++
++ // check constraints of EC PublicKey
++ if (!algorithmConstraints.permits(
++ EnumSet.of(CryptoPrimitive.KEY_AGREEMENT), ephemeralServerKey)) {
++
++ throw new SSLHandshakeException("ECDH ServerKeyExchange " +
++ "does not comply to algorithm constraints");
++ }
+ }
+
+ /*
+--- ./jdk/src/share/classes/sun/security/ssl/DHCrypt.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/sun/security/ssl/DHCrypt.java Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -34,6 +34,7 @@
+ import javax.crypto.KeyAgreement;
+ import javax.crypto.interfaces.DHPublicKey;
+ import javax.crypto.spec.*;
++import java.util.EnumSet;
+
+ import sun.security.util.KeyUtil;
+
+@@ -216,6 +217,28 @@
+ }
+ }
+
++ // Check constraints of the specified DH public key.
++ void checkConstraints(AlgorithmConstraints constraints,
++ BigInteger peerPublicValue) throws SSLHandshakeException {
++
++ try {
++ KeyFactory kf = JsseJce.getKeyFactory("DiffieHellman");
++ DHPublicKeySpec spec =
++ new DHPublicKeySpec(peerPublicValue, modulus, base);
++ DHPublicKey publicKey = (DHPublicKey)kf.generatePublic(spec);
++
++ // check constraints of DHPublicKey
++ if (!constraints.permits(
++ EnumSet.of(CryptoPrimitive.KEY_AGREEMENT), publicKey)) {
++ throw new SSLHandshakeException(
++ "DHPublicKey does not comply to algorithm constraints");
++ }
++ } catch (GeneralSecurityException gse) {
++ throw (SSLHandshakeException) new SSLHandshakeException(
++ "Could not generate DHPublicKey").initCause(gse);
++ }
++ }
++
+ // Generate and validate DHPublicKeySpec
+ private DHPublicKeySpec generateDHPublicKeySpec(KeyPairGenerator kpg)
+ throws GeneralSecurityException {
+--- ./jdk/src/share/classes/sun/security/ssl/ECDHCrypt.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/sun/security/ssl/ECDHCrypt.java Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2006, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -29,6 +29,7 @@
+ import java.security.interfaces.ECPublicKey;
+ import java.security.spec.*;
+
++import java.util.EnumSet;
+ import javax.crypto.SecretKey;
+ import javax.crypto.KeyAgreement;
+ import javax.net.ssl.SSLHandshakeException;
+@@ -88,8 +89,11 @@
+ return publicKey;
+ }
+
+- // called by ClientHandshaker with either the server's static or ephemeral public key
+- SecretKey getAgreedSecret(PublicKey peerPublicKey) throws SSLHandshakeException {
++ // called by ClientHandshaker with either the server's static or
++ // ephemeral public key
++ SecretKey getAgreedSecret(
++ PublicKey peerPublicKey) throws SSLHandshakeException {
++
+ try {
+ KeyAgreement ka = JsseJce.getKeyAgreement("ECDH");
+ ka.init(privateKey);
+@@ -102,10 +106,13 @@
+ }
+
+ // called by ServerHandshaker
+- SecretKey getAgreedSecret(byte[] encodedPoint) throws SSLHandshakeException {
++ SecretKey getAgreedSecret(
++ byte[] encodedPoint) throws SSLHandshakeException {
++
+ try {
+ ECParameterSpec params = publicKey.getParams();
+- ECPoint point = JsseJce.decodePoint(encodedPoint, params.getCurve());
++ ECPoint point =
++ JsseJce.decodePoint(encodedPoint, params.getCurve());
+ KeyFactory kf = JsseJce.getKeyFactory("EC");
+ ECPublicKeySpec spec = new ECPublicKeySpec(point, params);
+ PublicKey peerPublicKey = kf.generatePublic(spec);
+@@ -116,4 +123,30 @@
+ }
+ }
+
++ // Check constraints of the specified EC public key.
++ void checkConstraints(AlgorithmConstraints constraints,
++ byte[] encodedPoint) throws SSLHandshakeException {
++
++ try {
++
++ ECParameterSpec params = publicKey.getParams();
++ ECPoint point =
++ JsseJce.decodePoint(encodedPoint, params.getCurve());
++ ECPublicKeySpec spec = new ECPublicKeySpec(point, params);
++
++ KeyFactory kf = JsseJce.getKeyFactory("EC");
++ ECPublicKey publicKey = (ECPublicKey)kf.generatePublic(spec);
++
++ // check constraints of ECPublicKey
++ if (!constraints.permits(
++ EnumSet.of(CryptoPrimitive.KEY_AGREEMENT), publicKey)) {
++ throw new SSLHandshakeException(
++ "ECPublicKey does not comply to algorithm constraints");
++ }
++ } catch (GeneralSecurityException | java.io.IOException e) {
++ throw (SSLHandshakeException) new SSLHandshakeException(
++ "Could not generate ECPublicKey").initCause(e);
++ }
++ }
++
+ }
+--- ./jdk/src/share/classes/sun/security/ssl/HandshakeMessage.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/sun/security/ssl/HandshakeMessage.java Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1996, 2012, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -1907,7 +1907,7 @@
+ */
+ boolean verify(HandshakeHash handshakeHash, int sender, SecretKey master) {
+ byte[] myFinished = getFinished(handshakeHash, sender, master);
+- return Arrays.equals(myFinished, verifyData);
++ return MessageDigest.isEqual(myFinished, verifyData);
+ }
+
+ /*
+--- ./jdk/src/share/classes/sun/security/ssl/Handshaker.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/sun/security/ssl/Handshaker.java Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -86,7 +86,7 @@
+ String identificationProtocol;
+
+ // The cryptographic algorithm constraints
+- private AlgorithmConstraints algorithmConstraints = null;
++ AlgorithmConstraints algorithmConstraints = null;
+
+ // Local supported signature and algorithms
+ Collection<SignatureAndHashAlgorithm> localSupportedSignAlgs;
+--- ./jdk/src/share/classes/sun/security/ssl/SSLAlgorithmConstraints.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/sun/security/ssl/SSLAlgorithmConstraints.java Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2010, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -34,9 +34,9 @@
+ import java.security.Key;
+
+ import java.util.Set;
+-import java.util.HashSet;
+
+ import sun.security.util.DisabledAlgorithmConstraints;
++import static sun.security.util.DisabledAlgorithmConstraints.*;
+ import sun.security.ssl.CipherSuite.*;
+
+ /**
+@@ -46,10 +46,15 @@
+ * for the syntax of the disabled algorithm string.
+ */
+ final class SSLAlgorithmConstraints implements AlgorithmConstraints {
++
+ private final static AlgorithmConstraints tlsDisabledAlgConstraints =
+- new TLSDisabledAlgConstraints();
++ new DisabledAlgorithmConstraints(PROPERTY_TLS_DISABLED_ALGS,
++ new SSLAlgorithmDecomposer());
++
+ private final static AlgorithmConstraints x509DisabledAlgConstraints =
+- new X509DisabledAlgConstraints();
++ new DisabledAlgorithmConstraints(PROPERTY_CERTPATH_DISABLED_ALGS,
++ new SSLAlgorithmDecomposer(true));
++
+ private AlgorithmConstraints userAlgConstraints = null;
+ private AlgorithmConstraints peerAlgConstraints = null;
+
+@@ -267,217 +272,4 @@
+ }
+ }
+
+- static private class BasicDisabledAlgConstraints
+- extends DisabledAlgorithmConstraints {
+- BasicDisabledAlgConstraints(String propertyName) {
+- super(propertyName);
+- }
+-
+- protected Set<String> decomposes(KeyExchange keyExchange,
+- boolean forCertPathOnly) {
+- Set<String> components = new HashSet<>();
+- switch (keyExchange) {
+- case K_NULL:
+- if (!forCertPathOnly) {
+- components.add("NULL");
+- }
+- break;
+- case K_RSA:
+- components.add("RSA");
+- break;
+- case K_RSA_EXPORT:
+- components.add("RSA");
+- components.add("RSA_EXPORT");
+- break;
+- case K_DH_RSA:
+- components.add("RSA");
+- components.add("DH");
+- components.add("DiffieHellman");
+- components.add("DH_RSA");
+- break;
+- case K_DH_DSS:
+- components.add("DSA");
+- components.add("DSS");
+- components.add("DH");
+- components.add("DiffieHellman");
+- components.add("DH_DSS");
+- break;
+- case K_DHE_DSS:
+- components.add("DSA");
+- components.add("DSS");
+- components.add("DH");
+- components.add("DHE");
+- components.add("DiffieHellman");
+- components.add("DHE_DSS");
+- break;
+- case K_DHE_RSA:
+- components.add("RSA");
+- components.add("DH");
+- components.add("DHE");
+- components.add("DiffieHellman");
+- components.add("DHE_RSA");
+- break;
+- case K_DH_ANON:
+- if (!forCertPathOnly) {
+- components.add("ANON");
+- components.add("DH");
+- components.add("DiffieHellman");
+- components.add("DH_ANON");
+- }
+- break;
+- case K_ECDH_ECDSA:
+- components.add("ECDH");
+- components.add("ECDSA");
+- components.add("ECDH_ECDSA");
+- break;
+- case K_ECDH_RSA:
+- components.add("ECDH");
+- components.add("RSA");
+- components.add("ECDH_RSA");
+- break;
+- case K_ECDHE_ECDSA:
+- components.add("ECDHE");
+- components.add("ECDSA");
+- components.add("ECDHE_ECDSA");
+- break;
+- case K_ECDHE_RSA:
+- components.add("ECDHE");
+- components.add("RSA");
+- components.add("ECDHE_RSA");
+- break;
+- case K_ECDH_ANON:
+- if (!forCertPathOnly) {
+- components.add("ECDH");
+- components.add("ANON");
+- components.add("ECDH_ANON");
+- }
+- break;
+- case K_KRB5:
+- if (!forCertPathOnly) {
+- components.add("KRB5");
+- }
+- break;
+- case K_KRB5_EXPORT:
+- if (!forCertPathOnly) {
+- components.add("KRB5_EXPORT");
+- }
+- break;
+- default:
+- // ignore
+- }
+-
+- return components;
+- }
+-
+- protected Set<String> decomposes(BulkCipher bulkCipher) {
+- Set<String> components = new HashSet<>();
+-
+- if (bulkCipher.transformation != null) {
+- components.addAll(super.decomposes(bulkCipher.transformation));
+- }
+-
+- return components;
+- }
+-
+- protected Set<String> decomposes(MacAlg macAlg) {
+- Set<String> components = new HashSet<>();
+-
+- if (macAlg == CipherSuite.M_MD5) {
+- components.add("MD5");
+- components.add("HmacMD5");
+- } else if (macAlg == CipherSuite.M_SHA) {
+- components.add("SHA1");
+- components.add("SHA-1");
+- components.add("HmacSHA1");
+- } else if (macAlg == CipherSuite.M_SHA256) {
+- components.add("SHA256");
+- components.add("SHA-256");
+- components.add("HmacSHA256");
+- } else if (macAlg == CipherSuite.M_SHA384) {
+- components.add("SHA384");
+- components.add("SHA-384");
+- components.add("HmacSHA384");
+- }
+-
+- return components;
+- }
+- }
+-
+- static private class TLSDisabledAlgConstraints
+- extends BasicDisabledAlgConstraints {
+-
+- TLSDisabledAlgConstraints() {
+- super(DisabledAlgorithmConstraints.PROPERTY_TLS_DISABLED_ALGS);
+- }
+-
+- @Override
+- protected Set<String> decomposes(String algorithm) {
+- if (algorithm.startsWith("SSL_") || algorithm.startsWith("TLS_")) {
+- CipherSuite cipherSuite = null;
+- try {
+- cipherSuite = CipherSuite.valueOf(algorithm);
+- } catch (IllegalArgumentException iae) {
+- // ignore: unknown or unsupported ciphersuite
+- }
+-
+- if (cipherSuite != null) {
+- Set<String> components = new HashSet<>();
+-
+- if(cipherSuite.keyExchange != null) {
+- components.addAll(
+- decomposes(cipherSuite.keyExchange, false));
+- }
+-
+- if (cipherSuite.cipher != null) {
+- components.addAll(decomposes(cipherSuite.cipher));
+- }
+-
+- if (cipherSuite.macAlg != null) {
+- components.addAll(decomposes(cipherSuite.macAlg));
+- }
+-
+- return components;
+- }
+- }
+-
+- return super.decomposes(algorithm);
+- }
+- }
+-
+- static private class X509DisabledAlgConstraints
+- extends BasicDisabledAlgConstraints {
+-
+- X509DisabledAlgConstraints() {
+- super(DisabledAlgorithmConstraints.PROPERTY_CERTPATH_DISABLED_ALGS);
+- }
+-
+- @Override
+- protected Set<String> decomposes(String algorithm) {
+- if (algorithm.startsWith("SSL_") || algorithm.startsWith("TLS_")) {
+- CipherSuite cipherSuite = null;
+- try {
+- cipherSuite = CipherSuite.valueOf(algorithm);
+- } catch (IllegalArgumentException iae) {
+- // ignore: unknown or unsupported ciphersuite
+- }
+-
+- if (cipherSuite != null) {
+- Set<String> components = new HashSet<>();
+-
+- if(cipherSuite.keyExchange != null) {
+- components.addAll(
+- decomposes(cipherSuite.keyExchange, true));
+- }
+-
+- // Certification path algorithm constraints do not apply
+- // to cipherSuite.cipher and cipherSuite.macAlg.
+-
+- return components;
+- }
+- }
+-
+- return super.decomposes(algorithm);
+- }
+- }
+ }
+-
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ ./jdk/src/share/classes/sun/security/ssl/SSLAlgorithmDecomposer.java Tue Jun 02 13:49:09 2015 +0300
+@@ -0,0 +1,251 @@
++/*
++ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation. Oracle designates this
++ * particular file as subject to the "Classpath" exception as provided
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++package sun.security.ssl;
++
++import java.util.HashSet;
++import java.util.Set;
++import sun.security.util.AlgorithmDecomposer;
++import static sun.security.ssl.CipherSuite.*;
++import static sun.security.ssl.CipherSuite.KeyExchange.*;
++
++/**
++ * The class decomposes standard SSL/TLS cipher suites into sub-elements.
++ */
++class SSLAlgorithmDecomposer extends AlgorithmDecomposer {
++
++ // indicates that only certification path algorithms need to be used
++ private final boolean onlyX509;
++
++ SSLAlgorithmDecomposer(boolean onlyX509) {
++ this.onlyX509 = onlyX509;
++ }
++
++ SSLAlgorithmDecomposer() {
++ this(false);
++ }
++
++ private Set<String> decomposes(CipherSuite.KeyExchange keyExchange) {
++ Set<String> components = new HashSet<>();
++ switch (keyExchange) {
++ case K_NULL:
++ if (!onlyX509) {
++ components.add("K_NULL");
++ }
++ break;
++ case K_RSA:
++ components.add("RSA");
++ break;
++ case K_RSA_EXPORT:
++ components.add("RSA");
++ components.add("RSA_EXPORT");
++ break;
++ case K_DH_RSA:
++ components.add("RSA");
++ components.add("DH");
++ components.add("DiffieHellman");
++ components.add("DH_RSA");
++ break;
++ case K_DH_DSS:
++ components.add("DSA");
++ components.add("DSS");
++ components.add("DH");
++ components.add("DiffieHellman");
++ components.add("DH_DSS");
++ break;
++ case K_DHE_DSS:
++ components.add("DSA");
++ components.add("DSS");
++ components.add("DH");
++ components.add("DHE");
++ components.add("DiffieHellman");
++ components.add("DHE_DSS");
++ break;
++ case K_DHE_RSA:
++ components.add("RSA");
++ components.add("DH");
++ components.add("DHE");
++ components.add("DiffieHellman");
++ components.add("DHE_RSA");
++ break;
++ case K_DH_ANON:
++ if (!onlyX509) {
++ components.add("ANON");
++ components.add("DH");
++ components.add("DiffieHellman");
++ components.add("DH_ANON");
++ }
++ break;
++ case K_ECDH_ECDSA:
++ components.add("ECDH");
++ components.add("ECDSA");
++ components.add("ECDH_ECDSA");
++ break;
++ case K_ECDH_RSA:
++ components.add("ECDH");
++ components.add("RSA");
++ components.add("ECDH_RSA");
++ break;
++ case K_ECDHE_ECDSA:
++ components.add("ECDHE");
++ components.add("ECDSA");
++ components.add("ECDHE_ECDSA");
++ break;
++ case K_ECDHE_RSA:
++ components.add("ECDHE");
++ components.add("RSA");
++ components.add("ECDHE_RSA");
++ break;
++ case K_ECDH_ANON:
++ if (!onlyX509) {
++ components.add("ECDH");
++ components.add("ANON");
++ components.add("ECDH_ANON");
++ }
++ break;
++ case K_KRB5:
++ if (!onlyX509) {
++ components.add("KRB5");
++ }
++ break;
++ case K_KRB5_EXPORT:
++ if (!onlyX509) {
++ components.add("KRB5_EXPORT");
++ }
++ break;
++ default:
++ // ignore
++ }
++
++ return components;
++ }
++
++ private Set<String> decomposes(CipherSuite.BulkCipher bulkCipher) {
++ Set<String> components = new HashSet<>();
++
++ if (bulkCipher.transformation != null) {
++ components.addAll(super.decompose(bulkCipher.transformation));
++ }
++
++ if (bulkCipher == B_NULL) {
++ components.add("C_NULL");
++ } else if (bulkCipher == B_RC2_40) {
++ components.add("RC2_CBC_40");
++ } else if (bulkCipher == B_RC4_40) {
++ components.add("RC4_40");
++ } else if (bulkCipher == B_RC4_128) {
++ components.add("RC4_128");
++ } else if (bulkCipher == B_DES_40) {
++ components.add("DES40_CBC");
++ components.add("DES_CBC_40");
++ } else if (bulkCipher == B_DES) {
++ components.add("DES_CBC");
++ } else if (bulkCipher == B_3DES) {
++ components.add("3DES_EDE_CBC");
++ } else if (bulkCipher == B_AES_128) {
++ components.add("AES_128_CBC");
++ } else if (bulkCipher == B_AES_256) {
++ components.add("AES_256_CBC");
++ } else if (bulkCipher == B_AES_128_GCM) {
++ components.add("AES_128_GCM");
++ } else if (bulkCipher == B_AES_256_GCM) {
++ components.add("AES_256_GCM");
++ }
++
++ return components;
++ }
++
++ private Set<String> decomposes(CipherSuite.MacAlg macAlg,
++ BulkCipher cipher) {
++ Set<String> components = new HashSet<>();
++
++ if (macAlg == M_NULL
++ && cipher.cipherType != CipherType.AEAD_CIPHER) {
++ components.add("M_NULL");
++ } else if (macAlg == M_MD5) {
++ components.add("MD5");
++ components.add("HmacMD5");
++ } else if (macAlg == M_SHA) {
++ components.add("SHA1");
++ components.add("SHA-1");
++ components.add("HmacSHA1");
++ } else if (macAlg == M_SHA256) {
++ components.add("SHA256");
++ components.add("SHA-256");
++ components.add("HmacSHA256");
++ } else if (macAlg == M_SHA384) {
++ components.add("SHA384");
++ components.add("SHA-384");
++ components.add("HmacSHA384");
++ }
++
++ return components;
++ }
++
++ private Set<String> decompose(KeyExchange keyExchange, BulkCipher cipher,
++ MacAlg macAlg) {
++ Set<String> components = new HashSet<>();
++
++ if (keyExchange != null) {
++ components.addAll(decomposes(keyExchange));
++ }
++
++ if (onlyX509) {
++ // Certification path algorithm constraints do not apply
++ // to cipher and macAlg.
++ return components;
++ }
++
++ if (cipher != null) {
++ components.addAll(decomposes(cipher));
++ }
++
++ if (macAlg != null) {
++ components.addAll(decomposes(macAlg, cipher));
++ }
++
++ return components;
++ }
++
++ @Override
++ public Set<String> decompose(String algorithm) {
++ if (algorithm.startsWith("SSL_") || algorithm.startsWith("TLS_")) {
++ CipherSuite cipherSuite = null;
++ try {
++ cipherSuite = CipherSuite.valueOf(algorithm);
++ } catch (IllegalArgumentException iae) {
++ // ignore: unknown or unsupported ciphersuite
++ }
++
++ if (cipherSuite != null) {
++ return decompose(cipherSuite.keyExchange, cipherSuite.cipher,
++ cipherSuite.macAlg);
++ }
++ }
++
++ return super.decompose(algorithm);
++ }
++
++}
+--- ./jdk/src/share/classes/sun/security/ssl/SSLSocketImpl.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/sun/security/ssl/SSLSocketImpl.java Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -40,6 +40,9 @@
+ import javax.crypto.BadPaddingException;
+ import javax.net.ssl.*;
+
++import sun.misc.JavaNetAccess;
++import sun.misc.SharedSecrets;
++
+ /**
+ * Implementation of an SSL socket. This is a normal connection type
+ * socket, implementing SSL over some lower level socket, such as TCP.
+@@ -389,6 +392,15 @@
+ */
+ private boolean preferLocalCipherSuites = false;
+
++ /*
++ * Is the local name service trustworthy?
++ *
++ * If the local name service is not trustworthy, reverse host name
++ * resolution should not be performed for endpoint identification.
++ */
++ static final boolean trustNameService =
++ Debug.getBooleanProperty("jdk.tls.trustNameService", false);
++
+ //
+ // CONSTRUCTORS AND INITIALIZATION CODE
+ //
+@@ -2149,11 +2161,41 @@
+ synchronized String getHost() {
+ // Note that the host may be null or empty for localhost.
+ if (host == null || host.length() == 0) {
+- host = getInetAddress().getHostName();
++ if (!trustNameService) {
++ // If the local name service is not trustworthy, reverse host
++ // name resolution should not be performed for endpoint
++ // identification. Use the application original specified
++ // hostname or IP address instead.
++ host = getOriginalHostname(getInetAddress());
++ } else {
++ host = getInetAddress().getHostName();
++ }
+ }
++
+ return host;
+ }
+
++ /*
++ * Get the original application specified hostname.
++ */
++ private static String getOriginalHostname(InetAddress inetAddress) {
++ /*
++ * Get the original hostname via sun.misc.SharedSecrets.
++ */
++ JavaNetAccess jna = SharedSecrets.getJavaNetAccess();
++ String originalHostname = jna.getOriginalHostName(inetAddress);
++
++ /*
++ * If no application specified hostname, use the IP address.
++ */
++ if (originalHostname == null || originalHostname.length() == 0) {
++ originalHostname = inetAddress.getHostAddress();
++ }
++
++ return originalHostname;
++ }
++
++
+ // ONLY used by HttpsClient to setup the URI specified hostname
+ //
+ // Please NOTE that this method MUST be called before calling to
+--- ./jdk/src/share/classes/sun/security/ssl/ServerHandshaker.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/sun/security/ssl/ServerHandshaker.java Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -32,6 +32,7 @@
+ import java.security.cert.*;
+ import java.security.interfaces.*;
+ import java.security.spec.ECParameterSpec;
++import java.math.BigInteger;
+
+ import javax.crypto.SecretKey;
+ import javax.crypto.spec.SecretKeySpec;
+@@ -41,6 +42,7 @@
+ import javax.security.auth.Subject;
+
+ import sun.security.util.KeyUtil;
++import sun.security.util.LegacyAlgorithmConstraints;
+ import sun.security.action.GetPropertyAction;
+ import sun.security.ssl.HandshakeMessage.*;
+ import sun.security.ssl.CipherSuite.*;
+@@ -106,6 +108,12 @@
+ // The customized ephemeral DH key size for non-exportable cipher suites.
+ private static final int customizedDHKeySize;
+
++ // legacy algorithm constraints
++ private static final AlgorithmConstraints legacyAlgorithmConstraints =
++ new LegacyAlgorithmConstraints(
++ LegacyAlgorithmConstraints.PROPERTY_TLS_LEGACY_ALGS,
++ new SSLAlgorithmDecomposer());
++
+ static {
+ String property = AccessController.doPrivileged(
+ new GetPropertyAction("jdk.tls.ephemeralDHKeySize"));
+@@ -406,7 +414,7 @@
+ }
+
+ // verify the client_verify_data value
+- if (!Arrays.equals(clientVerifyData,
++ if (!MessageDigest.isEqual(clientVerifyData,
+ clientHelloRI.getRenegotiatedConnection())) {
+ fatalSE(Alerts.alert_handshake_failure,
+ "Incorrect verify data in ClientHello " +
+@@ -995,6 +1003,7 @@
+ proposed = getActiveCipherSuites();
+ }
+
++ List<CipherSuite> legacySuites = new ArrayList<>();
+ for (CipherSuite suite : prefered.collection()) {
+ if (isNegotiable(proposed, suite) == false) {
+ continue;
+@@ -1006,11 +1015,24 @@
+ continue;
+ }
+ }
++
++ if (!legacyAlgorithmConstraints.permits(null, suite.name, null)) {
++ legacySuites.add(suite);
++ continue;
++ }
++
+ if (trySetCipherSuite(suite) == false) {
+ continue;
+ }
+ return;
+ }
++
++ for (CipherSuite suite : legacySuites) {
++ if (trySetCipherSuite(suite)) {
++ return;
++ }
++ }
++
+ fatalSE(Alerts.alert_handshake_failure, "no cipher suites in common");
+ }
+
+@@ -1543,7 +1565,13 @@
+ if (debug != null && Debug.isOn("handshake")) {
+ mesg.print(System.out);
+ }
+- return dh.getAgreedSecret(mesg.getClientPublicKey(), false);
++
++ BigInteger publicKeyValue = mesg.getClientPublicKey();
++
++ // check algorithm constraints
++ dh.checkConstraints(algorithmConstraints, publicKeyValue);
++
++ return dh.getAgreedSecret(publicKeyValue, false);
+ }
+
+ private SecretKey clientKeyExchange(ECDHClientKeyExchange mesg)
+@@ -1552,7 +1580,13 @@
+ if (debug != null && Debug.isOn("handshake")) {
+ mesg.print(System.out);
+ }
+- return ecdh.getAgreedSecret(mesg.getEncodedPoint());
++
++ byte[] publicPoint = mesg.getEncodedPoint();
++
++ // check algorithm constraints
++ ecdh.checkConstraints(algorithmConstraints, publicPoint);
++
++ return ecdh.getAgreedSecret(publicPoint);
+ }
+
+ /*
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ ./jdk/src/share/classes/sun/security/util/AbstractAlgorithmConstraints.java Tue Jun 02 13:49:09 2015 +0300
+@@ -0,0 +1,119 @@
++/*
++ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation. Oracle designates this
++ * particular file as subject to the "Classpath" exception as provided
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++package sun.security.util;
++
++import java.security.AccessController;
++import java.security.AlgorithmConstraints;
++import java.security.PrivilegedAction;
++import java.security.Security;
++import java.util.Map;
++import java.util.Set;
++
++/**
++ * The class contains common functionality for algorithm constraints classes.
++ */
++public abstract class AbstractAlgorithmConstraints
++ implements AlgorithmConstraints {
++
++ protected final AlgorithmDecomposer decomposer;
++
++ protected AbstractAlgorithmConstraints(AlgorithmDecomposer decomposer) {
++ this.decomposer = decomposer;
++ }
++
++ // Get algorithm constraints from the specified security property.
++ private static void loadAlgorithmsMap(Map<String, String[]> algorithmsMap,
++ String propertyName) {
++ String property = AccessController.doPrivileged(
++ (PrivilegedAction<String>) () -> Security.getProperty(
++ propertyName));
++
++ String[] algorithmsInProperty = null;
++ if (property != null && !property.isEmpty()) {
++ // remove double quote marks from beginning/end of the property
++ if (property.charAt(0) == '"'
++ && property.charAt(property.length() - 1) == '"') {
++ property = property.substring(1, property.length() - 1);
++ }
++ algorithmsInProperty = property.split(",");
++ for (int i = 0; i < algorithmsInProperty.length;
++ i++) {
++ algorithmsInProperty[i] = algorithmsInProperty[i].trim();
++ }
++ }
++
++ // map the disabled algorithms
++ if (algorithmsInProperty == null) {
++ algorithmsInProperty = new String[0];
++ }
++ algorithmsMap.put(propertyName, algorithmsInProperty);
++ }
++
++ static String[] getAlgorithms(Map<String, String[]> algorithmsMap,
++ String propertyName) {
++ synchronized (algorithmsMap) {
++ if (!algorithmsMap.containsKey(propertyName)) {
++ loadAlgorithmsMap(algorithmsMap, propertyName);
++ }
++
++ return algorithmsMap.get(propertyName);
++ }
++ }
++
++ static boolean checkAlgorithm(String[] algorithms, String algorithm,
++ AlgorithmDecomposer decomposer) {
++ if (algorithm == null || algorithm.length() == 0) {
++ throw new IllegalArgumentException("No algorithm name specified");
++ }
++
++ Set<String> elements = null;
++ for (String item : algorithms) {
++ if (item == null || item.isEmpty()) {
++ continue;
++ }
++
++ // check the full name
++ if (item.equalsIgnoreCase(algorithm)) {
++ return false;
++ }
++
++ // decompose the algorithm into sub-elements
++ if (elements == null) {
++ elements = decomposer.decompose(algorithm);
++ }
++
++ // check the items of the algorithm
++ for (String element : elements) {
++ if (item.equalsIgnoreCase(element)) {
++ return false;
++ }
++ }
++ }
++
++ return true;
++ }
++
++}
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ ./jdk/src/share/classes/sun/security/util/AlgorithmDecomposer.java Tue Jun 02 13:49:09 2015 +0300
+@@ -0,0 +1,130 @@
++/*
++ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation. Oracle designates this
++ * particular file as subject to the "Classpath" exception as provided
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++package sun.security.util;
++
++import java.util.HashSet;
++import java.util.Set;
++import java.util.regex.Pattern;
++
++/**
++ * The class decomposes standard algorithms into sub-elements.
++ */
++public class AlgorithmDecomposer {
++
++ private static final Pattern transPattern = Pattern.compile("/");
++ private static final Pattern pattern =
++ Pattern.compile("with|and", Pattern.CASE_INSENSITIVE);
++
++ /**
++ * Decompose the standard algorithm name into sub-elements.
++ * <p>
++ * For example, we need to decompose "SHA1WithRSA" into "SHA1" and "RSA"
++ * so that we can check the "SHA1" and "RSA" algorithm constraints
++ * separately.
++ * <p>
++ * Please override the method if need to support more name pattern.
++ */
++ public Set<String> decompose(String algorithm) {
++ if (algorithm == null || algorithm.length() == 0) {
++ return new HashSet<>();
++ }
++
++ // algorithm/mode/padding
++ String[] transTockens = transPattern.split(algorithm);
++
++ Set<String> elements = new HashSet<>();
++ for (String transTocken : transTockens) {
++ if (transTocken == null || transTocken.length() == 0) {
++ continue;
++ }
++
++ // PBEWith<digest>And<encryption>
++ // PBEWith<prf>And<encryption>
++ // OAEPWith<digest>And<mgf>Padding
++ // <digest>with<encryption>
++ // <digest>with<encryption>and<mgf>
++ String[] tokens = pattern.split(transTocken);
++
++ for (String token : tokens) {
++ if (token == null || token.length() == 0) {
++ continue;
++ }
++
++ elements.add(token);
++ }
++ }
++
++ // In Java standard algorithm name specification, for different
++ // purpose, the SHA-1 and SHA-2 algorithm names are different. For
++ // example, for MessageDigest, the standard name is "SHA-256", while
++ // for Signature, the digest algorithm component is "SHA256" for
++ // signature algorithm "SHA256withRSA". So we need to check both
++ // "SHA-256" and "SHA256" to make the right constraint checking.
++
++ // handle special name: SHA-1 and SHA1
++ if (elements.contains("SHA1") && !elements.contains("SHA-1")) {
++ elements.add("SHA-1");
++ }
++ if (elements.contains("SHA-1") && !elements.contains("SHA1")) {
++ elements.add("SHA1");
++ }
++
++ // handle special name: SHA-224 and SHA224
++ if (elements.contains("SHA224") && !elements.contains("SHA-224")) {
++ elements.add("SHA-224");
++ }
++ if (elements.contains("SHA-224") && !elements.contains("SHA224")) {
++ elements.add("SHA224");
++ }
++
++ // handle special name: SHA-256 and SHA256
++ if (elements.contains("SHA256") && !elements.contains("SHA-256")) {
++ elements.add("SHA-256");
++ }
++ if (elements.contains("SHA-256") && !elements.contains("SHA256")) {
++ elements.add("SHA256");
++ }
++
++ // handle special name: SHA-384 and SHA384
++ if (elements.contains("SHA384") && !elements.contains("SHA-384")) {
++ elements.add("SHA-384");
++ }
++ if (elements.contains("SHA-384") && !elements.contains("SHA384")) {
++ elements.add("SHA384");
++ }
++
++ // handle special name: SHA-512 and SHA512
++ if (elements.contains("SHA512") && !elements.contains("SHA-512")) {
++ elements.add("SHA-512");
++ }
++ if (elements.contains("SHA-512") && !elements.contains("SHA512")) {
++ elements.add("SHA512");
++ }
++
++ return elements;
++ }
++
++}
+--- ./jdk/src/share/classes/sun/security/util/DisabledAlgorithmConstraints.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/sun/security/util/DisabledAlgorithmConstraints.java Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2010, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -25,15 +25,9 @@
+
+ package sun.security.util;
+
+-import java.security.AlgorithmConstraints;
+ import java.security.CryptoPrimitive;
+ import java.security.AlgorithmParameters;
+-
+ import java.security.Key;
+-import java.security.Security;
+-import java.security.PrivilegedAction;
+-import java.security.AccessController;
+-
+ import java.util.Locale;
+ import java.util.Set;
+ import java.util.Collections;
+@@ -49,7 +43,7 @@
+ * See the "jdk.certpath.disabledAlgorithms" specification in java.security
+ * for the syntax of the disabled algorithm string.
+ */
+-public class DisabledAlgorithmConstraints implements AlgorithmConstraints {
++public class DisabledAlgorithmConstraints extends AbstractAlgorithmConstraints {
+
+ // the known security property, jdk.certpath.disabledAlgorithms
+ public final static String PROPERTY_CERTPATH_DISABLED_ALGS =
+@@ -64,8 +58,8 @@
+ private final static Map<String, KeySizeConstraints> keySizeConstraintsMap =
+ new HashMap<>();
+
+- private String[] disabledAlgorithms;
+- private KeySizeConstraints keySizeConstraints;
++ private final String[] disabledAlgorithms;
++ private final KeySizeConstraints keySizeConstraints;
+
+ /**
+ * Initialize algorithm constraints with the specified security property.
+@@ -74,56 +68,27 @@
+ * algorithm constraints
+ */
+ public DisabledAlgorithmConstraints(String propertyName) {
+- // Both disabledAlgorithmsMap and keySizeConstraintsMap are
+- // synchronized with the lock of disabledAlgorithmsMap.
+- synchronized (disabledAlgorithmsMap) {
+- if(!disabledAlgorithmsMap.containsKey(propertyName)) {
+- loadDisabledAlgorithmsMap(propertyName);
+- }
++ this(propertyName, new AlgorithmDecomposer());
++ }
+
+- disabledAlgorithms = disabledAlgorithmsMap.get(propertyName);
+- keySizeConstraints = keySizeConstraintsMap.get(propertyName);
+- }
++ public DisabledAlgorithmConstraints(String propertyName,
++ AlgorithmDecomposer decomposer) {
++ super(decomposer);
++ disabledAlgorithms = getAlgorithms(disabledAlgorithmsMap, propertyName);
++ keySizeConstraints = getKeySizeConstraints(disabledAlgorithms,
++ propertyName);
+ }
+
+ @Override
+ final public boolean permits(Set<CryptoPrimitive> primitives,
+ String algorithm, AlgorithmParameters parameters) {
+
+- if (algorithm == null || algorithm.length() == 0) {
+- throw new IllegalArgumentException("No algorithm name specified");
+- }
+-
+ if (primitives == null || primitives.isEmpty()) {
+ throw new IllegalArgumentException(
+ "No cryptographic primitive specified");
+ }
+
+- Set<String> elements = null;
+- for (String disabled : disabledAlgorithms) {
+- if (disabled == null || disabled.isEmpty()) {
+- continue;
+- }
+-
+- // check the full name
+- if (disabled.equalsIgnoreCase(algorithm)) {
+- return false;
+- }
+-
+- // decompose the algorithm into sub-elements
+- if (elements == null) {
+- elements = decomposes(algorithm);
+- }
+-
+- // check the items of the algorithm
+- for (String element : elements) {
+- if (disabled.equalsIgnoreCase(element)) {
+- return false;
+- }
+- }
+- }
+-
+- return true;
++ return checkAlgorithm(disabledAlgorithms, algorithm, decomposer);
+ }
+
+ @Override
+@@ -142,98 +107,6 @@
+ return checkConstraints(primitives, algorithm, key, parameters);
+ }
+
+- /**
+- * Decompose the standard algorithm name into sub-elements.
+- * <p>
+- * For example, we need to decompose "SHA1WithRSA" into "SHA1" and "RSA"
+- * so that we can check the "SHA1" and "RSA" algorithm constraints
+- * separately.
+- * <p>
+- * Please override the method if need to support more name pattern.
+- */
+- protected Set<String> decomposes(String algorithm) {
+- if (algorithm == null || algorithm.length() == 0) {
+- return new HashSet<String>();
+- }
+-
+- // algorithm/mode/padding
+- Pattern transPattern = Pattern.compile("/");
+- String[] transTockens = transPattern.split(algorithm);
+-
+- Set<String> elements = new HashSet<String>();
+- for (String transTocken : transTockens) {
+- if (transTocken == null || transTocken.length() == 0) {
+- continue;
+- }
+-
+- // PBEWith<digest>And<encryption>
+- // PBEWith<prf>And<encryption>
+- // OAEPWith<digest>And<mgf>Padding
+- // <digest>with<encryption>
+- // <digest>with<encryption>and<mgf>
+- Pattern pattern =
+- Pattern.compile("with|and", Pattern.CASE_INSENSITIVE);
+- String[] tokens = pattern.split(transTocken);
+-
+- for (String token : tokens) {
+- if (token == null || token.length() == 0) {
+- continue;
+- }
+-
+- elements.add(token);
+- }
+- }
+-
+- // In Java standard algorithm name specification, for different
+- // purpose, the SHA-1 and SHA-2 algorithm names are different. For
+- // example, for MessageDigest, the standard name is "SHA-256", while
+- // for Signature, the digest algorithm component is "SHA256" for
+- // signature algorithm "SHA256withRSA". So we need to check both
+- // "SHA-256" and "SHA256" to make the right constraint checking.
+-
+- // handle special name: SHA-1 and SHA1
+- if (elements.contains("SHA1") && !elements.contains("SHA-1")) {
+- elements.add("SHA-1");
+- }
+- if (elements.contains("SHA-1") && !elements.contains("SHA1")) {
+- elements.add("SHA1");
+- }
+-
+- // handle special name: SHA-224 and SHA224
+- if (elements.contains("SHA224") && !elements.contains("SHA-224")) {
+- elements.add("SHA-224");
+- }
+- if (elements.contains("SHA-224") && !elements.contains("SHA224")) {
+- elements.add("SHA224");
+- }
+-
+- // handle special name: SHA-256 and SHA256
+- if (elements.contains("SHA256") && !elements.contains("SHA-256")) {
+- elements.add("SHA-256");
+- }
+- if (elements.contains("SHA-256") && !elements.contains("SHA256")) {
+- elements.add("SHA256");
+- }
+-
+- // handle special name: SHA-384 and SHA384
+- if (elements.contains("SHA384") && !elements.contains("SHA-384")) {
+- elements.add("SHA-384");
+- }
+- if (elements.contains("SHA-384") && !elements.contains("SHA384")) {
+- elements.add("SHA384");
+- }
+-
+- // handle special name: SHA-512 and SHA512
+- if (elements.contains("SHA512") && !elements.contains("SHA-512")) {
+- elements.add("SHA-512");
+- }
+- if (elements.contains("SHA-512") && !elements.contains("SHA512")) {
+- elements.add("SHA512");
+- }
+-
+- return elements;
+- }
+-
+ // Check algorithm constraints
+ private boolean checkConstraints(Set<CryptoPrimitive> primitives,
+ String algorithm, Key key, AlgorithmParameters parameters) {
+@@ -263,43 +136,18 @@
+ return true;
+ }
+
+- // Get disabled algorithm constraints from the specified security property.
+- private static void loadDisabledAlgorithmsMap(
+- final String propertyName) {
+-
+- String property = AccessController.doPrivileged(
+- new PrivilegedAction<String>() {
+- public String run() {
+- return Security.getProperty(propertyName);
+- }
+- });
+-
+- String[] algorithmsInProperty = null;
+-
+- if (property != null && !property.isEmpty()) {
+-
+- // remove double quote marks from beginning/end of the property
+- if (property.charAt(0) == '"' &&
+- property.charAt(property.length() - 1) == '"') {
+- property = property.substring(1, property.length() - 1);
++ private static KeySizeConstraints getKeySizeConstraints(
++ String[] disabledAlgorithms, String propertyName) {
++ synchronized (keySizeConstraintsMap) {
++ if(!keySizeConstraintsMap.containsKey(propertyName)) {
++ // map the key constraints
++ KeySizeConstraints keySizeConstraints =
++ new KeySizeConstraints(disabledAlgorithms);
++ keySizeConstraintsMap.put(propertyName, keySizeConstraints);
+ }
+
+- algorithmsInProperty = property.split(",");
+- for (int i = 0; i < algorithmsInProperty.length; i++) {
+- algorithmsInProperty[i] = algorithmsInProperty[i].trim();
+- }
++ return keySizeConstraintsMap.get(propertyName);
+ }
+-
+- // map the disabled algorithms
+- if (algorithmsInProperty == null) {
+- algorithmsInProperty = new String[0];
+- }
+- disabledAlgorithmsMap.put(propertyName, algorithmsInProperty);
+-
+- // map the key constraints
+- KeySizeConstraints keySizeConstraints =
+- new KeySizeConstraints(algorithmsInProperty);
+- keySizeConstraintsMap.put(propertyName, keySizeConstraints);
+ }
+
+ /**
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ ./jdk/src/share/classes/sun/security/util/LegacyAlgorithmConstraints.java Tue Jun 02 13:49:09 2015 +0300
+@@ -0,0 +1,73 @@
++/*
++ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation. Oracle designates this
++ * particular file as subject to the "Classpath" exception as provided
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++package sun.security.util;
++
++import java.security.AlgorithmParameters;
++import java.security.CryptoPrimitive;
++import java.security.Key;
++import java.util.HashMap;
++import java.util.Map;
++import java.util.Set;
++import static sun.security.util.AbstractAlgorithmConstraints.getAlgorithms;
++
++/**
++ * Algorithm constraints for legacy algorithms.
++ */
++public class LegacyAlgorithmConstraints extends AbstractAlgorithmConstraints {
++
++ // the known security property, jdk.tls.legacyAlgorithms
++ public final static String PROPERTY_TLS_LEGACY_ALGS =
++ "jdk.tls.legacyAlgorithms";
++
++ private final static Map<String, String[]> legacyAlgorithmsMap =
++ new HashMap<>();
++
++ private final String[] legacyAlgorithms;
++
++ public LegacyAlgorithmConstraints(String propertyName,
++ AlgorithmDecomposer decomposer) {
++ super(decomposer);
++ legacyAlgorithms = getAlgorithms(legacyAlgorithmsMap, propertyName);
++ }
++
++ @Override
++ final public boolean permits(Set<CryptoPrimitive> primitives,
++ String algorithm, AlgorithmParameters parameters) {
++ return checkAlgorithm(legacyAlgorithms, algorithm, decomposer);
++ }
++
++ @Override
++ final public boolean permits(Set<CryptoPrimitive> primitives, Key key) {
++ return true;
++ }
++
++ @Override
++ final public boolean permits(Set<CryptoPrimitive> primitives,
++ String algorithm, Key key, AlgorithmParameters parameters) {
++ return checkAlgorithm(legacyAlgorithms, algorithm, decomposer);
++ }
++
++}
+--- ./jdk/src/share/classes/sun/security/validator/SimpleValidator.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/sun/security/validator/SimpleValidator.java Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -141,8 +141,18 @@
+ // create distrusted certificates checker
+ UntrustedChecker untrustedChecker = new UntrustedChecker();
+
++ // check if anchor is untrusted
++ X509Certificate anchorCert = chain[chain.length - 1];
++ try {
++ untrustedChecker.check(anchorCert);
++ } catch (CertPathValidatorException cpve) {
++ throw new ValidatorException(
++ "Untrusted certificate: "+ anchorCert.getSubjectX500Principal(),
++ ValidatorException.T_UNTRUSTED_CERT, anchorCert, cpve);
++ }
++
+ // create default algorithm constraints checker
+- TrustAnchor anchor = new TrustAnchor(chain[chain.length - 1], null);
++ TrustAnchor anchor = new TrustAnchor(anchorCert, null);
+ AlgorithmChecker defaultAlgChecker = new AlgorithmChecker(anchor);
+
+ // create application level algorithm constraints checker
+--- ./jdk/src/share/classes/sun/tools/jar/resources/jar_de.properties Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/sun/tools/jar/resources/jar_de.properties Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ #
+-# Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
++# Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
+ # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ #
+ # This code is free software; you can redistribute it and/or modify it
+@@ -45,4 +45,4 @@
+ out.inflated=\ vergr\u00F6\u00DFert: {0}
+ out.size=(ein = {0}) (aus = {1})
+
+-usage=Verwendung: jar {ctxui}[vfmn0Me] [jar-file] [manifest-file] [entry-point] [-C dir] Dateien ...\nOptionen:\n -c Neues Archiv erstellen\n -t Inhaltsverzeichnis f\u00FCr Archiv anzeigen\n -x Benannte (oder alle) Dateien aus dem Archiv extrahieren\n -u Vorhandenes Archiv aktualisieren\n -v Ausgabe im Verbose-Modus aus Standard-Ausgabe generieren\n -f Dateinamen f\u00FCr Archiv angeben\n -m Manifest-Informationen aus angegebener Manifest-Datei einschlie\u00DFen\n -n Pack200-Normalisierung nach Erstellung eines neuen Archivs ausf\u00FChren\n -e Anwendungs-Einstiegspunkt f\u00FCr alleinstehende Anwendung angeben\n in einer ausf\u00FChrbaren JAR-Datei geb\u00FCndelt\n -0 nur speichern; keine ZIP-Komprimierung verwenden\n -M keine Manifest-Datei f\u00FCr die Eintr\u00E4ge erstellen\n -i Index-Informationen f\u00FCr die angegebenen JAR-Dateien generieren\n -C zu angegebenem Verzeichnis wechseln und die folgende Datei einschlie\u00DFen\nDateien, die Verzeichnisse sind, werden rekursiv verarbeitet.\nDie Namen der Manifest-Datei, der Archiv-Datei und des Einstiegspunkts sind\nin derselben Reihenfolge wie die Kennzeichen f\u00FCr "m", "f" und "e" angegeben.\n\nBeispiel 1: Archivieren von zwei Klassendateien in einem Archiv mit dem Namen "classes.jar": \n jar cvf classes.jar Foo.class Bar.class \nBeispiel 2: Verwenden einer vorhandenen Manifest-Datei mit dem Namen "mymanifest" und Archivieren aller\n Dateien im Verzeichnis mit dem Namen "foo/" in die Archiv-Datei "classes.jar": \n jar cvfm classes.jar mymanifest -C foo/ .\n
++usage=Verwendung: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] Dateien ...\nOptionen:\n -c Neues Archiv erstellen\n -t Inhaltsverzeichnis f\u00FCr Archiv anzeigen\n -x Benannte (oder alle) Dateien aus dem Archiv extrahieren\n -u Vorhandenes Archiv aktualisieren\n -v Ausgabe im Verbose-Modus aus Standard-Ausgabe generieren\n -f Dateinamen f\u00FCr Archiv angeben\n -m Manifestinformationen aus angegebener Manifestdatei einschlie\u00DFen\n -n Pack200-Normalisierung nach Erstellung eines neuen Archivs ausf\u00FChren\n -e Anwendungseinstiegspunkt f\u00FCr Standalone-Anwendung angeben \n in einer ausf\u00FChrbaren JAR-Datei geb\u00FCndelt\n -0 Nur speichern; keine ZIP-Komprimierung verwenden\n -P Komponenten mit vorangestelltem "/" (absoluter Pfad) und ".." (\u00FCbergeordnetes Verzeichnis) aus Dateinamen beibehalten\n -M Keine Manifest-Datei f\u00FCr die Eintr\u00E4ge erstellen\n -i Indexinformationen f\u00FCr die angegebenen JAR-Dateien erstellen\n -C Zum angegebenen Verzeichnis wechseln und folgende Datei einschlie\u00DFen\nFalls eine Datei ein Verzeichnis ist, wird dieses rekursiv verarbeitet.\nDer Name der Manifestdatei, der Name der Archivdatei und der Name des Einstiegspunkts werden\nin derselben Reihenfolge wie die Kennzeichen "m", "f" und "e" angegeben.\n\nBeispiel 1: Archivieren Sie zwei Klassendateien in ein Archiv mit Namen "classes.jar": \n jar cvf classes.jar Foo.class Bar.class \nBeispiel 2: Verwenden Sie die vorhandenen Manifestdatei "mymanifest", und archivieren Sie alle\n Dateien im Verzeichnis foo/ directory in "classes.jar": \n jar cvfm classes.jar mymanifest -C foo/ .\n
+--- ./jdk/src/share/classes/sun/tools/jar/resources/jar_es.properties Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/sun/tools/jar/resources/jar_es.properties Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ #
+-# Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
++# Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
+ # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ #
+ # This code is free software; you can redistribute it and/or modify it
+@@ -45,4 +45,4 @@
+ out.inflated=\ inflado: {0}
+ out.size=(entrada = {0}) (salida = {1})
+
+-usage=Sintaxis: jar {ctxui}[vfmn0Me] [jar-file] [manifest-file] [entry-point] [-C dir] archivos...\nOpciones:\n -c crear nuevo archivo\n -t crear la tabla de contenido del archivo\n -x extraer el archive mencionado (o todos) del archivo\n -u actualizar archive existente\n -v generar salida detallada de los datos de salida est\u00E1ndar\n -f especificar nombre de archive de almacenamiento\n -m incluir informaci\u00F3n de manifiesto del archive de manifiesto especificado\n -n realizar normalizaci\u00F3n de Pack200 despu\u00E9s de crear un nuevo archivo\n -e especificar punto de entrada de la aplicaci\u00F3n para la aplicaci\u00F3n aut\u00F3noma \n que se incluye dentro de un archive jar ejecutable\n -0 s\u00F3lo almacenar; no utilizar compresi\u00F3n ZIP\n -M no crear un archive de manifiesto para las entradas\n -i generar informaci\u00F3n de \u00EDndice para los archives jar especificados\n -C cambiar al directorio especificado e incluir el archivo siguiente\nSi alg\u00FAn archivo es un directorio, se procesar\u00E1 de forma recurrente.\nEl nombre del archivo de manifiesto, el nombre del archivo de almacenamiento y el nombre del punto de entrada se\nespecifican en el mismo orden que los indicadores 'm', 'f' y 'e'.\n\nEjemplo 1: para archivar archivos de dos clases en un archivo llamado classes.jar: \n jar cvf classes.jar Foo.class Bar.class \nEjemplo 2: utilice un archivo de manifiesto existente 'mymanifest' y archive todos los\n archivos del directorio foo/ en 'classes.jar': \n jar cvfm classes.jar mymanifest -C foo/ .\n
++usage=Sintaxis: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files ...\nOpciones:\n -c crear nuevo archivo\n -t crear la tabla de contenido del archivo\n -x extraer el archivo mencionado (o todos) del archivo\n -u actualizar archivo existente\n -v generar salida detallada de los datos de salida est\u00E1ndar\n -f especificar nombre de archivo de almacenamiento\n -m incluir informaci\u00F3n de manifiesto del archivo de manifiesto especificado\n -e especificar punto de entrada de la aplicaci\u00F3n para la aplicaci\u00F3n aut\u00F3noma \n que se incluye dentro de un archivo jar ejecutable\n -0 s\u00F3lo almacenar; no utilizar compresi\u00F3n ZIP\n -P conservar componentes iniciales '/' (ruta absoluta) y ".." (directorio principal) en los nombres de archivo\n -M no crear un archivo de manifiesto para las entradas\n -i generar informaci\u00F3n de \u00EDndice para los archivos jar especificados\n -C cambiar al directorio especificado e incluir el archivo siguiente\nSi alg\u00FAn archivo es un directorio, se procesar\u00E1 de forma recurrente.\nEl nombre del archivo de manifiesto, el nombre del archivo de almacenamiento y el nombre del punto de entrada se\nespecifican en el mismo orden que los indicadores 'm', 'f' y 'e'.\n\nEjemplo 1: para archivar archivos de dos clases en un archivo llamado classes.jar: \n jar cvf classes.jar Foo.class Bar.class \nEjemplo 2: utilice un archivo de manifiesto existente 'mymanifest' y archive todos los\n archivos del directorio foo/ en 'classes.jar': \n jar cvfm classes.jar mymanifest -C foo/ .\n
+--- ./jdk/src/share/classes/sun/tools/jar/resources/jar_fr.properties Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/sun/tools/jar/resources/jar_fr.properties Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ #
+-# Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
++# Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
+ # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ #
+ # This code is free software; you can redistribute it and/or modify it
+@@ -45,4 +45,4 @@
+ out.inflated=\ d\u00E9compress\u00E9 : {0}
+ out.size=(entr\u00E9e = {0}) (sortie = {1})
+
+-usage=Syntaxe : jar {ctxui}[vfmn0Me] [fichier-jar] [fichier-manifeste] [point-entr\u00E9e] [-C r\u00E9p] fichiers...\nOptions :\n -c cr\u00E9e une archive\n -t affiche la table des mati\u00E8res de l'archive\n -x extrait les fichiers nomm\u00E9s (ou tous les fichiers) de l'archive\n -u met \u00E0 jour l'archive existante\n -v g\u00E9n\u00E8re une version d\u00E9taill\u00E9e d'une sortie standard\n -f sp\u00E9cifie le nom du fichier archive\n -m inclut les informations de manifeste \u00E0 partir du fichier manifeste sp\u00E9cifi\u00E9\n -n effectue une normalisation Pack200 apr\u00E8s la cr\u00E9ation d'une archive\n -e sp\u00E9cifie le point d'entr\u00E9e d'une application en mode autonome \n int\u00E9gr\u00E9e \u00E0 un fichier JAR ex\u00E9cutable\n -0 stockage uniquement, pas de compression ZIP\n -M ne cr\u00E9e pas de fichier manifeste pour les entr\u00E9es\n -i g\u00E9n\u00E8re les informations d'index des fichiers JAR sp\u00E9cifi\u00E9s\n -C passe au r\u00E9pertoire sp\u00E9cifi\u00E9 et inclut le fichier suivant\nSi l'un des fichiers est un r\u00E9pertoire, celui-ci est trait\u00E9 r\u00E9cursivement.\nLes noms du fichier manifeste, du fichier d'archive et du point d'entr\u00E9e sont\nsp\u00E9cifi\u00E9s dans le m\u00EAme ordre que celui des indicateurs m, f et e.\n\nExemple 1 : pour archiver deux fichiers de classe dans une archive intitul\u00E9e classes.jar : \n jar cvf classes.jar Foo.class Bar.class \nExemple 2 : pour utiliser un fichier manifeste existant 'monmanifeste', puis archiver tous les\n fichiers du r\u00E9pertoire foo/ dans 'classes.jar' : \n jar cvfm classes.jar monmanifeste -C foo/ .\n
++usage=Syntaxe : jar {ctxui}[vfmn0PMe] [fichier-jar] [fichier-manifeste] [point-entr\u00E9e] [-C r\u00E9p] fichiers...\nOptions :\n -c cr\u00E9e une archive\n -t affiche la table des mati\u00E8res de l'archive\n -x extrait les fichiers nomm\u00E9s (ou tous les fichiers) de l'archive\n -u met \u00E0 jour l'archive existante\n -v g\u00E9n\u00E8re une version d\u00E9taill\u00E9e d'une sortie standard\n -f sp\u00E9cifie le nom du fichier archive\n -m inclut les informations de manifeste \u00E0 partir du fichier manifeste sp\u00E9cifi\u00E9\n -n effectue une normalisation Pack200 apr\u00E8s la cr\u00E9ation d'une archive\n -e sp\u00E9cifie le point d'entr\u00E9e d'une application en mode autonome \n int\u00E9gr\u00E9e \u00E0 un fichier JAR ex\u00E9cutable\n -0 stockage uniquement, pas de compression ZIP\n -P pr\u00E9serve les signes de d\u00E9but '/' (chemin absolu) et ".." (r\u00E9pertoire parent) dans les noms de fichier\n -M ne cr\u00E9e pas de fichier manifeste pour les entr\u00E9es\n -i g\u00E9n\u00E8re les informations d'index des fichiers JAR sp\u00E9cifi\u00E9s\n -C passe au r\u00E9pertoire sp\u00E9cifi\u00E9 et inclut le fichier suivant\nSi l'un des fichiers est un r\u00E9pertoire, celui-ci est trait\u00E9 r\u00E9cursivement.\nLes noms du fichier manifeste, du fichier archive et du point d'entr\u00E9e sont\nsp\u00E9cifi\u00E9s dans le m\u00EAme ordre que celui des indicateurs m, f et e.\n\nExemple 1 : pour archiver deux fichiers de classe dans une archive intitul\u00E9e classes.jar : \n jar cvf classes.jar Foo.class Bar.class \nExemple 2 : pour utiliser un fichier manifeste existant 'monmanifeste', puis archiver tous les\n fichiers du r\u00E9pertoire foo/ dans 'classes.jar' : \n jar cvfm classes.jar monmanifeste -C foo/ .\n
+--- ./jdk/src/share/classes/sun/tools/jar/resources/jar_it.properties Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/sun/tools/jar/resources/jar_it.properties Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ #
+-# Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
++# Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
+ # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ #
+ # This code is free software; you can redistribute it and/or modify it
+@@ -45,4 +45,4 @@
+ out.inflated=\ decompresso: {0}
+ out.size=(in = {0}) (out = {1})
+
+-usage=Uso: jar {ctxui}[vfmn0Me] [file-jar] [file-manifest] [punto di ingresso] [-C dir] file ...\nOpzioni:\n -c crea un nuovo archivio\n -t visualizza l'indice dell'archivio\n -x estrae i file con nome (o tutti i file) dall'archivio\n -u aggiorna l'archivio esistente\n -v genera output commentato dall'output standard\n -f specifica il nome file dell'archivio\n -m include informazioni manifest dal file manifest specificato\n -n esegue la normalizzazione Pack200 dopo la creazione di un nuovo archivio\n -e specifica il punto di ingresso per l'applicazione standalone \n inclusa nel file jar eseguibile\n -0 solo memorizzazione; senza compressione ZIP\n -M consente di non creare un file manifest per le voci\n -i genera informazioni sull'indice per i file jar specificati\n -C imposta la directory specificata e include il file seguente\nSe un file \u00E8 una directory, verr\u00E0 elaborato in modo ricorsivo.\nIl nome del file manifest, del file di archivio e del punto di ingresso devono\nessere specificati nello stesso ordine dei flag 'm', 'f' ed 'e'.\n\nEsempio 1: archiviazione di due file di classe in un archivio con il nome classes.jar: \n jar cvf classes.jar Foo.class Bar.class \nEsempio 2: utilizzo del file manifest esistente 'mymanifest' e archiviazione di tutti i\n file della directory foo/ in 'classes.jar': \n jar cvfm classes.jar mymanifest -C foo/ .\n
++usage=Uso: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files ...\nOpzioni:\n -c crea un nuovo archivio\n -t visualizza l'indice dell'archivio\n -x estrae i file con nome (o tutti i file) dall'archivio\n -u aggiorna l'archivio esistente\n -v genera output commentato dall'output standard\n -f specifica il nome file dell'archivio\n -m include informazioni manifest dal file manifest specificato\n -n esegue normalizzazione Pack200 dopo la creazione di un nuovo archivio\n -e specifica il punto di ingresso per l'applicazione stand-alone \n inclusa nel file jar eseguibile\n -0 solo memorizzazione; senza compressione ZIP\n -P conserva i componenti iniziali '/' (percorso assoluto) e \\"..\\" (directory padre) dai nomi file\n -M consente di non creare un file manifest per le voci\n -i genera informazioni sull'indice per i file jar specificati\n -C imposta la directory specificata e include il file seguente\nSe un file \u00E8 una directory, verr\u00E0 elaborato in modo ricorsivo.\nIl nome del file manifest, del file di archivio e del punto di ingresso devono\nessere specificati nello stesso ordine dei flag 'm', 'f' ed 'e'.\n\nEsempio 1: archiviazione di due file di classe in un archivio con il nome classes.jar: \n jar cvf classes.jar Foo.class Bar.class \nEsempio 2: utilizzo del file manifest esistente 'mymanifest' e archiviazione di tutti i\n file della directory foo/ in 'classes.jar': \n jar cvfm classes.jar mymanifest -C foo/ .\n
+--- ./jdk/src/share/classes/sun/tools/jar/resources/jar_ja.properties Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/sun/tools/jar/resources/jar_ja.properties Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ #
+-# Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
++# Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
+ # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ #
+ # This code is free software; you can redistribute it and/or modify it
+@@ -45,4 +45,4 @@
+ out.inflated=\ {0}\u304C\u5C55\u958B\u3055\u308C\u307E\u3057\u305F
+ out.size=(\u5165={0})(\u51FA={1})
+
+-usage=\u4F7F\u7528\u65B9\u6CD5: jar {ctxui}[vfmn0Me] [jar-file] [manifest-file] [entry-point] [-C dir] files ...\n\u30AA\u30D7\u30B7\u30E7\u30F3:\n -c \u30A2\u30FC\u30AB\u30A4\u30D6\u3092\u65B0\u898F\u4F5C\u6210\u3059\u308B\n -t \u30A2\u30FC\u30AB\u30A4\u30D6\u306E\u5185\u5BB9\u3092\u4E00\u89A7\u8868\u793A\u3059\u308B\n -x \u6307\u5B9A\u306E(\u307E\u305F\u306F\u3059\u3079\u3066\u306E)\u30D5\u30A1\u30A4\u30EB\u3092\u30A2\u30FC\u30AB\u30A4\u30D6\u304B\u3089\u62BD\u51FA\u3059\u308B\n -u \u65E2\u5B58\u30A2\u30FC\u30AB\u30A4\u30D6\u3092\u66F4\u65B0\u3059\u308B\n -v \u6A19\u6E96\u51FA\u529B\u306B\u8A73\u7D30\u306A\u51FA\u529B\u3092\u751F\u6210\u3059\u308B\n -f \u30A2\u30FC\u30AB\u30A4\u30D6\u30FB\u30D5\u30A1\u30A4\u30EB\u540D\u3092\u6307\u5B9A\u3059\u308B\n -m \u6307\u5B9A\u306E\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u30FB\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u60C5\u5831\u3092\u53D6\u308A\u8FBC\u3080\n -n \u65B0\u898F\u30A2\u30FC\u30AB\u30A4\u30D6\u306E\u4F5C\u6210\u5F8C\u306BPack200\u6B63\u898F\u5316\u3092\u5B9F\u884C\u3059\u308B\n -e \u5B9F\u884C\u53EF\u80FDjar\u30D5\u30A1\u30A4\u30EB\u306B\u30D0\u30F3\u30C9\u30EB\u3055\u308C\u305F\u30B9\u30BF\u30F3\u30C9\u30A2\u30ED\u30F3\u30FB\n \u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u30A8\u30F3\u30C8\u30EA\u30FB\u30DD\u30A4\u30F3\u30C8\u3092\u6307\u5B9A\u3059\u308B\n -0 \u683C\u7D0D\u306E\u307F\u3002ZIP\u5727\u7E2E\u3092\u4F7F\u7528\u3057\u306A\u3044\n -M \u30A8\u30F3\u30C8\u30EA\u306E\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u4F5C\u6210\u3057\u306A\u3044\n -i \u6307\u5B9A\u306Ejar\u30D5\u30A1\u30A4\u30EB\u306E\u7D22\u5F15\u60C5\u5831\u3092\u751F\u6210\u3059\u308B\n -C \u6307\u5B9A\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306B\u5909\u66F4\u3057\u3001\u6B21\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u53D6\u308A\u8FBC\u3080\n\u30D5\u30A1\u30A4\u30EB\u304C\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u5834\u5408\u306F\u518D\u5E30\u7684\u306B\u51E6\u7406\u3055\u308C\u307E\u3059\u3002\n\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u30FB\u30D5\u30A1\u30A4\u30EB\u540D\u3001\u30A2\u30FC\u30AB\u30A4\u30D6\u30FB\u30D5\u30A1\u30A4\u30EB\u540D\u304A\u3088\u3073\u30A8\u30F3\u30C8\u30EA\u30FB\u30DD\u30A4\u30F3\u30C8\u540D\u306F\u3001\n\u30D5\u30E9\u30B0'm'\u3001'f'\u3001'e'\u306E\u6307\u5B9A\u3068\u540C\u3058\u9806\u756A\u3067\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\n\n\u4F8B1: 2\u3064\u306E\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u30A2\u30FC\u30AB\u30A4\u30D6classes.jar\u306B\u4FDD\u5B58\u3059\u308B: \n jar cvf classes.jar Foo.class Bar.class \n\u4F8B2: \u65E2\u5B58\u306E\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u30FB\u30D5\u30A1\u30A4\u30EB'mymanifest'\u3092\u4F7F\u7528\u3057\u3001foo/\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\n \u5168\u30D5\u30A1\u30A4\u30EB\u3092'classes.jar'\u306B\u30A2\u30FC\u30AB\u30A4\u30D6\u3059\u308B: \n jar cvfm classes.jar mymanifest -C foo/ .\n
++usage=\u4F7F\u7528\u65B9\u6CD5: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files ...\n\u30AA\u30D7\u30B7\u30E7\u30F3:\n -c \u30A2\u30FC\u30AB\u30A4\u30D6\u3092\u65B0\u898F\u4F5C\u6210\u3059\u308B\n -t \u30A2\u30FC\u30AB\u30A4\u30D6\u306E\u5185\u5BB9\u3092\u4E00\u89A7\u8868\u793A\u3059\u308B\n -x \u6307\u5B9A\u306E(\u307E\u305F\u306F\u3059\u3079\u3066\u306E)\u30D5\u30A1\u30A4\u30EB\u3092\u30A2\u30FC\u30AB\u30A4\u30D6\u304B\u3089\u62BD\u51FA\u3059\u308B\n -u \u65E2\u5B58\u30A2\u30FC\u30AB\u30A4\u30D6\u3092\u66F4\u65B0\u3059\u308B\n -v \u6A19\u6E96\u51FA\u529B\u306B\u8A73\u7D30\u306A\u51FA\u529B\u3092\u751F\u6210\u3059\u308B\n -f \u30A2\u30FC\u30AB\u30A4\u30D6\u30FB\u30D5\u30A1\u30A4\u30EB\u540D\u3092\u6307\u5B9A\u3059\u308B\n -m \u6307\u5B9A\u306E\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u30FB\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u60C5\u5831\u3092\u53D6\u308A\u8FBC\u3080\n -n \u65B0\u898F\u30A2\u30FC\u30AB\u30A4\u30D6\u306E\u4F5C\u6210\u5F8C\u306BPack200\u6B63\u898F\u5316\u3092\u5B9F\u884C\u3059\u308B\n -e \u5B9F\u884C\u53EF\u80FDjar\u30D5\u30A1\u30A4\u30EB\u306B\u30D0\u30F3\u30C9\u30EB\u3055\u308C\u305F\u30B9\u30BF\u30F3\u30C9\u30A2\u30ED\u30F3\u30FB\n \u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u30A8\u30F3\u30C8\u30EA\u30FB\u30DD\u30A4\u30F3\u30C8\u3092\u6307\u5B9A\u3059\u308B\n -0 \u683C\u7D0D\u306E\u307F\u3002ZIP\u5727\u7E2E\u3092\u4F7F\u7528\u3057\u306A\u3044\n -P \u30D5\u30A1\u30A4\u30EB\u540D\u306E\u5148\u982D\u306E'/' (\u7D76\u5BFE\u30D1\u30B9)\u304A\u3088\u3073\\"..\\" (\u89AA\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA)\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u3092\u4FDD\u6301\u3059\u308B\n -M \u30A8\u30F3\u30C8\u30EA\u306E\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u4F5C\u6210\u3057\u306A\u3044\n -i \u6307\u5B9A\u306Ejar\u30D5\u30A1\u30A4\u30EB\u306E\u7D22\u5F15\u60C5\u5831\u3092\u751F\u6210\u3059\u308B\n -C \u6307\u5B9A\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306B\u5909\u66F4\u3057\u3001\u6B21\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u53D6\u308A\u8FBC\u3080\n\u30D5\u30A1\u30A4\u30EB\u304C\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u5834\u5408\u306F\u518D\u5E30\u7684\u306B\u51E6\u7406\u3055\u308C\u307E\u3059\u3002\n\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u30FB\u30D5\u30A1\u30A4\u30EB\u540D\u3001\u30A2\u30FC\u30AB\u30A4\u30D6\u30FB\u30D5\u30A1\u30A4\u30EB\u540D\u304A\u3088\u3073\u30A8\u30F3\u30C8\u30EA\u30FB\u30DD\u30A4\u30F3\u30C8\u540D\u306F\u3001\n\u30D5\u30E9\u30B0'm'\u3001'f'\u3001'e'\u306E\u6307\u5B9A\u3068\u540C\u3058\u9806\u756A\u3067\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\n\n\u4F8B1: 2\u3064\u306E\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u30A2\u30FC\u30AB\u30A4\u30D6classes.jar\u306B\u4FDD\u5B58\u3059\u308B: \n jar cvf classes.jar Foo.class Bar.class \n\u4F8B2: \u65E2\u5B58\u306E\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u30FB\u30D5\u30A1\u30A4\u30EB'mymanifest'\u3092\u4F7F\u7528\u3057\u3001foo/\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\n \u5168\u30D5\u30A1\u30A4\u30EB\u3092'classes.jar'\u306B\u30A2\u30FC\u30AB\u30A4\u30D6\u3059\u308B: \n jar cvfm classes.jar mymanifest -C foo/ \n
+--- ./jdk/src/share/classes/sun/tools/jar/resources/jar_ko.properties Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/sun/tools/jar/resources/jar_ko.properties Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ #
+-# Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
++# Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
+ # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ #
+ # This code is free software; you can redistribute it and/or modify it
+@@ -45,4 +45,4 @@
+ out.inflated=\ \uC99D\uAC00\uB428: {0}
+ out.size=(\uC785\uB825 = {0}) (\uCD9C\uB825 = {1})
+
+-usage=\uC0AC\uC6A9\uBC95: jar {ctxui}[vfmn0Me] [jar-file] [manifest-file] [entry-point] [-C dir] files ...\n\uC635\uC158:\n -c \uC0C8 \uC544\uCE74\uC774\uBE0C\uB97C \uC0DD\uC131\uD569\uB2C8\uB2E4.\n -t \uC544\uCE74\uC774\uBE0C\uC5D0 \uB300\uD55C \uBAA9\uCC28\uB97C \uB098\uC5F4\uD569\uB2C8\uB2E4.\n -x \uBA85\uBA85\uB41C(\uB610\uB294 \uBAA8\uB4E0) \uD30C\uC77C\uC744 \uC544\uCE74\uC774\uBE0C\uC5D0\uC11C \uCD94\uCD9C\uD569\uB2C8\uB2E4.\n -u \uAE30\uC874 \uC544\uCE74\uC774\uBE0C\uB97C \uC5C5\uB370\uC774\uD2B8\uD569\uB2C8\uB2E4.\n -v \uD45C\uC900 \uCD9C\uB825\uC5D0 \uC0C1\uC138 \uC815\uBCF4 \uCD9C\uB825\uC744 \uC0DD\uC131\uD569\uB2C8\uB2E4.\n -f \uC544\uCE74\uC774\uBE0C \uD30C\uC77C \uC774\uB984\uC744 \uC9C0\uC815\uD569\uB2C8\uB2E4.\n -m \uC9C0\uC815\uB41C Manifest \uD30C\uC77C\uC758 Manifest \uC815\uBCF4\uB97C \uD3EC\uD568\uD569\uB2C8\uB2E4.\n -n \uC0C8 \uC544\uCE74\uC774\uBE0C\uB97C \uC0DD\uC131\uD55C \uD6C4 Pack200 \uC815\uADDC\uD654\uB97C \uC218\uD589\uD569\uB2C8\uB2E4.\n -e jar \uC2E4\uD589 \uD30C\uC77C\uC5D0 \uBC88\uB4E4\uB85C \uC81C\uACF5\uB41C \uB3C5\uB9BD\uD615 \uC751\uC6A9 \uD504\uB85C\uADF8\uB7A8\uC758 \n \uC751\uC6A9 \uD504\uB85C\uADF8\uB7A8 \uC2DC\uC791 \uC9C0\uC810\uC744 \uC9C0\uC815\uD569\uB2C8\uB2E4.\n -0 \uC800\uC7A5 \uC804\uC6A9: ZIP \uC555\uCD95\uC744 \uC0AC\uC6A9\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.\n -M \uD56D\uBAA9\uC5D0 \uB300\uD574 Manifest \uD30C\uC77C\uC744 \uC0DD\uC131\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.\n -i \uC9C0\uC815\uB41C jar \uD30C\uC77C\uC5D0 \uB300\uD55C \uC778\uB371\uC2A4 \uC815\uBCF4\uB97C \uC0DD\uC131\uD569\uB2C8\uB2E4.\n -C \uC9C0\uC815\uB41C \uB514\uB809\uD1A0\uB9AC\uB85C \uBCC0\uACBD\uD558\uACE0 \uB2E4\uC74C \uD30C\uC77C\uC744 \uD3EC\uD568\uD569\uB2C8\uB2E4.\n\uD2B9\uC815 \uD30C\uC77C\uC774 \uB514\uB809\uD1A0\uB9AC\uC77C \uACBD\uC6B0 \uC21C\uD658\uC801\uC73C\uB85C \uCC98\uB9AC\uB429\uB2C8\uB2E4.\nManifest \uD30C\uC77C \uC774\uB984, \uC544\uCE74\uC774\uBE0C \uD30C\uC77C \uC774\uB984 \uBC0F \uC2DC\uC791 \uC9C0\uC810 \uC774\uB984\uC740\n'm', 'f' \uBC0F 'e' \uD50C\uB798\uADF8\uC640 \uB3D9\uC77C\uD55C \uC21C\uC11C\uB85C \uC9C0\uC815\uB429\uB2C8\uB2E4.\n\n\uC608 1: classes.jar\uB77C\uB294 \uC544\uCE74\uC774\uBE0C\uC5D0 \uB450 \uD074\uB798\uC2A4 \uD30C\uC77C\uC744 \uC544\uCE74\uC774\uBE0C\uD558\uB294 \uBC29\uBC95: \n jar cvf classes.jar Foo.class Bar.class \n\uC608 2: \uAE30\uC874 Manifest \uD30C\uC77C 'mymanifest'\uB97C \uC0AC\uC6A9\uD558\uC5EC\n foo/ \uB514\uB809\uD1A0\uB9AC\uC758 \uBAA8\uB4E0 \uD30C\uC77C\uC744 'classes.jar'\uB85C \uC544\uCE74\uC774\uBE0C\uD558\uB294 \uBC29\uBC95: \n jar cvfm classes.jar mymanifest -C foo/ .
++usage=\uC0AC\uC6A9\uBC95: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files ...\n\uC635\uC158:\n -c \uC0C8 \uC544\uCE74\uC774\uBE0C\uB97C \uC0DD\uC131\uD569\uB2C8\uB2E4.\n -t \uC544\uCE74\uC774\uBE0C\uC5D0 \uB300\uD55C \uBAA9\uCC28\uB97C \uB098\uC5F4\uD569\uB2C8\uB2E4.\n -x \uBA85\uBA85\uB41C(\uB610\uB294 \uBAA8\uB4E0) \uD30C\uC77C\uC744 \uC544\uCE74\uC774\uBE0C\uC5D0\uC11C \uCD94\uCD9C\uD569\uB2C8\uB2E4.\n -u \uAE30\uC874 \uC544\uCE74\uC774\uBE0C\uB97C \uC5C5\uB370\uC774\uD2B8\uD569\uB2C8\uB2E4.\n -v \uD45C\uC900 \uCD9C\uB825\uC5D0 \uC0C1\uC138 \uC815\uBCF4 \uCD9C\uB825\uC744 \uC0DD\uC131\uD569\uB2C8\uB2E4.\n -f \uC544\uCE74\uC774\uBE0C \uD30C\uC77C \uC774\uB984\uC744 \uC9C0\uC815\uD569\uB2C8\uB2E4.\n -m \uC9C0\uC815\uB41C Manifest \uD30C\uC77C\uC758 Manifest \uC815\uBCF4\uB97C \uD3EC\uD568\uD569\uB2C8\uB2E4.\n -n \uC0C8 \uC544\uCE74\uC774\uBE0C\uB97C \uC0DD\uC131\uD55C \uD6C4 Pack200 \uC815\uADDC\uD654\uB97C \uC218\uD589\uD569\uB2C8\uB2E4.\n -e jar \uC2E4\uD589 \uD30C\uC77C\uC5D0 \uBC88\uB4E4\uB85C \uC81C\uACF5\uB41C \uB3C5\uB9BD\uD615 \uC751\uC6A9 \uD504\uB85C\uADF8\uB7A8\uC758 \n \uC751\uC6A9 \uD504\uB85C\uADF8\uB7A8 \uC2DC\uC791 \uC9C0\uC810\uC744 \uC9C0\uC815\uD569\uB2C8\uB2E4.\n -0 \uC800\uC7A5 \uC804\uC6A9: ZIP \uC555\uCD95\uC744 \uC0AC\uC6A9\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.\n -P \uD30C\uC77C \uC774\uB984\uC5D0\uC11C \uC120\uD589 '/'(\uC808\uB300 \uACBD\uB85C) \uBC0F ".."(\uC0C1\uC704 \uB514\uB809\uD1A0\uB9AC) \uAD6C\uC131 \uC694\uC18C\uB97C \uC720\uC9C0\uD569\uB2C8\uB2E4.\n -M \uD56D\uBAA9\uC5D0 \uB300\uD574 Manifest \uD30C\uC77C\uC744 \uC0DD\uC131\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.\n -i \uC9C0\uC815\uB41C jar \uD30C\uC77C\uC5D0 \uB300\uD55C \uC778\uB371\uC2A4 \uC815\uBCF4\uB97C \uC0DD\uC131\uD569\uB2C8\uB2E4.\n -C \uC9C0\uC815\uB41C \uB514\uB809\uD1A0\uB9AC\uB85C \uBCC0\uACBD\uD558\uACE0 \uB2E4\uC74C \uD30C\uC77C\uC744 \uD3EC\uD568\uD569\uB2C8\uB2E4.\n\uD2B9\uC815 \uD30C\uC77C\uC774 \uB514\uB809\uD1A0\uB9AC\uC77C \uACBD\uC6B0 \uC21C\uD658\uC801\uC73C\uB85C \uCC98\uB9AC\uB429\uB2C8\uB2E4.\nManifest \uD30C\uC77C \uC774\uB984, \uC544\uCE74\uC774\uBE0C \uD30C\uC77C \uC774\uB984 \uBC0F \uC2DC\uC791 \uC9C0\uC810 \uC774\uB984\uC740\n'm', 'f' \uBC0F 'e' \uD50C\uB798\uADF8\uC640 \uB3D9\uC77C\uD55C \uC21C\uC11C\uB85C \uC9C0\uC815\uB429\uB2C8\uB2E4.\n\n\uC608 1: classes.jar\uB77C\uB294 \uC544\uCE74\uC774\uBE0C\uC5D0 \uB450 \uD074\uB798\uC2A4 \uD30C\uC77C\uC744 \uC544\uCE74\uC774\uBE0C\uD558\uB294 \uBC29\uBC95: \n jar cvf classes.jar Foo.class Bar.class \n\uC608 2: \uAE30\uC874 Manifest \uD30C\uC77C 'mymanifest'\uB97C \uC0AC\uC6A9\uD558\uC5EC\n foo/ \uB514\uB809\uD1A0\uB9AC\uC758 \uBAA8\uB4E0 \uD30C\uC77C\uC744 'classes.jar'\uB85C \uC544\uCE74\uC774\uBE0C\uD558\uB294 \uBC29\uBC95: \n jar cvfm classes.jar mymanifest -C foo/ .
+--- ./jdk/src/share/classes/sun/tools/jar/resources/jar_pt_BR.properties Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/sun/tools/jar/resources/jar_pt_BR.properties Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ #
+-# Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
++# Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
+ # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ #
+ # This code is free software; you can redistribute it and/or modify it
+@@ -45,4 +45,4 @@
+ out.inflated=\ inflado: {0}
+ out.size=(entrada = {0}) (sa\u00EDda= {1})
+
+-usage=Uso: jar {ctxui}[vfmn0Me] [jar-file] [manifest-file] [entry-point] [-C dir] arquivos ...\nOp\u00E7\u00F5es:\n -c cria novo arquivo compactado\n -t lista o sum\u00E1rio do arquivo compactado\n -x extrai arquivos com o nome (ou todos) do arquivo compactado\n -u atualiza o arquivo compactado existente\n -v gera sa\u00EDda detalhada na sa\u00EDda padr\u00E3o\n -f especifica o nome do arquivo do arquivo compactado\n -m inclui as informa\u00E7\u00F5es do manifesto do arquivo de manifesto especificado\n -n executa a normaliza\u00E7\u00E3o Pack200 ap\u00F3s a cria\u00E7\u00E3o de um novo arquivo compactado\n -e especifica o ponto de entrada da aplica\u00E7\u00E3o para aplica\u00E7\u00E3o stand-alone \n empacotada em um arquivo jar execut\u00E1vel\n -0 armazena somente; n\u00E3o usa compacta\u00E7\u00E3o ZIP\n -M n\u00E3o cria um arquivo de manifesto para as entradas\n -i gera informa\u00E7\u00F5es de \u00EDndice para os arquivos especificados\n -C passa para o diret\u00F3rio especificado e inclui o arquivo a seguir\nSe um arquivo tamb\u00E9m for um diret\u00F3rio, ele ser\u00E1 processado repetidamente.\nO nome do arquivo de manifesto, o nome do arquivo compactado e o nome do ponto de entrada s\u00E3o\nespecificados na mesma ordem dos flags 'm', 'f' e 'e'.\n\nExemplo 1: para arquivar dois arquivos de classe em um arquivo compactado denominado classes.jar: \n jar cvf classes.jar Foo.class Bar.class \nExemplo 2: use um arquivo de manifesto existente 'mymanifest' e arquive todos os\n arquivos no diret\u00F3rio foo/ na 'classes.jar': \n jar cvfm classes.jar mymanifest -C foo/ .\n
++usage=Uso: jar {ctxui}[vfmn0Me] [jar-file] [manifest-file] [entry-point] [-C dir] arquivos ...\nOp\u00E7\u00F5es:\n -c cria novo arquivo compactado\n -t lista o sum\u00E1rio do arquivo compactado\n -x extrai arquivos com o nome (ou todos) do arquivo compactado\n -u atualiza o arquivo compactado existente\n -v gera sa\u00EDda detalhada na sa\u00EDda padr\u00E3o\n -f especifica o nome do arquivo do arquivo compactado\n -m inclui as informa\u00E7\u00F5es do manifesto do arquivo de manifesto especificado\n -n executa a normaliza\u00E7\u00E3o Pack200 ap\u00F3s a cria\u00E7\u00E3o de um novo arquivo compactado\n -e especifica o ponto de entrada da aplica\u00E7\u00E3o para aplica\u00E7\u00E3o stand-alone \n empacotada em um arquivo jar execut\u00E1vel\n -0 armazena somente; n\u00E3o usa compacta\u00E7\u00E3o ZIP\n -P preserva os componentes '/' inicial (caminho absoluto) e ".." (diret\u00F3rio pai) nos nomes dos arquivos\n -M n\u00E3o cria um arquivo de manifesto para as entradas\n -i gera informa\u00E7\u00F5es de \u00EDndice para os arquivos especificados\n -C passa para o diret\u00F3rio especificado e inclui o arquivo a seguir\nSe um arquivo tamb\u00E9m for um diret\u00F3rio, ele ser\u00E1 processado repetidamente.\nO nome do arquivo de manifesto, o nome do arquivo compactado e o nome do ponto de entrada s\u00E3o\nespecificados na mesma ordem dos flags 'm', 'f' e 'e'.\n\nExemplo 1: para arquivar dois arquivos de classe em um arquivo compactado denominado classes.jar: \n jar cvf classes.jar Foo.class Bar.class \nExemplo 2: use um arquivo de manifesto existente 'mymanifest' e arquive todos os\n arquivos no diret\u00F3rio foo/ na 'classes.jar': \n jar cvfm classes.jar mymanifest -C foo/ .\n
+--- ./jdk/src/share/classes/sun/tools/jar/resources/jar_sv.properties Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/sun/tools/jar/resources/jar_sv.properties Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ #
+-# Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
++# Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
+ # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ #
+ # This code is free software; you can redistribute it and/or modify it
+@@ -45,4 +45,4 @@
+ out.inflated=\ uppackat: {0}
+ out.size=(in = {0}) (ut = {1})
+
+-usage=Syntax: jar {ctxui}[vfmn0Me] [jar-fil] [manifestfil] [startpunkt] [-C katalog] filer ...\nAlternativ:\n -c skapa nytt arkiv\n -t lista inneh\u00E5llsf\u00F6rteckning f\u00F6r arkiv\n -x extrahera namngivna (eller alla) filer fr\u00E5n arkiv\n -u uppdatera befintligt arkiv\n -v generera utf\u00F6rliga utdata vid standardutmatning\n -f ange arkivfilens namn\n -m inkludera manifestinformation fr\u00E5n angivet manifest\n -n utf\u00F6r Pack200-normalisering efter att ha skapat ett nytt arkiv\n -e ange programstartpunkt f\u00F6r frist\u00E5ende applikation \n som medf\u00F6ljer i en jar-programfil\n -0 endast lagra (ingen zip-komprimering)\n -M skapa inte n\u00E5gon manifestfil f\u00F6r posterna\n -i generera indexinformation f\u00F6r de angivna jar-filerna\n -C \u00E4ndra till den angivna katalogen och inkludera f\u00F6ljande fil\nOm en fil \u00E4r en katalog bearbetas den rekursivt.\nNamnen p\u00E5 manifestfilen, arkivfilen och startpunkten anges\ni samma ordning som m-, f- och e-flaggorna.\n\nExempel 1: S\u00E5 h\u00E4r arkiverar du tv\u00E5 klassfiler i ett arkiv med namnet classes.jar: \n jar cvf classes.jar Foo.class Bar.class \nExempel 2: Anv\u00E4nd en befintlig manifestfil (mymanifest) och arkivera alla\n filer fr\u00E5n katalogen foo/ i classes.jar: \n jar cvfm classes.jar mymanifest -C foo/ .\n
++usage=Syntax: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files ...\nAlternativ:\n -c skapa nytt arkiv\n -t lista inneh\u00E5llsf\u00F6rteckning f\u00F6r arkiv\n -x extrahera namngivna (eller alla) filer fr\u00E5n arkivet\n -u uppdatera befintligt arkiv\n -v generera utf\u00F6rliga utdata vid standardutmatning\n -f ange arkivfilens namn\n -m inkludera manifestinformation fr\u00E5n angivet manifest\n -n utf\u00F6r Pack200-normalisering efter att ett nytt arkiv har skapats\n -e ange programstartpunkt f\u00F6r frist\u00E5ende applikation \n som medf\u00F6ljer i en jar-programfil\n -0 lagra endast; anv\u00E4nd inte zip-komprimering\n -P beh\u00E5ll komponenter f\u00F6r inledande '/' (absolut s\u00F6kv\u00E4g) och ".." (\u00F6verordnad katalog) fr\u00E5n filnamn\n -M skapa inte n\u00E5gon manifestfil f\u00F6r posterna\n -i generera indexinformation f\u00F6r de angivna jar-filerna\n -C \u00E4ndra till den angivna katalogen och inkludera f\u00F6ljande fil\nOm en fil \u00E4r en katalog bearbetas den rekursivt.\nNamnen p\u00E5 manifestfilen, arkivfilen och startpunkten anges i samma\nordning som flaggorna 'm', 'f' och 'e'.\n\nExempel 1: S\u00E5 h\u00E4r arkiverar du tv\u00E5 klassfiler i ett arkiv med namnet classes.jar: \n jar cvf classes.jar Foo.class Bar.class \nExempel 2: Anv\u00E4nd en befintlig manifestfil (mymanifest) och arkivera alla\n filer fr\u00E5n katalogen 'foo/' till 'classes.jar': \n jar cvfm classes.jar mymanifest -C foo/ .\n
+--- ./jdk/src/share/classes/sun/tools/jar/resources/jar_zh_CN.properties Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/sun/tools/jar/resources/jar_zh_CN.properties Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ #
+-# Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
++# Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
+ # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ #
+ # This code is free software; you can redistribute it and/or modify it
+@@ -45,4 +45,4 @@
+ out.inflated=\ \u5DF2\u89E3\u538B: {0}
+ out.size=(\u8F93\u5165 = {0}) (\u8F93\u51FA = {1})
+
+-usage=\u7528\u6CD5: jar {ctxui}[vfmn0Me] [jar-file] [manifest-file] [entry-point] [-C dir] files ...\n\u9009\u9879:\n -c \u521B\u5EFA\u65B0\u6863\u6848\n -t \u5217\u51FA\u6863\u6848\u76EE\u5F55\n -x \u4ECE\u6863\u6848\u4E2D\u63D0\u53D6\u6307\u5B9A\u7684 (\u6216\u6240\u6709) \u6587\u4EF6\n -u \u66F4\u65B0\u73B0\u6709\u6863\u6848\n -v \u5728\u6807\u51C6\u8F93\u51FA\u4E2D\u751F\u6210\u8BE6\u7EC6\u8F93\u51FA\n -f \u6307\u5B9A\u6863\u6848\u6587\u4EF6\u540D\n -m \u5305\u542B\u6307\u5B9A\u6E05\u5355\u6587\u4EF6\u4E2D\u7684\u6E05\u5355\u4FE1\u606F\n -n \u521B\u5EFA\u65B0\u6863\u6848\u540E\u6267\u884C Pack200 \u89C4\u8303\u5316\n -e \u4E3A\u7ED1\u5B9A\u5230\u53EF\u6267\u884C jar \u6587\u4EF6\u7684\u72EC\u7ACB\u5E94\u7528\u7A0B\u5E8F\n \u6307\u5B9A\u5E94\u7528\u7A0B\u5E8F\u5165\u53E3\u70B9\n -0 \u4EC5\u5B58\u50A8; \u4E0D\u4F7F\u7528\u4EFB\u4F55 ZIP \u538B\u7F29\n -M \u4E0D\u521B\u5EFA\u6761\u76EE\u7684\u6E05\u5355\u6587\u4EF6\n -i \u4E3A\u6307\u5B9A\u7684 jar \u6587\u4EF6\u751F\u6210\u7D22\u5F15\u4FE1\u606F\n -C \u66F4\u6539\u4E3A\u6307\u5B9A\u7684\u76EE\u5F55\u5E76\u5305\u542B\u4EE5\u4E0B\u6587\u4EF6\n\u5982\u679C\u4EFB\u4F55\u6587\u4EF6\u4E3A\u76EE\u5F55, \u5219\u5BF9\u5176\u8FDB\u884C\u9012\u5F52\u5904\u7406\u3002\n\u6E05\u5355\u6587\u4EF6\u540D, \u6863\u6848\u6587\u4EF6\u540D\u548C\u5165\u53E3\u70B9\u540D\u79F0\u7684\u6307\u5B9A\u987A\u5E8F\n\u4E0E 'm', 'f' \u548C 'e' \u6807\u8BB0\u7684\u6307\u5B9A\u987A\u5E8F\u76F8\u540C\u3002\n\n\u793A\u4F8B 1: \u5C06\u4E24\u4E2A\u7C7B\u6587\u4EF6\u5F52\u6863\u5230\u4E00\u4E2A\u540D\u4E3A classes.jar \u7684\u6863\u6848\u4E2D: \n jar cvf classes.jar Foo.class Bar.class \n\u793A\u4F8B 2: \u4F7F\u7528\u73B0\u6709\u7684\u6E05\u5355\u6587\u4EF6 'mymanifest' \u5E76\n \u5C06 foo/ \u76EE\u5F55\u4E2D\u7684\u6240\u6709\u6587\u4EF6\u5F52\u6863\u5230 'classes.jar' \u4E2D: \n jar cvfm classes.jar mymanifest -C foo/ .\n
++usage=\u7528\u6CD5: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files ...\n\u9009\u9879:\n -c \u521B\u5EFA\u65B0\u6863\u6848\n -t \u5217\u51FA\u6863\u6848\u76EE\u5F55\n -x \u4ECE\u6863\u6848\u4E2D\u63D0\u53D6\u6307\u5B9A\u7684 (\u6216\u6240\u6709) \u6587\u4EF6\n -u \u66F4\u65B0\u73B0\u6709\u6863\u6848\n -v \u5728\u6807\u51C6\u8F93\u51FA\u4E2D\u751F\u6210\u8BE6\u7EC6\u8F93\u51FA\n -f \u6307\u5B9A\u6863\u6848\u6587\u4EF6\u540D\n -m \u5305\u542B\u6307\u5B9A\u6E05\u5355\u6587\u4EF6\u4E2D\u7684\u6E05\u5355\u4FE1\u606F\n -n \u521B\u5EFA\u65B0\u6863\u6848\u540E\u6267\u884C Pack200 \u89C4\u8303\u5316\n -e \u4E3A\u6346\u7ED1\u5230\u53EF\u6267\u884C jar \u6587\u4EF6\u7684\u72EC\u7ACB\u5E94\u7528\u7A0B\u5E8F\n \u6307\u5B9A\u5E94\u7528\u7A0B\u5E8F\u5165\u53E3\u70B9\n -0 \u4EC5\u5B58\u50A8; \u4E0D\u4F7F\u7528\u4EFB\u4F55 ZIP \u538B\u7F29\n -P \u4FDD\u7559\u6587\u4EF6\u540D\u4E2D\u7684\u524D\u5BFC '/' (\u7EDD\u5BF9\u8DEF\u5F84) \u548C ".." (\u7236\u76EE\u5F55) \u7EC4\u4EF6\n -M \u4E0D\u521B\u5EFA\u6761\u76EE\u7684\u6E05\u5355\u6587\u4EF6\n -i \u4E3A\u6307\u5B9A\u7684 jar \u6587\u4EF6\u751F\u6210\u7D22\u5F15\u4FE1\u606F\n -C \u66F4\u6539\u4E3A\u6307\u5B9A\u7684\u76EE\u5F55\u5E76\u5305\u542B\u4EE5\u4E0B\u6587\u4EF6\n\u5982\u679C\u4EFB\u4F55\u6587\u4EF6\u4E3A\u76EE\u5F55, \u5219\u5BF9\u5176\u8FDB\u884C\u9012\u5F52\u5904\u7406\u3002\n\u6E05\u5355\u6587\u4EF6\u540D, \u6863\u6848\u6587\u4EF6\u540D\u548C\u5165\u53E3\u70B9\u540D\u79F0\u7684\u6307\u5B9A\u987A\u5E8F\n\u4E0E 'm', 'f' \u548C 'e' \u6807\u8BB0\u7684\u6307\u5B9A\u987A\u5E8F\u76F8\u540C\u3002\n\n\u793A\u4F8B 1: \u5C06\u4E24\u4E2A\u7C7B\u6587\u4EF6\u5F52\u6863\u5230\u4E00\u4E2A\u540D\u4E3A classes.jar \u7684\u6863\u6848\u4E2D: \n jar cvf classes.jar Foo.class Bar.class \n\u793A\u4F8B 2: \u4F7F\u7528\u73B0\u6709\u7684\u6E05\u5355\u6587\u4EF6 'mymanifest' \u5E76\n \u5C06 foo/ \u76EE\u5F55\u4E2D\u7684\u6240\u6709\u6587\u4EF6\u5F52\u6863\u5230 'classes.jar' \u4E2D: \n jar cvfm classes.jar mymanifest -C foo/ .\n
+--- ./jdk/src/share/classes/sun/tools/jar/resources/jar_zh_TW.properties Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/sun/tools/jar/resources/jar_zh_TW.properties Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ #
+-# Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
++# Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
+ # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ #
+ # This code is free software; you can redistribute it and/or modify it
+@@ -45,4 +45,4 @@
+ out.inflated=\ \u64F4\u5C55: {0}
+ out.size=\ (\u8B80={0})(\u5BEB={1})
+
+-usage=\u7528\u6CD5: jar {ctxui}[vfmn0Me] [jar-file] [manifest-file] [entry-point] [-C dir] \u6A94\u6848 ...\n\u9078\u9805:\n -c \u5EFA\u7ACB\u65B0\u7684\u6B78\u6A94\n -t \u5217\u51FA\u6B78\u6A94\u7684\u76EE\u9304\n -x \u5F9E\u6B78\u6A94\u4E2D\u64F7\u53D6\u5DF2\u547D\u540D\u7684 (\u6216\u6240\u6709) \u6A94\u6848\n -u \u66F4\u65B0\u73FE\u6709\u6B78\u6A94\n -v \u5728\u6A19\u6E96\u8F38\u51FA\u4E2D\u7522\u751F\u8A73\u7D30\u8F38\u51FA\n -f \u6307\u5B9A\u6B78\u6A94\u6A94\u6848\u540D\u7A31\n -m \u5305\u542B\u6307\u5B9A\u8CC7\u8A0A\u6E05\u55AE\u4E2D\u7684\u8CC7\u8A0A\u6E05\u55AE\u8CC7\u8A0A\n -n \u5728\u5EFA\u7ACB\u65B0\u6B78\u6A94\u4E4B\u5F8C\u57F7\u884C Pack200 \u6B63\u898F\u5316\n -e \u70BA\u5DF2\u96A8\u9644\u65BC\u53EF\u57F7\u884C jar \u6A94\u6848\u4E2D\u7684\u7368\u7ACB\u61C9\u7528\u7A0B\u5F0F\n \u6307\u5B9A\u61C9\u7528\u7A0B\u5F0F\u9032\u5165\u9EDE\n -0 \u50C5\u5132\u5B58; \u4E0D\u4F7F\u7528 ZIP \u58D3\u7E2E\u65B9\u5F0F\n -M \u4E0D\u70BA\u9805\u76EE\u5EFA\u7ACB\u8CC7\u8A0A\u6E05\u55AE\u6A94\u6848\n -i \u70BA\u6307\u5B9A\u7684 jar \u6A94\u6848\u7522\u751F\u7D22\u5F15\u8CC7\u8A0A\n -C \u8B8A\u66F4\u81F3\u6307\u5B9A\u76EE\u9304\u4E26\u5305\u542B\u5F8C\u9762\u6240\u5217\u7684\u6A94\u6848\n\u5982\u679C\u6709\u4EFB\u4F55\u6A94\u6848\u662F\u76EE\u9304\uFF0C\u5247\u6703\u5C0D\u5176\u9032\u884C\u905E\u8FF4\u8655\u7406\u3002\n\u6E05\u55AE\u6A94\u6848\u540D\u7A31\u3001\u6B78\u6A94\u6A94\u6848\u540D\u7A31\u548C\u9032\u5165\u9EDE\u540D\u7A31\n\u7684\u6307\u5B9A\u9806\u5E8F\u8207\u6307\u5B9A 'm' \u65D7\u6A19\u3001'f' \u65D7\u6A19\u548C 'e' \u65D7\u6A19\u7684\u9806\u5E8F\u76F8\u540C\u3002\n\n\u7BC4\u4F8B 1: \u5C07\u5169\u500B\u985E\u5225\u6A94\u6848\u6B78\u6A94\u81F3\u540D\u70BA classes.jar \u7684\u6B78\u6A94\u4E2D: \n jar cvf classes.jar Foo.class Bar.class\n\u7BC4\u4F8B 2: \u4F7F\u7528\u73FE\u6709\u8CC7\u8A0A\u6E05\u55AE\u6A94\u6848 'mymanifest' \u4E26\u5C07\n foo/ \u76EE\u9304\u4E2D\u7684\u6240\u6709\u6A94\u6848\u6B78\u6A94\u81F3 'classes.jar' \u4E2D: \n jar cvfm classes.jar mymanifest -C foo/ .\n
++usage=\u7528\u6CD5: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] \u6A94\u6848 ...\n\u9078\u9805:\n -c \u5EFA\u7ACB\u65B0\u7684\u6B78\u6A94\n -t \u5217\u51FA\u6B78\u6A94\u7684\u76EE\u9304\n -x \u5F9E\u6B78\u6A94\u4E2D\u64F7\u53D6\u6307\u5B9A (\u6216\u6240\u6709) \u6A94\u6848\n -u \u66F4\u65B0\u73FE\u6709\u6B78\u6A94\n -v \u5728\u6A19\u6E96\u8F38\u51FA\u4E2D\u7522\u751F\u8A73\u7D30\u8F38\u51FA\n -f \u6307\u5B9A\u6B78\u6A94\u6A94\u6848\u540D\u7A31\n -m \u5305\u542B\u6307\u5B9A\u8CC7\u8A0A\u6E05\u55AE\u4E2D\u7684\u8CC7\u8A0A\u6E05\u55AE\u8CC7\u8A0A\n -n \u5728\u5EFA\u7ACB\u65B0\u6B78\u6A94\u4E4B\u5F8C\u57F7\u884C Pack200 \u6B63\u898F\u5316\n -e \u70BA\u5DF2\u96A8\u9644\u65BC\u53EF\u57F7\u884C jar \u6A94\u6848\u4E2D\u7684\u7368\u7ACB\u61C9\u7528\u7A0B\u5F0F\n \u6307\u5B9A\u61C9\u7528\u7A0B\u5F0F\u9032\u5165\u9EDE\n -0 \u50C5\u5132\u5B58; \u4E0D\u4F7F\u7528 ZIP \u58D3\u7E2E\u65B9\u5F0F\n -P \u4FDD\u7559\u6A94\u6848\u540D\u7A31\u524D\u9762\u7684 '/' (\u7D55\u5C0D\u8DEF\u5F91) \u548C ".." (\u4E0A\u5C64\u76EE\u9304) \u5143\u4EF6\n -M \u4E0D\u70BA\u9805\u76EE\u5EFA\u7ACB\u8CC7\u8A0A\u6E05\u55AE\u6A94\u6848\n -i \u70BA\u6307\u5B9A\u7684 jar \u6A94\u6848\u7522\u751F\u7D22\u5F15\u8CC7\u8A0A\n -C \u8B8A\u66F4\u81F3\u6307\u5B9A\u76EE\u9304\u4E26\u5305\u542B\u5F8C\u9762\u6240\u5217\u7684\u6A94\u6848\n\u5982\u679C\u6709\u4EFB\u4F55\u6A94\u6848\u662F\u76EE\u9304\uFF0C\u5247\u6703\u5C0D\u5176\u9032\u884C\u905E\u8FF4\u8655\u7406\u3002\n\u8CC7\u8A0A\u6E05\u55AE\u6A94\u6848\u540D\u7A31\u3001\u6B78\u6A94\u6A94\u6848\u540D\u7A31\u548C\u9032\u5165\u9EDE\u540D\u7A31\n\u7684\u6307\u5B9A\u9806\u5E8F\u8207\u6307\u5B9A 'm' \u65D7\u6A19\u3001'f' \u65D7\u6A19\u548C 'e' \u65D7\u6A19\u7684\u9806\u5E8F\u76F8\u540C\u3002\n\n\u7BC4\u4F8B 1: \u5C07\u5169\u500B\u985E\u5225\u6A94\u6848\u6B78\u6A94\u81F3\u540D\u70BA classes.jar \u7684\u6B78\u6A94\u4E2D: \n jar cvf classes.jar Foo.class Bar.class\n\u7BC4\u4F8B 2: \u4F7F\u7528\u73FE\u6709\u8CC7\u8A0A\u6E05\u55AE\u6A94\u6848 'mymanifest' \u4E26\u5C07\n foo/ \u76EE\u9304\u4E2D\u7684\u6240\u6709\u6A94\u6848\u6B78\u6A94\u81F3 'classes.jar' \u4E2D: \n jar cvfm classes.jar mymanifest -C foo/ .\n
+--- ./jdk/src/share/classes/sun/util/calendar/ZoneInfoFile.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/sun/util/calendar/ZoneInfoFile.java Tue Jun 02 13:49:09 2015 +0300
+@@ -625,6 +625,15 @@
+ params[2] = 5;
+ params[3] = 86400000;
+ }
++ // Additional check for startDayOfWeek=6 and starTime=86400000
++ // is needed for Asia/Amman; Asia/Gasa and Asia/Hebron
++ if (params[2] == 7 && params[3] == 0 &&
++ (zoneId.equals("Asia/Amman") ||
++ zoneId.equals("Asia/Gaza") ||
++ zoneId.equals("Asia/Hebron"))) {
++ params[2] = 6; // Friday
++ params[3] = 86400000; // 24h
++ }
+ //endDayOfWeek and endTime workaround
+ if (params[7] == 6 && params[8] == 0 &&
+ (zoneId.equals("Africa/Cairo"))) {
+--- ./jdk/src/share/classes/sun/util/resources/TimeZoneNames.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/sun/util/resources/TimeZoneNames.java Tue Jun 02 13:49:09 2015 +0300
+@@ -152,9 +152,6 @@
+ String GST[] = new String[] {"Gulf Standard Time", "GST",
+ "Gulf Daylight Time", "GDT",
+ "Gulf Time", "GT"};
+- String HAST[] = new String[] {"Hawaii-Aleutian Standard Time", "HAST",
+- "Hawaii-Aleutian Daylight Time", "HADT",
+- "Hawaii-Aleutian Time", "HAT"};
+ String HKT[] = new String[] {"Hong Kong Time", "HKT",
+ "Hong Kong Summer Time", "HKST",
+ "Hong Kong Time", "HKT"};
+@@ -371,7 +368,7 @@
+ {"Africa/Tripoli", EET},
+ {"Africa/Tunis", CET},
+ {"Africa/Windhoek", WAT},
+- {"America/Adak", HAST},
++ {"America/Adak", HST},
+ {"America/Anguilla", AST},
+ {"America/Antigua", AST},
+ {"America/Araguaina", BRT},
+@@ -393,7 +390,7 @@
+ "Paraguay Summer Time", "PYST",
+ "Paraguay Time", "PYT"}},
+ {"America/Atikokan", EST},
+- {"America/Atka", HAST},
++ {"America/Atka", HST},
+ {"America/Bahia", BRT},
+ {"America/Bahia_Banderas", CST},
+ {"America/Barbados", AST},
+@@ -1024,7 +1021,7 @@
+ {"UCT", UTC},
+ {"Universal", UTC},
+ {"US/Alaska", AKST},
+- {"US/Aleutian", HAST},
++ {"US/Aleutian", HST},
+ {"US/Arizona", MST},
+ {"US/Central", CST},
+ {"US/Eastern", EST},
+--- ./jdk/src/share/classes/sun/util/resources/de/TimeZoneNames_de.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/sun/util/resources/de/TimeZoneNames_de.java Tue Jun 02 13:49:09 2015 +0300
+@@ -153,9 +153,6 @@
+ String GST[] = new String[] {"Golf Normalzeit", "GST",
+ "Golf Sommerzeit", "GDT",
+ "Zeitzone f\u00FCr Persischen Golf", "GT"};
+- String HAST[] = new String[] {"Hawaii-Aleutische Normalzeit", "HAST",
+- "Hawaii-Aleutische Sommerzeit", "HADT",
+- "Zeitzone f\u00FCr Hawaii und Al\u00EButen", "HAT"};
+ String HKT[] = new String[] {"Hongkong Zeit", "HKT",
+ "Hongkong Sommerzeit", "HKST",
+ "Hongkong Zeit", "HKT"};
+@@ -372,7 +369,7 @@
+ {"Africa/Tripoli", EET},
+ {"Africa/Tunis", CET},
+ {"Africa/Windhoek", WAT},
+- {"America/Adak", HAST},
++ {"America/Adak", HST},
+ {"America/Anguilla", AST},
+ {"America/Antigua", AST},
+ {"America/Araguaina", BRT},
+@@ -394,7 +391,7 @@
+ "Paraguay Sommerzeit", "PYST",
+ "Paraguay Zeit", "PYT"}},
+ {"America/Atikokan", EST},
+- {"America/Atka", HAST},
++ {"America/Atka", HST},
+ {"America/Bahia", BRT},
+ {"America/Bahia_Banderas", CST},
+ {"America/Barbados", AST},
+@@ -1024,7 +1021,7 @@
+ {"UCT", UTC},
+ {"Universal", UTC},
+ {"US/Alaska", AKST},
+- {"US/Aleutian", HAST},
++ {"US/Aleutian", HST},
+ {"US/Arizona", MST},
+ {"US/Central", CST},
+ {"US/Eastern", EST},
+--- ./jdk/src/share/classes/sun/util/resources/es/TimeZoneNames_es.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/sun/util/resources/es/TimeZoneNames_es.java Tue Jun 02 13:49:09 2015 +0300
+@@ -153,9 +153,6 @@
+ String GST[] = new String[] {"Hora est\u00e1ndar del Golfo", "GST",
+ "Hora de verano del Golfo", "GDT",
+ "Hora del Golfo", "GT"};
+- String HAST[] = new String[] {"Hora est\u00e1ndar de Hawaii-Aleutianas", "HAST",
+- "Hora de verano de Hawaii-Aleutianas", "HADT",
+- "Hora de Hawaii-Aleutian", "HAT"};
+ String HKT[] = new String[] {"Hora de Hong Kong", "HKT",
+ "Hora de verano de Hong Kong", "HKST",
+ "Hora de Hong Kong", "HKT"};
+@@ -372,7 +369,7 @@
+ {"Africa/Tripoli", EET},
+ {"Africa/Tunis", CET},
+ {"Africa/Windhoek", WAT},
+- {"America/Adak", HAST},
++ {"America/Adak", HST},
+ {"America/Anguilla", AST},
+ {"America/Antigua", AST},
+ {"America/Araguaina", BRT},
+@@ -394,7 +391,7 @@
+ "Hora de verano de Paraguay", "PYST",
+ "Hora de Paraguay", "PYT"}},
+ {"America/Atikokan", EST},
+- {"America/Atka", HAST},
++ {"America/Atka", HST},
+ {"America/Bahia", BRT},
+ {"America/Bahia_Banderas", CST},
+ {"America/Barbados", AST},
+@@ -1024,7 +1021,7 @@
+ {"UCT", UTC},
+ {"Universal", UTC},
+ {"US/Alaska", AKST},
+- {"US/Aleutian", HAST},
++ {"US/Aleutian", HST},
+ {"US/Arizona", MST},
+ {"US/Central", CST},
+ {"US/Eastern", EST},
+--- ./jdk/src/share/classes/sun/util/resources/fr/TimeZoneNames_fr.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/sun/util/resources/fr/TimeZoneNames_fr.java Tue Jun 02 13:49:09 2015 +0300
+@@ -153,9 +153,6 @@
+ String GST[] = new String[] {"Heure normale du Golfe", "GST",
+ "Heure avanc\u00e9e du Golfe", "GDT",
+ "Golfe", "GT"} ;
+- String HAST[] = new String[] {"Heure normale d'Hawa\u00ef-Al\u00e9outiennes", "HAST",
+- "Heure avanc\u00e9e d'Hawa\u00ef-Al\u00e9outiennes", "HADT",
+- "Hawa\u00EF-Iles Al\u00E9outiennes", "HAT"} ;
+ String HKT[] = new String[] {"Heure de Hong Kong", "HKT",
+ "Heure d'\u00e9t\u00e9 de Hong Kong", "HKST",
+ "Heure de Hong-Kong", "HKT"};
+@@ -372,7 +369,7 @@
+ {"Africa/Tripoli", EET},
+ {"Africa/Tunis", CET},
+ {"Africa/Windhoek", WAT},
+- {"America/Adak", HAST},
++ {"America/Adak", HST},
+ {"America/Anguilla", AST},
+ {"America/Antigua", AST},
+ {"America/Araguaina", BRT},
+@@ -394,7 +391,7 @@
+ "Heure d'\u00e9t\u00e9 du Paraguay", "PYST",
+ "Heure du Paraguay", "PYT"}},
+ {"America/Atikokan", EST},
+- {"America/Atka", HAST},
++ {"America/Atka", HST},
+ {"America/Bahia", BRT},
+ {"America/Bahia_Banderas", CST},
+ {"America/Barbados", AST},
+@@ -1024,7 +1021,7 @@
+ {"UCT", UTC},
+ {"Universal", UTC},
+ {"US/Alaska", AKST},
+- {"US/Aleutian", HAST},
++ {"US/Aleutian", HST},
+ {"US/Arizona", MST},
+ {"US/Central", CST},
+ {"US/Eastern", EST},
+--- ./jdk/src/share/classes/sun/util/resources/it/TimeZoneNames_it.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/sun/util/resources/it/TimeZoneNames_it.java Tue Jun 02 13:49:09 2015 +0300
+@@ -153,9 +153,6 @@
+ String GST[] = new String[] {"Ora solare del golfo", "GST",
+ "Ora legale del golfo", "GDT",
+ "Ora del golfo", "GT"};
+- String HAST[] = new String[] {"Ora solare delle Isole Hawaii-Aleutine", "HAST",
+- "Ora solare delle Isole Hawaii-Aleutine", "HADT",
+- "Ora Hawaii-Aleutine", "HAT"};
+ String HKT[] = new String[] {"Ora di Hong Kong", "HKT",
+ "Ora estiva di Hong Kong", "HKST",
+ "Ora di Hong Kong", "HKT"};
+@@ -372,7 +369,7 @@
+ {"Africa/Tripoli", EET},
+ {"Africa/Tunis", CET},
+ {"Africa/Windhoek", WAT},
+- {"America/Adak", HAST},
++ {"America/Adak", HST},
+ {"America/Anguilla", AST},
+ {"America/Antigua", AST},
+ {"America/Araguaina", BRT},
+@@ -394,7 +391,7 @@
+ "Ora estiva del Paraguay", "PYST",
+ "Ora del Paraguay", "PYT"}},
+ {"America/Atikokan", EST},
+- {"America/Atka", HAST},
++ {"America/Atka", HST},
+ {"America/Bahia", BRT},
+ {"America/Bahia_Banderas", CST},
+ {"America/Barbados", AST},
+@@ -1024,7 +1021,7 @@
+ {"UCT", UTC},
+ {"Universal", UTC},
+ {"US/Alaska", AKST},
+- {"US/Aleutian", HAST},
++ {"US/Aleutian", HST},
+ {"US/Arizona", MST},
+ {"US/Central", CST},
+ {"US/Eastern", EST},
+--- ./jdk/src/share/classes/sun/util/resources/ja/TimeZoneNames_ja.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/sun/util/resources/ja/TimeZoneNames_ja.java Tue Jun 02 13:49:09 2015 +0300
+@@ -153,9 +153,6 @@
+ String GST[] = new String[] {"\u6e7e\u5cb8\u6a19\u6e96\u6642", "GST",
+ "\u6e7e\u5cb8\u590f\u6642\u9593", "GDT",
+ "\u6E7E\u5CB8\u6642\u9593", "GT"};
+- String HAST[] = new String[] {"\u30cf\u30ef\u30a4 - \u30a2\u30ea\u30e5\u30fc\u30b7\u30e3\u30f3\u6a19\u6e96\u6642", "HAST",
+- "\u30cf\u30ef\u30a4 - \u30a2\u30ea\u30e5\u30fc\u30b7\u30e3\u30f3\u590f\u6642\u9593", "HADT",
+- "\u30CF\u30EF\u30A4\u30FB\u30A2\u30EA\u30E5\u30FC\u30B7\u30E3\u30F3\u6642\u9593", "HAT"};
+ String HKT[] = new String[] {"\u9999\u6e2f\u6642\u9593", "HKT",
+ "\u9999\u6e2f\u590f\u6642\u9593", "HKST",
+ "\u9999\u6E2F\u6642\u9593", "HKT"};
+@@ -372,7 +369,7 @@
+ {"Africa/Tripoli", EET},
+ {"Africa/Tunis", CET},
+ {"Africa/Windhoek", WAT},
+- {"America/Adak", HAST},
++ {"America/Adak", HST},
+ {"America/Anguilla", AST},
+ {"America/Antigua", AST},
+ {"America/Araguaina", BRT},
+@@ -394,7 +391,7 @@
+ "\u30d1\u30e9\u30b0\u30a2\u30a4\u590f\u6642\u9593", "PYST",
+ "\u30D1\u30E9\u30B0\u30A2\u30A4\u6642\u9593", "PYT"}},
+ {"America/Atikokan", EST},
+- {"America/Atka", HAST},
++ {"America/Atka", HST},
+ {"America/Bahia", BRT},
+ {"America/Bahia_Banderas", CST},
+ {"America/Barbados", AST},
+@@ -1024,7 +1021,7 @@
+ {"UCT", UTC},
+ {"Universal", UTC},
+ {"US/Alaska", AKST},
+- {"US/Aleutian", HAST},
++ {"US/Aleutian", HST},
+ {"US/Arizona", MST},
+ {"US/Central", CST},
+ {"US/Eastern", EST},
+--- ./jdk/src/share/classes/sun/util/resources/ko/TimeZoneNames_ko.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/sun/util/resources/ko/TimeZoneNames_ko.java Tue Jun 02 13:49:09 2015 +0300
+@@ -153,9 +153,6 @@
+ String GST[] = new String[] {"\uac78\ud504\ub9cc \ud45c\uc900\uc2dc", "GST",
+ "\uac78\ud504\ub9cc \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "GDT",
+ "\uAC78\uD504\uB9CC \uD45C\uC900\uC2DC", "GT"};
+- String HAST[] = new String[] {"\ud558\uc640\uc774 \uc54c\ub958\uc0e8 \ud45c\uc900\uc2dc", "HAST",
+- "\ud558\uc640\uc774 \uc54c\ub958\uc0e8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "HADT",
+- "\uD558\uC640\uC774-\uC54C\uB8E8\uC0E8 \uD45C\uC900\uC2DC", "HAT"};
+ String HKT[] = new String[] {"\ud64d\ucf69 \uc2dc\uac04", "HKT",
+ "\ud64d\ucf69 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "HKST",
+ "\uD64D\uCF69 \uD45C\uC900\uC2DC", "HKT"};
+@@ -372,7 +369,7 @@
+ {"Africa/Tripoli", EET},
+ {"Africa/Tunis", CET},
+ {"Africa/Windhoek", WAT},
+- {"America/Adak", HAST},
++ {"America/Adak", HST},
+ {"America/Anguilla", AST},
+ {"America/Antigua", AST},
+ {"America/Araguaina", BRT},
+@@ -394,7 +391,7 @@
+ "\ud30c\ub77c\uacfc\uc774 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PYST",
+ "\uD30C\uB77C\uACFC\uC774 \uD45C\uC900\uC2DC", "PYT"}},
+ {"America/Atikokan", EST},
+- {"America/Atka", HAST},
++ {"America/Atka", HST},
+ {"America/Bahia", BRT},
+ {"America/Bahia_Banderas", CST},
+ {"America/Barbados", AST},
+@@ -1024,7 +1021,7 @@
+ {"UCT", UTC},
+ {"Universal", UTC},
+ {"US/Alaska", AKST},
+- {"US/Aleutian", HAST},
++ {"US/Aleutian", HST},
+ {"US/Arizona", MST},
+ {"US/Central", CST},
+ {"US/Eastern", EST},
+--- ./jdk/src/share/classes/sun/util/resources/pt/TimeZoneNames_pt_BR.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/sun/util/resources/pt/TimeZoneNames_pt_BR.java Tue Jun 02 13:49:09 2015 +0300
+@@ -150,9 +150,6 @@
+ String GST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o do golfo", "GST",
+ "Hor\u00e1rio de luz natural do golfo", "GDT",
+ "Hor\u00E1rio do Golfo", "GT"};
+- String HAST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o do Hava\u00ed-Aleutian", "HAST",
+- "Hor\u00e1rio de luz natural do Hava\u00ed-Aleutian", "HADT",
+- "Hor\u00E1rio do Hava\u00ED-Aleutas", "HAT"};
+ String HKT[] = new String[] {"Fuso hor\u00e1rio de Hong Kong", "HKT",
+ "Fuso hor\u00e1rio de ver\u00e3o de Hong Kong", "HKST",
+ "Hor\u00E1rio de Hong Kong", "HKT"};
+@@ -372,7 +369,7 @@
+ {"Africa/Tripoli", EET},
+ {"Africa/Tunis", CET},
+ {"Africa/Windhoek", WAT},
+- {"America/Adak", HAST},
++ {"America/Adak", HST},
+ {"America/Anguilla", AST},
+ {"America/Antigua", AST},
+ {"America/Araguaina", BRT},
+@@ -394,7 +391,7 @@
+ "Fuso hor\u00e1rio de ver\u00e3o do Paraguai", "PYST",
+ "Hor\u00E1rio do Paraguai", "PYT"}},
+ {"America/Atikokan", EST},
+- {"America/Atka", HAST},
++ {"America/Atka", HST},
+ {"America/Bahia", BRT},
+ {"America/Bahia_Banderas", CST},
+ {"America/Barbados", AST},
+@@ -1024,7 +1021,7 @@
+ {"UCT", UTC},
+ {"Universal", UTC},
+ {"US/Alaska", AKST},
+- {"US/Aleutian", HAST},
++ {"US/Aleutian", HST},
+ {"US/Arizona", MST},
+ {"US/Central", CST},
+ {"US/Eastern", EST},
+--- ./jdk/src/share/classes/sun/util/resources/sv/TimeZoneNames_sv.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/sun/util/resources/sv/TimeZoneNames_sv.java Tue Jun 02 13:49:09 2015 +0300
+@@ -153,9 +153,6 @@
+ String GST[] = new String[] {"Gulf-normaltid", "GST",
+ "Gulf-sommartid", "GDT",
+ "Golfens tid", "GT"};
+- String HAST[] = new String[] {"Hawaii-Aleuterna, normaltid", "HAST",
+- "Hawaii-Aleuterna, sommartid", "HADT",
+- "Hawaiiansk-aleutisk tid", "HAT"};
+ String HKT[] = new String[] {"Hong Kong, normaltid", "HKT",
+ "Hong Kong, sommartid", "HKST",
+ "Hongkong-tid", "HKT"};
+@@ -372,7 +369,7 @@
+ {"Africa/Tripoli", EET},
+ {"Africa/Tunis", CET},
+ {"Africa/Windhoek", WAT},
+- {"America/Adak", HAST},
++ {"America/Adak", HST},
+ {"America/Anguilla", AST},
+ {"America/Antigua", AST},
+ {"America/Araguaina", BRT},
+@@ -394,7 +391,7 @@
+ "Paraguay, sommartid", "PYST",
+ "Paraguayansk tid", "PYT"}},
+ {"America/Atikokan", EST},
+- {"America/Atka", HAST},
++ {"America/Atka", HST},
+ {"America/Bahia", BRT},
+ {"America/Bahia_Banderas", CST},
+ {"America/Barbados", AST},
+@@ -1024,7 +1021,7 @@
+ {"UCT", UTC},
+ {"Universal", UTC},
+ {"US/Alaska", AKST},
+- {"US/Aleutian", HAST},
++ {"US/Aleutian", HST},
+ {"US/Arizona", MST},
+ {"US/Central", CST},
+ {"US/Eastern", EST},
+--- ./jdk/src/share/classes/sun/util/resources/zh/TimeZoneNames_zh_CN.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/sun/util/resources/zh/TimeZoneNames_zh_CN.java Tue Jun 02 13:49:09 2015 +0300
+@@ -153,9 +153,6 @@
+ String GST[] = new String[] {"\u6ce2\u65af\u6e7e\u6807\u51c6\u65f6\u95f4", "GST",
+ "\u6ce2\u65af\u6e7e\u590f\u4ee4\u65f6", "GDT",
+ "\u6D77\u6E7E\u65F6\u95F4", "GT"};
+- String HAST[] = new String[] {"\u590f\u5a01\u5937-\u963f\u7559\u7533\u7fa4\u5c9b\u6807\u51c6\u65f6\u95f4", "HAST",
+- "\u590f\u5a01\u5937-\u963f\u7559\u7533\u7fa4\u5c9b\u590f\u4ee4\u65f6", "HADT",
+- "\u590F\u5A01\u5937-\u963F\u7559\u7533\u65F6\u95F4", "HAT"};
+ String HKT[] = new String[] {"\u9999\u6e2f\u65f6\u95f4", "HKT",
+ "\u9999\u6e2f\u590f\u4ee4\u65f6", "HKST",
+ "\u9999\u6E2F\u65F6\u95F4", "HKT"};
+@@ -372,7 +369,7 @@
+ {"Africa/Tripoli", EET},
+ {"Africa/Tunis", CET},
+ {"Africa/Windhoek", WAT},
+- {"America/Adak", HAST},
++ {"America/Adak", HST},
+ {"America/Anguilla", AST},
+ {"America/Antigua", AST},
+ {"America/Araguaina", BRT},
+@@ -394,7 +391,7 @@
+ "\u5df4\u62c9\u572d\u590f\u4ee4\u65f6", "PYST",
+ "\u5DF4\u62C9\u572D\u65F6\u95F4", "PYT"}},
+ {"America/Atikokan", EST},
+- {"America/Atka", HAST},
++ {"America/Atka", HST},
+ {"America/Bahia", BRT},
+ {"America/Bahia_Banderas", CST},
+ {"America/Barbados", AST},
+@@ -1024,7 +1021,7 @@
+ {"UCT", UTC},
+ {"Universal", UTC},
+ {"US/Alaska", AKST},
+- {"US/Aleutian", HAST},
++ {"US/Aleutian", HST},
+ {"US/Arizona", MST},
+ {"US/Central", CST},
+ {"US/Eastern", EST},
+--- ./jdk/src/share/classes/sun/util/resources/zh/TimeZoneNames_zh_TW.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/classes/sun/util/resources/zh/TimeZoneNames_zh_TW.java Tue Jun 02 13:49:09 2015 +0300
+@@ -153,9 +153,6 @@
+ String GST[] = new String[] {"\u6ce2\u65af\u7063\u6a19\u6e96\u6642\u9593", "GST",
+ "\u6ce2\u65af\u7063\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "GDT",
+ "\u6CE2\u65AF\u7063\u6642\u9593", "GT"};
+- String HAST[] = new String[] {"\u590f\u5a01\u5937-\u963f\u7559\u7533\u7fa4\u5cf6\u6a19\u6e96\u6642\u9593", "HAST",
+- "\u590f\u5a01\u5937-\u963f\u7559\u7533\u7fa4\u5cf6\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "HADT",
+- "\u590F\u5A01\u5937-\u963F\u7559\u7533\u6642\u9593", "HAT"};
+ String HKT[] = new String[] {"\u9999\u6e2f\u6642\u9593", "HKT",
+ "\u9999\u6e2f\u590f\u4ee4\u6642\u9593", "HKST",
+ "\u9999\u6E2F\u6642\u9593", "HKT"};
+@@ -372,7 +369,7 @@
+ {"Africa/Tripoli", EET},
+ {"Africa/Tunis", CET},
+ {"Africa/Windhoek", WAT},
+- {"America/Adak", HAST},
++ {"America/Adak", HST},
+ {"America/Anguilla", AST},
+ {"America/Antigua", AST},
+ {"America/Araguaina", BRT},
+@@ -394,7 +391,7 @@
+ "\u5df4\u62c9\u572d\u590f\u4ee4\u6642\u9593", "PYST",
+ "\u5DF4\u62C9\u572D\u6642\u9593", "PYT"}},
+ {"America/Atikokan", EST},
+- {"America/Atka", HAST},
++ {"America/Atka", HST},
+ {"America/Bahia", BRT},
+ {"America/Bahia_Banderas", CST},
+ {"America/Barbados", AST},
+@@ -1026,7 +1023,7 @@
+ {"UCT", UTC},
+ {"Universal", UTC},
+ {"US/Alaska", AKST},
+- {"US/Aleutian", HAST},
++ {"US/Aleutian", HST},
+ {"US/Arizona", MST},
+ {"US/Central", CST},
+ {"US/Eastern", EST},
+--- ./jdk/src/share/lib/security/java.security-aix Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/lib/security/java.security-aix Tue Jun 02 13:49:09 2015 +0300
+@@ -500,4 +500,61 @@
+ #
+ # Example:
+ # jdk.tls.disabledAlgorithms=MD5, SSLv3, DSA, RSA keySize < 2048
+-jdk.tls.disabledAlgorithms=SSLv3
++jdk.tls.disabledAlgorithms=SSLv3, DH keySize < 768
++
++# Legacy algorithms for Secure Socket Layer/Transport Layer Security (SSL/TLS)
++# processing in JSSE implementation.
++#
++# In some environments, a certain algorithm may be undesirable but it
++# cannot be disabled because of its use in legacy applications. Legacy
++# algorithms may still be supported, but applications should not use them
++# as the security strength of legacy algorithms are usually not strong enough
++# in practice.
++#
++# During SSL/TLS security parameters negotiation, legacy algorithms will
++# not be negotiated unless there are no other candidates.
++#
++# The syntax of the disabled algorithm string is described as this Java
++# BNF-style:
++# LegacyAlgorithms:
++# " LegacyAlgorithm { , LegacyAlgorithm } "
++#
++# LegacyAlgorithm:
++# AlgorithmName (standard JSSE algorithm name)
++#
++# See the specification of security property "jdk.certpath.disabledAlgorithms"
++# for the syntax and description of the "AlgorithmName" notation.
++#
++# Per SSL/TLS specifications, cipher suites have the form:
++# SSL_KeyExchangeAlg_WITH_CipherAlg_MacAlg
++# or
++# TLS_KeyExchangeAlg_WITH_CipherAlg_MacAlg
++#
++# For example, the cipher suite TLS_RSA_WITH_AES_128_CBC_SHA uses RSA as the
++# key exchange algorithm, AES_128_CBC (128 bits AES cipher algorithm in CBC
++# mode) as the cipher (encryption) algorithm, and SHA-1 as the message digest
++# algorithm for HMAC.
++#
++# The LegacyAlgorithm can be one of the following standard algorithm names:
++# 1. JSSE cipher suite name, e.g., TLS_RSA_WITH_AES_128_CBC_SHA
++# 2. JSSE key exchange algorithm name, e.g., RSA
++# 3. JSSE cipher (encryption) algorithm name, e.g., AES_128_CBC
++# 4. JSSE message digest algorithm name, e.g., SHA
++#
++# See SSL/TLS specifications and "Java Cryptography Architecture Standard
++# Algorithm Name Documentation" for information about the algorithm names.
++#
++# Note: This property is currently used by Oracle's JSSE implementation.
++# It is not guaranteed to be examined and used by other implementations.
++# There is no guarantee the property will continue to exist or be of the
++# same syntax in future releases.
++#
++# Example:
++# jdk.tls.legacyAlgorithms=DH_anon, DES_CBC, SSL_RSA_WITH_RC4_128_MD5
++#
++jdk.tls.legacyAlgorithms= \
++ K_NULL, C_NULL, M_NULL, \
++ DHE_DSS_EXPORT, DHE_RSA_EXPORT, DH_anon_EXPORT, DH_DSS_EXPORT, \
++ DH_RSA_EXPORT, RSA_EXPORT, \
++ DH_anon, ECDH_anon, \
++ RC4_128, RC4_40, DES_CBC, DES40_CBC
+--- ./jdk/src/share/lib/security/java.security-linux Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/lib/security/java.security-linux Tue Jun 02 13:49:09 2015 +0300
+@@ -500,4 +500,61 @@
+ #
+ # Example:
+ # jdk.tls.disabledAlgorithms=MD5, SSLv3, DSA, RSA keySize < 2048
+-jdk.tls.disabledAlgorithms=SSLv3
++jdk.tls.disabledAlgorithms=SSLv3, DH keySize < 768
++
++# Legacy algorithms for Secure Socket Layer/Transport Layer Security (SSL/TLS)
++# processing in JSSE implementation.
++#
++# In some environments, a certain algorithm may be undesirable but it
++# cannot be disabled because of its use in legacy applications. Legacy
++# algorithms may still be supported, but applications should not use them
++# as the security strength of legacy algorithms are usually not strong enough
++# in practice.
++#
++# During SSL/TLS security parameters negotiation, legacy algorithms will
++# not be negotiated unless there are no other candidates.
++#
++# The syntax of the disabled algorithm string is described as this Java
++# BNF-style:
++# LegacyAlgorithms:
++# " LegacyAlgorithm { , LegacyAlgorithm } "
++#
++# LegacyAlgorithm:
++# AlgorithmName (standard JSSE algorithm name)
++#
++# See the specification of security property "jdk.certpath.disabledAlgorithms"
++# for the syntax and description of the "AlgorithmName" notation.
++#
++# Per SSL/TLS specifications, cipher suites have the form:
++# SSL_KeyExchangeAlg_WITH_CipherAlg_MacAlg
++# or
++# TLS_KeyExchangeAlg_WITH_CipherAlg_MacAlg
++#
++# For example, the cipher suite TLS_RSA_WITH_AES_128_CBC_SHA uses RSA as the
++# key exchange algorithm, AES_128_CBC (128 bits AES cipher algorithm in CBC
++# mode) as the cipher (encryption) algorithm, and SHA-1 as the message digest
++# algorithm for HMAC.
++#
++# The LegacyAlgorithm can be one of the following standard algorithm names:
++# 1. JSSE cipher suite name, e.g., TLS_RSA_WITH_AES_128_CBC_SHA
++# 2. JSSE key exchange algorithm name, e.g., RSA
++# 3. JSSE cipher (encryption) algorithm name, e.g., AES_128_CBC
++# 4. JSSE message digest algorithm name, e.g., SHA
++#
++# See SSL/TLS specifications and "Java Cryptography Architecture Standard
++# Algorithm Name Documentation" for information about the algorithm names.
++#
++# Note: This property is currently used by Oracle's JSSE implementation.
++# It is not guaranteed to be examined and used by other implementations.
++# There is no guarantee the property will continue to exist or be of the
++# same syntax in future releases.
++#
++# Example:
++# jdk.tls.legacyAlgorithms=DH_anon, DES_CBC, SSL_RSA_WITH_RC4_128_MD5
++#
++jdk.tls.legacyAlgorithms= \
++ K_NULL, C_NULL, M_NULL, \
++ DHE_DSS_EXPORT, DHE_RSA_EXPORT, DH_anon_EXPORT, DH_DSS_EXPORT, \
++ DH_RSA_EXPORT, RSA_EXPORT, \
++ DH_anon, ECDH_anon, \
++ RC4_128, RC4_40, DES_CBC, DES40_CBC
+--- ./jdk/src/share/lib/security/java.security-macosx Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/lib/security/java.security-macosx Tue Jun 02 13:49:09 2015 +0300
+@@ -503,4 +503,61 @@
+ #
+ # Example:
+ # jdk.tls.disabledAlgorithms=MD5, SSLv3, DSA, RSA keySize < 2048
+-jdk.tls.disabledAlgorithms=SSLv3
++jdk.tls.disabledAlgorithms=SSLv3, DH keySize < 768
++
++# Legacy algorithms for Secure Socket Layer/Transport Layer Security (SSL/TLS)
++# processing in JSSE implementation.
++#
++# In some environments, a certain algorithm may be undesirable but it
++# cannot be disabled because of its use in legacy applications. Legacy
++# algorithms may still be supported, but applications should not use them
++# as the security strength of legacy algorithms are usually not strong enough
++# in practice.
++#
++# During SSL/TLS security parameters negotiation, legacy algorithms will
++# not be negotiated unless there are no other candidates.
++#
++# The syntax of the disabled algorithm string is described as this Java
++# BNF-style:
++# LegacyAlgorithms:
++# " LegacyAlgorithm { , LegacyAlgorithm } "
++#
++# LegacyAlgorithm:
++# AlgorithmName (standard JSSE algorithm name)
++#
++# See the specification of security property "jdk.certpath.disabledAlgorithms"
++# for the syntax and description of the "AlgorithmName" notation.
++#
++# Per SSL/TLS specifications, cipher suites have the form:
++# SSL_KeyExchangeAlg_WITH_CipherAlg_MacAlg
++# or
++# TLS_KeyExchangeAlg_WITH_CipherAlg_MacAlg
++#
++# For example, the cipher suite TLS_RSA_WITH_AES_128_CBC_SHA uses RSA as the
++# key exchange algorithm, AES_128_CBC (128 bits AES cipher algorithm in CBC
++# mode) as the cipher (encryption) algorithm, and SHA-1 as the message digest
++# algorithm for HMAC.
++#
++# The LegacyAlgorithm can be one of the following standard algorithm names:
++# 1. JSSE cipher suite name, e.g., TLS_RSA_WITH_AES_128_CBC_SHA
++# 2. JSSE key exchange algorithm name, e.g., RSA
++# 3. JSSE cipher (encryption) algorithm name, e.g., AES_128_CBC
++# 4. JSSE message digest algorithm name, e.g., SHA
++#
++# See SSL/TLS specifications and "Java Cryptography Architecture Standard
++# Algorithm Name Documentation" for information about the algorithm names.
++#
++# Note: This property is currently used by Oracle's JSSE implementation.
++# It is not guaranteed to be examined and used by other implementations.
++# There is no guarantee the property will continue to exist or be of the
++# same syntax in future releases.
++#
++# Example:
++# jdk.tls.legacyAlgorithms=DH_anon, DES_CBC, SSL_RSA_WITH_RC4_128_MD5
++#
++jdk.tls.legacyAlgorithms= \
++ K_NULL, C_NULL, M_NULL, \
++ DHE_DSS_EXPORT, DHE_RSA_EXPORT, DH_anon_EXPORT, DH_DSS_EXPORT, \
++ DH_RSA_EXPORT, RSA_EXPORT, \
++ DH_anon, ECDH_anon, \
++ RC4_128, RC4_40, DES_CBC, DES40_CBC
+--- ./jdk/src/share/lib/security/java.security-solaris Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/lib/security/java.security-solaris Tue Jun 02 13:49:09 2015 +0300
+@@ -502,4 +502,61 @@
+ #
+ # Example:
+ # jdk.tls.disabledAlgorithms=MD5, SSLv3, DSA, RSA keySize < 2048
+-jdk.tls.disabledAlgorithms=SSLv3
++jdk.tls.disabledAlgorithms=SSLv3, DH keySize < 768
++
++# Legacy algorithms for Secure Socket Layer/Transport Layer Security (SSL/TLS)
++# processing in JSSE implementation.
++#
++# In some environments, a certain algorithm may be undesirable but it
++# cannot be disabled because of its use in legacy applications. Legacy
++# algorithms may still be supported, but applications should not use them
++# as the security strength of legacy algorithms are usually not strong enough
++# in practice.
++#
++# During SSL/TLS security parameters negotiation, legacy algorithms will
++# not be negotiated unless there are no other candidates.
++#
++# The syntax of the disabled algorithm string is described as this Java
++# BNF-style:
++# LegacyAlgorithms:
++# " LegacyAlgorithm { , LegacyAlgorithm } "
++#
++# LegacyAlgorithm:
++# AlgorithmName (standard JSSE algorithm name)
++#
++# See the specification of security property "jdk.certpath.disabledAlgorithms"
++# for the syntax and description of the "AlgorithmName" notation.
++#
++# Per SSL/TLS specifications, cipher suites have the form:
++# SSL_KeyExchangeAlg_WITH_CipherAlg_MacAlg
++# or
++# TLS_KeyExchangeAlg_WITH_CipherAlg_MacAlg
++#
++# For example, the cipher suite TLS_RSA_WITH_AES_128_CBC_SHA uses RSA as the
++# key exchange algorithm, AES_128_CBC (128 bits AES cipher algorithm in CBC
++# mode) as the cipher (encryption) algorithm, and SHA-1 as the message digest
++# algorithm for HMAC.
++#
++# The LegacyAlgorithm can be one of the following standard algorithm names:
++# 1. JSSE cipher suite name, e.g., TLS_RSA_WITH_AES_128_CBC_SHA
++# 2. JSSE key exchange algorithm name, e.g., RSA
++# 3. JSSE cipher (encryption) algorithm name, e.g., AES_128_CBC
++# 4. JSSE message digest algorithm name, e.g., SHA
++#
++# See SSL/TLS specifications and "Java Cryptography Architecture Standard
++# Algorithm Name Documentation" for information about the algorithm names.
++#
++# Note: This property is currently used by Oracle's JSSE implementation.
++# It is not guaranteed to be examined and used by other implementations.
++# There is no guarantee the property will continue to exist or be of the
++# same syntax in future releases.
++#
++# Example:
++# jdk.tls.legacyAlgorithms=DH_anon, DES_CBC, SSL_RSA_WITH_RC4_128_MD5
++#
++jdk.tls.legacyAlgorithms= \
++ K_NULL, C_NULL, M_NULL, \
++ DHE_DSS_EXPORT, DHE_RSA_EXPORT, DH_anon_EXPORT, DH_DSS_EXPORT, \
++ DH_RSA_EXPORT, RSA_EXPORT, \
++ DH_anon, ECDH_anon, \
++ RC4_128, RC4_40, DES_CBC, DES40_CBC
+--- ./jdk/src/share/lib/security/java.security-windows Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/lib/security/java.security-windows Tue Jun 02 13:49:09 2015 +0300
+@@ -503,4 +503,61 @@
+ #
+ # Example:
+ # jdk.tls.disabledAlgorithms=MD5, SSLv3, DSA, RSA keySize < 2048
+-jdk.tls.disabledAlgorithms=SSLv3
++jdk.tls.disabledAlgorithms=SSLv3, DH keySize < 768
++
++# Legacy algorithms for Secure Socket Layer/Transport Layer Security (SSL/TLS)
++# processing in JSSE implementation.
++#
++# In some environments, a certain algorithm may be undesirable but it
++# cannot be disabled because of its use in legacy applications. Legacy
++# algorithms may still be supported, but applications should not use them
++# as the security strength of legacy algorithms are usually not strong enough
++# in practice.
++#
++# During SSL/TLS security parameters negotiation, legacy algorithms will
++# not be negotiated unless there are no other candidates.
++#
++# The syntax of the disabled algorithm string is described as this Java
++# BNF-style:
++# LegacyAlgorithms:
++# " LegacyAlgorithm { , LegacyAlgorithm } "
++#
++# LegacyAlgorithm:
++# AlgorithmName (standard JSSE algorithm name)
++#
++# See the specification of security property "jdk.certpath.disabledAlgorithms"
++# for the syntax and description of the "AlgorithmName" notation.
++#
++# Per SSL/TLS specifications, cipher suites have the form:
++# SSL_KeyExchangeAlg_WITH_CipherAlg_MacAlg
++# or
++# TLS_KeyExchangeAlg_WITH_CipherAlg_MacAlg
++#
++# For example, the cipher suite TLS_RSA_WITH_AES_128_CBC_SHA uses RSA as the
++# key exchange algorithm, AES_128_CBC (128 bits AES cipher algorithm in CBC
++# mode) as the cipher (encryption) algorithm, and SHA-1 as the message digest
++# algorithm for HMAC.
++#
++# The LegacyAlgorithm can be one of the following standard algorithm names:
++# 1. JSSE cipher suite name, e.g., TLS_RSA_WITH_AES_128_CBC_SHA
++# 2. JSSE key exchange algorithm name, e.g., RSA
++# 3. JSSE cipher (encryption) algorithm name, e.g., AES_128_CBC
++# 4. JSSE message digest algorithm name, e.g., SHA
++#
++# See SSL/TLS specifications and "Java Cryptography Architecture Standard
++# Algorithm Name Documentation" for information about the algorithm names.
++#
++# Note: This property is currently used by Oracle's JSSE implementation.
++# It is not guaranteed to be examined and used by other implementations.
++# There is no guarantee the property will continue to exist or be of the
++# same syntax in future releases.
++#
++# Example:
++# jdk.tls.legacyAlgorithms=DH_anon, DES_CBC, SSL_RSA_WITH_RC4_128_MD5
++#
++jdk.tls.legacyAlgorithms= \
++ K_NULL, C_NULL, M_NULL, \
++ DHE_DSS_EXPORT, DHE_RSA_EXPORT, DH_anon_EXPORT, DH_DSS_EXPORT, \
++ DH_RSA_EXPORT, RSA_EXPORT, \
++ DH_anon, ECDH_anon, \
++ RC4_128, RC4_40, DES_CBC, DES40_CBC
+--- ./jdk/src/share/native/sun/font/layout/AlternateSubstSubtables.cpp Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/native/sun/font/layout/AlternateSubstSubtables.cpp Tue Jun 02 13:49:09 2015 +0300
+@@ -53,6 +53,7 @@
+ Offset alternateSetTableOffset = SWAPW(alternateSetTableOffsetArray[coverageIndex]);
+ const LEReferenceTo<AlternateSetTable> alternateSetTable(base, success,
+ (const AlternateSetTable *) ((char *) this + alternateSetTableOffset));
++ if (!LE_SUCCESS(success)) return 0;
+ TTGlyphID alternate = SWAPW(alternateSetTable->alternateArray[0]);
+
+ if (filter == NULL || filter->accept(LE_SET_GLYPH(glyph, alternate), success)) {
+--- ./jdk/src/share/native/sun/font/layout/AnchorTables.cpp Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/native/sun/font/layout/AnchorTables.cpp Tue Jun 02 13:49:09 2015 +0300
+@@ -44,21 +44,27 @@
+ case 1:
+ {
+ LEReferenceTo<Format1AnchorTable> f1(base, success);
+- f1->getAnchor(f1, fontInstance, anchor, success);
++ if (LE_SUCCESS(success)) {
++ f1->getAnchor(f1, fontInstance, anchor, success);
++ }
+ break;
+ }
+
+ case 2:
+ {
+ LEReferenceTo<Format2AnchorTable> f2(base, success);
+- f2->getAnchor(f2, glyphID, fontInstance, anchor, success);
++ if (LE_SUCCESS(success)) {
++ f2->getAnchor(f2, glyphID, fontInstance, anchor, success);
++ }
+ break;
+ }
+
+ case 3:
+ {
+ LEReferenceTo<Format3AnchorTable> f3(base, success);
+- f3->getAnchor(f3, fontInstance, anchor, success);
++ if (LE_SUCCESS(success)) {
++ f3->getAnchor(f3, fontInstance, anchor, success);
++ }
+ break;
+ }
+
+@@ -66,7 +72,9 @@
+ {
+ // unknown format: just use x, y coordinate, like format 1...
+ LEReferenceTo<Format1AnchorTable> f1(base, success);
+- f1->getAnchor(f1, fontInstance, anchor, success);
++ if (LE_SUCCESS(success)) {
++ f1->getAnchor(f1, fontInstance, anchor, success);
++ }
+ break;
+ }
+ }
+@@ -112,16 +120,18 @@
+
+ if (dtxOffset != 0) {
+ LEReferenceTo<DeviceTable> dt(base, success, dtxOffset);
+- le_int16 adjx = dt->getAdjustment(dt, (le_int16) fontInstance->getXPixelsPerEm(), success);
+-
+- pixels.fX += adjx;
++ if (LE_SUCCESS(success)) {
++ le_int16 adjx = dt->getAdjustment(dt, (le_int16) fontInstance->getXPixelsPerEm(), success);
++ pixels.fX += adjx;
++ }
+ }
+
+ if (dtyOffset != 0) {
+ LEReferenceTo<DeviceTable> dt(base, success, dtyOffset);
+- le_int16 adjy = dt->getAdjustment(dt, (le_int16) fontInstance->getYPixelsPerEm(), success);
+-
+- pixels.fY += adjy;
++ if (LE_SUCCESS(success)) {
++ le_int16 adjy = dt->getAdjustment(dt, (le_int16) fontInstance->getYPixelsPerEm(), success);
++ pixels.fY += adjy;
++ }
+ }
+
+ fontInstance->pixelsToUnits(pixels, anchor);
+--- ./jdk/src/share/native/sun/font/layout/ContextualGlyphInsertionProc2.cpp Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/native/sun/font/layout/ContextualGlyphInsertionProc2.cpp Tue Jun 02 13:49:09 2015 +0300
+@@ -107,6 +107,10 @@
+
+ le_int16 markIndex = SWAPW(entry->markedInsertionListIndex);
+ if (markIndex > 0) {
++ if (markGlyph < 0 || markGlyph >= glyphStorage.getGlyphCount()) {
++ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
++ return 0;
++ }
+ le_int16 count = (flags & cgiMarkedInsertCountMask) >> 5;
+ le_bool isKashidaLike = (flags & cgiMarkedIsKashidaLike);
+ le_bool isBefore = (flags & cgiMarkInsertBefore);
+@@ -115,6 +119,10 @@
+
+ le_int16 currIndex = SWAPW(entry->currentInsertionListIndex);
+ if (currIndex > 0) {
++ if (currGlyph < 0 || currGlyph >= glyphStorage.getGlyphCount()) {
++ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
++ return 0;
++ }
+ le_int16 count = flags & cgiCurrentInsertCountMask;
+ le_bool isKashidaLike = (flags & cgiCurrentIsKashidaLike);
+ le_bool isBefore = (flags & cgiCurrentInsertBefore);
+--- ./jdk/src/share/native/sun/font/layout/ContextualGlyphSubstProc.cpp Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/native/sun/font/layout/ContextualGlyphSubstProc.cpp Tue Jun 02 13:49:09 2015 +0300
+@@ -76,6 +76,10 @@
+ WordOffset currOffset = SWAPW(entry->currOffset);
+
+ if (markOffset != 0 && LE_SUCCESS(success)) {
++ if (markGlyph < 0 || markGlyph >= glyphStorage.getGlyphCount()) {
++ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
++ return 0;
++ }
+ LEGlyphID mGlyph = glyphStorage[markGlyph];
+ TTGlyphID newGlyph = SWAPW(int16Table.getObject(markOffset + LE_GET_GLYPH(mGlyph), success)); // whew.
+
+@@ -83,6 +87,10 @@
+ }
+
+ if (currOffset != 0) {
++ if (currGlyph < 0 || currGlyph >= glyphStorage.getGlyphCount()) {
++ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
++ return 0;
++ }
+ LEGlyphID thisGlyph = glyphStorage[currGlyph];
+ TTGlyphID newGlyph = SWAPW(int16Table.getObject(currOffset + LE_GET_GLYPH(thisGlyph), success)); // whew.
+
+--- ./jdk/src/share/native/sun/font/layout/ContextualGlyphSubstProc2.cpp Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/native/sun/font/layout/ContextualGlyphSubstProc2.cpp Tue Jun 02 13:49:09 2015 +0300
+@@ -70,17 +70,25 @@
+ if(LE_FAILURE(success)) return 0;
+ le_uint16 newState = SWAPW(entry->newStateIndex);
+ le_uint16 flags = SWAPW(entry->flags);
+- le_int16 markIndex = SWAPW(entry->markIndex);
+- le_int16 currIndex = SWAPW(entry->currIndex);
++ le_uint16 markIndex = SWAPW(entry->markIndex);
++ le_uint16 currIndex = SWAPW(entry->currIndex);
+
+- if (markIndex != -1) {
++ if (markIndex != 0x0FFFF) {
++ if (markGlyph < 0 || markGlyph >= glyphStorage.getGlyphCount()) {
++ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
++ return 0;
++ }
+ le_uint32 offset = SWAPL(perGlyphTable(markIndex, success));
+ LEGlyphID mGlyph = glyphStorage[markGlyph];
+ TTGlyphID newGlyph = lookup(offset, mGlyph, success);
+ glyphStorage[markGlyph] = LE_SET_GLYPH(mGlyph, newGlyph);
+ }
+
+- if (currIndex != -1) {
++ if (currIndex != 0x0FFFF) {
++ if (currGlyph < 0 || currGlyph >= glyphStorage.getGlyphCount()) {
++ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
++ return 0;
++ }
+ le_uint32 offset = SWAPL(perGlyphTable(currIndex, success));
+ LEGlyphID thisGlyph = glyphStorage[currGlyph];
+ TTGlyphID newGlyph = lookup(offset, thisGlyph, success);
+--- ./jdk/src/share/native/sun/font/layout/Features.cpp Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/native/sun/font/layout/Features.cpp Tue Jun 02 13:49:09 2015 +0300
+@@ -41,7 +41,7 @@
+ LEReferenceTo<FeatureTable> FeatureListTable::getFeatureTable(const LETableReference &base, le_uint16 featureIndex, LETag *featureTag, LEErrorCode &success) const
+ {
+ LEReferenceToArrayOf<FeatureRecord>
+- featureRecordArrayRef(base, success, featureRecordArray, featureIndex);
++ featureRecordArrayRef(base, success, featureRecordArray, featureIndex+1);
+
+ if (featureIndex >= SWAPW(featureCount) || LE_FAILURE(success)) {
+ return LEReferenceTo<FeatureTable>();
+--- ./jdk/src/share/native/sun/font/layout/GXLayoutEngine.cpp Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/native/sun/font/layout/GXLayoutEngine.cpp Tue Jun 02 13:49:09 2015 +0300
+@@ -73,7 +73,7 @@
+
+ fMorphTable->process(fMorphTable, glyphStorage, success);
+
+- return count;
++ return glyphStorage.getGlyphCount();
+ }
+
+ // apply positional tables
+--- ./jdk/src/share/native/sun/font/layout/GXLayoutEngine2.cpp Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/native/sun/font/layout/GXLayoutEngine2.cpp Tue Jun 02 13:49:09 2015 +0300
+@@ -69,7 +69,7 @@
+ }
+
+ fMorphTable->process(fMorphTable, glyphStorage, fTypoFlags, success);
+- return count;
++ return glyphStorage.getGlyphCount();
+ }
+
+ // apply positional tables
+--- ./jdk/src/share/native/sun/font/layout/IndicRearrangementProcessor.cpp Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/native/sun/font/layout/IndicRearrangementProcessor.cpp Tue Jun 02 13:49:09 2015 +0300
+@@ -70,6 +70,11 @@
+ ByteOffset newState = SWAPW(entry->newStateOffset);
+ IndicRearrangementFlags flags = (IndicRearrangementFlags) SWAPW(entry->flags);
+
++ if (currGlyph < 0 || currGlyph >= glyphStorage.getGlyphCount()) {
++ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
++ return 0;
++ }
++
+ if (flags & irfMarkFirst) {
+ firstGlyph = currGlyph;
+ }
+--- ./jdk/src/share/native/sun/font/layout/IndicRearrangementProcessor2.cpp Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/native/sun/font/layout/IndicRearrangementProcessor2.cpp Tue Jun 02 13:49:09 2015 +0300
+@@ -68,6 +68,11 @@
+ le_uint16 newState = SWAPW(entry->newStateIndex); // index to the new state
+ IndicRearrangementFlags flags = (IndicRearrangementFlags) SWAPW(entry->flags);
+
++ if (currGlyph < 0 || currGlyph >= glyphStorage.getGlyphCount()) {
++ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
++ return 0;
++ }
++
+ if (flags & irfMarkFirst) {
+ firstGlyph = currGlyph;
+ }
+--- ./jdk/src/share/native/sun/font/layout/LETableReference.h Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/native/sun/font/layout/LETableReference.h Tue Jun 02 13:49:09 2015 +0300
+@@ -188,7 +188,7 @@
+
+ void addOffset(size_t offset, LEErrorCode &success) {
+ if(hasBounds()) {
+- if(offset > fLength) {
++ if(offset >= fLength) {
+ LE_DEBUG_TR("addOffset off end");
+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
+ return;
+@@ -203,7 +203,7 @@
+ if(atPtr==NULL) return 0;
+ if(LE_FAILURE(success)) return LE_UINTPTR_MAX;
+ if((atPtr < fStart) ||
+- (hasBounds() && (atPtr > fStart+fLength))) {
++ (hasBounds() && (atPtr >= fStart+fLength))) {
+ LE_DEBUG_TR3("ptrToOffset args out of range: %p", atPtr, 0);
+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
+ return LE_UINTPTR_MAX;
+@@ -240,6 +240,18 @@
+ }
+
+ /**
++ * Throw an error if size*count overflows
++ */
++ size_t verifyLength(size_t offset, size_t size, le_uint32 count, LEErrorCode &success) {
++ if(count!=0 && size>LE_UINT32_MAX/count) {
++ LE_DEBUG_TR3("verifyLength failed size=%u, count=%u", size, count);
++ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
++ return 0;
++ }
++ return verifyLength(offset, size*count, success);
++ }
++
++ /**
+ * Change parent link to another
+ */
+ LETableReference &reparent(const LETableReference &base) {
+@@ -424,7 +436,7 @@
+ if(fCount == LE_UNBOUNDED_ARRAY) { // not a known length
+ fCount = getLength()/LETableVarSizer<T>::getSize(); // fit to max size
+ }
+- LETableReference::verifyLength(0, LETableVarSizer<T>::getSize()*fCount, success);
++ LETableReference::verifyLength(0, LETableVarSizer<T>::getSize(), fCount, success);
+ }
+ if(LE_FAILURE(success)) {
+ fCount=0;
+@@ -439,7 +451,7 @@
+ if(fCount == LE_UNBOUNDED_ARRAY) { // not a known length
+ fCount = getLength()/LETableVarSizer<T>::getSize(); // fit to max size
+ }
+- LETableReference::verifyLength(0, LETableVarSizer<T>::getSize()*fCount, success);
++ LETableReference::verifyLength(0, LETableVarSizer<T>::getSize(), fCount, success);
+ }
+ if(LE_FAILURE(success)) clear();
+ }
+@@ -450,7 +462,7 @@
+ if(fCount == LE_UNBOUNDED_ARRAY) { // not a known length
+ fCount = getLength()/LETableVarSizer<T>::getSize(); // fit to max size
+ }
+- LETableReference::verifyLength(0, LETableVarSizer<T>::getSize()*fCount, success);
++ LETableReference::verifyLength(0, LETableVarSizer<T>::getSize(), fCount, success);
+ }
+ if(LE_FAILURE(success)) clear();
+ }
+--- ./jdk/src/share/native/sun/font/layout/LigatureSubstProc.cpp Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/native/sun/font/layout/LigatureSubstProc.cpp Tue Jun 02 13:49:09 2015 +0300
+@@ -73,7 +73,7 @@
+ const LigatureSubstitutionStateEntry *entry = entryTable.getAlias(index, success);
+
+ ByteOffset newState = SWAPW(entry->newStateOffset);
+- le_int16 flags = SWAPW(entry->flags);
++ le_uint16 flags = SWAPW(entry->flags);
+
+ if (flags & lsfSetComponent) {
+ if (++m >= nComponents) {
+@@ -92,15 +92,18 @@
+ if (actionOffset != 0) {
+ LEReferenceTo<LigatureActionEntry> ap(stHeader, success, actionOffset);
+ LigatureActionEntry action;
+- le_int32 offset, i = 0;
++ le_int32 offset, i = 0, j = 0;
+ le_int32 stack[nComponents];
+ le_int16 mm = -1;
+
+ do {
+ le_uint32 componentGlyph = componentStack[m--];
+
++ if (j++ > 0) {
++ ap.addObject(success);
++ }
++
+ action = SWAPL(*ap.getAlias());
+- ap.addObject(success); // ap++
+
+ if (m < 0) {
+ m = nComponents - 1;
+--- ./jdk/src/share/native/sun/font/layout/LigatureSubstProc2.cpp Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/native/sun/font/layout/LigatureSubstProc2.cpp Tue Jun 02 13:49:09 2015 +0300
+@@ -98,7 +98,7 @@
+ ap.addObject(ligActionIndex, success);
+ LEReferenceToArrayOf<TTGlyphID> ligatureTable(stHeader, success, ligatureOffset, LE_UNBOUNDED_ARRAY);
+ LigatureActionEntry action;
+- le_int32 offset, i = 0;
++ le_int32 offset, i = 0, j = 0;
+ le_int32 stack[nComponents];
+ le_int16 mm = -1;
+
+@@ -111,6 +111,10 @@
+ do {
+ le_uint32 componentGlyph = componentStack[m--]; // pop off
+
++ if (j++ > 0) {
++ ap.addObject(success);
++ }
++
+ action = SWAPL(*ap.getAlias());
+
+ if (m < 0) {
+@@ -144,7 +148,6 @@
+ LE_DEBUG_BAD_FONT("m<0")
+ }
+ #endif
+- ap.addObject(success);
+ } while (LE_SUCCESS(success) && !(action & lafLast) && (m>=0) ); // stop if last bit is set, or if run out of items
+
+ while (mm >= 0) {
+--- ./jdk/src/share/native/sun/font/layout/MarkToBasePosnSubtables.cpp Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/native/sun/font/layout/MarkToBasePosnSubtables.cpp Tue Jun 02 13:49:09 2015 +0300
+@@ -97,13 +97,9 @@
+
+ if( LE_FAILURE(success) ) { return 0; }
+ Offset anchorTableOffset = SWAPW(baseRecord->baseAnchorTableOffsetArray[markClass]);
+- if (anchorTableOffset <= 0) {
+- // this means the table is mal-formed...
+- glyphIterator->setCurrGlyphBaseOffset(baseIterator.getCurrStreamPosition());
+- return 0;
+- }
++ LEReferenceTo<AnchorTable> anchorTable(baseArray, success, anchorTableOffset);
++ if( LE_FAILURE(success) ) { return 0; }
+
+- LEReferenceTo<AnchorTable> anchorTable(baseArray, success, anchorTableOffset);
+ LEPoint baseAnchor, markAdvance, pixels;
+
+
+--- ./jdk/src/share/native/sun/font/layout/MorphTables.cpp Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/native/sun/font/layout/MorphTables.cpp Tue Jun 02 13:49:09 2015 +0300
+@@ -52,8 +52,15 @@
+ le_uint32 chain;
+
+ for (chain = 0; LE_SUCCESS(success) && (chain < chainCount); chain += 1) {
++ if (chain > 0) {
++ le_uint32 chainLength = SWAPL(chainHeader->chainLength);
++ if (chainLength & 0x03) { // incorrect alignment for 32 bit tables
++ success = LE_MEMORY_ALLOCATION_ERROR; // as good a choice as any
++ return;
++ }
++ chainHeader.addOffset(chainLength, success);
++ }
+ FeatureFlags defaultFlags = SWAPL(chainHeader->defaultFlags);
+- le_uint32 chainLength = SWAPL(chainHeader->chainLength);
+ le_int16 nFeatureEntries = SWAPW(chainHeader->nFeatureEntries);
+ le_int16 nSubtables = SWAPW(chainHeader->nSubtables);
+ LEReferenceTo<MorphSubtableHeader> subtableHeader =
+@@ -61,7 +68,14 @@
+ le_int16 subtable;
+
+ for (subtable = 0; LE_SUCCESS(success) && (subtable < nSubtables); subtable += 1) {
+- le_int16 length = SWAPW(subtableHeader->length);
++ if (subtable > 0) {
++ le_int16 length = SWAPW(subtableHeader->length);
++ if (length & 0x03) { // incorrect alignment for 32 bit tables
++ success = LE_MEMORY_ALLOCATION_ERROR; // as good a choice as any
++ return;
++ }
++ subtableHeader.addOffset(length, success);
++ }
+ SubtableCoverage coverage = SWAPW(subtableHeader->coverage);
+ FeatureFlags subtableFeatures = SWAPL(subtableHeader->subtableFeatures);
+
+@@ -69,10 +83,7 @@
+ if ((coverage & scfVertical) == 0 && (subtableFeatures & defaultFlags) != 0 && LE_SUCCESS(success)) {
+ subtableHeader->process(subtableHeader, glyphStorage, success);
+ }
+-
+- subtableHeader.addOffset(length, success);
+ }
+- chainHeader.addOffset(chainLength, success);
+ }
+ }
+
+--- ./jdk/src/share/native/sun/font/layout/MorphTables2.cpp Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/native/sun/font/layout/MorphTables2.cpp Tue Jun 02 13:49:09 2015 +0300
+@@ -59,6 +59,10 @@
+ for (chain = 0; LE_SUCCESS(success) && (chain < chainCount); chain++) {
+ if (chain>0) {
+ le_uint32 chainLength = SWAPL(chainHeader->chainLength);
++ if (chainLength & 0x03) { // incorrect alignment for 32 bit tables
++ success = LE_MEMORY_ALLOCATION_ERROR; // as good a choice as any
++ return;
++ }
+ chainHeader.addOffset(chainLength, success); // Don't increment the first time
+ }
+ FeatureFlags flag = SWAPL(chainHeader->defaultFlags);
+@@ -188,6 +192,10 @@
+ for (subtable = 0; LE_SUCCESS(success) && subtable < nSubtables; subtable++) {
+ if(subtable>0) {
+ le_uint32 length = SWAPL(subtableHeader->length);
++ if (length & 0x03) { // incorrect alignment for 32 bit tables
++ success = LE_MEMORY_ALLOCATION_ERROR; // as good a choice as any
++ return;
++ }
+ subtableHeader.addOffset(length, success); // Don't addOffset for the last entry.
+ }
+ le_uint32 coverage = SWAPL(subtableHeader->coverage);
+--- ./jdk/src/share/native/sun/font/layout/PairPositioningSubtables.cpp Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/native/sun/font/layout/PairPositioningSubtables.cpp Tue Jun 02 13:49:09 2015 +0300
+@@ -179,12 +179,13 @@
+ LEReferenceTo<PairValueRecord> record(records);
+
+ for(le_int32 r = 0; r < recordCount; r += 1) {
++ if (r > 0) {
++ record.addOffset(recordSize, success);
++ }
+ if(LE_FAILURE(success)) return LEReferenceTo<PairValueRecord>();
+ if (SWAPW(record->secondGlyph) == glyphID) {
+ return record;
+ }
+-
+- record.addOffset(recordSize, success);
+ }
+ #else
+ #error dead code - not updated.
+--- ./jdk/src/share/native/sun/font/layout/SingleSubstitutionSubtables.cpp Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/native/sun/font/layout/SingleSubstitutionSubtables.cpp Tue Jun 02 13:49:09 2015 +0300
+@@ -94,7 +94,9 @@
+ return 0;
+ }
+
+- if (coverageIndex >= 0) {
++ LEReferenceToArrayOf<TTGlyphID> substituteArrayRef(base, success, substituteArray, SWAPW(glyphCount));
++
++ if (coverageIndex >= 0 && LE_SUCCESS(success) && coverageIndex < substituteArrayRef.getCount()) {
+ TTGlyphID substitute = SWAPW(substituteArray[coverageIndex]);
+
+ if (filter == NULL || filter->accept(LE_SET_GLYPH(glyph, substitute), success)) {
+--- ./jdk/src/share/native/sun/font/layout/StateTableProcessor.cpp Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/native/sun/font/layout/StateTableProcessor.cpp Tue Jun 02 13:49:09 2015 +0300
+@@ -85,6 +85,7 @@
+ if (currGlyph == glyphCount) {
+ // XXX: How do we handle EOT vs. EOL?
+ classCode = classCodeEOT;
++ break;
+ } else {
+ TTGlyphID glyphCode = (TTGlyphID) LE_GET_GLYPH(glyphStorage[currGlyph]);
+
+--- ./jdk/src/share/native/sun/font/layout/StateTableProcessor2.cpp Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/native/sun/font/layout/StateTableProcessor2.cpp Tue Jun 02 13:49:09 2015 +0300
+@@ -103,6 +103,7 @@
+ if (currGlyph == glyphCount || currGlyph == -1) {
+ // XXX: How do we handle EOT vs. EOL?
+ classCode = classCodeEOT;
++ break;
+ } else {
+ LEGlyphID gid = glyphStorage[currGlyph];
+ TTGlyphID glyphCode = (TTGlyphID) LE_GET_GLYPH(gid);
+@@ -134,6 +135,7 @@
+ if (currGlyph == glyphCount || currGlyph == -1) {
+ // XXX: How do we handle EOT vs. EOL?
+ classCode = classCodeEOT;
++ break;
+ } else {
+ LEGlyphID gid = glyphStorage[currGlyph];
+ TTGlyphID glyphCode = (TTGlyphID) LE_GET_GLYPH(gid);
+@@ -171,6 +173,7 @@
+ if (currGlyph == glyphCount || currGlyph == -1) {
+ // XXX: How do we handle EOT vs. EOL?
+ classCode = classCodeEOT;
++ break;
+ } else if(currGlyph > glyphCount) {
+ // note if > glyphCount, we've run off the end (bad font)
+ currGlyph = glyphCount;
+@@ -211,6 +214,7 @@
+ if (currGlyph == glyphCount || currGlyph == -1) {
+ // XXX: How do we handle EOT vs. EOL?
+ classCode = classCodeEOT;
++ break;
+ } else {
+ TTGlyphID glyphCode = (TTGlyphID) LE_GET_GLYPH(glyphStorage[currGlyph]);
+ if (glyphCode == 0xFFFF) {
+--- ./jdk/src/share/native/sun/font/layout/StateTables.h Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/native/sun/font/layout/StateTables.h Tue Jun 02 13:49:09 2015 +0300
+@@ -126,7 +126,7 @@
+ struct StateEntry
+ {
+ ByteOffset newStateOffset;
+- le_int16 flags;
++ le_uint16 flags;
+ };
+
+ typedef le_uint16 EntryTableIndex2;
+--- ./jdk/src/share/native/sun/security/ec/impl/ec.c Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/native/sun/security/ec/impl/ec.c Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2007, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Use is subject to license terms.
+ *
+ * This library is free software; you can redistribute it and/or
+@@ -34,6 +34,7 @@
+ * Dr Vipul Gupta <vipul.gupta@sun.com> and
+ * Douglas Stebila <douglas@stebila.ca>, Sun Microsystems Laboratories
+ *
++ * Last Modified Date from the Original Code: April 2015
+ *********************************************************************** */
+
+ #include "mplogic.h"
+@@ -585,6 +586,10 @@
+ return SECFailure;
+ }
+
++ if (EC_ValidatePublicKey(ecParams, publicValue, kmflag) != SECSuccess) {
++ return SECFailure;
++ }
++
+ memset(derivedSecret, 0, sizeof *derivedSecret);
+ len = (ecParams->fieldID.size + 7) >> 3;
+ pointQ.len = 2*len + 1;
+--- ./jdk/src/share/native/sun/security/ec/impl/ecc_impl.h Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/native/sun/security/ec/impl/ecc_impl.h Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Use is subject to license terms.
+ *
+ * This library is free software; you can redistribute it and/or
+@@ -34,6 +34,7 @@
+ * Dr Vipul Gupta <vipul.gupta@sun.com> and
+ * Douglas Stebila <douglas@stebila.ca>, Sun Microsystems Laboratories
+ *
++ * Last Modified Date from the Original Code: November 2013
+ *********************************************************************** */
+
+ #ifndef _ECC_IMPL_H
+--- ./jdk/src/share/native/sun/security/ec/impl/ecdecode.c Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/native/sun/security/ec/impl/ecdecode.c Tue Jun 02 13:49:09 2015 +0300
+@@ -34,6 +34,7 @@
+ * Dr Vipul Gupta <vipul.gupta@sun.com> and
+ * Douglas Stebila <douglas@stebila.ca>, Sun Microsystems Laboratories
+ *
++ * Last Modified Date from the Original Code: March 2012
+ *********************************************************************** */
+
+ #include <sys/types.h>
+--- ./jdk/src/share/native/sun/security/ec/impl/mpi.c Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/native/sun/security/ec/impl/mpi.c Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2007, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Use is subject to license terms.
+ *
+ * This library is free software; you can redistribute it and/or
+@@ -34,6 +34,7 @@
+ * Netscape Communications Corporation
+ * Douglas Stebila <douglas@stebila.ca> of Sun Laboratories.
+ *
++ * Last Modified Date from the Original Code: June 2014
+ *********************************************************************** */
+
+ /* Arbitrary precision integer arithmetic library */
+--- ./jdk/src/share/native/sun/security/ec/impl/oid.c Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/native/sun/security/ec/impl/oid.c Tue Jun 02 13:49:09 2015 +0300
+@@ -33,6 +33,7 @@
+ * Contributor(s):
+ * Dr Vipul Gupta <vipul.gupta@sun.com>, Sun Microsystems Laboratories
+ *
++ * Last Modified Date from the Original Code: March 2012
+ *********************************************************************** */
+
+ #include <sys/types.h>
+--- ./jdk/src/share/native/sun/security/ec/impl/secitem.c Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/share/native/sun/security/ec/impl/secitem.c Tue Jun 02 13:49:09 2015 +0300
+@@ -32,6 +32,7 @@
+ *
+ * Contributor(s):
+ *
++ * Last Modified Date from the Original Code: March 2012
+ *********************************************************************** */
+
+ /*
+--- ./jdk/src/solaris/bin/java_md_solinux.c Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/solaris/bin/java_md_solinux.c Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -613,13 +613,14 @@
+ /* runpath contains current effective LD_LIBRARY_PATH setting */
+
+ jvmpath = JLI_StringDup(jvmpath);
+- new_runpath = JLI_MemAlloc(((runpath != NULL) ? JLI_StrLen(runpath) : 0) +
++ size_t new_runpath_size = ((runpath != NULL) ? JLI_StrLen(runpath) : 0) +
+ 2 * JLI_StrLen(jrepath) + 2 * JLI_StrLen(arch) +
+ #ifdef AIX
+ /* On AIX we additionally need 'jli' in the path because ld doesn't support $ORIGIN. */
+ JLI_StrLen(jrepath) + JLI_StrLen(arch) + JLI_StrLen("/lib//jli:") +
+ #endif
+- JLI_StrLen(jvmpath) + 52);
++ JLI_StrLen(jvmpath) + 52;
++ new_runpath = JLI_MemAlloc(new_runpath_size);
+ newpath = new_runpath + JLI_StrLen(LD_LIBRARY_PATH "=");
+
+
+@@ -679,6 +680,11 @@
+ * loop of execv() because we test for the prefix, above.
+ */
+ if (runpath != 0) {
++ /* ensure storage for runpath + colon + NULL */
++ if ((JLI_StrLen(runpath) + 1 + 1) > new_runpath_size) {
++ JLI_ReportErrorMessageSys(JRE_ERROR11);
++ exit(1);
++ }
+ JLI_StrCat(new_runpath, ":");
+ JLI_StrCat(new_runpath, runpath);
+ }
+@@ -811,7 +817,11 @@
+ JLI_TraceLauncher("JRE path is %s\n", path);
+ return JNI_TRUE;
+ }
+-
++ /* ensure storage for path + /jre + NULL */
++ if ((JLI_StrLen(path) + 4 + 1) > pathsize) {
++ JLI_TraceLauncher("Insufficient space to store JRE path\n");
++ return JNI_FALSE;
++ }
+ /* Does the app ship a private JRE in <apphome>/jre directory? */
+ JLI_Snprintf(libjava, sizeof(libjava), "%s/jre/lib/%s/" JAVA_DLL, path, arch);
+ if (access(libjava, F_OK) == 0) {
+--- ./jdk/src/solaris/native/java/net/net_util_md.c Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/solaris/native/java/net/net_util_md.c Tue Jun 02 13:49:09 2015 +0300
+@@ -1521,6 +1521,7 @@
+ int exclbind = -1;
+ #endif
+ int rv;
++ int arg, alen;
+
+ #ifdef __linux__
+ /*
+@@ -1537,7 +1538,7 @@
+ }
+ #endif
+
+-#if defined(__solaris__) && defined(AF_INET6)
++#if defined(__solaris__)
+ /*
+ * Solaris has separate IPv4 and IPv6 port spaces so we
+ * use an exclusive bind when SO_REUSEADDR is not used to
+@@ -1547,35 +1548,31 @@
+ * results in a late bind that fails because the
+ * corresponding IPv4 port is in use.
+ */
+- if (ipv6_available()) {
+- int arg, len;
++ alen = sizeof(arg);
++ if (useExclBind || getsockopt(fd, SOL_SOCKET, SO_REUSEADDR,
++ (char *)&arg, &alen) == 0) {
++ if (useExclBind || arg == 0) {
++ /*
++ * SO_REUSEADDR is disabled or sun.net.useExclusiveBind
++ * property is true so enable TCP_EXCLBIND or
++ * UDP_EXCLBIND
++ */
++ alen = sizeof(arg);
++ if (getsockopt(fd, SOL_SOCKET, SO_TYPE, (char *)&arg,
++ &alen) == 0) {
++ if (arg == SOCK_STREAM) {
++ level = IPPROTO_TCP;
++ exclbind = TCP_EXCLBIND;
++ } else {
++ level = IPPROTO_UDP;
++ exclbind = UDP_EXCLBIND;
++ }
++ }
+
+- len = sizeof(arg);
+- if (useExclBind || getsockopt(fd, SOL_SOCKET, SO_REUSEADDR,
+- (char *)&arg, &len) == 0) {
+- if (useExclBind || arg == 0) {
+- /*
+- * SO_REUSEADDR is disabled or sun.net.useExclusiveBind
+- * property is true so enable TCP_EXCLBIND or
+- * UDP_EXCLBIND
+- */
+- len = sizeof(arg);
+- if (getsockopt(fd, SOL_SOCKET, SO_TYPE, (char *)&arg,
+- &len) == 0) {
+- if (arg == SOCK_STREAM) {
+- level = IPPROTO_TCP;
+- exclbind = TCP_EXCLBIND;
+- } else {
+- level = IPPROTO_UDP;
+- exclbind = UDP_EXCLBIND;
+- }
+- }
+-
+- arg = 1;
+- setsockopt(fd, level, exclbind, (char *)&arg,
+- sizeof(arg));
++ arg = 1;
++ setsockopt(fd, level, exclbind, (char *)&arg,
++ sizeof(arg));
+ }
+- }
+ }
+
+ #endif
+--- ./jdk/src/windows/bin/java_md.c Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/src/windows/bin/java_md.c Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -318,7 +318,11 @@
+ JLI_TraceLauncher("JRE path is %s\n", path);
+ return JNI_TRUE;
+ }
+-
++ /* ensure storage for path + \jre + NULL */
++ if ((JLI_StrLen(path) + 4 + 1) > pathsize) {
++ JLI_TraceLauncher("Insufficient space to store JRE path\n");
++ return JNI_FALSE;
++ }
+ /* Does this app ship a private JRE in <apphome>\jre directory? */
+ JLI_Snprintf(javadll, sizeof (javadll), "%s\\jre\\bin\\" JAVA_DLL, path);
+ if (stat(javadll, &s) == 0) {
+--- ./jdk/test/com/sun/security/auth/login/ConfigFile/InconsistentError.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/test/com/sun/security/auth/login/ConfigFile/InconsistentError.java Tue Jun 02 13:49:09 2015 +0300
+@@ -26,6 +26,7 @@
+ * @bug 4406033
+ * @summary ConfigFile throws an inconsistent error message
+ * when the configuration file is not found
++ * @run main/othervm -Duser.language=en InconsistentError
+ */
+
+ import com.sun.security.auth.login.*;
+--- ./jdk/test/com/sun/security/auth/module/KeyStoreLoginModule/OptionTest.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/test/com/sun/security/auth/module/KeyStoreLoginModule/OptionTest.java Tue Jun 02 13:49:09 2015 +0300
+@@ -25,6 +25,7 @@
+ * @test
+ * @bug 4919147
+ * @summary Support for token-based KeyStores
++ * @run main/othervm -Duser.language=en OptionTest
+ */
+
+ import java.io.File;
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ ./jdk/test/java/awt/Frame/MaximizedNormalBoundsUndecoratedTest/MaximizedNormalBoundsUndecoratedTest.java Tue Jun 02 13:49:09 2015 +0300
+@@ -0,0 +1,76 @@
++/*
++ * Copyright (c) 2007, 2015, Oracle and/or its affiliates. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++import java.awt.Frame;
++import java.awt.Toolkit;
++import java.awt.Dimension;
++/*
++ * @test
++ * @bug 8066436
++ * @summary Set the size of frame. Set extendedState Frame.MAXIMIZED_BOTH and Frame.NORMAL
++ * sequentially for undecorated Frame and .
++ * Check if resulted size is equal to original frame size.
++ * @run main MaximizedNormalBoundsUndecoratedTest
++ */
++
++
++public class MaximizedNormalBoundsUndecoratedTest {
++ private Frame frame;
++ public static void main(String args[]) {
++ if (!Toolkit.getDefaultToolkit().isFrameStateSupported(Frame.MAXIMIZED_BOTH)
++ && !Toolkit.getDefaultToolkit().isFrameStateSupported(Frame.NORMAL)) {
++ return;
++ }
++ MaximizedNormalBoundsUndecoratedTest test = new MaximizedNormalBoundsUndecoratedTest();
++ boolean doPass = true;
++ if( !test.doTest() ) {
++ System.out.println("Maximizing frame not saving correct normal bounds");
++ doPass = false;
++ }
++
++ if(!doPass) {
++ throw new RuntimeException("Maximizing frame not saving correct normal bounds");
++ }
++ }
++
++ boolean doTest() {
++ Dimension beforeMaximizeCalled = new Dimension(300,300);
++
++ frame = new Frame("Test Frame");
++ frame.setUndecorated(true);
++ frame.setFocusable(true);
++ frame.setSize(beforeMaximizeCalled);
++ frame.setVisible(true);
++ frame.setExtendedState(Frame.MAXIMIZED_BOTH);
++ frame.setExtendedState(Frame.NORMAL);
++
++ Dimension afterMaximizedCalled= frame.getBounds().getSize();
++
++ frame.dispose();
++
++ if (beforeMaximizeCalled.equals(afterMaximizedCalled)) {
++ return true;
++ }
++ return false;
++ }
++}
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ ./jdk/test/java/awt/datatransfer/ClipboardInterVMTest/ClipboardInterVMTest.java Tue Jun 02 13:49:09 2015 +0300
+@@ -0,0 +1,171 @@
++/*
++ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++/*
++ @test
++ @bug 8071668
++ @summary Check whether clipboard see changes from external process after taking ownership
++ @author Anton Nashatyrev: area=datatransfer
++ @library /lib/testlibrary
++ @build jdk.testlibrary.Utils
++ @run main ClipboardInterVMTest
++*/
++
++import jdk.testlibrary.Utils;
++
++import java.awt.*;
++import java.awt.datatransfer.*;
++import java.io.BufferedReader;
++import java.io.File;
++import java.io.IOException;
++import java.io.Reader;
++import java.util.ArrayList;
++import java.util.Arrays;
++import java.util.List;
++import java.util.concurrent.CountDownLatch;
++import java.util.concurrent.TimeUnit;
++
++public class ClipboardInterVMTest {
++
++ static CountDownLatch lostOwnershipMonitor = new CountDownLatch(1);
++ static CountDownLatch flavorChangedMonitor = new CountDownLatch(1);
++ static Process process;
++
++ public static void main(String[] args) throws Throwable {
++ Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard();
++
++ if (args.length > 0) {
++ System.out.println("Changing clip...");
++ clip.setContents(new StringSelection("pong"), null);
++ System.out.println("done");
++ // keeping this process running for a while since on Mac the clipboard
++ // will be invalidated via NSApplicationDidBecomeActiveNotification
++ // callback in the main process after this child process finishes
++ Thread.sleep(60 * 1000);
++ return;
++ };
++
++
++ clip.setContents(new CustomSelection(), new ClipboardOwner() {
++ @Override
++ public void lostOwnership(Clipboard clipboard, Transferable contents) {
++ System.out.println("ClipboardInterVMTest.lostOwnership");
++ lostOwnershipMonitor.countDown();
++ }
++ });
++
++ clip.addFlavorListener(new FlavorListener() {
++ @Override
++ public void flavorsChanged(FlavorEvent e) {
++ System.out.println("ClipboardInterVMTest.flavorsChanged");
++ flavorChangedMonitor.countDown();
++ }
++ });
++
++ System.out.println("Starting external clipborad modifier...");
++ new Thread(() -> runTest(ClipboardInterVMTest.class.getCanonicalName(), "pong")).start();
++
++ String content = "";
++ long startTime = System.currentTimeMillis();
++ while (System.currentTimeMillis() - startTime < 30 * 1000) {
++ Transferable c = clip.getContents(null);
++ if (c.isDataFlavorSupported(DataFlavor.plainTextFlavor)) {
++ Reader reader = DataFlavor.plainTextFlavor.getReaderForText(c);
++ content = new BufferedReader(reader).readLine();
++ System.out.println(content);
++ if (content.equals("pong")) {
++ break;
++ }
++ }
++ Thread.sleep(200);
++ }
++
++ if (!lostOwnershipMonitor.await(10, TimeUnit.SECONDS)) {
++ throw new RuntimeException("No LostOwnership event received.");
++ };
++
++ if (!flavorChangedMonitor.await(10, TimeUnit.SECONDS)) {
++ throw new RuntimeException("No LostOwnership event received.");
++ };
++
++ if (!content.equals("pong")) {
++ throw new RuntimeException("Content was not passed.");
++ }
++
++ process.destroy();
++
++ System.out.println("Passed.");
++ }
++
++ private static void runTest(String main, String... args) {
++
++ try {
++ List<String> opts = new ArrayList<>();
++ opts.add(getJavaExe());
++ opts.addAll(Arrays.asList(Utils.getTestJavaOpts()));
++ opts.add("-cp");
++ opts.add(System.getProperty("test.class.path", System.getProperty("java.class.path")));
++
++ opts.add(main);
++ opts.addAll(Arrays.asList(args));
++
++ ProcessBuilder pb = new ProcessBuilder(opts.toArray(new String[0]));
++ process = pb.start();
++ } catch (Throwable throwable) {
++ throw new RuntimeException(throwable);
++ }
++ }
++
++ private static String getJavaExe() throws IOException {
++ File p = new File(System.getProperty("java.home"), "bin");
++ File j = new File(p, "java");
++ if (!j.canRead()) {
++ j = new File(p, "java.exe");
++ }
++ if (!j.canRead()) {
++ throw new RuntimeException("Can't find java executable in " + p);
++ }
++ return j.getCanonicalPath();
++ }
++
++ static class CustomSelection implements Transferable {
++ private static final DataFlavor[] flavors = { DataFlavor.allHtmlFlavor };
++
++ public DataFlavor[] getTransferDataFlavors() {
++ return flavors;
++ }
++
++ public boolean isDataFlavorSupported(DataFlavor flavor) {
++ return flavors[0].equals(flavor);
++ }
++
++ public Object getTransferData(DataFlavor flavor)
++ throws UnsupportedFlavorException, java.io.IOException {
++ if (isDataFlavorSupported(flavor)) {
++ return "ping";
++ } else {
++ throw new UnsupportedFlavorException(flavor);
++ }
++ }
++ }
++}
+\ No newline at end of file
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ ./jdk/test/java/awt/event/KeyEvent/AltCharAcceleratorTest/AltCharAcceleratorTest.java Tue Jun 02 13:49:09 2015 +0300
+@@ -0,0 +1,136 @@
++/*
++ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++/*
++@test
++@bug 8068283
++@summary Checks that <Alt>+Char accelerators work when pressed in a text component
++@author Anton Nashatyrev
++@run main AltCharAcceleratorTest
++*/
++
++import sun.awt.SunToolkit;
++
++import javax.swing.*;
++import java.awt.*;
++import java.awt.event.*;
++import java.util.concurrent.CountDownLatch;
++import java.util.concurrent.TimeUnit;
++
++public class AltCharAcceleratorTest {
++
++ boolean action1 = false;
++ boolean action2 = false;
++
++ CountDownLatch focusLatch = new CountDownLatch(1);
++ CountDownLatch actionLatch = new CountDownLatch(2);
++
++ public AltCharAcceleratorTest() throws Exception {
++ SwingUtilities.invokeAndWait(new Runnable() {
++ @Override
++ public void run() {
++ JFrame f = new JFrame("frame");
++ final JTextField t = new JTextField();
++ JMenuBar mb = new JMenuBar();
++ JMenu m1 = new JMenu("File");
++ JMenuItem i1 = new JMenuItem("Save");
++ JMenuItem i2 = new JMenuItem("Load");
++
++ i1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T, KeyEvent.ALT_MASK));
++ i2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, KeyEvent.ALT_MASK));
++
++ i1.addActionListener(new ActionListener() {
++ @Override
++ public void actionPerformed(ActionEvent e) {
++ System.out.println("Action1!");
++ action1 = true;
++ actionLatch.countDown();
++ }
++ });
++
++ i2.addActionListener(new ActionListener() {
++ @Override
++ public void actionPerformed(ActionEvent e) {
++ System.out.println("Action2!");
++ action2 = true;
++ actionLatch.countDown();
++ }
++ });
++
++ t.addFocusListener(new FocusAdapter() {
++ @Override
++ public void focusGained(FocusEvent e) {
++ System.out.println("Focused!");
++ focusLatch.countDown();
++ }
++ });
++
++ t.setColumns(10);
++ t.requestFocusInWindow();
++
++ f.setJMenuBar(mb);
++ mb.add(m1);
++ m1.add(i1);
++ m1.add(i2);
++
++ f.setLayout(new FlowLayout());
++ f.add(t);
++ f.setSize(200, 200);
++
++ f.setVisible(true);
++ }
++ });
++ }
++
++ void test() throws Exception {
++ ((SunToolkit) Toolkit.getDefaultToolkit()).realSync();
++
++ focusLatch.await(5, TimeUnit.SECONDS);
++
++ Robot robot = new Robot();
++ robot.setAutoDelay(100);
++
++ robot.keyPress(KeyEvent.VK_ALT);
++ robot.keyPress(KeyEvent.VK_T);
++ robot.keyRelease(KeyEvent.VK_T);
++ robot.keyRelease(KeyEvent.VK_ALT);
++
++ robot.keyPress(KeyEvent.VK_ALT);
++ robot.keyPress(KeyEvent.VK_F);
++ robot.keyRelease(KeyEvent.VK_F);
++ robot.keyRelease(KeyEvent.VK_ALT);
++
++ actionLatch.await(5, TimeUnit.SECONDS);
++
++ if (!action1 || !action2) {
++ throw new RuntimeException("Actions not performed");
++ }
++
++ System.out.println("Passed.");
++ }
++
++ public static void main(String[] args) throws Exception {
++ AltCharAcceleratorTest t = new AltCharAcceleratorTest();
++ t.test();
++ }
++}
+\ No newline at end of file
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ ./jdk/test/javax/crypto/Cipher/CipherInputStreamExceptions.java Tue Jun 02 13:49:09 2015 +0300
+@@ -0,0 +1,415 @@
++/*
++ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++/*
++ * @test
++ * @bug 8064546
++ * @summary Throw exceptions during reading but not closing of a
++ * CipherInputStream:
++ * - Make sure authenticated algorithms continue to throwing exceptions
++ * when the authentication tag fails verification.
++ * - Make sure other algorithms do not throw exceptions when the stream
++ * calls close() and only throw when read() errors.
++ */
++
++import java.io.ByteArrayInputStream;
++import java.io.IOException;
++import java.lang.Exception;
++import java.lang.RuntimeException;
++import java.lang.Throwable;
++import java.security.AlgorithmParameters;
++import javax.crypto.AEADBadTagException;
++import javax.crypto.Cipher;
++import javax.crypto.CipherInputStream;
++import javax.crypto.IllegalBlockSizeException;
++import javax.crypto.spec.IvParameterSpec;
++import javax.crypto.spec.SecretKeySpec;
++import javax.crypto.spec.GCMParameterSpec;
++
++public class CipherInputStreamExceptions {
++
++ static SecretKeySpec key = new SecretKeySpec(new byte[16], "AES");
++ static GCMParameterSpec gcmspec = new GCMParameterSpec(128, new byte[16]);
++ static IvParameterSpec iv = new IvParameterSpec(new byte[16]);
++ static boolean failure = false;
++
++ /* Full read stream, check that getMoreData() is throwing an exception
++ * This test
++ * 1) Encrypt 100 bytes with AES/GCM/PKCS5Padding
++ * 2) Changes the last byte to invalidate the authetication tag.
++ * 3) Fully reads CipherInputStream to decrypt the message and closes
++ */
++
++ static void gcm_AEADBadTag() throws Exception {
++ Cipher c;
++ byte[] read = new byte[200];
++
++ System.out.println("Running gcm_AEADBadTag");
++
++ // Encrypt 100 bytes with AES/GCM/PKCS5Padding
++ byte[] ct = encryptedText("GCM", 100);
++ // Corrupt the encrypted message
++ ct = corruptGCM(ct);
++ // Create stream for decryption
++ CipherInputStream in = getStream("GCM", ct);
++
++ try {
++ int size = in.read(read);
++ throw new RuntimeException("Fail: CipherInputStream.read() " +
++ "returned " + size + " and didn't throw an exception.");
++ } catch (IOException e) {
++ Throwable ec = e.getCause();
++ if (ec instanceof AEADBadTagException) {
++ System.out.println(" Pass.");
++ } else {
++ System.out.println(" Fail: " + ec.getMessage());
++ throw new RuntimeException(ec);
++ }
++ } finally {
++ in.close();
++ }
++ }
++
++ /* Short read stream,
++ * This test
++ * 1) Encrypt 100 bytes with AES/GCM/PKCS5Padding
++ * 2) Reads 100 bytes from stream to decrypt the message and closes
++ * 3) Make sure no value is returned by read()
++ * 4) Make sure no exception is thrown
++ */
++
++ static void gcm_shortReadAEAD() throws Exception {
++ Cipher c;
++ byte[] read = new byte[100];
++
++ System.out.println("Running gcm_shortReadAEAD");
++
++ byte[] pt = new byte[600];
++ pt[0] = 1;
++ // Encrypt provided 600 bytes with AES/GCM/PKCS5Padding
++ byte[] ct = encryptedText("GCM", pt);
++ // Create stream for decryption
++ CipherInputStream in = getStream("GCM", ct);
++
++ int size = 0;
++ try {
++ size = in.read(read);
++ in.close();
++ if (read.length != 100) {
++ throw new RuntimeException("Fail: read size = " + read.length +
++ "should be 100.");
++ }
++ if (read[0] != 1) {
++ throw new RuntimeException("Fail: The decrypted text does " +
++ "not match the plaintext: '" + read[0] +"'");
++ }
++ } catch (IOException e) {
++ System.out.println(" Fail: " + e.getMessage());
++ throw new RuntimeException(e.getCause());
++ }
++ System.out.println(" Pass.");
++ }
++
++ /*
++ * Verify doFinal() exception is suppressed when input stream is not
++ * read before it is closed.
++ * This test:
++ * 1) Encrypt 100 bytes with AES/GCM/PKCS5Padding
++ * 2) Changes the last byte to invalidate the authetication tag.
++ * 3) Opens a CipherInputStream and the closes it. Never reads from it.
++ *
++ * There should be no exception thrown.
++ */
++ static void gcm_suppressUnreadCorrupt() throws Exception {
++ Cipher c;
++ byte[] read = new byte[200];
++
++ System.out.println("Running supressUnreadCorrupt test");
++
++ // Encrypt 100 bytes with AES/GCM/PKCS5Padding
++ byte[] ct = encryptedText("GCM", 100);
++ // Corrupt the encrypted message
++ ct = corruptGCM(ct);
++ // Create stream for decryption
++ CipherInputStream in = getStream("GCM", ct);
++
++ try {
++ in.close();
++ System.out.println(" Pass.");
++ } catch (IOException e) {
++ System.out.println(" Fail: " + e.getMessage());
++ throw new RuntimeException(e.getCause());
++ }
++ }
++
++ /*
++ * Verify noexception thrown when 1 byte is read from a GCM stream
++ * and then closed
++ * This test:
++ * 1) Encrypt 100 bytes with AES/GCM/PKCS5Padding
++ * 2) Read one byte from the stream, expect no exception thrown.
++ * 4) Close stream,expect no exception thrown.
++ */
++ static void gcm_oneReadByte() throws Exception {
++
++ System.out.println("Running gcm_oneReadByte test");
++
++ // Encrypt 100 bytes with AES/GCM/PKCS5Padding
++ byte[] ct = encryptedText("GCM", 100);
++ // Create stream for decryption
++ CipherInputStream in = getStream("GCM", ct);
++
++ try {
++ in.read();
++ System.out.println(" Pass.");
++ } catch (Exception e) {
++ System.out.println(" Fail: " + e.getMessage());
++ throw new RuntimeException(e.getCause());
++ }
++ }
++
++ /*
++ * Verify exception thrown when 1 byte is read from a corrupted GCM stream
++ * and then closed
++ * This test:
++ * 1) Encrypt 100 bytes with AES/GCM/PKCS5Padding
++ * 2) Changes the last byte to invalidate the authetication tag.
++ * 3) Read one byte from the stream, expect exception thrown.
++ * 4) Close stream,expect no exception thrown.
++ */
++ static void gcm_oneReadByteCorrupt() throws Exception {
++
++ System.out.println("Running gcm_oneReadByteCorrupt test");
++
++ // Encrypt 100 bytes with AES/GCM/PKCS5Padding
++ byte[] ct = encryptedText("GCM", 100);
++ // Corrupt the encrypted message
++ ct = corruptGCM(ct);
++ // Create stream for decryption
++ CipherInputStream in = getStream("GCM", ct);
++
++ try {
++ in.read();
++ System.out.println(" Fail. No exception thrown.");
++ } catch (IOException e) {
++ Throwable ec = e.getCause();
++ if (ec instanceof AEADBadTagException) {
++ System.out.println(" Pass.");
++ } else {
++ System.out.println(" Fail: " + ec.getMessage());
++ throw new RuntimeException(ec);
++ }
++ }
++ }
++
++ /* Check that close() does not throw an exception with full message in
++ * CipherInputStream's ibuffer.
++ * This test:
++ * 1) Encrypts a 97 byte message with AES/CBC/PKCS5Padding
++ * 2) Create a stream that sends 96 bytes.
++ * 3) Read stream once,
++ * 4) Close and expect no exception
++ */
++
++ static void cbc_shortStream() throws Exception {
++ Cipher c;
++ AlgorithmParameters params;
++ byte[] read = new byte[200];
++
++ System.out.println("Running cbc_shortStream");
++
++ // Encrypt 97 byte with AES/CBC/PKCS5Padding
++ byte[] ct = encryptedText("CBC", 97);
++ // Create stream with only 96 bytes of encrypted data
++ CipherInputStream in = getStream("CBC", ct, 96);
++
++ try {
++ int size = in.read(read);
++ in.close();
++ if (size != 80) {
++ throw new RuntimeException("Fail: CipherInputStream.read() " +
++ "returned " + size + ". Should have been 80");
++ }
++ System.out.println(" Pass.");
++ } catch (IOException e) {
++ System.out.println(" Fail: " + e.getMessage());
++ throw new RuntimeException(e.getCause());
++ }
++ }
++
++ /* Check that close() does not throw an exception when the whole message is
++ * inside the internal buffer (ibuffer) in CipherInputStream and we read
++ * one byte and close the stream.
++ * This test:
++ * 1) Encrypts a 400 byte message with AES/CBC/PKCS5Padding
++ * 2) Read one byte from the stream
++ * 3) Close and expect no exception
++ */
++
++ static void cbc_shortRead400() throws Exception {
++ System.out.println("Running cbc_shortRead400");
++
++ // Encrypt 400 byte with AES/CBC/PKCS5Padding
++ byte[] ct = encryptedText("CBC", 400);
++ // Create stream with encrypted data
++ CipherInputStream in = getStream("CBC", ct);
++
++ try {
++ in.read();
++ in.close();
++ System.out.println(" Pass.");
++ } catch (IOException e) {
++ System.out.println(" Fail: " + e.getMessage());
++ throw new RuntimeException(e.getCause());
++ }
++ }
++
++ /* Check that close() does not throw an exception when the inside the
++ * internal buffer (ibuffer) in CipherInputStream does not contain the
++ * whole message.
++ * This test:
++ * 1) Encrypts a 600 byte message with AES/CBC/PKCS5Padding
++ * 2) Read one byte from the stream
++ * 3) Close and expect no exception
++ */
++
++ static void cbc_shortRead600() throws Exception {
++ System.out.println("Running cbc_shortRead600");
++
++ // Encrypt 600 byte with AES/CBC/PKCS5Padding
++ byte[] ct = encryptedText("CBC", 600);
++ // Create stream with encrypted data
++ CipherInputStream in = getStream("CBC", ct);
++
++ try {
++ in.read();
++ in.close();
++ System.out.println(" Pass.");
++ } catch (IOException e) {
++ System.out.println(" Fail: " + e.getMessage());
++ throw new RuntimeException(e.getCause());
++ }
++ }
++
++ /* Check that exception is thrown when message is fully read
++ * This test:
++ * 1) Encrypts a 96 byte message with AES/CBC/PKCS5Padding
++ * 2) Create a stream that sends 95 bytes.
++ * 3) Read stream to the end
++ * 4) Expect IllegalBlockSizeException thrown
++ */
++
++ static void cbc_readAllIllegalBlockSize() throws Exception {
++ byte[] read = new byte[200];
++
++ System.out.println("Running cbc_readAllIllegalBlockSize test");
++
++ // Encrypt 96 byte with AES/CBC/PKCS5Padding
++ byte[] ct = encryptedText("CBC", 96);
++ // Create a stream with only 95 bytes of encrypted data
++ CipherInputStream in = getStream("CBC", ct, 95);
++
++ try {
++ int s, size = 0;
++ while ((s = in.read(read)) != -1) {
++ size += s;
++ }
++ throw new RuntimeException("Fail: No IllegalBlockSizeException. " +
++ "CipherInputStream.read() returned " + size);
++
++ } catch (IOException e) {
++ Throwable ec = e.getCause();
++ if (ec instanceof IllegalBlockSizeException) {
++ System.out.println(" Pass.");
++ } else {
++ System.out.println(" Fail: " + ec.getMessage());
++ throw new RuntimeException(ec);
++ }
++ }
++ }
++
++ /* Generic method to create encrypted text */
++ static byte[] encryptedText(String mode, int length) throws Exception{
++ return encryptedText(mode, new byte[length]);
++ }
++
++ /* Generic method to create encrypted text */
++ static byte[] encryptedText(String mode, byte[] pt) throws Exception{
++ Cipher c;
++ if (mode.compareTo("GCM") == 0) {
++ c = Cipher.getInstance("AES/GCM/PKCS5Padding", "SunJCE");
++ c.init(Cipher.ENCRYPT_MODE, key, gcmspec);
++ } else if (mode.compareTo("CBC") == 0) {
++ c = Cipher.getInstance("AES/CBC/PKCS5Padding", "SunJCE");
++ c.init(Cipher.ENCRYPT_MODE, key, iv);
++ } else {
++ return null;
++ }
++
++ return c.doFinal(pt);
++ }
++
++ /* Generic method to get a properly setup CipherInputStream */
++ static CipherInputStream getStream(String mode, byte[] ct) throws Exception {
++ return getStream(mode, ct, ct.length);
++ }
++
++ /* Generic method to get a properly setup CipherInputStream */
++ static CipherInputStream getStream(String mode, byte[] ct, int length)
++ throws Exception {
++ Cipher c;
++
++ if (mode.compareTo("GCM") == 0) {
++ c = Cipher.getInstance("AES/GCM/PKCS5Padding", "SunJCE");
++ c.init(Cipher.DECRYPT_MODE, key, gcmspec);
++ } else if (mode.compareTo("CBC") == 0) {
++ c = Cipher.getInstance("AES/CBC/PKCS5Padding", "SunJCE");
++ c.init(Cipher.DECRYPT_MODE, key, iv);
++ } else {
++ return null;
++ }
++
++ return new CipherInputStream(new ByteArrayInputStream(ct, 0, length), c);
++
++ }
++
++ /* Generic method for corrupting a GCM message. Change the last
++ * byte on of the authentication tag
++ */
++ static byte[] corruptGCM(byte[] ct) {
++ ct[ct.length - 1] = (byte) (ct[ct.length - 1] + 1);
++ return ct;
++ }
++
++ public static void main(String[] args) throws Exception {
++ gcm_AEADBadTag();
++ gcm_shortReadAEAD();
++ gcm_suppressUnreadCorrupt();
++ gcm_oneReadByte();
++ gcm_oneReadByteCorrupt();
++ cbc_shortStream();
++ cbc_shortRead400();
++ cbc_shortRead600();
++ cbc_readAllIllegalBlockSize();
++ }
++}
+--- ./jdk/test/javax/management/monitor/CounterMonitorTest.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/test/javax/management/monitor/CounterMonitorTest.java Tue Jun 02 13:49:09 2015 +0300
+@@ -68,7 +68,7 @@
+ observedValue = count;
+ CounterMonitorTest.class.notifyAll();
+ }
+- return count;
++ return observedValue;
+ }
+ public void setNbObjects(Object n) {
+ echo(">>> StdObservedObject.setNbObjects: " + n);
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ ./jdk/test/javax/xml/jaxp/parsers/8073385/BadExceptionMessageTest.java Tue Jun 02 13:49:09 2015 +0300
+@@ -0,0 +1,94 @@
++/*
++ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++/**
++ * @test
++ * @bug 8073385
++ * @summary test that invalid XML character exception string contains
++ * information about character value, element and attribute names
++ * @run testng/othervm BadExceptionMessageTest
++ */
++
++import java.io.StringReader;
++import java.util.Locale;
++import javax.xml.parsers.DocumentBuilderFactory;
++import javax.xml.parsers.DocumentBuilder;
++import org.xml.sax.SAXException;
++import org.xml.sax.InputSource;
++
++import org.testng.annotations.AfterClass;
++import org.testng.annotations.BeforeClass;
++import org.testng.annotations.DataProvider;
++import org.testng.annotations.Test;
++import static org.testng.Assert.assertTrue;
++
++public class BadExceptionMessageTest {
++
++ private Locale defLoc;
++
++ @BeforeClass
++ private void setup() {
++ defLoc = Locale.getDefault();
++ Locale.setDefault(Locale.ENGLISH);
++ }
++
++ @AfterClass
++ private void cleanup() {
++ Locale.setDefault(defLoc);
++ }
++
++ @DataProvider(name = "illegalCharactersData")
++ public static Object[][] illegalCharactersData() {
++ return new Object[][]{
++ {0x00},
++ {0xFFFE},
++ {0xFFFF}
++ };
++ }
++
++ @Test(dataProvider = "illegalCharactersData")
++ public void test(int character) throws Exception {
++ // Construct the XML document as a String
++ int[] cps = new int[]{character};
++ String txt = new String(cps, 0, cps.length);
++ String inxml = "<topElement attTest=\'" + txt + "\'/>";
++ String exceptionText = "NO EXCEPTION OBSERVED";
++ String hexString = "0x" + Integer.toHexString(character);
++
++ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
++ dbf.setNamespaceAware(true);
++ dbf.setValidating(false);
++ DocumentBuilder db = dbf.newDocumentBuilder();
++ InputSource isrc = new InputSource(new StringReader(inxml));
++
++ try {
++ db.parse(isrc);
++ } catch (SAXException e) {
++ exceptionText = e.toString();
++ }
++ System.out.println("Got Exception:" + exceptionText);
++ assertTrue(exceptionText.contains("attribute \"attTest\""));
++ assertTrue(exceptionText.contains("element is \"topElement\""));
++ assertTrue(exceptionText.contains("Unicode: " + hexString));
++ }
++}
+--- ./jdk/test/javax/xml/jaxp/transform/8062923/XslSubstringTest.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/test/javax/xml/jaxp/transform/8062923/XslSubstringTest.java Tue Jun 02 13:49:09 2015 +0300
+@@ -23,10 +23,11 @@
+
+ /**
+ * @test
+- * @bug 8062923 8062924
++ * @bug 8062923 8062924 8074297 8076290
+ * @run testng XslSubstringTest
+ * @summary Test xsl substring function with negative, Inf and
+- * NaN length and few other use cases
++ * NaN length and few other use cases. Also test proper
++ * processing of supplementary characters by substring function.
+ */
+
+ import java.io.StringReader;
+@@ -39,6 +40,7 @@
+ import javax.xml.transform.stream.StreamSource;
+
+ import static org.testng.Assert.assertEquals;
++import org.testng.annotations.DataProvider;
+ import org.testng.annotations.Test;
+
+ public class XslSubstringTest {
+@@ -50,6 +52,36 @@
+ + "<xsl:template match='/'><t>";
+ final String xslPost = "</t></xsl:template></xsl:stylesheet>";
+
++ @DataProvider(name = "GeneralTestsData")
++ private Object[][] xmls() {
++ return new Object[][] {
++ { "|<xsl:value-of select=\"substring('asdf',2, 1)\"/>|", "<t>|s|</t>"},
++ { "|<xsl:value-of select=\"substring('asdf',2, 1 div 0)\"/>|", "<t>|sdf|</t>"},
++ { "|<xsl:value-of select=\"substring('asdf',2, -0 div 0)\"/>|", "<t>||</t>" },
++ { "|<xsl:value-of select=\"substring('asdf',2, 1 div 0)\"/>|", "<t>|sdf|</t>" },
++ // 8076290 bug test case
++ { "|<xsl:value-of select=\"substring('123', 0, 3)\"/>|", "<t>|12|</t>"},
++ };
++ }
++
++ @DataProvider(name = "SupplementaryCharactersTestData")
++ private Object[][] dataSupplementaryCharacters() {
++ return new Object[][] {
++ // 8074297 bug test cases
++ { "|<xsl:value-of select=\"substring('&#131083;ABC', 3)\"/>|", "<t>|BC|</t>"},
++ { "|<xsl:value-of select=\"substring('&#131083;ABC', 3, 1)\"/>|", "<t>|B|</t>" },
++ { "|<xsl:value-of select=\"substring('&#131083;ABC', 2, 2)\"/>|", "<t>|AB|</t>"},
++ { "|<xsl:value-of select=\"substring('&#131083;ABC', 3, 2)\"/>|", "<t>|BC|</t>"},
++ { "|<xsl:value-of select=\"substring('&#131083;ABC', 3, 4)\"/>|", "<t>|BC|</t>"},
++ { "|<xsl:value-of select=\"substring('&#131083;ABC', 1, 1)\"/>|", "<t>|&#131083;|</t>"},
++ { "|<xsl:value-of select=\"substring('&#131083;ABC', 2, 1)\"/>|", "<t>|A|</t>"},
++ { "|<xsl:value-of select=\"substring('&#131083;ABC', 1, 1 div 0)\"/>|", "<t>|&#131083;ABC|</t>"},
++ { "|<xsl:value-of select=\"substring('&#131083;ABC', -10, 1 div 0)\"/>|", "<t>|&#131083;ABC|</t>"},
++ // 8076290 bug test case
++ { "|<xsl:value-of select=\"substring('&#131083;ABC', 0, 2)\"/>|", "<t>|&#131083;|</t>"},
++ };
++ }
++
+ private String testTransform(String xsl) throws Exception {
+ //Prepare sources for transormation
+ Source src = new StreamSource(new StringReader(xml));
+@@ -78,27 +110,14 @@
+ "<t>||</t>");
+ }
+
+- @Test
+- public void testGeneral1() throws Exception {
+- assertEquals(testTransform("|<xsl:value-of select=\"substring('asdf',2, 1)\"/>|"),
+- "<t>|s|</t>");
++ @Test(dataProvider = "GeneralTestsData")
++ public void testGeneralAll(String xsl, String result) throws Exception {
++ assertEquals(testTransform(xsl), result);
+ }
+
+- @Test
+- public void testGeneral2() throws Exception {
+- assertEquals(testTransform("|<xsl:value-of select=\"substring('asdf',2, 1 div 0)\"/>|"),
+- "<t>|sdf|</t>");
++ @Test(dataProvider = "SupplementaryCharactersTestData")
++ public void testSupplementCharacters(String xsl, String result) throws Exception {
++ assertEquals(testTransform(xsl), result);
+ }
+
+- @Test
+- public void testGeneral3() throws Exception {
+- assertEquals(testTransform("|<xsl:value-of select=\"substring('asdf',2, -0 div 0)\"/>|"),
+- "<t>||</t>");
+- }
+-
+- @Test
+- public void testGeneral4() throws Exception {
+- assertEquals(testTransform("|<xsl:value-of select=\"substring('asdf',2, 0 div 0)\"/>|"),
+- "<t>||</t>");
+- }
+ }
+--- ./jdk/test/javax/xml/ws/8046817/GenerateEnumSchema.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/test/javax/xml/ws/8046817/GenerateEnumSchema.java Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -23,57 +23,83 @@
+
+ /*
+ * @test
+- * @bug 8046817
+- * @summary schemagen fails to generate xsd for enum types
++ * @bug 8046817 8073357
++ * @summary schemagen fails to generate xsd for enum types.
++ * Check that order of Enum values is preserved.
+ * @run main/othervm GenerateEnumSchema
+ */
+ import java.io.BufferedReader;
+ import java.io.File;
+-import java.io.FileNotFoundException;
+ import java.io.IOException;
+ import java.io.InputStreamReader;
++import java.nio.file.Files;
+ import java.nio.file.Paths;
+-import java.util.Scanner;
++import java.util.stream.Collectors;
+
+ public class GenerateEnumSchema {
+
+ private static final String SCHEMA_OUTPUT_FILENAME = "schema1.xsd";
+ private static final File schemaOutputFile = new File(SCHEMA_OUTPUT_FILENAME);
++ private static final String[] expectedEnums = {
++ "\"FIRST\"", "\"ONE\"", "\"TWO\"", "\"THREE\"",
++ "\"FOUR\"", "\"FIVE\"", "\"SIX\"", "\"LAST\""};
++ private static String schemaContent = "";
+
+- public static void main(String[] args) throws Exception, IOException {
++ public static void main(String[] args) throws Exception {
++
+ //Check schema generation for class type
+ runSchemaGen("TestClassType.java");
+ checkIfSchemaGenerated();
++ readSchemaContent();
+ checkSchemaContent("<xs:complexType name=\"testClassType\">");
+ checkSchemaContent("<xs:element name=\"a\" type=\"xs:int\"/>");
+- schemaOutputFile.delete();
++
+ //Check schema generation for enum type
+ runSchemaGen("TestEnumType.java");
+ checkIfSchemaGenerated();
++ readSchemaContent();
++ //Check if Enum type schema is generated
+ checkSchemaContent("<xs:simpleType name=\"testEnumType\">");
+- checkSchemaContent("<xs:enumeration value=\"ONE\"/>");
+- checkSchemaContent("<xs:enumeration value=\"TWO\"/>");
+- checkSchemaContent("<xs:enumeration value=\"THREE\"/>");
++ //Check the sequence of enum values order
++ checkEnumOrder();
+ schemaOutputFile.delete();
+ }
+
++ // Check if schema file successfully generated by schemagen
+ private static void checkIfSchemaGenerated() {
+ if (!schemaOutputFile.exists()) {
+ throw new RuntimeException("FAIL:" + SCHEMA_OUTPUT_FILENAME + " was not generated by schemagen tool");
+ }
+ }
+
+- private static void checkSchemaContent(String exp_token) throws FileNotFoundException {
+- System.out.print("Check if generated schema contains '" + exp_token + "' string: ");
+- try (Scanner scanner = new Scanner(schemaOutputFile)) {
+- if (scanner.findWithinHorizon(exp_token, 0) != null) {
+- System.out.println("OK");
+- return;
+- }
++ //Read schema content from file
++ private static void readSchemaContent() throws Exception {
++ schemaContent = Files.lines(schemaOutputFile.toPath()).collect(Collectors.joining(""));
++ }
++
++ // Check if schema file contains specific string
++ private static void checkSchemaContent(String expContent) {
++ System.out.print("Check if generated schema contains '" + expContent + "' string: ");
++ if (schemaContent.contains(expContent)) {
++ System.out.println("OK");
++ return;
+ }
+ System.out.println("FAIL");
+- throw new RuntimeException("The '" + exp_token + "' is not found in generated schema");
++ throw new RuntimeException("The '" + expContent + "' is not found in generated schema");
++ }
+
++ // Check if the generated schema contains all enum constants
++ // and their order is preserved
++ private static void checkEnumOrder() throws Exception {
++ int prevElem = -1;
++ for (String elem : expectedEnums) {
++ int curElem = schemaContent.indexOf(elem);
++ System.out.println(elem + " position = " + curElem);
++ if (curElem < prevElem) {
++ throw new RuntimeException("FAIL: Enum values order is incorrect or " + elem + " element is not found");
++ }
++ prevElem = curElem;
++ }
+ }
+
+ private static String getClassFilePath(String filename) {
+--- ./jdk/test/javax/xml/ws/8046817/TestEnumType.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/test/javax/xml/ws/8046817/TestEnumType.java Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -25,5 +25,5 @@
+
+ @XmlEnum(String.class)
+ public enum TestEnumType {
+- ONE, TWO, THREE
++ FIRST, ONE, TWO, THREE, FOUR, FIVE, SIX, LAST
+ }
+--- ./jdk/test/lib/testlibrary/AssertsTest.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/test/lib/testlibrary/AssertsTest.java Tue Jun 02 13:49:09 2015 +0300
+@@ -25,7 +25,6 @@
+
+ /* @test
+ * @summary Tests the different assertions in the Assert class
+- * @library /testlibrary
+ */
+ public class AssertsTest {
+ private static class Foo implements Comparable<Foo> {
+--- ./jdk/test/lib/testlibrary/OutputAnalyzerReportingTest.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/test/lib/testlibrary/OutputAnalyzerReportingTest.java Tue Jun 02 13:49:09 2015 +0300
+@@ -27,7 +27,6 @@
+ * @summary Test the OutputAnalyzer reporting functionality,
+ * such as printing additional diagnostic info
+ * (exit code, stdout, stderr, command line, etc.)
+- * @library /testlibrary
+ */
+
+ import java.io.ByteArrayOutputStream;
+--- ./jdk/test/lib/testlibrary/OutputAnalyzerTest.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/test/lib/testlibrary/OutputAnalyzerTest.java Tue Jun 02 13:49:09 2015 +0300
+@@ -24,7 +24,6 @@
+ /*
+ * @test
+ * @summary Test the OutputAnalyzer utility class
+- * @library /testlibrary
+ */
+
+ import jdk.testlibrary.OutputAnalyzer;
+--- ./jdk/test/sun/management/jmxremote/bootstrap/RmiBootstrapTest.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/test/sun/management/jmxremote/bootstrap/RmiBootstrapTest.java Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -43,6 +43,8 @@
+
+ import sun.management.AgentConfigurationError;
+
++import java.security.Security;
++
+ import util.TestLogger;
+
+ /**
+@@ -133,6 +135,8 @@
+ "com.sun.management.jmxremote.ssl.enabled.protocols";
+ public static final String SSL_NEED_CLIENT_AUTH =
+ "com.sun.management.jmxremote.ssl.need.client.auth";
++ public static final String SSL_CLIENT_ENABLED_CIPHER_SUITES =
++ "javax.rmi.ssl.client.enabledCipherSuites";
+ }
+
+ /**
+@@ -434,7 +438,7 @@
+ }
+
+
+- private void setSslProperties() {
++ private void setSslProperties(String clientEnabledCipherSuites) {
+ final String defaultKeyStore =
+ getDefaultStoreName(DefaultValues.KEYSTORE);
+ final String defaultTrustStore =
+@@ -465,6 +469,13 @@
+ System.setProperty(PropertyNames.TRUSTSTORE_PASSWD,trustword);
+ log.trace("setSslProperties",
+ PropertyNames.TRUSTSTORE_PASSWD+"="+trustword);
++
++ if (clientEnabledCipherSuites != null) {
++ System.setProperty("javax.rmi.ssl.client.enabledCipherSuites",
++ clientEnabledCipherSuites);
++ } else {
++ System.clearProperty("javax.rmi.ssl.client.enabledCipherSuites");
++ }
+ }
+
+ private void checkSslConfiguration() {
+@@ -517,7 +528,10 @@
+ PropertyNames.SSL_ENABLED_PROTOCOLS + "=" +
+ sslProtocols);
+
+- if (useSsl) setSslProperties();
++ if (useSsl) {
++ setSslProperties(props.getProperty(
++ PropertyNames.SSL_CLIENT_ENABLED_CIPHER_SUITES));
++ }
+ } catch (Exception x) {
+ System.out.println("Failed to setup SSL configuration: " + x);
+ log.debug("checkSslConfiguration",x);
+@@ -871,6 +885,8 @@
+ * exit(1) if the test fails.
+ **/
+ public static void main(String args[]) throws Exception {
++ Security.setProperty("jdk.tls.disabledAlgorithms", "");
++
+ setupBasePort();
+ RmiBootstrapTest manager = new RmiBootstrapTest();
+ try {
+--- ./jdk/test/sun/management/jmxremote/bootstrap/management_ssltest07_ok.properties.in Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/test/sun/management/jmxremote/bootstrap/management_ssltest07_ok.properties.in Tue Jun 02 13:49:09 2015 +0300
+@@ -2,3 +2,4 @@
+ com.sun.management.jmxremote.ssl.enabled.protocols=SSLv2Hello,SSLv3,TLSv1
+ com.sun.management.jmxremote.ssl.need.client.auth=true
+ com.sun.management.jmxremote.authenticate=false
++javax.rmi.ssl.client.enabledCipherSuites=SSL_RSA_WITH_RC4_128_SHA,SSL_RSA_WITH_RC4_128_MD5
+--- ./jdk/test/sun/management/jmxremote/bootstrap/management_ssltest11_ok.properties.in Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/test/sun/management/jmxremote/bootstrap/management_ssltest11_ok.properties.in Tue Jun 02 13:49:09 2015 +0300
+@@ -3,3 +3,4 @@
+ com.sun.management.jmxremote.ssl.need.client.auth=true
+ com.sun.management.jmxremote.ssl.config.file=@TEST-SRC@/jmxremote_ssltest11_ok.ssl
+ com.sun.management.jmxremote.authenticate=false
++javax.rmi.ssl.client.enabledCipherSuites=SSL_RSA_WITH_RC4_128_SHA,SSL_RSA_WITH_RC4_128_MD5
+--- ./jdk/test/sun/security/ec/TestEC.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/test/sun/security/ec/TestEC.java Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -59,6 +59,11 @@
+ public class TestEC {
+
+ public static void main(String[] args) throws Exception {
++ // reset security properties to make sure that the algorithms
++ // and keys used in this test are not disabled.
++ Security.setProperty("jdk.tls.disabledAlgorithms", "");
++ Security.setProperty("jdk.certpath.disabledAlgorithms", "");
++
+ ProvidersSnapshot snapshot = ProvidersSnapshot.create();
+ try {
+ main0(args);
+@@ -68,10 +73,6 @@
+ }
+
+ public static void main0(String[] args) throws Exception {
+- // reset the security property to make sure that the algorithms
+- // and keys used in this test are not disabled.
+- Security.setProperty("jdk.tls.disabledAlgorithms", "");
+-
+ Provider p = Security.getProvider("SunEC");
+
+ if (p == null) {
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ ./jdk/test/sun/security/jgss/spnego/MSOID.java Tue Jun 02 13:49:09 2015 +0300
+@@ -0,0 +1,75 @@
++/*
++ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++/*
++ * @test
++ * @bug 8078439
++ * @summary SPNEGO auth fails if client proposes MS krb5 OID
++ */
++
++import org.ietf.jgss.GSSContext;
++import org.ietf.jgss.GSSCredential;
++import org.ietf.jgss.GSSException;
++import org.ietf.jgss.GSSManager;
++
++import java.lang.Exception;
++import java.nio.file.Files;
++import java.nio.file.Paths;
++import java.util.Arrays;
++import java.util.Base64;
++
++public class MSOID {
++ public static void main(String[] args) throws Exception {
++
++ // msoid.txt is a NegTokenInit packet sent from Internet Explorer to
++ // IIS server on a test machine. No sensitive info included.
++ byte[] header = Files.readAllBytes(
++ Paths.get(System.getProperty("test.src"), "msoid.txt"));
++ byte[] token = Base64.getMimeDecoder().decode(
++ Arrays.copyOfRange(header, 10, header.length));
++
++ GSSCredential cred = null;
++ GSSContext ctx = GSSManager.getInstance().createContext(cred);
++
++ try {
++ ctx.acceptSecContext(token, 0, token.length);
++ // Before the fix, GSS_KRB5_MECH_OID_MS is not recognized
++ // and acceptor chooses another mech and goes on
++ throw new Exception("Should fail");
++ } catch (GSSException gsse) {
++ // After the fix, GSS_KRB5_MECH_OID_MS is recognized but the token
++ // cannot be accepted because we don't have any krb5 credential.
++ gsse.printStackTrace();
++ if (gsse.getMajor() != GSSException.NO_CRED) {
++ throw gsse;
++ }
++ for (StackTraceElement st: gsse.getStackTrace()) {
++ if (st.getClassName().startsWith("sun.security.jgss.krb5.")) {
++ // Good, it is already in krb5 mech's hand.
++ return;
++ }
++ }
++ throw gsse;
++ }
++ }
++}
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ ./jdk/test/sun/security/jgss/spnego/msoid.txt Tue Jun 02 13:49:09 2015 +0300
+@@ -0,0 +1,27 @@
++Negotiate YIIGPAYGKwYBBQUCoIIGMDCCBiygMDAuBgkqhkiC9xIBAgIGCSqGSIb3EgECAgYKKwYBBA
++GCNwICHgYKKwYBBAGCNwICCqKCBfYEggXyYIIF7gYJKoZIhvcSAQICAQBuggXdMIIF2aADAgEFoQMCAQ
++6iBwMFACAAAACjggTIYYIExDCCBMCgAwIBBaEOGwxUV0VMVkUuVEhJTkuiIzAhoAMCAQKhGjAYGwRIVF
++RQGxBrZGMuVFdFTFZFLlRISU5Lo4IEgjCCBH6gAwIBEqEDAgEJooIEcASCBGyoIL0zQevk57pY6D25+1
++SQbAeldYXkpdn8JlKgSyz1cdiTpwqDt8B7pj7AoKMPHCiVss37XCEpBIuZClBK3Jmry+QWXCbQemKvyO
++Caz806RDNB7TA7l1NxUJ6LsCiQncNV1TEq37NM6H8il6PjnbcBoMcHH/+cFGVPNP3eP+Z5Kd+5DZELPV
++qQkYogXybmngmYy2168OsfyANzotUpm/HBwEHKujCPH9Gbhwhmx4tUcBvCetPNoXmHOQZLB4u7uyblKO
++c6R2yGTFCa8DBQNXx38RRHgsvlNGlx+UsSoF4/DixAreNRkZnpKabn1cRK/KZh6vHfbL2QVegr1hrp71
++IJwyVuR+RTGL/7WCSWFClJyWD3Cm4+eK46uVj4MKPUJBc0XVViV/Dsh4N9EomVDkovWU/v+0d+W4pQJk
++BFnJoNYuaG8UnLWrxMKGNwVOfsblcJtB7B5zuZzsWsUIdmMT1n8mtWrv0wYiwvotfT6z/suk+Vhg9MGd
++uDmeneeG9deMDUMwrwB8u5J2VEeWKurBfDB02jv/08qAZS2ovBfV2SiXCuky5z7llvQ8uPsoezVwYdhu
++HmBuPE7PqDIkmkEJRWpq95dqxllCXvlL4uINxFadkhcbzuCDjSGil78p6FJTKc4Dt/kuug1zJuXhJO1L
++2CgkMsYPTogoUvAtplzIDF0nSMwJUIJzQXIHCFasmDNJA1GAvQD+Qh7Mp4dYb2Uid+sSM2qlQn8bgR9S
++dlfL/olQ9GKPOBBGwsVoZKR3Brimc9LOJofPMEEa560KQNgtO1MyjoqEJKzFq+2wVZQahvpcV7VgixCq
++Nom3Wd4NdZ3QM0PHL7e9bl3/qCsWaiNlmRW7gupz8nNCtWNMf4UBqIeo9jPH9Cb96fOUM4c7XXp4iX6w
++ns1MsmPZ4VQDRU7VK+yTC81KGfMlSvrvqCJfGoxy0NaeXtmkN55oAhaj8ebiEBdKCXXF5wk0zqvt1ifE
++9ywYk/AbdFBPThyOT6Tu9x41gi6mCTiMtSdg7cFY+5yXd3UIgUwnbOG3IwAkdLXlepvnHwEXCXkbfbr9
++e1wjs5LMmYRunJ05FOx8iAibB8bWjgiFmYWbeyjyQF3KDs5cpvROXcapT1+KlFU4lEO8lnKM/Ipq81ED
++s+/DygXCvlskeKV57URx+XcMWnURu4hdGHbCPY/X7eOmox0mw5/V0rJMIjSjQNPyi4UM4dDTso6mt0XE
++h+YyCGmV67D8/nihO/NaRFEFxHlaGwh3Lqu/Tero88iuDb9U1uEWz8cF8wr+2azyOTmhi/ID/jfiEC8i
++b/hjYEcBI99x/CNmuuM7uCwTPIsJtBD3AnUdPa/yo41rCtm/K5HZCTzw2W93vaHqyttEC7c70rdAUB49
++CfSAVtH4gwxCDKMSJMlELfHGrIloEppEoUEc7LOdmzinvzcuajj0moBn5WUZHiVmopLjGjW7wunmMPQS
++H9FmCQf2I1N4E6nZfH+cUzBbHkIF5XHY4KXwmJQ3UdbUDp8z3npIH3MIH0oAMCARKigewEgenD23U6gQ
++aORjuWnT1nqadqR+E5fa/viohey4g6mn6uPfVRPz5a7OsDOurQV9wHR/VEwvjpdlZzMcANbt28Ut3YvQ
++SWWwqALoLtSLOTgXmK9Higb+NSSO7hKtqKgDWREfQisn3xE9PGkMUlanu2es34+k43AQmJf2InvFNNcy
++PcKllikoMOldVeoF1BIKvbDI0+vE3SwSrD0UhUdDeeZTN33b0Y8f3I1UYtidwxcRRkvCaNEhphtr8hp8
++hXWQkuxVvF2TiQyHF4PnJkgb1Zr6GXydOmMgMJE1anPFKFKWH6PZWGnp8mw0F5zw==
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ ./jdk/test/sun/security/krb5/auto/MSOID2.java Tue Jun 02 13:49:09 2015 +0300
+@@ -0,0 +1,78 @@
++/*
++ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++/*
++ * @test
++ * @bug 8078439
++ * @summary SPNEGO auth fails if client proposes MS krb5 OID
++ * @compile -XDignore.symbol.file MSOID2.java
++ * @run main/othervm MSOID2
++ */
++
++import sun.security.jgss.GSSUtil;
++
++// The basic krb5 test skeleton you can copy from
++public class MSOID2 {
++
++ public static void main(String[] args) throws Exception {
++
++ new OneKDC(null).writeJAASConf();
++
++ Context c, s;
++ c = Context.fromJAAS("client");
++ s = Context.fromJAAS("server");
++
++ c.startAsClient(OneKDC.SERVER, GSSUtil.GSS_SPNEGO_MECH_OID);
++ s.startAsServer(GSSUtil.GSS_SPNEGO_MECH_OID);
++
++ byte[] t = new byte[0];
++ boolean first = true;
++ while (true) {
++ if (t != null || !c.x().isEstablished()) t = c.take(t);
++ if (first) {
++ // Tweak the packet to append an extra OID
++ int len = t.length;
++ byte[] nt = new byte[len + 11];
++ System.arraycopy(t, 0, nt, 0, 0x23);
++ System.arraycopy(t, 0x18, nt, 0x23, 11); // dup the OID
++ System.arraycopy(t, 0x23, nt, 0x2e, len-0x23);
++ nt[0x1d] = (byte)0x82; // change the 1st to MS OID
++ // Length bytes to be tweaked
++ for (int pos: new int[] {3, 0xf, 0x13, 0x15, 0x17}) {
++ nt[pos] = (byte)(nt[pos] + 11);
++ }
++ t = nt;
++ new sun.misc.HexDumpEncoder().encodeBuffer(t, System.out);
++ }
++ if (t != null || !s.x().isEstablished()) t = s.take(t);
++ if (c.x().isEstablished() && s.x().isEstablished()) break;
++ first = false;
++ }
++
++ Context.transmit("i say high --", c, s);
++ Context.transmit(" you say low", s, c);
++
++ s.dispose();
++ c.dispose();
++ }
++}
+--- ./jdk/test/sun/security/pkcs11/sslecc/CipherTest.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/test/sun/security/pkcs11/sslecc/CipherTest.java Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -45,7 +45,7 @@
+ public class CipherTest {
+
+ // use any available port for the server socket
+- static int serverPort = 0;
++ static volatile int serverPort = 0;
+
+ final int THREADS;
+
+--- ./jdk/test/sun/security/pkcs11/sslecc/ClientJSSEServerJSSE.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/test/sun/security/pkcs11/sslecc/ClientJSSEServerJSSE.java Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -43,9 +43,10 @@
+ private static String[] cmdArgs;
+
+ public static void main(String[] args) throws Exception {
+- // reset the security property to make sure that the algorithms
++ // reset security properties to make sure that the algorithms
+ // and keys used in this test are not disabled.
+ Security.setProperty("jdk.tls.disabledAlgorithms", "");
++ Security.setProperty("jdk.certpath.disabledAlgorithms", "");
+
+ cmdArgs = args;
+ main(new ClientJSSEServerJSSE());
+--- ./jdk/test/sun/security/pkcs11/sslecc/JSSEServer.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/test/sun/security/pkcs11/sslecc/JSSEServer.java Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2002, 2006, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -42,7 +42,7 @@
+ serverContext.init(new KeyManager[] {cipherTest.keyManager}, new TrustManager[] {cipherTest.trustManager}, cipherTest.secureRandom);
+
+ SSLServerSocketFactory factory = (SSLServerSocketFactory)serverContext.getServerSocketFactory();
+- serverSocket = (SSLServerSocket)factory.createServerSocket(cipherTest.serverPort);
++ serverSocket = (SSLServerSocket)factory.createServerSocket(0);
+ cipherTest.serverPort = serverSocket.getLocalPort();
+ serverSocket.setEnabledCipherSuites(factory.getSupportedCipherSuites());
+ serverSocket.setWantClientAuth(true);
+--- ./jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/DHKeyExchange/DHEKeySizing.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/DHKeyExchange/DHEKeySizing.java Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -100,6 +100,7 @@
+ import javax.net.ssl.SSLEngineResult.*;
+ import java.io.*;
+ import java.nio.*;
++import java.security.Security;
+ import java.security.KeyStore;
+ import java.security.KeyFactory;
+ import java.security.cert.Certificate;
+@@ -377,6 +378,11 @@
+ }
+
+ public static void main(String args[]) throws Exception {
++ // reset security properties to make sure that the algorithms
++ // and keys used in this test are not disabled.
++ Security.setProperty("jdk.tls.disabledAlgorithms", "");
++ Security.setProperty("jdk.certpath.disabledAlgorithms", "");
++
+ if (args.length != 4) {
+ System.out.println(
+ "Usage: java DHEKeySizing cipher-suite " +
+--- ./jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/ServerHandshaker/AnonCipherWithWantClientAuth.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/ServerHandshaker/AnonCipherWithWantClientAuth.java Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -21,6 +21,11 @@
+ * questions.
+ */
+
++//
++// SunJSSE does not support dynamic system properties, no way to re-use
++// system properties in samevm/agentvm mode.
++//
++
+ /*
+ * @test
+ * @bug 4392475
+@@ -34,6 +39,7 @@
+ import java.io.*;
+ import java.net.*;
+ import javax.net.ssl.*;
++import java.security.Security;
+
+ public class AnonCipherWithWantClientAuth {
+
+@@ -156,6 +162,11 @@
+ volatile Exception clientException = null;
+
+ public static void main(String[] args) throws Exception {
++ // reset security properties to make sure that the algorithms
++ // and keys used in this test are not disabled.
++ Security.setProperty("jdk.tls.disabledAlgorithms", "");
++ Security.setProperty("jdk.certpath.disabledAlgorithms", "");
++
+ String keyFilename =
+ System.getProperty("test.src", "./") + "/" + pathToStores +
+ "/" + keyStoreFile;
+--- ./jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/SSLEngine/ConnectionTest.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/SSLEngine/ConnectionTest.java Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -79,6 +79,9 @@
+ ssle1.setEnabledCipherSuites(new String [] {
+ "SSL_RSA_WITH_RC4_128_MD5"});
+
++ ssle2.setEnabledCipherSuites(new String [] {
++ "SSL_RSA_WITH_RC4_128_MD5"});
++
+ createBuffers();
+ }
+
+--- ./jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/SSLEngine/LargeBufs.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/SSLEngine/LargeBufs.java Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2004, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -92,6 +92,7 @@
+ createSSLEngines();
+
+ System.out.println("Using " + cipher);
++ ssle1.setEnabledCipherSuites(new String [] { cipher });
+ ssle2.setEnabledCipherSuites(new String [] { cipher });
+
+ createBuffers();
+--- ./jdk/test/sun/security/ssl/javax/net/ssl/SSLParameters/UseCipherSuitesOrder.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/test/sun/security/ssl/javax/net/ssl/SSLParameters/UseCipherSuitesOrder.java Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -31,7 +31,7 @@
+ * @bug 7188657
+ * @summary There should be a way to reorder the JSSE ciphers
+ * @run main/othervm UseCipherSuitesOrder
+- * TLS_RSA_WITH_AES_128_CBC_SHA,SSL_RSA_WITH_RC4_128_SHA
++ * TLS_RSA_WITH_AES_128_CBC_SHA,SSL_RSA_WITH_3DES_EDE_CBC_SHA
+ */
+
+ import java.io.*;
+--- ./jdk/test/sun/security/ssl/javax/net/ssl/TLSv11/GenericStreamCipher.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/test/sun/security/ssl/javax/net/ssl/TLSv11/GenericStreamCipher.java Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2010, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -93,6 +93,10 @@
+ SSLServerSocket sslServerSocket =
+ (SSLServerSocket) sslssf.createServerSocket(serverPort);
+
++ // enable a stream cipher
++ sslServerSocket.setEnabledCipherSuites(
++ new String[] {"SSL_RSA_WITH_RC4_128_MD5"});
++
+ serverPort = sslServerSocket.getLocalPort();
+
+ /*
+--- ./jdk/test/sun/security/ssl/sanity/ciphersuites/CipherSuitesInOrder.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/test/sun/security/ssl/sanity/ciphersuites/CipherSuitesInOrder.java Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -93,13 +93,6 @@
+ "SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA",
+ "SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA",
+
+- "TLS_ECDHE_ECDSA_WITH_RC4_128_SHA",
+- "TLS_ECDHE_RSA_WITH_RC4_128_SHA",
+- "SSL_RSA_WITH_RC4_128_SHA",
+- "TLS_ECDH_ECDSA_WITH_RC4_128_SHA",
+- "TLS_ECDH_RSA_WITH_RC4_128_SHA",
+- "SSL_RSA_WITH_RC4_128_MD5",
+-
+ "TLS_EMPTY_RENEGOTIATION_INFO_SCSV",
+
+ "TLS_DH_anon_WITH_AES_256_GCM_SHA384",
+@@ -113,8 +106,16 @@
+ "TLS_DH_anon_WITH_AES_128_CBC_SHA",
+ "TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA",
+ "SSL_DH_anon_WITH_3DES_EDE_CBC_SHA",
++
++ "TLS_ECDHE_ECDSA_WITH_RC4_128_SHA",
++ "TLS_ECDHE_RSA_WITH_RC4_128_SHA",
++ "SSL_RSA_WITH_RC4_128_SHA",
++ "TLS_ECDH_ECDSA_WITH_RC4_128_SHA",
++ "TLS_ECDH_RSA_WITH_RC4_128_SHA",
++ "SSL_RSA_WITH_RC4_128_MD5",
+ "TLS_ECDH_anon_WITH_RC4_128_SHA",
+ "SSL_DH_anon_WITH_RC4_128_MD5",
++
+ "SSL_RSA_WITH_DES_CBC_SHA",
+ "SSL_DHE_RSA_WITH_DES_CBC_SHA",
+ "SSL_DHE_DSS_WITH_DES_CBC_SHA",
+--- ./jdk/test/sun/security/ssl/sanity/interop/ClientJSSEServerJSSE.java Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/test/sun/security/ssl/sanity/interop/ClientJSSEServerJSSE.java Tue Jun 02 13:49:09 2015 +0300
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -34,9 +34,10 @@
+ public class ClientJSSEServerJSSE {
+
+ public static void main(String[] args) throws Exception {
+- // reset the security property to make sure that the algorithms
++ // reset security properties to make sure that the algorithms
+ // and keys used in this test are not disabled.
+ Security.setProperty("jdk.tls.disabledAlgorithms", "");
++ Security.setProperty("jdk.certpath.disabledAlgorithms", "");
+
+ CipherTest.main(new JSSEFactory(), args);
+ }
+--- ./jdk/test/sun/util/calendar/zi/tzdata/VERSION Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/test/sun/util/calendar/zi/tzdata/VERSION Tue Jun 02 13:49:09 2015 +0300
+@@ -21,4 +21,4 @@
+ # or visit www.oracle.com if you need additional information or have any
+ # questions.
+ #
+-tzdata2015a
++tzdata2015d
+--- ./jdk/test/sun/util/calendar/zi/tzdata/africa Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/test/sun/util/calendar/zi/tzdata/africa Tue Jun 02 13:49:09 2015 +0300
+@@ -342,35 +342,29 @@
+ # above) says DST had no affect on electricity consumption. There is
+ # no information about when DST will end this fall. See:
+ # http://abcnews.go.com/International/wireStory/el-sissi-pushes-egyptians-line-23614833
++
++# From Steffen Thorsen (2015-04-08):
++# Egypt will start DST on midnight after Thursday, April 30, 2015.
++# This is based on a law (no 35) from May 15, 2014 saying it starts the last
++# Thursday of April.... Clocks will still be turned back for Ramadan, but
++# dates not yet announced....
++# http://almogaz.com/news/weird-news/2015/04/05/1947105 ...
++# http://www.timeanddate.com/news/time/egypt-starts-dst-2015.html
++
++# From Ahmed Nazmy (2015-04-20):
++# Egypt's ministers cabinet just announced ... that it will cancel DST at
++# least for 2015.
+ #
+-# For now, guess that later spring and fall transitions will use
+-# 2010's rules, and guess that Egypt will switch to standard time at
+-# 24:00 the last Thursday before Ramadan, and back to DST at 00:00 the
+-# first Friday after Ramadan. To implement this,
+-# transition dates for 2015 through 2037 were determined by running
+-# the following program under GNU Emacs 24.3, with the results integrated
+-# by hand into the table below. Ramadan again intrudes on the guessed
+-# DST starting in 2038, but that's beyond our somewhat-arbitrary cutoff.
+-# (let ((islamic-year 1436))
+-# (while (< islamic-year 1460)
+-# (let ((a (calendar-islamic-to-absolute (list 9 1 islamic-year)))
+-# (b (calendar-islamic-to-absolute (list 10 1 islamic-year)))
+-# (friday 5))
+-# (while (/= friday (mod a 7))
+-# (setq a (1- a)))
+-# (while (/= friday (mod b 7))
+-# (setq b (1+ b)))
+-# (setq a (1- a))
+-# (setq b (1- b))
+-# (setq a (calendar-gregorian-from-absolute a))
+-# (setq b (calendar-gregorian-from-absolute b))
+-# (insert
+-# (format
+-# (concat "Rule\tEgypt\t%d\tonly\t-\t%s\t%2d\t24:00\t0\t-\n"
+-# "Rule\tEgypt\t%d\tonly\t-\t%s\t%2d\t24:00\t1:00\tS\n")
+-# (car (cdr (cdr a))) (calendar-month-name (car a) t) (car (cdr a))
+-# (car (cdr (cdr b))) (calendar-month-name (car b) t) (car (cdr b)))))
+-# (setq islamic-year (+ 1 islamic-year))))
++# From Tim Parenti (2015-04-20):
++# http://english.ahram.org.eg/WriterArticles/NewsContentP/1/128195/Egypt/No-daylight-saving-this-summer-Egypts-prime-minist.aspx
++# "Egypt's cabinet agreed on Monday not to switch clocks for daylight saving
++# time this summer, and carry out studies on the possibility of canceling the
++# practice altogether in future years."
++#
++# From Paul Eggert (2015-04-20):
++# For now, assume DST will be canceled. Any resumption would likely
++# use different rules anyway.
++
+ Rule Egypt 2008 only - Aug lastThu 24:00 0 -
+ Rule Egypt 2009 only - Aug 20 24:00 0 -
+ Rule Egypt 2010 only - Aug 10 24:00 0 -
+@@ -379,22 +373,7 @@
+ Rule Egypt 2014 only - May 15 24:00 1:00 S
+ Rule Egypt 2014 only - Jun 26 24:00 0 -
+ Rule Egypt 2014 only - Jul 31 24:00 1:00 S
+-Rule Egypt 2014 max - Sep lastThu 24:00 0 -
+-Rule Egypt 2015 2019 - Apr lastFri 0:00s 1:00 S
+-Rule Egypt 2015 only - Jun 11 24:00 0 -
+-Rule Egypt 2015 only - Jul 23 24:00 1:00 S
+-Rule Egypt 2016 only - Jun 2 24:00 0 -
+-Rule Egypt 2016 only - Jul 7 24:00 1:00 S
+-Rule Egypt 2017 only - May 25 24:00 0 -
+-Rule Egypt 2017 only - Jun 29 24:00 1:00 S
+-Rule Egypt 2018 only - May 10 24:00 0 -
+-Rule Egypt 2018 only - Jun 14 24:00 1:00 S
+-Rule Egypt 2019 only - May 2 24:00 0 -
+-Rule Egypt 2019 only - Jun 6 24:00 1:00 S
+-Rule Egypt 2020 only - May 28 24:00 1:00 S
+-Rule Egypt 2021 only - May 13 24:00 1:00 S
+-Rule Egypt 2022 only - May 5 24:00 1:00 S
+-Rule Egypt 2023 max - Apr lastFri 0:00s 1:00 S
++Rule Egypt 2014 only - Sep lastThu 24:00 0 -
+
+ # Zone NAME GMTOFF RULES FORMAT [UNTIL]
+ Zone Africa/Cairo 2:05:09 - LMT 1900 Oct
+--- ./jdk/test/sun/util/calendar/zi/tzdata/antarctica Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/test/sun/util/calendar/zi/tzdata/antarctica Tue Jun 02 13:49:09 2015 +0300
+@@ -38,41 +38,6 @@
+ # I made up all time zone abbreviations mentioned here; corrections welcome!
+ # FORMAT is 'zzz' and GMTOFF is 0 for locations while uninhabited.
+
+-# These rules are stolen from the 'southamerica' file.
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+-Rule ArgAQ 1964 1966 - Mar 1 0:00 0 -
+-Rule ArgAQ 1964 1966 - Oct 15 0:00 1:00 S
+-Rule ArgAQ 1967 only - Apr 2 0:00 0 -
+-Rule ArgAQ 1967 1968 - Oct Sun>=1 0:00 1:00 S
+-Rule ArgAQ 1968 1969 - Apr Sun>=1 0:00 0 -
+-Rule ArgAQ 1974 only - Jan 23 0:00 1:00 S
+-Rule ArgAQ 1974 only - May 1 0:00 0 -
+-Rule ChileAQ 1972 1986 - Mar Sun>=9 3:00u 0 -
+-Rule ChileAQ 1974 1987 - Oct Sun>=9 4:00u 1:00 S
+-Rule ChileAQ 1987 only - Apr 12 3:00u 0 -
+-Rule ChileAQ 1988 1989 - Mar Sun>=9 3:00u 0 -
+-Rule ChileAQ 1988 only - Oct Sun>=1 4:00u 1:00 S
+-Rule ChileAQ 1989 only - Oct Sun>=9 4:00u 1:00 S
+-Rule ChileAQ 1990 only - Mar 18 3:00u 0 -
+-Rule ChileAQ 1990 only - Sep 16 4:00u 1:00 S
+-Rule ChileAQ 1991 1996 - Mar Sun>=9 3:00u 0 -
+-Rule ChileAQ 1991 1997 - Oct Sun>=9 4:00u 1:00 S
+-Rule ChileAQ 1997 only - Mar 30 3:00u 0 -
+-Rule ChileAQ 1998 only - Mar Sun>=9 3:00u 0 -
+-Rule ChileAQ 1998 only - Sep 27 4:00u 1:00 S
+-Rule ChileAQ 1999 only - Apr 4 3:00u 0 -
+-Rule ChileAQ 1999 2010 - Oct Sun>=9 4:00u 1:00 S
+-Rule ChileAQ 2000 2007 - Mar Sun>=9 3:00u 0 -
+-# N.B.: the end of March 29 in Chile is March 30 in Universal time,
+-# which is used below in specifying the transition.
+-Rule ChileAQ 2008 only - Mar 30 3:00u 0 -
+-Rule ChileAQ 2009 only - Mar Sun>=9 3:00u 0 -
+-Rule ChileAQ 2010 only - Apr Sun>=1 3:00u 0 -
+-Rule ChileAQ 2011 only - May Sun>=2 3:00u 0 -
+-Rule ChileAQ 2011 only - Aug Sun>=16 4:00u 1:00 S
+-Rule ChileAQ 2012 2015 - Apr Sun>=23 3:00u 0 -
+-Rule ChileAQ 2012 2014 - Sep Sun>=2 4:00u 1:00 S
+-
+ # Argentina - year-round bases
+ # Belgrano II, Confin Coast, -770227-0343737, since 1972-02-05
+ # Carlini, Potter Cove, King George Island, -6414-0602320, since 1982-01
+@@ -367,21 +332,7 @@
+ # USA - year-round bases
+ #
+ # Palmer, Anvers Island, since 1965 (moved 2 miles in 1968)
+-#
+-# From Ethan Dicks (1996-10-06):
+-# It keeps the same time as Punta Arenas, Chile, because, just like us
+-# and the South Pole, that's the other end of their supply line....
+-# I verified with someone who was there that since 1980,
+-# Palmer has followed Chile. Prior to that, before the Falklands War,
+-# Palmer used to be supplied from Argentina.
+-#
+-# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+-Zone Antarctica/Palmer 0 - zzz 1965
+- -4:00 ArgAQ AR%sT 1969 Oct 5
+- -3:00 ArgAQ AR%sT 1982 May
+- -4:00 ChileAQ CL%sT 2015 Apr 26 3:00u
+- -3:00 - CLT
+-#
++# See 'southamerica' for Antarctica/Palmer, since it uses South American DST.
+ #
+ # McMurdo Station, Ross Island, since 1955-12
+ # Amundsen-Scott South Pole Station, continuously occupied since 1956-11-20
+--- ./jdk/test/sun/util/calendar/zi/tzdata/asia Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/test/sun/util/calendar/zi/tzdata/asia Tue Jun 02 13:49:09 2015 +0300
+@@ -1927,6 +1927,13 @@
+ # was at the start of 2008-03-31 (the day of Steffen Thorsen's report);
+ # this is almost surely wrong.
+
++# From Ganbold Tsagaankhuu (2015-03-10):
++# It seems like yesterday Mongolian Government meeting has concluded to use
++# daylight saving time in Mongolia.... Starting at 2:00AM of last Saturday of
++# March 2015, daylight saving time starts. And 00:00AM of last Saturday of
++# September daylight saving time ends. Source:
++# http://zasag.mn/news/view/8969
++
+ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+ Rule Mongol 1983 1984 - Apr 1 0:00 1:00 S
+ Rule Mongol 1983 only - Oct 1 0:00 0 -
+@@ -1947,6 +1954,8 @@
+ Rule Mongol 2001 only - Apr lastSat 2:00 1:00 S
+ Rule Mongol 2001 2006 - Sep lastSat 2:00 0 -
+ Rule Mongol 2002 2006 - Mar lastSat 2:00 1:00 S
++Rule Mongol 2015 max - Mar lastSat 2:00 1:00 S
++Rule Mongol 2015 max - Sep lastSat 0:00 0 -
+
+ # Zone NAME GMTOFF RULES FORMAT [UNTIL]
+ # Hovd, a.k.a. Chovd, Dund-Us, Dzhargalant, Khovd, Jirgalanta
+@@ -2365,13 +2374,19 @@
+ # official source...:
+ # http://www.palestinecabinet.gov.ps/ar/Views/ViewDetails.aspx?pid=1252
+
+-# From Paul Eggert (2013-09-24):
+-# For future dates, guess the last Thursday in March at 24:00 through
+-# the first Friday on or after September 21 at 00:00. This is consistent with
+-# the predictions in today's editions of the following URLs,
+-# which are for Gaza and Hebron respectively:
+-# http://www.timeanddate.com/worldclock/timezone.html?n=702
+-# http://www.timeanddate.com/worldclock/timezone.html?n=2364
++# From Steffen Thorsen (2015-03-03):
++# Sources such as http://www.alquds.com/news/article/view/id/548257
++# and http://www.raya.ps/ar/news/890705.html say Palestine areas will
++# start DST on 2015-03-28 00:00 which is one day later than expected.
++#
++# From Paul Eggert (2015-03-03):
++# http://www.timeanddate.com/time/change/west-bank/ramallah?year=2014
++# says that the fall 2014 transition was Oct 23 at 24:00.
++# For future dates, guess the last Friday in March at 24:00 through
++# the first Friday on or after October 21 at 00:00. This is consistent with
++# the predictions in today's editions of the following URLs:
++# http://www.timeanddate.com/time/change/gaza-strip/gaza
++# http://www.timeanddate.com/time/change/west-bank/hebron
+
+ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+ Rule EgyptAsia 1957 only - May 10 0:00 1:00 S
+@@ -2397,9 +2412,11 @@
+ Rule Palestine 2011 only - Aug 1 0:00 0 -
+ Rule Palestine 2011 only - Aug 30 0:00 1:00 S
+ Rule Palestine 2011 only - Sep 30 0:00 0 -
+-Rule Palestine 2012 max - Mar lastThu 24:00 1:00 S
++Rule Palestine 2012 2014 - Mar lastThu 24:00 1:00 S
+ Rule Palestine 2012 only - Sep 21 1:00 0 -
+-Rule Palestine 2013 max - Sep Fri>=21 0:00 0 -
++Rule Palestine 2013 only - Sep Fri>=21 0:00 0 -
++Rule Palestine 2014 max - Oct Fri>=21 0:00 0 -
++Rule Palestine 2015 max - Mar lastFri 24:00 1:00 S
+
+ # Zone NAME GMTOFF RULES FORMAT [UNTIL]
+ Zone Asia/Gaza 2:17:52 - LMT 1900 Oct
+--- ./jdk/test/sun/util/calendar/zi/tzdata/australasia Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/test/sun/util/calendar/zi/tzdata/australasia Tue Jun 02 13:49:09 2015 +0300
+@@ -396,6 +396,7 @@
+ 9:39:00 - LMT 1901 # Agana
+ 10:00 - GST 2000 Dec 23 # Guam
+ 10:00 - ChST # Chamorro Standard Time
++Link Pacific/Guam Pacific/Saipan # N Mariana Is
+
+ # Kiribati
+ # Zone NAME GMTOFF RULES FORMAT [UNTIL]
+@@ -411,12 +412,7 @@
+ 14:00 - LINT
+
+ # N Mariana Is
+-# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+-Zone Pacific/Saipan -14:17:00 - LMT 1844 Dec 31
+- 9:43:00 - LMT 1901
+- 9:00 - MPT 1969 Oct # N Mariana Is Time
+- 10:00 - MPT 2000 Dec 23
+- 10:00 - ChST # Chamorro Standard Time
++# See Pacific/Guam.
+
+ # Marshall Is
+ # Zone NAME GMTOFF RULES FORMAT [UNTIL]
+@@ -586,6 +582,7 @@
+ -11:00 - NST 1967 Apr # N=Nome
+ -11:00 - BST 1983 Nov 30 # B=Bering
+ -11:00 - SST # S=Samoa
++Link Pacific/Pago_Pago Pacific/Midway # in US minor outlying islands
+
+ # Samoa (formerly and also known as Western Samoa)
+
+@@ -767,23 +764,7 @@
+ # uninhabited
+
+ # Midway
+-#
+-# From Mark Brader (2005-01-23):
+-# [Fallacies and Fantasies of Air Transport History, by R.E.G. Davies,
+-# published 1994 by Paladwr Press, McLean, VA, USA; ISBN 0-9626483-5-3]
+-# reproduced a Pan American Airways timetable from 1936, for their weekly
+-# "Orient Express" flights between San Francisco and Manila, and connecting
+-# flights to Chicago and the US East Coast. As it uses some time zone
+-# designations that I've never seen before:....
+-# Fri. 6:30A Lv. HONOLOLU (Pearl Harbor), H.I. H.L.T. Ar. 5:30P Sun.
+-# " 3:00P Ar. MIDWAY ISLAND . . . . . . . . . M.L.T. Lv. 6:00A "
+-#
+-Zone Pacific/Midway -11:49:28 - LMT 1901
+- -11:00 - NST 1956 Jun 3
+- -11:00 1:00 NDT 1956 Sep 2
+- -11:00 - NST 1967 Apr # N=Nome
+- -11:00 - BST 1983 Nov 30 # B=Bering
+- -11:00 - SST # S=Samoa
++# See Pacific/Pago_Pago.
+
+ # Palmyra
+ # uninhabited since World War II; was probably like Pacific/Kiritimati
+--- ./jdk/test/sun/util/calendar/zi/tzdata/backward Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/test/sun/util/calendar/zi/tzdata/backward Tue Jun 02 13:49:09 2015 +0300
+@@ -43,6 +43,7 @@
+ Link America/Indiana/Knox America/Knox_IN
+ Link America/Kentucky/Louisville America/Louisville
+ Link America/Argentina/Mendoza America/Mendoza
++Link America/Toronto America/Montreal
+ Link America/Rio_Branco America/Porto_Acre
+ Link America/Argentina/Cordoba America/Rosario
+ Link America/Denver America/Shiprock
+--- ./jdk/test/sun/util/calendar/zi/tzdata/europe Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/test/sun/util/calendar/zi/tzdata/europe Tue Jun 02 13:49:09 2015 +0300
+@@ -99,7 +99,7 @@
+ # 1:00:14 SET Swedish (1879-1899)*
+ # 2:00 EET EEST Eastern Europe
+ # 3:00 FET Further-eastern Europe (2011-2014)*
+-# 3:00 MSK MSD MSM* Moscow
++# 3:00 MSK MSD MSM* Minsk, Moscow
+
+ # From Peter Ilieve (1994-12-04),
+ # The original six [EU members]: Belgium, France, (West) Germany, Italy,
+@@ -2423,7 +2423,7 @@
+ 4:00 Russia VOL%sT 1989 Mar 26 2:00s # Volgograd T
+ 3:00 Russia VOL%sT 1991 Mar 31 2:00s
+ 4:00 - VOLT 1992 Mar 29 2:00s
+- 3:00 Russia MSK 2011 Mar 27 2:00s
++ 3:00 Russia MSK/MSD 2011 Mar 27 2:00s
+ 4:00 - MSK 2014 Oct 26 2:00s
+ 3:00 - MSK
+
+--- ./jdk/test/sun/util/calendar/zi/tzdata/northamerica Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/test/sun/util/calendar/zi/tzdata/northamerica Tue Jun 02 13:49:09 2015 +0300
+@@ -250,9 +250,14 @@
+ # The law doesn't give abbreviations.
+ #
+ # From Paul Eggert (2000-01-08), following a heads-up from Rives McDow:
+-# Public law 106-564 (2000-12-23) introduced the abbreviation
+-# "Chamorro Standard Time" for time in Guam and the Northern Marianas.
+-# See the file "australasia".
++# Public law 106-564 (2000-12-23) introduced ... "Chamorro Standard Time"
++# for time in Guam and the Northern Marianas. See the file "australasia".
++#
++# From Paul Eggert (2015-04-17):
++# HST and HDT are standardized abbreviations for Hawaii-Aleutian
++# standard and daylight times. See section 9.47 (p 234) of the
++# U.S. Government Printing Office Style Manual (2008)
++# http://www.gpo.gov/fdsys/pkg/GPO-STYLEMANUAL-2008/pdf/GPO-STYLEMANUAL-2008.pdf
+
+ # From Arthur David Olson, 2005-08-09
+ # The following was signed into law on 2005-08-08.
+@@ -559,7 +564,7 @@
+ -11:00 - BST 1969
+ -11:00 US B%sT 1983 Oct 30 2:00
+ -10:00 US AH%sT 1983 Nov 30
+- -10:00 US HA%sT
++ -10:00 US H%sT
+ # The following switches don't quite make our 1970 cutoff.
+ #
+ # Shanks writes that part of southwest Alaska (e.g. Aniak)
+@@ -1354,14 +1359,9 @@
+
+ # Quebec
+
+-# From Paul Eggert (2013-08-30):
+-# Since 1970 most of Quebec has been like Toronto.
+-# However, because earlier versions of the tz database mistakenly relied on data
+-# from Shanks & Pottenger saying that Quebec differed from Ontario after 1970,
+-# a separate entry was created for most of Quebec. We're loath to lose
+-# its pre-1970 info, even though the tz database is normally limited to
+-# zones that differ after 1970, so keep this otherwise out-of-scope entry.
+-
++# From Paul Eggert (2015-03-24):
++# See America/Toronto for most of Quebec, including Montreal.
++#
+ # Matthews and Vincent (1998) also write that Quebec east of the -63
+ # meridian is supposed to observe AST, but residents as far east as
+ # Natashquan use EST/EDT, and residents east of Natashquan use AST.
+@@ -1375,39 +1375,10 @@
+ # For lack of better info, guess this practice began around 1970, contra to
+ # Shanks & Pottenger who have this region observing AST/ADT.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+-Rule Mont 1917 only - Mar 25 2:00 1:00 D
+-Rule Mont 1917 only - Apr 24 0:00 0 S
+-Rule Mont 1919 only - Mar 31 2:30 1:00 D
+-Rule Mont 1919 only - Oct 25 2:30 0 S
+-Rule Mont 1920 only - May 2 2:30 1:00 D
+-Rule Mont 1920 1922 - Oct Sun>=1 2:30 0 S
+-Rule Mont 1921 only - May 1 2:00 1:00 D
+-Rule Mont 1922 only - Apr 30 2:00 1:00 D
+-Rule Mont 1924 only - May 17 2:00 1:00 D
+-Rule Mont 1924 1926 - Sep lastSun 2:30 0 S
+-Rule Mont 1925 1926 - May Sun>=1 2:00 1:00 D
+-Rule Mont 1927 1937 - Apr lastSat 24:00 1:00 D
+-Rule Mont 1927 1937 - Sep lastSat 24:00 0 S
+-Rule Mont 1938 1940 - Apr lastSun 0:00 1:00 D
+-Rule Mont 1938 1939 - Sep lastSun 0:00 0 S
+-Rule Mont 1946 1973 - Apr lastSun 2:00 1:00 D
+-Rule Mont 1945 1948 - Sep lastSun 2:00 0 S
+-Rule Mont 1949 1950 - Oct lastSun 2:00 0 S
+-Rule Mont 1951 1956 - Sep lastSun 2:00 0 S
+-Rule Mont 1957 1973 - Oct lastSun 2:00 0 S
+-
+ # Zone NAME GMTOFF RULES FORMAT [UNTIL]
+ Zone America/Blanc-Sablon -3:48:28 - LMT 1884
+ -4:00 Canada A%sT 1970
+ -4:00 - AST
+-Zone America/Montreal -4:54:16 - LMT 1884
+- -5:00 Mont E%sT 1918
+- -5:00 Canada E%sT 1919
+- -5:00 Mont E%sT 1942 Feb 9 2:00s
+- -5:00 Canada E%sT 1946
+- -5:00 Mont E%sT 1974
+- -5:00 Canada E%sT
+
+ # Ontario
+
+@@ -1898,17 +1869,115 @@
+ # Dawson switched to PST in 1973. Inuvik switched to MST in 1979.
+ # Mathew Englander (1996-10-07) gives the following refs:
+ # * 1967. Paragraph 28(34)(g) of the Interpretation Act, S.C. 1967-68,
+-# c. 7 defines Yukon standard time as UTC-9. This is still valid;
++# c. 7 defines Yukon standard time as UTC-9....
+ # see Interpretation Act, R.S.C. 1985, c. I-21, s. 35(1).
++# [http://canlii.ca/t/7vhg]
+ # * C.O. 1973/214 switched Yukon to PST on 1973-10-28 00:00.
+ # * O.I.C. 1980/02 established DST.
+ # * O.I.C. 1987/056 changed DST to Apr firstSun 2:00 to Oct lastSun 2:00.
+-# Shanks & Pottenger say Yukon's 1973-10-28 switch was at 2:00; go
+-# with Englander.
+-# From Chris Walton (2006-06-26):
+-# Here is a link to the old daylight saving portion of the interpretation
+-# act which was last updated in 1987:
+-# http://www.gov.yk.ca/legislation/regs/oic1987_056.pdf
++
++# From Brian Inglis (2015-04-14):
++#
++# I tried to trace the history of Yukon time and found the following
++# regulations, giving the reference title and URL if found, regulation name,
++# and relevant quote if available. Each regulation specifically revokes its
++# predecessor. The final reference is to the current Interpretation Act
++# authorizing and resulting from these regulatory changes.
++#
++# Only recent regulations were retrievable via Yukon government site search or
++# index, and only some via Canadian legal sources. Other sources used include
++# articles titled "Standard Time and Time Zones in Canada" from JRASC via ADS
++# Abstracts, cited by ADO for 1932 ..., and updated versions from 1958 and
++# 1970 quoted below; each article includes current extracts from provincial
++# and territorial ST and DST regulations at the end, summaries and details of
++# standard times and daylight saving time at many locations across Canada,
++# with time zone maps, tables and calculations for Canadian Sunrise, Sunset,
++# and LMST; they also cover many countries and global locations, with a chart
++# and table showing current Universal Time offsets, and may be useful as
++# another source of information for 1970 and earlier.
++#
++# * Standard Time and Time Zones in Canada; Smith, C.C.; JRASC, Vol. 26,
++# pp.49-77; February 1932; SAO/NASA Astrophysics Data System (ADS)
++# http://adsabs.harvard.edu/abs/1932JRASC..26...49S from p.75:
++# Yukon Interpretation Ordinance
++# Yukon standard time is the local mean time at the one hundred and
++# thirty-fifth meridian.
++#
++# * Standard Time and Time Zones in Canada; Smith, C.C.; Thomson, Malcolm M.;
++# JRASC, Vol. 52, pp.193-223; October 1958; SAO/NASA Astrophysics Data System
++# (ADS) http://adsabs.harvard.edu/abs/1958JRASC..52..193S from pp.220-1:
++# Yukon Interpretation Ordinance, 1955, Chap. 16.
++#
++# (1) Subject to this section, standard time shall be reckoned as nine
++# hours behind Greenwich Time and called Yukon Standard Time.
++#
++# (2) Notwithstanding subsection (1), the Commissioner may make regulations
++# varying the manner of reckoning standard time.
++#
++# * Yukon Territory Commissioner's Order 1966-20 Interpretation Ordinance
++# http://? - no online source found
++#
++# * Standard Time and Time Zones in Canada; Thomson, Malcolm M.; JRASC,
++# Vol. 64, pp.129-162; June 1970; SAO/NASA Astrophysics Data System (ADS)
++# http://adsabs.harvard.edu/abs/1970JRASC..64..129T from p.156: Yukon
++# Territory Commissioner's Order 1967-59 Interpretation Ordinance ...
++#
++# 1. Commissioner's Order 1966-20 dated at Whitehorse in the Yukon
++# Territory on 27th January, 1966, is hereby revoked.
++#
++# 2. Yukon (East) Standard Time as defined by section 36 of the
++# Interpretation Ordinance from and after mid-night on the 28th day of May,
++# 1967 shall be reckoned in the same manner as Pacific Standard Time, that
++# is to say, eight hours behind Greenwich Time in the area of the Yukon
++# Territory lying east of the 138th degree longitude west.
++#
++# 3. In the remainder of the Territory, lying west of the 138th degree
++# longitude west, Yukon (West) Standard Time shall be reckoned as nine
++# hours behind Greenwich Time.
++#
++# * Yukon Standard Time defined as Pacific Standard Time, YCO 1973/214
++# http://www.canlii.org/en/yk/laws/regu/yco-1973-214/latest/yco-1973-214.html
++# C.O. 1973/214 INTERPRETATION ACT ...
++#
++# 1. Effective October 28, 1973 Commissioner's Order 1967/59 is hereby
++# revoked.
++#
++# 2. Yukon Standard Time as defined by section 36 of the Interpretation
++# Act from and after midnight on the twenty-eighth day of October, 1973
++# shall be reckoned in the same manner as Pacific Standard Time, that is
++# to say eight hours behind Greenwich Time.
++#
++# * O.I.C. 1980/02 INTERPRETATION ACT
++# http://? - no online source found
++#
++# * Yukon Daylight Saving Time, YOIC 1987/56
++# http://www.canlii.org/en/yk/laws/regu/yoic-1987-56/latest/yoic-1987-56.html
++# O.I.C. 1987/056 INTERPRETATION ACT ...
++#
++# In every year between
++# (a) two o'clock in the morning in the first Sunday in April, and
++# (b) two o'clock in the morning in the last Sunday in October,
++# Standard Time shall be reckoned as seven hours behind Greenwich Time and
++# called Yukon Daylight Saving Time.
++# ...
++# Dated ... 9th day of March, A.D., 1987.
++#
++# * Yukon Daylight Saving Time 2006, YOIC 2006/127
++# http://www.canlii.org/en/yk/laws/regu/yoic-2006-127/latest/yoic-2006-127.html
++# O.I.C. 2006/127 INTERPRETATION ACT ...
++#
++# 1. In Yukon each year the time for general purposes shall be 7 hours
++# behind Greenwich mean time during the period commencing at two o'clock
++# in the forenoon on the second Sunday of March and ending at two o'clock
++# in the forenoon on the first Sunday of November and shall be called
++# Yukon Daylight Saving Time.
++#
++# 2. Order-in-Council 1987/56 is revoked.
++#
++# 3. This order comes into force January 1, 2007.
++#
++# * Interpretation Act, RSY 2002, c 125
++# http://www.canlii.org/en/yk/laws/stat/rsy-2002-c-125/latest/rsy-2002-c-125.html
+
+ # From Rives McDow (1999-09-04):
+ # Nunavut ... moved ... to incorporate the whole territory into one time zone.
+@@ -2134,7 +2203,7 @@
+ -7:00 NT_YK M%sT 1980
+ -7:00 Canada M%sT
+ Zone America/Whitehorse -9:00:12 - LMT 1900 Aug 20
+- -9:00 NT_YK Y%sT 1966 Jul 1 2:00
++ -9:00 NT_YK Y%sT 1967 May 28 0:00
+ -8:00 NT_YK P%sT 1980
+ -8:00 Canada P%sT
+ Zone America/Dawson -9:17:40 - LMT 1900 Aug 20
+@@ -2335,8 +2404,24 @@
+ # "...the new time zone will come into effect at two o'clock on the first Sunday
+ # of February, when we will have to advance the clock one hour from its current
+ # time..."
++# Also, the new zone will not use DST.
+ #
+-# Also, the new zone will not use DST.
++# From Carlos Raúl Perasso (2015-02-02):
++# The decree that modifies the Mexican Hour System Law has finally
++# been published at the Diario Oficial de la Federación
++# http://www.dof.gob.mx/nota_detalle.php?codigo=5380123&fecha=31/01/2015
++# It establishes 5 zones for Mexico:
++# 1- Zona Centro (Central Zone): Corresponds to longitude 90 W,
++# includes most of Mexico, excluding what's mentioned below.
++# 2- Zona Pacífico (Pacific Zone): Longitude 105 W, includes the
++# states of Baja California Sur; Chihuahua; Nayarit (excluding Bahía
++# de Banderas which lies in Central Zone); Sinaloa and Sonora.
++# 3- Zona Noroeste (Northwest Zone): Longitude 120 W, includes the
++# state of Baja California.
++# 4- Zona Sureste (Southeast Zone): Longitude 75 W, includes the state
++# of Quintana Roo.
++# 5- The islands, reefs and keys shall take their timezone from the
++# longitude they are located at.
+
+ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+ Rule Mexico 1939 only - Feb 5 0:00 1:00 D
+@@ -2531,14 +2616,9 @@
+ ###############################################################################
+
+ # Anguilla
++# Antigua and Barbuda
+ # See America/Port_of_Spain.
+
+-# Antigua and Barbuda
+-# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+-Zone America/Antigua -4:07:12 - LMT 1912 Mar 2
+- -5:00 - EST 1951
+- -4:00 - AST
+-
+ # Bahamas
+ #
+ # For 1899 Milne gives -5:09:29.5; round that.
+@@ -2604,10 +2684,7 @@
+ -4:00 US A%sT
+
+ # Cayman Is
+-# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+-Zone America/Cayman -5:25:32 - LMT 1890 # Georgetown
+- -5:07:11 - KMT 1912 Feb # Kingston Mean Time
+- -5:00 - EST
++# See America/Panama.
+
+ # Costa Rica
+
+@@ -3130,6 +3207,7 @@
+ Zone America/Panama -5:18:08 - LMT 1890
+ -5:19:36 - CMT 1908 Apr 22 # Colón Mean Time
+ -5:00 - EST
++Link America/Panama America/Cayman
+
+ # Puerto Rico
+ # There are too many San Juans elsewhere, so we'll use 'Puerto_Rico'.
+--- ./jdk/test/sun/util/calendar/zi/tzdata/southamerica Thu Feb 05 13:00:26 2015 +0100
++++ ./jdk/test/sun/util/calendar/zi/tzdata/southamerica Tue Jun 02 13:49:09 2015 +0300
+@@ -1121,6 +1121,60 @@
+
+ # Chile
+
++# From Paul Eggert (2015-04-03):
++# Shanks & Pottenger says America/Santiago introduced standard time in
++# 1890 and rounds its UTC offset to 70W40; guess that in practice this
++# was the same offset as in 1916-1919. It also says Pacific/Easter
++# standardized on 109W22 in 1890; assume this didn't change the clocks.
++#
++# Dates for America/Santiago from 1910 to 2004 are primarily from
++# the following source, cited by Oscar van Vlijmen (2006-10-08):
++# [1] Chile Law
++# http://www.webexhibits.org/daylightsaving/chile.html
++# This contains a copy of a this official table:
++# Cambios en la hora oficial de Chile desde 1900 (retrieved 2008-03-30)
++# http://web.archive.org/web/20080330200901/http://www.horaoficial.cl/cambio.htm
++# [1] needs several corrections, though.
++#
++# The first set of corrections is from:
++# [2] History of the Official Time of Chile
++# http://www.horaoficial.cl/ing/horaof_ing.html (retrieved 2012-03-06). See:
++# http://web.archive.org/web/20120306042032/http://www.horaoficial.cl/ing/horaof_ing.html
++# This is an English translation of:
++# Historia de la hora oficial de Chile (retrieved 2012-10-24). See:
++# http://web.archive.org/web/20121024234627/http://www.horaoficial.cl/horaof.htm
++# A fancier Spanish version (requiring mouse-clicking) is at:
++# http://www.horaoficial.cl/historia_hora.html
++# Conflicts between [1] and [2] were resolved as follows:
++#
++# - [1] says the 1910 transition was Jan 1, [2] says Jan 10 and cites
++# Boletín Nº 1, Aviso Nº 1 (1910). Go with [2].
++#
++# - [1] says SMT was -4:42:45, [2] says Chile's official time from
++# 1916 to 1919 was -4:42:46.3, the meridian of Chile's National
++# Astronomical Observatory (OAN), then located in what is now
++# Quinta Normal in Santiago. Go with [2], rounding it to -4:42:46.
++#
++# - [1] says the 1918 transition was Sep 1, [2] says Sep 10 and cites
++# Boletín Nº 22, Aviso Nº 129/1918 (1918-08-23). Go with [2].
++#
++# - [1] does not give times for transitions; assume they occur
++# at midnight mainland time, the current common practice. However,
++# go with [2]'s specification of 23:00 for the 1947-05-21 transition.
++#
++# Another correction to [1] is from Jesper Nørgaard Welen, who
++# wrote (2006-10-08), "I think that there are some obvious mistakes in
++# the suggested link from Oscar van Vlijmen,... for instance entry 66
++# says that GMT-4 ended 1990-09-12 while entry 67 only begins GMT-3 at
++# 1990-09-15 (they should have been 1990-09-15 and 1990-09-16
++# respectively), but anyhow it clears up some doubts too."
++#
++# Data for Pacific/Easter from 1910 through 1967 come from Shanks &
++# Pottenger. After that, for lack of better info assume
++# Pacific/Easter is always two hours behind America/Santiago;
++# this is known to work for DST transitions starting in 2008 and
++# may well be true for earlier transitions.
++
+ # From Eduardo Krell (1995-10-19):
+ # The law says to switch to DST at midnight [24:00] on the second SATURDAY
+ # of October.... The law is the same for March and October.
+@@ -1133,78 +1187,35 @@
+ # Because of the same drought, the government decided to end DST later,
+ # on April 3, (one-time change).
+
+-# From Oscar van Vlijmen (2006-10-08):
+-# http://www.horaoficial.cl/cambio.htm
+-
+-# From Jesper Nørgaard Welen (2006-10-08):
+-# I think that there are some obvious mistakes in the suggested link
+-# from Oscar van Vlijmen,... for instance entry 66 says that GMT-4
+-# ended 1990-09-12 while entry 67 only begins GMT-3 at 1990-09-15
+-# (they should have been 1990-09-15 and 1990-09-16 respectively), but
+-# anyhow it clears up some doubts too.
+-
+-# From Paul Eggert (2014-08-12):
+-# The following data entries for Chile and America/Santiago are from
+-# <http://www.horaoficial.cl/horaof.htm> (2006-09-20), transcribed by
+-# Jesper Nørgaard Welen. The data entries for Pacific/Easter are from Shanks
+-# & Pottenger, except with DST transitions after 1932 cloned from
+-# America/Santiago. The pre-1980 Pacific/Easter data entries are dubious,
+-# but we have no other source.
+-
+ # From Germán Poo-Caamaño (2008-03-03):
+ # Due to drought, Chile extends Daylight Time in three weeks. This
+ # is one-time change (Saturday 3/29 at 24:00 for America/Santiago
+ # and Saturday 3/29 at 22:00 for Pacific/Easter)
+ # The Supreme Decree is located at
+ # http://www.shoa.cl/servicios/supremo316.pdf
+-# and the instructions for 2008 are located in:
+-# http://www.horaoficial.cl/cambio.htm
+-
++#
+ # From José Miguel Garrido (2008-03-05):
+-# ...
+-# You could see the announces of the change on
+ # http://www.shoa.cl/noticias/2008/04hora/hora.htm
+
+ # From Angel Chiang (2010-03-04):
+ # Subject: DST in Chile exceptionally extended to 3 April due to earthquake
+ # http://www.gobiernodechile.cl/viewNoticia.aspx?idArticulo=30098
+-# (in Spanish, last paragraph).
+ #
+-# This is breaking news. There should be more information available later.
+-
+ # From Arthur David Olson (2010-03-06):
+ # Angel Chiang's message confirmed by Julio Pacheco; Julio provided a patch.
+
+-# From Glenn Eychaner (2011-03-02):
+-# It appears that the Chilean government has decided to postpone the
+-# change from summer time to winter time again, by three weeks to April
+-# 2nd:
+-# http://www.emol.com/noticias/nacional/detalle/detallenoticias.asp?idnoticia=467651
+-#
+-# This is not yet reflected in the official "cambio de hora" site, but
+-# probably will be soon:
+-# http://www.horaoficial.cl/cambio.htm
+-
+-# From Arthur David Olson (2011-03-02):
+-# The emol.com article mentions a water shortage as the cause of the
+-# postponement, which may mean that it's not a permanent change.
+-
+ # From Glenn Eychaner (2011-03-28):
+-# The article:
+ # http://diario.elmercurio.com/2011/03/28/_portada/_portada/noticias/7565897A-CA86-49E6-9E03-660B21A4883E.htm?id=3D{7565897A-CA86-49E6-9E03-660B21A4883E}
+-#
+ # In English:
+ # Chile's clocks will go back an hour this year on the 7th of May instead
+ # of this Saturday. They will go forward again the 3rd Saturday in
+-# August, not in October as they have since 1968. This is a pilot plan
+-# which will be reevaluated in 2012.
++# August, not in October as they have since 1968.
+
+ # From Mauricio Parada (2012-02-22), translated by Glenn Eychaner (2012-02-23):
+ # As stated in the website of the Chilean Energy Ministry
+ # http://www.minenergia.cl/ministerio/noticias/generales/gobierno-anuncia-fechas-de-cambio-de.html
+ # The Chilean Government has decided to postpone the entrance into winter time
+-# (to leave DST) from March 11 2012 to April 28th 2012. The decision has not
+-# been yet formalized but it will within the next days.
++# (to leave DST) from March 11 2012 to April 28th 2012....
+ # Quote from the website communication:
+ #
+ # 6. For the year 2012, the dates of entry into winter time will be as follows:
+@@ -1229,22 +1240,17 @@
+ # DST Start: first Saturday of September 2014 (Sun 07 Sep 2014 04:00 UTC)
+ # http://www.diariooficial.interior.gob.cl//media/2014/02/19/do-20140219.pdf
+
+-# From Juan Correa (2015-01-28):
+-# ... today the Ministry of Energy announced that Chile will drop DST, will keep
+-# "summer time" (UTC -3 / UTC -5) all year round....
+-# http://www.minenergia.cl/ministerio/noticias/generales/ministerio-de-energia-anuncia.html
+-
+-# NOTE: ChileAQ rules for Antarctic bases are stored separately in the
+-# 'antarctica' file.
++# From Eduardo Romero Urra (2015-03-03):
++# Today has been published officially that Chile will use the DST time
++# permanently until March 25 of 2017
++# http://www.diariooficial.interior.gob.cl/media/2015/03/03/1-large.jpg
++#
++# From Paul Eggert (2015-03-03):
++# For now, assume that the extension will persist indefinitely.
+
+ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+-Rule Chile 1927 1932 - Sep 1 0:00 1:00 S
++Rule Chile 1927 1931 - Sep 1 0:00 1:00 S
+ Rule Chile 1928 1932 - Apr 1 0:00 0 -
+-Rule Chile 1942 only - Jun 1 4:00u 0 -
+-Rule Chile 1942 only - Aug 1 5:00u 1:00 S
+-Rule Chile 1946 only - Jul 15 4:00u 1:00 S
+-Rule Chile 1946 only - Sep 1 3:00u 0:00 -
+-Rule Chile 1947 only - Apr 1 4:00u 0 -
+ Rule Chile 1968 only - Nov 3 4:00u 1:00 S
+ Rule Chile 1969 only - Mar 30 3:00u 0 -
+ Rule Chile 1969 only - Nov 23 4:00u 1:00 S
+@@ -1255,10 +1261,8 @@
+ Rule Chile 1973 only - Sep 30 4:00u 1:00 S
+ Rule Chile 1974 1987 - Oct Sun>=9 4:00u 1:00 S
+ Rule Chile 1987 only - Apr 12 3:00u 0 -
+-Rule Chile 1988 1989 - Mar Sun>=9 3:00u 0 -
+-Rule Chile 1988 only - Oct Sun>=1 4:00u 1:00 S
+-Rule Chile 1989 only - Oct Sun>=9 4:00u 1:00 S
+-Rule Chile 1990 only - Mar 18 3:00u 0 -
++Rule Chile 1988 1990 - Mar Sun>=9 3:00u 0 -
++Rule Chile 1988 1989 - Oct Sun>=9 4:00u 1:00 S
+ Rule Chile 1990 only - Sep 16 4:00u 1:00 S
+ Rule Chile 1991 1996 - Mar Sun>=9 3:00u 0 -
+ Rule Chile 1991 1997 - Oct Sun>=9 4:00u 1:00 S
+@@ -1281,17 +1285,23 @@
+ # (1996-09) says 1998-03-08. Ignore these.
+ # Zone NAME GMTOFF RULES FORMAT [UNTIL]
+ Zone America/Santiago -4:42:46 - LMT 1890
+- -4:42:46 - SMT 1910 # Santiago Mean Time
++ -4:42:46 - SMT 1910 Jan 10 # Santiago Mean Time
+ -5:00 - CLT 1916 Jul 1 # Chile Time
+- -4:42:46 - SMT 1918 Sep 1 # Santiago Mean Time
+- -4:00 - CLT 1919 Jul 1 # Chile Time
+- -4:42:46 - SMT 1927 Sep 1 # Santiago Mean Time
+- -5:00 Chile CL%sT 1947 May 22 # Chile Time
++ -4:42:46 - SMT 1918 Sep 10
++ -4:00 - CLT 1919 Jul 1
++ -4:42:46 - SMT 1927 Sep 1
++ -5:00 Chile CL%sT 1932 Sep 1
++ -4:00 - CLT 1942 Jun 1
++ -5:00 - CLT 1942 Aug 1
++ -4:00 - CLT 1946 Jul 15
++ -4:00 1:00 CLST 1946 Sep 1 # central Chile
++ -4:00 - CLT 1947 Apr 1
++ -5:00 - CLT 1947 May 21 23:00
+ -4:00 Chile CL%sT 2015 Apr 26 3:00u
+ -3:00 - CLT
+-Zone Pacific/Easter -7:17:44 - LMT 1890
++Zone Pacific/Easter -7:17:28 - LMT 1890
+ -7:17:28 - EMT 1932 Sep # Easter Mean Time
+- -7:00 Chile EAS%sT 1982 Mar 13 3:00u # Easter Time
++ -7:00 Chile EAS%sT 1982 Mar 14 3:00u # Easter Time
+ -6:00 Chile EAS%sT 2015 Apr 26 3:00u
+ -5:00 - EAST
+ #
+@@ -1299,6 +1309,25 @@
+ # Other Chilean locations, including Juan Fernández Is, Desventuradas Is,
+ # and Antarctic bases, are like America/Santiago.
+
++# Antarctic base using South American rules
++# (See the file 'antarctica' for more.)
++#
++# Palmer, Anvers Island, since 1965 (moved 2 miles in 1968)
++#
++# From Ethan Dicks (1996-10-06):
++# It keeps the same time as Punta Arenas, Chile, because, just like us
++# and the South Pole, that's the other end of their supply line....
++# I verified with someone who was there that since 1980,
++# Palmer has followed Chile. Prior to that, before the Falklands War,
++# Palmer used to be supplied from Argentina.
++#
++# Zone NAME GMTOFF RULES FORMAT [UNTIL]
++Zone Antarctica/Palmer 0 - zzz 1965
++ -4:00 Arg AR%sT 1969 Oct 5
++ -3:00 Arg AR%sT 1982 May
++ -4:00 Chile CL%sT 2015 Apr 26 3:00u
++ -3:00 - CLT
++
+ # Colombia
+
+ # Milne gives 4:56:16.4 for Bogotá time in 1899; round to nearest. He writes,
+@@ -1626,6 +1655,7 @@
+
+ # These all agree with Trinidad and Tobago since 1970.
+ Link America/Port_of_Spain America/Anguilla
++Link America/Port_of_Spain America/Antigua
+ Link America/Port_of_Spain America/Dominica
+ Link America/Port_of_Spain America/Grenada
+ Link America/Port_of_Spain America/Guadeloupe
+--- ./langtools/.hgtags Tue Mar 17 11:25:42 2015 -0700
++++ ./langtools/.hgtags Mon Jun 01 11:44:19 2015 -0700
+@@ -352,6 +352,7 @@
+ 7a34ec7bb1c831e82ac88da578a028572b676260 jdk8u31-b13
+ b813a76f10911ac8db2c775e52b29f36ab0005f4 jdk8u31-b31
+ 8dc0c7e42d90c9f323582b742a7f228bad57b124 jdk8u31-b32
++f75e26a5c3acc1ca9f5035dbfc4a40710d354dff jdk8u31-b33
+ d231957fe3103e790465fcf058fb8cb33bbc4c4e jdk8u40-b00
+ bf89a471779d13a9407f7d1c86f7716258bc4aa6 jdk8u40-b01
+ 0b6cc4ea670f5d17b56c088f202869bdbb80a5ce jdk8u40-b02
+@@ -380,6 +381,8 @@
+ 991141080b2078e67179ff307a5051e59431762c jdk8u40-b25
+ 2904142783dd0a9e12195a84c7dcdb3d8278b1b1 jdk8u40-b26
+ 83eca922346e27ec42645e9630c04fbaec5eaf0f jdk8u40-b27
++d727ca30ce3c1b97ed9acd7380f8e4cf41813ffa jdk8u40-b31
++cc9fc1abb5aeffe2b6123c392a5c602a0ba75368 jdk8u40-b32
+ dbae37f50c43453f7d6f22d96adc8b5b6cd1e90d jdk8u45-b00
+ 244e6dc772877dfae6286530f58e11a210a48a3c jdk8u45-b01
+ 401ec76887623a29d3f868f9f9b18b42838d2e92 jdk8u45-b02
+@@ -394,3 +397,23 @@
+ 0547ef2be3b303923b30ce78e1ab832725483f4e jdk8u45-b11
+ 4f89bbda7b4532b9f6eeee8c41b7a3b38570ae93 jdk8u45-b12
+ 5ce022bca792453a7efedaed419a9d763d7a9fc3 jdk8u45-b13
++847af465a5425e2caa1f1d7a09efec3b3f31b323 jdk8u45-b14
++ebe1e9d17713e45d157b48b9a31c5c2d077c7970 jdk8u45-b15
++10fae8059bb210df1624b827a3895ccc455e3c64 jdk8u45-b31
++e0b8d79bef0c01d77453579b1d36e926892c774b jdk8u45-b32
++ac1c3ae884633c2ec3881816977023fc44919c66 jdk8u51-b00
++565167bf31eab083c306dfe11c947e59f4f4ee72 jdk8u51-b01
++2078bad2444c509a63a539f3bbe1db0f36513c9e jdk8u51-b02
++30124dd95dc07edf3340c98d5af2a5a254b233b5 jdk8u51-b03
++9cb46d0c0d5932f1e52f1f06f015a9a5c1190bc2 jdk8u51-b04
++412ac274e12075e1a774f9b971ce019bcc2e1435 jdk8u51-b05
++7c65f509ca37c7b45c9762841cc280f572686c70 jdk8u51-b06
++b40a953cbc4dbcd87e56b9f9e006ab048d0deaa1 jdk8u51-b07
++858a7fc598d0baa0949a525fadfe912efd15b459 jdk8u51-b08
++90def0a14f4ad8c99fcda34f2745b6158823e21c jdk8u51-b09
++417f734de62d74c69e3a8465340bfb3aca60151a jdk8u51-b10
++8ac1243890d4f427a32320b81ae1be38f81f0c62 jdk8u51-b11
++f65c2fc549b5e9184da67e3a4f81260c27a88010 jdk8u51-b12
++3836d67a94a92befedd97064358270c6f0760e5c jdk8u51-b13
++f3a44c7deac2b23a53f0fd35b22a5d9181291616 jdk8u51-b14
++f77e8d012e8d6ee3432515ad68dd4f630dd08d56 jdk8u51-b15
+--- ./nashorn/.hgtags Tue Mar 17 11:25:52 2015 -0700
++++ ./nashorn/.hgtags Mon Jun 01 11:44:30 2015 -0700
+@@ -340,6 +340,7 @@
+ ec36fa3b35eb00f053d624ae837579c6b8e446ac jdk8u31-b13
+ 34a64e22b81bd78cf29603a80ff1f4cfc1694df8 jdk8u31-b31
+ d2b5784a3452a4fd9d1ccfefe93ee2d36662842c jdk8u31-b32
++c6dd08613a440ed8d0f1b14b85911d6f3826e1d4 jdk8u31-b33
+ f2925491b61b22ac42f8c30ee9c6723ffa401a4c jdk8u40-b00
+ 62468d841b842769d875bd97d10370585c296eb7 jdk8u40-b01
+ b476c69c820ac1e05071f4de5abab8e2dff80e87 jdk8u40-b02
+@@ -368,6 +369,8 @@
+ fb7b6c2b95c5661f15e8e747a63ec6d95d49fe46 jdk8u40-b25
+ b142a2d8e35e54abb08a7ded1dbfb5d7ce534c93 jdk8u40-b26
+ c2dd88e89edc85b1bcb731d3296d0fcec1b78447 jdk8u40-b27
++e05552220ba82e465a1abfee90224b5b247e37bc jdk8u40-b31
++e1cc0fe0fd50fc4582e729897d7095ffce0f97ad jdk8u40-b32
+ 05a3614ed5276e5db2a73cce918be04b1a2922fb jdk8u45-b00
+ 21ec16eb7e6346c78b4fa67ccd6d2a9c58f0b696 jdk8u45-b01
+ 37b3ef9a07323afd2556d6837824db154cccc874 jdk8u45-b02
+@@ -382,3 +385,23 @@
+ 6ae873ddbe195aa966fc348e468c0ecd2702f5e3 jdk8u45-b11
+ 9b9fee0f99cd07fba62abaafe705665a5ab89067 jdk8u45-b12
+ 6fda38586f73de706ecde311711a587ac49d51d8 jdk8u45-b13
++d5477c6d1678547a9338707adc4b81d35c280454 jdk8u45-b14
++ea15c34524408bbd2fa2886e5ec5d7995d8e236a jdk8u45-b15
++d1c1e084430027bffb5bbb1b288660fbdb86627b jdk8u45-b31
++67dc09b4965989a65a97e0bfec73338cd4763f2a jdk8u45-b32
++2d1c01990ebd896f81f511aabf1e53cbe1fda11f jdk8u51-b00
++4323de82a85c378b08e24601b8f3cec6aafda6f4 jdk8u51-b01
++5ee412753fa08a1e9fa15221c4253886e822a94e jdk8u51-b02
++a6d6f7cf488c1e57df9e9f724547c0e0eae2ad9e jdk8u51-b03
++7512eafda1f90fbf6837dd29ae7585b19b9fbe3a jdk8u51-b04
++04aae4de5c5e2b1c51725a7181afa0085a78d7ee jdk8u51-b05
++a03caffca13caafe4e0a14b5c6cee333bdfce67c jdk8u51-b06
++8814ac4bd7bc1cf87b40f036dc306185343ddb76 jdk8u51-b07
++7fa927b4a47ab76204ec2befe3b8f52336c0a291 jdk8u51-b08
++77cee35f987167f6e97cc8f2b09349e743e7a9e7 jdk8u51-b09
++1480e27e4af65e809c1a5cc0310616c2c68392f2 jdk8u51-b10
++6e95b9bb2f67d4a77d28e5aa3c07281fc8424823 jdk8u51-b11
++bf2fe867628bf323262377f8312c85f440a9b246 jdk8u51-b12
++1ecbb6d582a6ccf9e0f6e359a925155c8c580bac jdk8u51-b13
++e9d85a30fd08425904a400add72212a010381aa8 jdk8u51-b14
++4cbc78843829b3f6de43b3c056565834008419a6 jdk8u51-b15
diff --git a/java/openjdk8/files/patch-bsd b/java/openjdk8/files/patch-bsd
index 05ab64896ba1..ed47ea5fad0e 100644
--- a/java/openjdk8/files/patch-bsd
+++ b/java/openjdk8/files/patch-bsd
@@ -1,5 +1,5 @@
---- ./common/autoconf/build-performance.m4 Mon Mar 16 11:19:14 2015 -0700
-+++ ./common/autoconf/build-performance.m4 Tue May 05 18:06:47 2015 -0700
+--- ./common/autoconf/build-performance.m4 Tue May 26 13:25:56 2015 -0700
++++ ./common/autoconf/build-performance.m4 Sat Jul 18 13:32:19 2015 -0700
@@ -41,6 +41,10 @@
# Looks like a MacOSX system
NUM_CORES=`/usr/sbin/system_profiler -detailLevel full SPHardwareDataType | grep 'Cores' | awk '{print [$]5}'`
@@ -11,10 +11,14 @@
elif test "x$OPENJDK_BUILD_OS" = xaix ; then
NUM_CORES=`/usr/sbin/prtconf | grep "^Number Of Processors" | awk '{ print [$]4 }'`
FOUND_CORES=yes
-@@ -79,6 +83,11 @@
+@@ -79,6 +83,15 @@
MEMORY_SIZE=`/usr/sbin/system_profiler -detailLevel full SPHardwareDataType | grep 'Memory' | awk '{print [$]2}'`
MEMORY_SIZE=`expr $MEMORY_SIZE \* 1024`
FOUND_MEM=yes
++ elif test "x$OPENJDK_BUILD_OS" = xbsd && test "x$(uname -s | grep -o OpenBSD)" = xOpenBSD; then
++ # Looks like an OpenBSD system
++ MEMORY_SIZE=`/sbin/sysctl -n hw.physmem | awk '{print int($NF / 1048576); }'`
++ FOUND_MEM=yes
+ elif test "x$OPENJDK_BUILD_OS" = xbsd && test "x$(uname -s | grep -o BSD)" = xBSD; then
+ # Looks like a BSD system
+ MEMORY_SIZE=`/sbin/sysctl -n hw.physmem`
@@ -23,7 +27,7 @@
elif test "x$OPENJDK_BUILD_OS" = xwindows; then
# Windows, but without cygwin
MEMORY_SIZE=`wmic computersystem get totalphysicalmemory -value | grep = | cut -d "=" -f 2-`
-@@ -199,8 +208,8 @@
+@@ -199,8 +212,8 @@
# Only use ccache if it is 3.1.4 or later, which supports
# precompiled headers.
AC_MSG_CHECKING([if ccache supports precompiled headers])
@@ -34,9 +38,42 @@
AC_MSG_RESULT([no, disabling ccache])
CCACHE=
else
---- ./common/autoconf/generated-configure.sh Mon Mar 16 11:19:14 2015 -0700
-+++ ./common/autoconf/generated-configure.sh Tue May 05 18:06:47 2015 -0700
-@@ -1048,6 +1048,7 @@
+--- ./common/autoconf/generated-configure.sh Tue May 26 13:25:56 2015 -0700
++++ ./common/autoconf/generated-configure.sh Sat Jul 18 13:32:19 2015 -0700
+@@ -646,6 +646,8 @@
+ LIBM
+ LIBZIP_CAN_USE_MMAP
+ USE_EXTERNAL_LIBZ
++GIFLIB_LDFLAGS
++GIFLIB_CFLAGS
+ USE_EXTERNAL_LIBGIF
+ USE_EXTERNAL_LIBJPEG
+ ALSA_LIBS
+@@ -814,6 +816,7 @@
+ JDK_MAJOR_VERSION
+ USER_RELEASE_SUFFIX
+ COMPRESS_JARS
++BSD_STATIC_LIBJLI
+ UNLIMITED_CRYPTO
+ CACERTS_FILE
+ TEST_IN_BUILD
+@@ -891,6 +894,7 @@
+ OPENJDK_TARGET_CPU_ARCH
+ OPENJDK_TARGET_CPU
+ OPENJDK_TARGET_OS_API
++OPENJDK_TARGET_OS_VENDOR
+ OPENJDK_TARGET_OS
+ OPENJDK_BUILD_CPU_ENDIAN
+ OPENJDK_BUILD_CPU_BITS
+@@ -1022,6 +1026,7 @@
+ enable_hotspot_test_in_build
+ with_cacerts_file
+ enable_unlimited_crypto
++enable_static_libjli
+ with_milestone
+ with_update_version
+ with_user_release_suffix
+@@ -1048,6 +1053,7 @@
with_extra_cflags
with_extra_cxxflags
with_extra_ldflags
@@ -44,7 +81,15 @@
enable_debug_symbols
enable_zip_debug_info
enable_macosx_runtime_support
-@@ -1818,6 +1819,8 @@
+@@ -1724,6 +1730,7 @@
+ run the Queens test after Hotspot build [disabled]
+ --enable-unlimited-crypto
+ Enable unlimited crypto policy [disabled]
++ --enable-static-libjli Enable staticly linking libjli on bsd [disabled]
+ --disable-debug-symbols disable generation of debug symbols [enabled]
+ --disable-zip-debug-info
+ disable zipping of debug-info files [enabled]
+@@ -1818,6 +1825,8 @@
--with-extra-cflags extra flags to be used when compiling jdk c-files
--with-extra-cxxflags extra flags to be used when compiling jdk c++-files
--with-extra-ldflags extra flags to be used when linking jdk
@@ -53,7 +98,36 @@
--with-x use the X Window System
--with-cups specify prefix directory for the cups package
(expecting the headers under PATH/include)
-@@ -6804,7 +6807,7 @@
+@@ -3872,7 +3881,7 @@
+ #CUSTOM_AUTOCONF_INCLUDE
+
+ # Do not change or remove the following line, it is needed for consistency checks:
+-DATE_WHEN_GENERATED=1416326200
++DATE_WHEN_GENERATED=1432321778
+
+ ###############################################################################
+ #
+@@ -6800,11 +6809,27 @@
+ as_fn_error $? "unsupported operating system $build_os" "$LINENO" 5
+ ;;
+ esac
++ # The BSD's have slight differences so determine which one we are building on.
++ # For the rest set VAR_OS_VENDOR to VAR_OS
++ case "$build_os" in
++ *openbsd*)
++ VAR_OS_VENDOR=openbsd
++ ;;
++ *netbsd*)
++ VAR_OS_VENDOR=netbsd
++ ;;
++ *freebsd*)
++ VAR_OS_VENDOR=freebsd
++ ;;
++ *)
++ VAR_OS_VENDOR="$VAR_OS"
++ ;;
++ esac
+
# First argument is the cpu name from the trip/quad
case "$build_cpu" in
@@ -62,7 +136,27 @@
VAR_CPU=x86_64
VAR_CPU_ARCH=x86
VAR_CPU_BITS=64
-@@ -6935,7 +6938,7 @@
+@@ -6931,11 +6956,27 @@
+ as_fn_error $? "unsupported operating system $host_os" "$LINENO" 5
+ ;;
+ esac
++ # The BSD's have slight differences so determine which one we are building on.
++ # For the rest set VAR_OS_VENDOR to VAR_OS
++ case "$host_os" in
++ *openbsd*)
++ VAR_OS_VENDOR=openbsd
++ ;;
++ *netbsd*)
++ VAR_OS_VENDOR=netbsd
++ ;;
++ *freebsd*)
++ VAR_OS_VENDOR=freebsd
++ ;;
++ *)
++ VAR_OS_VENDOR="$VAR_OS"
++ ;;
++ esac
+
# First argument is the cpu name from the trip/quad
case "$host_cpu" in
@@ -71,7 +165,59 @@
VAR_CPU=x86_64
VAR_CPU_ARCH=x86
VAR_CPU_BITS=64
-@@ -20223,7 +20226,7 @@
+@@ -7002,6 +7043,7 @@
+
+ # ... and setup our own variables. (Do this explicitely to facilitate searching)
+ OPENJDK_TARGET_OS="$VAR_OS"
++ OPENJDK_TARGET_OS_VENDOR="$VAR_OS_VENDOR"
+ OPENJDK_TARGET_OS_API="$VAR_OS_API"
+ OPENJDK_TARGET_OS_ENV="$VAR_OS_ENV"
+ OPENJDK_TARGET_CPU="$VAR_CPU"
+@@ -7015,6 +7057,7 @@
+
+
+
++
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking openjdk-target os-cpu" >&5
+ $as_echo_n "checking openjdk-target os-cpu... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OPENJDK_TARGET_OS-$OPENJDK_TARGET_CPU" >&5
+@@ -7143,8 +7186,8 @@
+
+ # Setup OPENJDK_TARGET_CPU_OSARCH, which is used to set the os.arch Java system property
+ OPENJDK_TARGET_CPU_OSARCH="$OPENJDK_TARGET_CPU"
+- if test "x$OPENJDK_TARGET_OS" = xlinux && test "x$OPENJDK_TARGET_CPU" = xx86; then
+- # On linux only, we replace x86 with i386.
++ if test "x$OPENJDK_TARGET_OS" = xbsd -o "x$OPENJDK_TARGET_OS" = xlinux && test "x$OPENJDK_TARGET_CPU" = xx86; then
++ # On Linux and BSD, we replace x86 with i386.
+ OPENJDK_TARGET_CPU_OSARCH="i386"
+ elif test "x$OPENJDK_TARGET_OS" != xmacosx && test "x$OPENJDK_TARGET_CPU" = xx86_64; then
+ # On all platforms except macosx, we replace x86_64 with amd64.
+@@ -11184,6 +11227,24 @@
+
+ ###############################################################################
+ #
++ # Enable or disable static linking of libjli on bsd only
++ #
++ # Check whether --enable-static-libjli was given.
++if test "${enable_static_libjli+set}" = set; then :
++ enableval=$enable_static_libjli;
++else
++ enable_static_libjli=no
++fi
++
++ if test "x$OPENJDK_TARGET_OS" = "xbsd" && test "x$enable_static_libjli" = "xyes"; then
++ BSD_STATIC_LIBJLI=bsd
++ else
++ BSD_STATIC_LIBJLI=
++ fi
++
++
++ ###############################################################################
++ #
+ # Enable or disable the elliptic curve crypto implementation
+ #
+
+@@ -20223,7 +20284,7 @@
else
COMPILER_VERSION_TEST=`$COMPILER --version 2>&1 | $HEAD -n 1`
# Check that this is likely to be GCC.
@@ -80,7 +226,7 @@
if test $? -ne 0; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required GCC compiler." >&5
$as_echo "$as_me: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required GCC compiler." >&6;}
-@@ -21824,7 +21827,7 @@
+@@ -21824,7 +21885,7 @@
else
COMPILER_VERSION_TEST=`$COMPILER --version 2>&1 | $HEAD -n 1`
# Check that this is likely to be GCC.
@@ -89,7 +235,7 @@
if test $? -ne 0; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required GCC compiler." >&5
$as_echo "$as_me: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required GCC compiler." >&6;}
-@@ -27788,7 +27791,7 @@
+@@ -27788,7 +27849,7 @@
# objcopy is used for moving debug symbols to separate files when
# full debug symbols are enabled.
@@ -98,7 +244,7 @@
if test -n "$ac_tool_prefix"; then
for ac_prog in gobjcopy objcopy
do
-@@ -29454,8 +29457,10 @@
+@@ -29454,8 +29515,10 @@
SET_SHARED_LIBRARY_NAME='-Xlinker -install_name -Xlinker @rpath/$1'
SET_SHARED_LIBRARY_MAPFILE=''
SET_SHARED_LIBRARY_ORIGIN='-Xlinker -rpath -Xlinker @loader_path/.'
@@ -110,7 +256,7 @@
fi
else
if test "x$OPENJDK_TARGET_OS" = xsolaris; then
-@@ -29881,22 +29886,37 @@
+@@ -29881,22 +29944,37 @@
CCXXFLAGS_JDK="$CCXXFLAGS_JDK $ADD_LP64"
# The package path is used only on macosx?
@@ -161,7 +307,7 @@
fi
if test "x$OPENJDK_TARGET_OS" = xlinux; then
CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DLINUX"
-@@ -30395,11 +30415,11 @@
+@@ -30395,11 +30473,18 @@
fi
if test "x$OPENJDK_TARGET_OS" = xbsd; then
@@ -172,13 +318,52 @@
-$as_echo "alsa" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking what is not needed on BSD?" >&5
+$as_echo_n "checking what is not needed on BSD?... " >&6; }
-+ PULSE_NOT_NEEDED=yes
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: pulse" >&5
++ if test "x$OPENJDK_TARGET_OS_VENDOR" = xopenbsd; then
++ ALSA_NOT_NEEDED=yes
++ PULSE_NOT_NEEDED=yes
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: alsa pulse" >&5
++$as_echo "alsa pulse" >&6; }
++ else
++ PULSE_NOT_NEEDED=yes
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: pulse" >&5
+$as_echo "pulse" >&6; }
++ fi
fi
if test "x$OPENJDK" = "xfalse"; then
-@@ -34668,7 +34688,7 @@
+@@ -30449,14 +30534,18 @@
+ # --x-libraries for the sysroot, if that seems to be correct.
+ if test "x$SYS_ROOT" != "x/"; then
+ if test "x$x_includes" = xNONE; then
+- if test -f "$SYS_ROOT/usr/X11R6/include/X11/Xlib.h"; then
++ if test -f "$SYS_ROOT/usr/X11R7/include/X11/Xlib.h"; then
++ x_includes="$SYS_ROOT/usr/X11R7/include"
++ elif test -f "$SYS_ROOT/usr/X11R6/include/X11/Xlib.h"; then
+ x_includes="$SYS_ROOT/usr/X11R6/include"
+ elif test -f "$SYS_ROOT/usr/include/X11/Xlib.h"; then
+ x_includes="$SYS_ROOT/usr/include"
+ fi
+ fi
+ if test "x$x_libraries" = xNONE; then
+- if test -f "$SYS_ROOT/usr/X11R6/lib/libX11.so"; then
++ if test -f "$SYS_ROOT/usr/X11R7/lib/libX11.so"; then
++ x_libraries="$SYS_ROOT/usr/X11R7/lib"
++ elif test -f "$SYS_ROOT/usr/X11R6/lib/libX11.so"; then
+ x_libraries="$SYS_ROOT/usr/X11R6/lib"
+ elif test "$SYS_ROOT/usr/lib64/libX11.so" && test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
+ x_libraries="$SYS_ROOT/usr/lib64"
+@@ -31503,6 +31592,10 @@
+ # A CSW package seems to be installed!
+ CUPS_FOUND=yes
+ CUPS_CFLAGS="-I/opt/csw/include"
++ elif test -s ${PACKAGE_PATH}/include/cups/cups.h; then
++ # Standard package location for BSD
++ CUPS_FOUND=yes
++ CUPS_CFLAGS="-I${PACKAGE_PATH}/include"
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CUPS_FOUND" >&5
+ $as_echo "$CUPS_FOUND" >&6; }
+@@ -34668,7 +34761,7 @@
###############################################################################
#
@@ -187,19 +372,195 @@
#
# Check whether --with-alsa was given.
-@@ -34716,6 +34736,11 @@
- ALSA_LIBS="-L${with_alsa_lib} -lasound"
- ALSA_FOUND=yes
- fi
-+ if test "x$OPENJDK_TARGET_OS" = xbsd; then
-+ ALSA_LIBS="$ALSA_LIBS -lasound"
-+ else
-+ ALSA_LIBS="$ALSA_LIBS -lalsa"
+@@ -35076,15 +35169,66 @@
+
+ if test "x${with_giflib}" = "xbundled"; then
+ USE_EXTERNAL_LIBGIF=false
++ GIFLIB_CFLAGS=
++ GIFLIB_LDFLAGS=
+ elif test "x${with_giflib}" = "xsystem"; then
++ GIFLIB_H_FOUND=no
+ ac_fn_cxx_check_header_mongrel "$LINENO" "gif_lib.h" "ac_cv_header_gif_lib_h" "$ac_includes_default"
+ if test "x$ac_cv_header_gif_lib_h" = xyes; then :
+
+-else
+- as_fn_error $? "--with-giflib=system specified, but gif_lib.h not found!" "$LINENO" 5
+-fi
+-
+-
++ GIFLIB_H_FOUND=yes
++ GIFLIB_CFLAGS=
++
++
++fi
++
++
++ if test "x$GIFLIB_H_FOUND" = xno; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for giflib headers" >&5
++$as_echo_n "checking for giflib headers... " >&6; }
++ if test -s ${PACKAGE_PATH}/include/gif_lib.h; then
++ # Standard package location for BSD
++ GIFLIB_H_FOUND=yes
++ GIFLIB_CFLAGS="-I${PACKAGE_PATH}/include"
++ fi
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GIFLIB_H_FOUND" >&5
++$as_echo "$GIFLIB_H_FOUND" >&6; }
++ fi
++ if test "x$GIFLIB_H_FOUND" = xno; then
++
++ # Print a helpful message on how to acquire the necessary build dependency.
++ # giflib is the help tag: freetype, cups, pulse, alsa etc
++ MISSING_DEPENDENCY=giflib
++
++ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
++ cygwin_help $MISSING_DEPENDENCY
++ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
++ msys_help $MISSING_DEPENDENCY
++ else
++ PKGHANDLER_COMMAND=
++
++ case $PKGHANDLER in
++ apt-get)
++ apt_help $MISSING_DEPENDENCY ;;
++ yum)
++ yum_help $MISSING_DEPENDENCY ;;
++ port)
++ port_help $MISSING_DEPENDENCY ;;
++ pkgutil)
++ pkgutil_help $MISSING_DEPENDENCY ;;
++ pkgadd)
++ pkgadd_help $MISSING_DEPENDENCY ;;
++ esac
++
++ if test "x$PKGHANDLER_COMMAND" != x; then
++ HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'."
++ fi
++ fi
++
++ as_fn_error $? "Could not find giflib headers! $HELP_MSG " "$LINENO" 5
++ fi
++
++ GIFLIB_LIB_FOUND=no
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for DGifGetCode in -lgif" >&5
+ $as_echo_n "checking for DGifGetCode in -lgif... " >&6; }
+ if ${ac_cv_lib_gif_DGifGetCode+:} false; then :
+@@ -35122,16 +35266,96 @@
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gif_DGifGetCode" >&5
+ $as_echo "$ac_cv_lib_gif_DGifGetCode" >&6; }
+ if test "x$ac_cv_lib_gif_DGifGetCode" = xyes; then :
+- cat >>confdefs.h <<_ACEOF
+-#define HAVE_LIBGIF 1
+-_ACEOF
+-
+- LIBS="-lgif $LIBS"
+-
+-else
+- as_fn_error $? "--with-giflib=system specified, but no giflib found!" "$LINENO" 5
+-fi
+-
++
++ GIFLIB_LIB_FOUND=yes
++ GIFLIB_LDFLAGS=
++
++
++fi
++
++ if test "x$GIFLIB_LIB_FOUND" = xno; then
++ save_LDFLAGS="$LDFLAGS"
++ LDFLAGS="$LDFLAGS -L${PACKAGE_PATH}/lib"
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for DGifOpen in -lgif" >&5
++$as_echo_n "checking for DGifOpen in -lgif... " >&6; }
++if ${ac_cv_lib_gif_DGifOpen+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ ac_check_lib_save_LIBS=$LIBS
++LIBS="-lgif $LIBS"
++cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
++#ifdef __cplusplus
++extern "C"
++#endif
++char DGifOpen ();
++int
++main ()
++{
++return DGifOpen ();
++ ;
++ return 0;
++}
++_ACEOF
++if ac_fn_cxx_try_link "$LINENO"; then :
++ ac_cv_lib_gif_DGifOpen=yes
++else
++ ac_cv_lib_gif_DGifOpen=no
++fi
++rm -f core conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++LIBS=$ac_check_lib_save_LIBS
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gif_DGifOpen" >&5
++$as_echo "$ac_cv_lib_gif_DGifOpen" >&6; }
++if test "x$ac_cv_lib_gif_DGifOpen" = xyes; then :
++
++ GIFLIB_LIB_FOUND=yes
++ GIFLIB_LDFLAGS="-L${PACKAGE_PATH}/lib"
++
++
++fi
++
++ LDFLAGS="$save_LDFLAGS"
++ fi
++
++ if test "x$GIFLIB_LIB_FOUND" = xno; then
++
++ # Print a helpful message on how to acquire the necessary build dependency.
++ # giflib is the help tag: freetype, cups, pulse, alsa etc
++ MISSING_DEPENDENCY=giflib
++
++ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
++ cygwin_help $MISSING_DEPENDENCY
++ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
++ msys_help $MISSING_DEPENDENCY
++ else
++ PKGHANDLER_COMMAND=
++
++ case $PKGHANDLER in
++ apt-get)
++ apt_help $MISSING_DEPENDENCY ;;
++ yum)
++ yum_help $MISSING_DEPENDENCY ;;
++ port)
++ port_help $MISSING_DEPENDENCY ;;
++ pkgutil)
++ pkgutil_help $MISSING_DEPENDENCY ;;
++ pkgadd)
++ pkgadd_help $MISSING_DEPENDENCY ;;
++ esac
++
++ if test "x$PKGHANDLER_COMMAND" != x; then
++ HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'."
++ fi
++ fi
++
++ as_fn_error $? "Could not find giflib library! $HELP_MSG " "$LINENO" 5
+ fi
- if test "x$ALSA_FOUND" = xno; then
+ USE_EXTERNAL_LIBGIF=true
+ else
+@@ -35139,6 +35363,8 @@
+ fi
-@@ -35706,6 +35731,11 @@
+
++
++
+ ###############################################################################
+ #
+ # Check for the zlib library
+@@ -35706,6 +35932,11 @@
LIBCXX="-lstdc++"
fi
@@ -211,7 +572,7 @@
-@@ -35779,6 +35809,10 @@
+@@ -35779,6 +36010,10 @@
# Looks like a MacOSX system
NUM_CORES=`/usr/sbin/system_profiler -detailLevel full SPHardwareDataType | grep 'Cores' | awk '{print $5}'`
FOUND_CORES=yes
@@ -222,10 +583,14 @@
elif test "x$OPENJDK_BUILD_OS" = xaix ; then
NUM_CORES=`/usr/sbin/prtconf | grep "^Number Of Processors" | awk '{ print $4 }'`
FOUND_CORES=yes
-@@ -35834,6 +35868,11 @@
+@@ -35834,6 +36069,15 @@
MEMORY_SIZE=`/usr/sbin/system_profiler -detailLevel full SPHardwareDataType | grep 'Memory' | awk '{print $2}'`
MEMORY_SIZE=`expr $MEMORY_SIZE \* 1024`
FOUND_MEM=yes
++ elif test "x$OPENJDK_BUILD_OS" = xbsd && test "x$(uname -s | grep -o OpenBSD)" = xOpenBSD; then
++ # Looks like an OpenBSD system
++ MEMORY_SIZE=`/sbin/sysctl -n hw.physmem | awk '{print int($NF / 1048576); }'`
++ FOUND_MEM=yes
+ elif test "x$OPENJDK_BUILD_OS" = xbsd && test "x$(uname -s | grep -o BSD)" = xBSD; then
+ # Looks like a BSD system
+ MEMORY_SIZE=`/sbin/sysctl -n hw.physmem`
@@ -234,9 +599,43 @@
elif test "x$OPENJDK_BUILD_OS" = xwindows; then
# Windows, but without cygwin
MEMORY_SIZE=`wmic computersystem get totalphysicalmemory -value | grep = | cut -d "=" -f 2-`
---- ./common/autoconf/libraries.m4 Mon Mar 16 11:19:14 2015 -0700
-+++ ./common/autoconf/libraries.m4 Tue May 05 18:06:47 2015 -0700
-@@ -71,9 +71,9 @@
+@@ -36241,8 +36485,8 @@
+ # precompiled headers.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if ccache supports precompiled headers" >&5
+ $as_echo_n "checking if ccache supports precompiled headers... " >&6; }
+- HAS_GOOD_CCACHE=`($CCACHE --version | head -n 1 | grep -E 3.1.[456789]) 2> /dev/null`
+- if test "x$HAS_GOOD_CCACHE" = x; then
++ HAS_GOOD_CCACHE=`($CCACHE --version | head -n 1 | awk '{ split(, a, "."); if (a[1] >= 3 && (a[2] > 1 || (a[2] == 1 && a[3] >= 4))) print "yes"; else print "no"; }') 2> /dev/null`
++ if test "x$HAS_GOOD_CCACHE" = xyes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, disabling ccache" >&5
+ $as_echo "no, disabling ccache" >&6; }
+ CCACHE=
+--- ./common/autoconf/jdk-options.m4 Tue May 26 13:25:56 2015 -0700
++++ ./common/autoconf/jdk-options.m4 Sat Jul 18 13:32:19 2015 -0700
+@@ -407,6 +407,20 @@
+
+ ###############################################################################
+ #
++ # Enable or disable static linking of libjli on bsd only
++ #
++ AC_ARG_ENABLE(static-libjli, [AS_HELP_STRING([--enable-static-libjli],
++ [Enable staticly linking libjli on bsd @<:@disabled@:>@])],,
++ [enable_static_libjli=no])
++ if test "x$OPENJDK_TARGET_OS" = "xbsd" && test "x$enable_static_libjli" = "xyes"; then
++ BSD_STATIC_LIBJLI=bsd
++ else
++ BSD_STATIC_LIBJLI=
++ fi
++ AC_SUBST(BSD_STATIC_LIBJLI)
++
++ ###############################################################################
++ #
+ # Enable or disable the elliptic curve crypto implementation
+ #
+ AC_DEFUN_ONCE([JDKOPT_DETECT_INTREE_EC],
+--- ./common/autoconf/libraries.m4 Tue May 26 13:25:56 2015 -0700
++++ ./common/autoconf/libraries.m4 Sat Jul 18 13:32:19 2015 -0700
+@@ -71,9 +71,15 @@
fi
if test "x$OPENJDK_TARGET_OS" = xbsd; then
@@ -244,12 +643,18 @@
- ALSA_NOT_NEEDED=yes
- AC_MSG_RESULT([alsa])
+ AC_MSG_CHECKING([what is not needed on BSD?])
-+ PULSE_NOT_NEEDED=yes
-+ AC_MSG_RESULT([pulse])
++ if test "x$OPENJDK_TARGET_OS_VENDOR" = xopenbsd; then
++ ALSA_NOT_NEEDED=yes
++ PULSE_NOT_NEEDED=yes
++ AC_MSG_RESULT([alsa pulse])
++ else
++ PULSE_NOT_NEEDED=yes
++ AC_MSG_RESULT([pulse])
++ fi
fi
if test "x$OPENJDK" = "xfalse"; then
-@@ -112,14 +112,18 @@
+@@ -112,14 +118,18 @@
# --x-libraries for the sysroot, if that seems to be correct.
if test "x$SYS_ROOT" != "x/"; then
if test "x$x_includes" = xNONE; then
@@ -270,7 +675,18 @@
x_libraries="$SYS_ROOT/usr/X11R6/lib"
elif test "$SYS_ROOT/usr/lib64/libX11.so" && test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
x_libraries="$SYS_ROOT/usr/lib64"
-@@ -538,7 +542,7 @@
+@@ -245,6 +255,10 @@
+ # A CSW package seems to be installed!
+ CUPS_FOUND=yes
+ CUPS_CFLAGS="-I/opt/csw/include"
++ elif test -s ${PACKAGE_PATH}/include/cups/cups.h; then
++ # Standard package location for BSD
++ CUPS_FOUND=yes
++ CUPS_CFLAGS="-I${PACKAGE_PATH}/include"
+ fi
+ AC_MSG_RESULT([$CUPS_FOUND])
+ fi
+@@ -538,7 +552,7 @@
###############################################################################
#
@@ -279,7 +695,73 @@
#
AC_ARG_WITH(alsa, [AS_HELP_STRING([--with-alsa],
[specify prefix directory for the alsa package
-@@ -885,5 +889,10 @@
+@@ -640,17 +654,61 @@
+
+ if test "x${with_giflib}" = "xbundled"; then
+ USE_EXTERNAL_LIBGIF=false
++ GIFLIB_CFLAGS=
++ GIFLIB_LDFLAGS=
+ elif test "x${with_giflib}" = "xsystem"; then
+- AC_CHECK_HEADER(gif_lib.h, [],
+- [ AC_MSG_ERROR([--with-giflib=system specified, but gif_lib.h not found!])])
+- AC_CHECK_LIB(gif, DGifGetCode, [],
+- [ AC_MSG_ERROR([--with-giflib=system specified, but no giflib found!])])
++ GIFLIB_H_FOUND=no
++ AC_CHECK_HEADER(gif_lib.h,
++ [
++ GIFLIB_H_FOUND=yes
++ GIFLIB_CFLAGS=
++ ]
++ )
++ if test "x$GIFLIB_H_FOUND" = xno; then
++ AC_MSG_CHECKING([for giflib headers])
++ if test -s ${PACKAGE_PATH}/include/gif_lib.h; then
++ # Standard package location for BSD
++ GIFLIB_H_FOUND=yes
++ GIFLIB_CFLAGS="-I${PACKAGE_PATH}/include"
++ fi
++ AC_MSG_RESULT([$GIFLIB_H_FOUND])
++ fi
++ if test "x$GIFLIB_H_FOUND" = xno; then
++ HELP_MSG_MISSING_DEPENDENCY([giflib])
++ AC_MSG_ERROR([Could not find giflib headers! $HELP_MSG ])
++ fi
++
++ GIFLIB_LIB_FOUND=no
++ AC_CHECK_LIB(gif, DGifGetCode,
++ [
++ GIFLIB_LIB_FOUND=yes
++ GIFLIB_LDFLAGS=
++ ]
++ )
++ if test "x$GIFLIB_LIB_FOUND" = xno; then
++ save_LDFLAGS="$LDFLAGS"
++ LDFLAGS="$LDFLAGS -L${PACKAGE_PATH}/lib"
++ AC_CHECK_LIB(gif, DGifOpen,
++ [
++ GIFLIB_LIB_FOUND=yes
++ GIFLIB_LDFLAGS="-L${PACKAGE_PATH}/lib"
++ ]
++ )
++ LDFLAGS="$save_LDFLAGS"
++ fi
++
++ if test "x$GIFLIB_LIB_FOUND" = xno; then
++ HELP_MSG_MISSING_DEPENDENCY([giflib])
++ AC_MSG_ERROR([Could not find giflib library! $HELP_MSG ])
++ fi
+
+ USE_EXTERNAL_LIBGIF=true
+ else
+ AC_MSG_ERROR([Invalid value of --with-giflib: ${with_giflib}, use 'system' or 'bundled'])
+ fi
+ AC_SUBST(USE_EXTERNAL_LIBGIF)
++ AC_SUBST(GIFLIB_CFLAGS)
++ AC_SUBST(GIFLIB_LDFLAGS)
+
+ ###############################################################################
+ #
+@@ -885,5 +943,10 @@
LIBCXX="-lstdc++"
fi
@@ -290,8 +772,8 @@
+
AC_SUBST(LIBCXX)
])
---- ./common/autoconf/platform.m4 Mon Mar 16 11:19:14 2015 -0700
-+++ ./common/autoconf/platform.m4 Tue May 05 18:06:47 2015 -0700
+--- ./common/autoconf/platform.m4 Tue May 26 13:25:56 2015 -0700
++++ ./common/autoconf/platform.m4 Sat Jul 18 13:32:19 2015 -0700
@@ -30,7 +30,7 @@
[
# First argument is the cpu name from the trip/quad
@@ -301,7 +783,46 @@
VAR_CPU=x86_64
VAR_CPU_ARCH=x86
VAR_CPU_BITS=64
-@@ -302,8 +302,8 @@
+@@ -141,6 +141,22 @@
+ AC_MSG_ERROR([unsupported operating system $1])
+ ;;
+ esac
++ # The BSD's have slight differences so determine which one we are building on.
++ # For the rest set VAR_OS_VENDOR to VAR_OS
++ case "$1" in
++ *openbsd*)
++ VAR_OS_VENDOR=openbsd
++ ;;
++ *netbsd*)
++ VAR_OS_VENDOR=netbsd
++ ;;
++ *freebsd*)
++ VAR_OS_VENDOR=freebsd
++ ;;
++ *)
++ VAR_OS_VENDOR="$VAR_OS"
++ ;;
++ esac
+ ])
+
+ # Expects $host_os $host_cpu $build_os and $build_cpu
+@@ -186,6 +202,7 @@
+ PLATFORM_EXTRACT_VARS_FROM_CPU($host_cpu)
+ # ... and setup our own variables. (Do this explicitely to facilitate searching)
+ OPENJDK_TARGET_OS="$VAR_OS"
++ OPENJDK_TARGET_OS_VENDOR="$VAR_OS_VENDOR"
+ OPENJDK_TARGET_OS_API="$VAR_OS_API"
+ OPENJDK_TARGET_OS_ENV="$VAR_OS_ENV"
+ OPENJDK_TARGET_CPU="$VAR_CPU"
+@@ -193,6 +210,7 @@
+ OPENJDK_TARGET_CPU_BITS="$VAR_CPU_BITS"
+ OPENJDK_TARGET_CPU_ENDIAN="$VAR_CPU_ENDIAN"
+ AC_SUBST(OPENJDK_TARGET_OS)
++ AC_SUBST(OPENJDK_TARGET_OS_VENDOR)
+ AC_SUBST(OPENJDK_TARGET_OS_API)
+ AC_SUBST(OPENJDK_TARGET_CPU)
+ AC_SUBST(OPENJDK_TARGET_CPU_ARCH)
+@@ -302,8 +320,8 @@
# Setup OPENJDK_TARGET_CPU_OSARCH, which is used to set the os.arch Java system property
OPENJDK_TARGET_CPU_OSARCH="$OPENJDK_TARGET_CPU"
@@ -312,9 +833,17 @@
OPENJDK_TARGET_CPU_OSARCH="i386"
elif test "x$OPENJDK_TARGET_OS" != xmacosx && test "x$OPENJDK_TARGET_CPU" = xx86_64; then
# On all platforms except macosx, we replace x86_64 with amd64.
---- ./common/autoconf/spec.gmk.in Mon Mar 16 11:19:14 2015 -0700
-+++ ./common/autoconf/spec.gmk.in Tue May 05 18:06:47 2015 -0700
-@@ -275,7 +275,7 @@
+--- ./common/autoconf/spec.gmk.in Tue May 26 13:25:56 2015 -0700
++++ ./common/autoconf/spec.gmk.in Sat Jul 18 13:32:19 2015 -0700
+@@ -76,6 +76,7 @@
+ OPENJDK_TARGET_OS:=@OPENJDK_TARGET_OS@
+ OPENJDK_TARGET_OS_API:=@OPENJDK_TARGET_OS_API@
+ OPENJDK_TARGET_OS_ENV:=@OPENJDK_TARGET_OS_ENV@
++OPENJDK_TARGET_OS_VENDOR:=@OPENJDK_TARGET_OS_VENDOR@
+
+ OPENJDK_TARGET_CPU:=@OPENJDK_TARGET_CPU@
+ OPENJDK_TARGET_CPU_ARCH:=@OPENJDK_TARGET_CPU_ARCH@
+@@ -275,7 +276,7 @@
ALSA_LIBS:=@ALSA_LIBS@
ALSA_CFLAGS:=@ALSA_CFLAGS@
@@ -323,8 +852,27 @@
# Source file for cacerts
CACERTS_FILE=@CACERTS_FILE@
---- ./common/autoconf/toolchain.m4 Mon Mar 16 11:19:14 2015 -0700
-+++ ./common/autoconf/toolchain.m4 Tue May 05 18:06:47 2015 -0700
+@@ -283,6 +284,9 @@
+ # Enable unlimited crypto policy
+ UNLIMITED_CRYPTO=@UNLIMITED_CRYPTO@
+
++# Build static libjli on bsd
++BSD_STATIC_LIBJLI=@BSD_STATIC_LIBJLI@
++
+ # Necessary additional compiler flags to compile X11
+ X_CFLAGS:=@X_CFLAGS@
+ X_LIBS:=@X_LIBS@
+@@ -558,6 +562,8 @@
+ ENABLE_INTREE_EC=@ENABLE_INTREE_EC@
+ USE_EXTERNAL_LIBJPEG:=@USE_EXTERNAL_LIBJPEG@
+ USE_EXTERNAL_LIBGIF:=@USE_EXTERNAL_LIBGIF@
++GIFLIB_CFLAGS:=@GIFLIB_CFLAGS@
++GIFLIB_LDFLAGS:=@GIFLIB_LDFLAGS@
+ USE_EXTERNAL_LIBZ:=@USE_EXTERNAL_LIBZ@
+ LIBZIP_CAN_USE_MMAP:=@LIBZIP_CAN_USE_MMAP@
+ MSVCR_DLL:=@MSVCR_DLL@
+--- ./common/autoconf/toolchain.m4 Tue May 26 13:25:56 2015 -0700
++++ ./common/autoconf/toolchain.m4 Sat Jul 18 13:32:19 2015 -0700
@@ -72,7 +72,7 @@
else
COMPILER_VERSION_TEST=`$COMPILER --version 2>&1 | $HEAD -n 1`
@@ -401,16 +949,38 @@
fi
if test "x$OPENJDK_TARGET_OS" = xlinux; then
CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DLINUX"
---- ./configure Mon Mar 16 11:19:14 2015 -0700
-+++ ./configure Tue May 05 18:06:47 2015 -0700
+--- ./configure Tue May 26 13:25:56 2015 -0700
++++ ./configure Sat Jul 18 13:32:19 2015 -0700
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
#
# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
---- ./make/Main.gmk Mon Mar 16 11:19:14 2015 -0700
-+++ ./make/Main.gmk Tue May 05 18:06:47 2015 -0700
+--- ./make/Javadoc.gmk Tue May 26 13:25:56 2015 -0700
++++ ./make/Javadoc.gmk Sat Jul 18 13:32:19 2015 -0700
+@@ -46,8 +46,18 @@
+
+ BUILD_NUMBER=$(JDK_BUILD_NUMBER)
+
++ifeq ($(OPENJDK_TARGET_OS_VENDOR), openbsd)
++ ifeq ($(OPENJDK_TARGET_CPU_BITS), 32)
++ JAVADOC_CMD_MEM = "-Xmx768m"
++ else
++ JAVADOC_CMD_MEM = "-Xmx1024m"
++ endif
++else
++ JAVADOC_CMD_MEM = "-Xmx1024m"
++endif
++
+ JAVADOC_CMD = $(JAVA) \
+- -Xmx1024m \
++ $(JAVADOC_CMD_MEM) \
+ -Djava.awt.headless=true \
+ $(NEW_JAVADOC) \
+ -bootclasspath $(JDK_OUTPUTDIR)/classes
+--- ./make/Main.gmk Tue May 26 13:25:56 2015 -0700
++++ ./make/Main.gmk Sat Jul 18 13:32:19 2015 -0700
@@ -58,7 +58,11 @@
# Setup number of jobs to use. -jN is unfortunately not available for us to parse from the command line,
@@ -423,8 +993,8 @@
### Main targets
---- ./make/common/MakeBase.gmk Mon Mar 16 11:19:14 2015 -0700
-+++ ./make/common/MakeBase.gmk Tue May 05 18:06:47 2015 -0700
+--- ./make/common/MakeBase.gmk Tue May 26 13:25:56 2015 -0700
++++ ./make/common/MakeBase.gmk Sat Jul 18 13:32:19 2015 -0700
@@ -338,7 +338,7 @@
# (and causing a crash on Cygwin).
# Default shell seems to always be /bin/sh. Must override with bash to get this to work on Solaris.
@@ -445,8 +1015,8 @@
endef
# Make directory without forking mkdir if not needed
---- ./make/common/NativeCompilation.gmk Mon Mar 16 11:19:14 2015 -0700
-+++ ./make/common/NativeCompilation.gmk Tue May 05 18:06:47 2015 -0700
+--- ./make/common/NativeCompilation.gmk Tue May 26 13:25:56 2015 -0700
++++ ./make/common/NativeCompilation.gmk Sat Jul 18 13:32:19 2015 -0700
@@ -151,9 +151,9 @@
# CC the compiler to use, default is $(CC)
# LDEXE the linker to use for linking executables, default is $(LDEXE)
@@ -460,8 +1030,8 @@
ifneq (,$$($1_BIN))
$$(error BIN has been replaced with OBJECT_DIR)
---- ./hotspot/make/bsd/makefiles/build_vm_def.sh Mon Mar 16 11:19:42 2015 -0700
-+++ ./hotspot/make/bsd/makefiles/build_vm_def.sh Tue May 05 18:06:56 2015 -0700
+--- ./hotspot/make/bsd/makefiles/build_vm_def.sh Mon Jun 01 11:24:34 2015 -0700
++++ ./hotspot/make/bsd/makefiles/build_vm_def.sh Sat Jul 18 13:32:27 2015 -0700
@@ -1,12 +1,28 @@
#!/bin/sh
@@ -497,8 +1067,8 @@
+ if ($3 ~ /^_ZN9Arguments17SharedArchivePathE$/) print "\t" $3 ";"
+ }' | sort -u ;;
+esac
---- ./hotspot/make/bsd/makefiles/debug.make Mon Mar 16 11:19:42 2015 -0700
-+++ ./hotspot/make/bsd/makefiles/debug.make Tue May 05 18:06:56 2015 -0700
+--- ./hotspot/make/bsd/makefiles/debug.make Mon Jun 01 11:24:34 2015 -0700
++++ ./hotspot/make/bsd/makefiles/debug.make Sat Jul 18 13:32:27 2015 -0700
@@ -35,7 +35,10 @@
# to inhibit the effect of the previous line on CFLAGS.
@@ -511,8 +1081,8 @@
VERSION = debug
SYSDEFS += -DASSERT
---- ./hotspot/make/bsd/makefiles/fastdebug.make Mon Mar 16 11:19:42 2015 -0700
-+++ ./hotspot/make/bsd/makefiles/fastdebug.make Tue May 05 18:06:56 2015 -0700
+--- ./hotspot/make/bsd/makefiles/fastdebug.make Mon Jun 01 11:24:34 2015 -0700
++++ ./hotspot/make/bsd/makefiles/fastdebug.make Sat Jul 18 13:32:27 2015 -0700
@@ -56,7 +56,10 @@
# to inhibit the effect of the previous line on CFLAGS.
@@ -525,8 +1095,8 @@
VERSION = fastdebug
SYSDEFS += -DASSERT -DCHECK_UNHANDLED_OOPS
---- ./hotspot/make/bsd/makefiles/gcc.make Mon Mar 16 11:19:42 2015 -0700
-+++ ./hotspot/make/bsd/makefiles/gcc.make Tue May 05 18:06:56 2015 -0700
+--- ./hotspot/make/bsd/makefiles/gcc.make Mon Jun 01 11:24:34 2015 -0700
++++ ./hotspot/make/bsd/makefiles/gcc.make Sat Jul 18 13:32:27 2015 -0700
@@ -168,6 +168,9 @@
CFLAGS += -DDONT_USE_PRECOMPILED_HEADER
endif
@@ -568,8 +1138,40 @@
ifeq ($(USE_CLANG),)
WARNING_FLAGS += -Wconversion
endif
+@@ -432,17 +438,20 @@
+ # (warning: that could easily inflate libjvm.so to 150M!)
+ # Note: The Itanium gcc compiler crashes when using -gstabs.
+ DEBUG_CFLAGS/ia64 = -g
+- DEBUG_CFLAGS/amd64 = -g
+ DEBUG_CFLAGS/arm = -g
+ DEBUG_CFLAGS/ppc = -g
+ DEBUG_CFLAGS += $(DEBUG_CFLAGS/$(BUILDARCH))
+ ifeq ($(DEBUG_CFLAGS/$(BUILDARCH)),)
+- DEBUG_CFLAGS += -gstabs
++ ifeq ($(USE_CLANG), true)
++ # Clang doesn't understand -gstabs
++ DEBUG_CFLAGS += -g
++ else
++ DEBUG_CFLAGS += -gstabs
++ endif
+ endif
+
+ ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+ FASTDEBUG_CFLAGS/ia64 = -g
+- FASTDEBUG_CFLAGS/amd64 = -g
+ FASTDEBUG_CFLAGS/arm = -g
+ FASTDEBUG_CFLAGS/ppc = -g
+ FASTDEBUG_CFLAGS += $(FASTDEBUG_CFLAGS/$(BUILDARCH))
+@@ -456,7 +465,6 @@
+ endif
+
+ OPT_CFLAGS/ia64 = -g
+- OPT_CFLAGS/amd64 = -g
+ OPT_CFLAGS/arm = -g
+ OPT_CFLAGS/ppc = -g
+ OPT_CFLAGS += $(OPT_CFLAGS/$(BUILDARCH))
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
-+++ ./hotspot/make/bsd/makefiles/launcher.make Tue May 05 18:06:56 2015 -0700
++++ ./hotspot/make/bsd/makefiles/launcher.make Sat Jul 18 13:32:27 2015 -0700
@@ -0,0 +1,117 @@
+#
+# Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
@@ -688,8 +1290,8 @@
+ $(QUIETLY) sed -e 's/@@LIBARCH@@/$(LIBARCH)/g' $< > $@
+ $(QUIETLY) chmod +x $@
+
---- ./hotspot/make/bsd/makefiles/mapfile-vers-debug Mon Mar 16 11:19:42 2015 -0700
-+++ ./hotspot/make/bsd/makefiles/mapfile-vers-debug Tue May 05 18:06:56 2015 -0700
+--- ./hotspot/make/bsd/makefiles/mapfile-vers-debug Mon Jun 01 11:24:34 2015 -0700
++++ ./hotspot/make/bsd/makefiles/mapfile-vers-debug Sat Jul 18 13:32:27 2015 -0700
@@ -21,246 +21,254 @@
# questions.
#
@@ -1177,7 +1779,7 @@
+ *;
+};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
-+++ ./hotspot/make/bsd/makefiles/mapfile-vers-debug.macosx Tue May 05 18:06:56 2015 -0700
++++ ./hotspot/make/bsd/makefiles/mapfile-vers-debug.macosx Sat Jul 18 13:32:27 2015 -0700
@@ -0,0 +1,266 @@
+#
+# Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved.
@@ -1445,8 +2047,8 @@
+
+ # INSERT VTABLE SYMBOLS HERE
+
---- ./hotspot/make/bsd/makefiles/mapfile-vers-product Mon Mar 16 11:19:42 2015 -0700
-+++ ./hotspot/make/bsd/makefiles/mapfile-vers-product Tue May 05 18:06:56 2015 -0700
+--- ./hotspot/make/bsd/makefiles/mapfile-vers-product Mon Jun 01 11:24:34 2015 -0700
++++ ./hotspot/make/bsd/makefiles/mapfile-vers-product Sat Jul 18 13:32:27 2015 -0700
@@ -21,241 +21,249 @@
# questions.
#
@@ -1925,7 +2527,7 @@
+ *;
+};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
-+++ ./hotspot/make/bsd/makefiles/mapfile-vers-product.macosx Tue May 05 18:06:56 2015 -0700
++++ ./hotspot/make/bsd/makefiles/mapfile-vers-product.macosx Sat Jul 18 13:32:27 2015 -0700
@@ -0,0 +1,261 @@
+#
+# Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved.
@@ -2188,8 +2790,8 @@
+
+ # INSERT VTABLE SYMBOLS HERE
+
---- ./hotspot/make/bsd/makefiles/optimized.make Mon Mar 16 11:19:42 2015 -0700
-+++ ./hotspot/make/bsd/makefiles/optimized.make Tue May 05 18:06:56 2015 -0700
+--- ./hotspot/make/bsd/makefiles/optimized.make Mon Jun 01 11:24:34 2015 -0700
++++ ./hotspot/make/bsd/makefiles/optimized.make Sat Jul 18 13:32:27 2015 -0700
@@ -38,6 +38,9 @@
# to inhibit the effect of the previous line on CFLAGS.
@@ -2201,8 +2803,8 @@
+MAPFILE = $(GAMMADIR)/make/bsd/makefiles/mapfile-vers-debug$(MAPSUFX)
VERSION = optimized
---- ./hotspot/make/bsd/makefiles/product.make Mon Mar 16 11:19:42 2015 -0700
-+++ ./hotspot/make/bsd/makefiles/product.make Tue May 05 18:06:56 2015 -0700
+--- ./hotspot/make/bsd/makefiles/product.make Mon Jun 01 11:24:34 2015 -0700
++++ ./hotspot/make/bsd/makefiles/product.make Sat Jul 18 13:32:27 2015 -0700
@@ -38,7 +38,10 @@
# to inhibit the effect of the previous line on CFLAGS.
@@ -2215,8 +2817,8 @@
SYSDEFS += -DPRODUCT
VERSION = optimized
---- ./hotspot/make/bsd/makefiles/rules.make Mon Mar 16 11:19:42 2015 -0700
-+++ ./hotspot/make/bsd/makefiles/rules.make Tue May 05 18:06:56 2015 -0700
+--- ./hotspot/make/bsd/makefiles/rules.make Mon Jun 01 11:24:34 2015 -0700
++++ ./hotspot/make/bsd/makefiles/rules.make Sat Jul 18 13:32:27 2015 -0700
@@ -34,7 +34,7 @@
CC_COMPILE = $(CC) $(CXXFLAGS) $(CFLAGS)
CXX_COMPILE = $(CXX) $(CXXFLAGS) $(CFLAGS)
@@ -2226,8 +2828,19 @@
COMPILE.CC = $(CC_COMPILE) -c
GENASM.CC = $(CC_COMPILE) -S
---- ./hotspot/src/cpu/x86/vm/jni_x86.h Mon Mar 16 11:19:42 2015 -0700
-+++ ./hotspot/src/cpu/x86/vm/jni_x86.h Tue May 05 18:06:56 2015 -0700
+--- ./hotspot/make/bsd/makefiles/vm.make Mon Jun 01 11:24:34 2015 -0700
++++ ./hotspot/make/bsd/makefiles/vm.make Sat Jul 18 13:32:27 2015 -0700
+@@ -107,7 +107,7 @@
+ # File specific flags
+ CXXFLAGS += $(CXXFLAGS/BYFILE)
+
+-ifdef DEFAULT_LIBPATH
++ifneq ($(DEFAULT_LIBPATH),)
+ CXXFLAGS += -DDEFAULT_LIBPATH="\"$(DEFAULT_LIBPATH)\""
+ endif
+
+--- ./hotspot/src/cpu/x86/vm/jni_x86.h Mon Jun 01 11:24:34 2015 -0700
++++ ./hotspot/src/cpu/x86/vm/jni_x86.h Sat Jul 18 13:32:27 2015 -0700
@@ -34,7 +34,7 @@
#ifndef __has_attribute
#define __has_attribute(x) 0
@@ -2237,8 +2850,30 @@
#define JNIEXPORT __attribute__((visibility("default")))
#define JNIIMPORT __attribute__((visibility("default")))
#else
---- ./hotspot/src/cpu/x86/vm/x86_32.ad Mon Mar 16 11:19:42 2015 -0700
-+++ ./hotspot/src/cpu/x86/vm/x86_32.ad Tue May 05 18:06:56 2015 -0700
+--- ./hotspot/src/cpu/x86/vm/sharedRuntime_x86_32.cpp Mon Jun 01 11:24:34 2015 -0700
++++ ./hotspot/src/cpu/x86/vm/sharedRuntime_x86_32.cpp Sat Jul 18 13:32:27 2015 -0700
+@@ -2266,7 +2266,7 @@
+ if (!is_critical_native) {
+ // reset handle block
+ __ movptr(rcx, Address(thread, JavaThread::active_handles_offset()));
+- __ movl(Address(rcx, JNIHandleBlock::top_offset_in_bytes()), NULL_WORD);
++ __ movl(Address(rcx, JNIHandleBlock::top_offset_in_bytes()), (int32_t)NULL_WORD);
+
+ // Any exception pending?
+ __ cmpptr(Address(thread, in_bytes(Thread::pending_exception_offset())), (int32_t)NULL_WORD);
+--- ./hotspot/src/cpu/x86/vm/templateInterpreter_x86_32.cpp Mon Jun 01 11:24:34 2015 -0700
++++ ./hotspot/src/cpu/x86/vm/templateInterpreter_x86_32.cpp Sat Jul 18 13:32:27 2015 -0700
+@@ -1287,7 +1287,7 @@
+
+ // reset handle block
+ __ movptr(t, Address(thread, JavaThread::active_handles_offset()));
+- __ movl(Address(t, JNIHandleBlock::top_offset_in_bytes()), NULL_WORD);
++ __ movl(Address(t, JNIHandleBlock::top_offset_in_bytes()), (int32_t)NULL_WORD);
+
+ // If result was an oop then unbox and save it in the frame
+ { Label L;
+--- ./hotspot/src/cpu/x86/vm/x86_32.ad Mon Jun 01 11:24:34 2015 -0700
++++ ./hotspot/src/cpu/x86/vm/x86_32.ad Sat Jul 18 13:32:27 2015 -0700
@@ -1210,6 +1210,7 @@
@@ -2248,7 +2883,7 @@
#ifndef PRODUCT
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
-+++ ./hotspot/src/os/bsd/vm/decoder_bsd.cpp Tue May 05 18:06:56 2015 -0700
++++ ./hotspot/src/os/bsd/vm/decoder_bsd.cpp Sat Jul 18 13:32:27 2015 -0700
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
@@ -2297,8 +2932,8 @@
+ return false;
+}
+#endif
---- ./hotspot/src/os/bsd/vm/jsig.c Mon Mar 16 11:19:42 2015 -0700
-+++ ./hotspot/src/os/bsd/vm/jsig.c Tue May 05 18:06:56 2015 -0700
+--- ./hotspot/src/os/bsd/vm/jsig.c Mon Jun 01 11:24:34 2015 -0700
++++ ./hotspot/src/os/bsd/vm/jsig.c Sat Jul 18 13:32:27 2015 -0700
@@ -140,9 +140,8 @@
}
@@ -2311,8 +2946,8 @@
static int call_os_sigaction(int sig, const struct sigaction *act,
struct sigaction *oact) {
---- ./hotspot/src/os/bsd/vm/jvm_bsd.cpp Mon Mar 16 11:19:42 2015 -0700
-+++ ./hotspot/src/os/bsd/vm/jvm_bsd.cpp Tue May 05 18:06:56 2015 -0700
+--- ./hotspot/src/os/bsd/vm/jvm_bsd.cpp Mon Jun 01 11:24:34 2015 -0700
++++ ./hotspot/src/os/bsd/vm/jvm_bsd.cpp Sat Jul 18 13:32:27 2015 -0700
@@ -50,6 +50,7 @@
case INTERRUPT_SIGNAL:
case SIGFPE:
@@ -2422,8 +3057,8 @@
+ jio_snprintf(buf, len, "SIG%s", signame);
+ return true;
}
---- ./hotspot/src/os/bsd/vm/jvm_bsd.h Mon Mar 16 11:19:42 2015 -0700
-+++ ./hotspot/src/os/bsd/vm/jvm_bsd.h Tue May 05 18:06:56 2015 -0700
+--- ./hotspot/src/os/bsd/vm/jvm_bsd.h Mon Jun 01 11:24:34 2015 -0700
++++ ./hotspot/src/os/bsd/vm/jvm_bsd.h Sat Jul 18 13:32:27 2015 -0700
@@ -112,20 +112,6 @@
#define SHUTDOWN2_SIGNAL SIGINT
#define SHUTDOWN3_SIGNAL SIGTERM
@@ -2445,19 +3080,19 @@
#endif /* JVM_MD_H */
#endif // OS_BSD_VM_JVM_BSD_H
---- ./hotspot/src/os/bsd/vm/osThread_bsd.cpp Mon Mar 16 11:19:42 2015 -0700
-+++ ./hotspot/src/os/bsd/vm/osThread_bsd.cpp Tue May 05 18:06:56 2015 -0700
+--- ./hotspot/src/os/bsd/vm/osThread_bsd.cpp Mon Jun 01 11:24:34 2015 -0700
++++ ./hotspot/src/os/bsd/vm/osThread_bsd.cpp Sat Jul 18 13:32:27 2015 -0700
@@ -30,7 +30,7 @@
void OSThread::pd_initialize() {
assert(this != NULL, "check");
-#ifdef __APPLE__
-+#if defined(__APPLE__) || defined(__FreeBSD__) || defined(__NetBSD__)
++#if defined(__APPLE__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
_thread_id = 0;
#else
_thread_id = NULL;
---- ./hotspot/src/os/bsd/vm/os_bsd.cpp Mon Mar 16 11:19:42 2015 -0700
-+++ ./hotspot/src/os/bsd/vm/os_bsd.cpp Tue May 05 18:06:56 2015 -0700
+--- ./hotspot/src/os/bsd/vm/os_bsd.cpp Mon Jun 01 11:24:34 2015 -0700
++++ ./hotspot/src/os/bsd/vm/os_bsd.cpp Sat Jul 18 13:32:27 2015 -0700
@@ -103,10 +103,24 @@
# include <sys/ioctl.h>
# include <sys/syscall.h>
@@ -2542,14 +3177,22 @@
Arguments::set_library_path(ld_library_path);
FREE_C_HEAP_ARRAY(char, ld_library_path, mtInternal);
}
-@@ -1197,22 +1241,31 @@
+@@ -1190,29 +1234,38 @@
+ pid_t os::Bsd::gettid() {
+ int retval = -1;
+
+-#ifdef __APPLE__ //XNU kernel
++#if defined(__APPLE__) //XNU kernel
+ // despite the fact mach port is actually not a thread id use it
+ // instead of syscall(SYS_thread_selfid) as it certainly fits to u4
+ retval = ::pthread_mach_thread_np(::pthread_self());
guarantee(retval != 0, "just checking");
return retval;
-#elif __FreeBSD__
- retval = syscall(SYS_thr_self);
-#elif __OpenBSD__
-+#elifdef __FreeBSD__
++#elif defined(__FreeBSD__)
+#if __FreeBSD_version > 900030
+ return ::pthread_getthreadid_np();
+#else
@@ -2557,11 +3200,11 @@
+ thr_self(&tid);
+ return (pid_t)tid;
+#endif
-+#elifdef __OpenBSD__
++#elif defined(__OpenBSD__)
retval = syscall(SYS_getthrid);
-#elif __NetBSD__
- retval = (pid_t) syscall(SYS__lwp_self);
-+#elifdef __NetBSD__
++#elif defined(__NetBSD__)
+ retval = (pid_t) _lwp_self();
#endif
@@ -2794,28 +3437,112 @@
{
int flags = ::fcntl(fd, F_GETFD);
if (flags != -1)
---- ./hotspot/src/os/bsd/vm/vmError_bsd.cpp Mon Mar 16 11:19:42 2015 -0700
-+++ ./hotspot/src/os/bsd/vm/vmError_bsd.cpp Tue May 05 18:06:56 2015 -0700
-@@ -44,7 +44,7 @@
+--- ./hotspot/src/os/bsd/vm/vmError_bsd.cpp Mon Jun 01 11:24:34 2015 -0700
++++ ./hotspot/src/os/bsd/vm/vmError_bsd.cpp Sat Jul 18 13:32:27 2015 -0700
+@@ -33,30 +33,50 @@
+ #include <sys/syscall.h>
+ #include <unistd.h>
+ #include <signal.h>
++#ifdef __FreeBSD__
++#include <limits.h>
++#include <sys/sysctl.h>
++#endif
++
++#define GDB_CMD "gdb"
++
++static void set_debugger(char *buf, int buflen) {
++ int pid = os::current_process_id();
++#ifdef __FreeBSD__
++ char cmd[PATH_MAX+1];
++ int name[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, pid };
++ size_t len = sizeof(cmd);
++ if (sysctl(name, 4, cmd, &len, NULL, 0) == 0 && len > 0) {
++ cmd[len] = '\0';
++ jio_snprintf(buf, buflen, "%s %s %d", GDB_CMD, cmd, pid);
++ } else
++#endif
++ jio_snprintf(buf, buflen, "%s /proc/%d/file %d", GDB_CMD, pid, pid);
++}
+
+ void VMError::show_message_box(char *buf, int buflen) {
+ bool yes;
+ do {
+- error_string(buf, buflen);
+- int len = (int)strlen(buf);
++ intx tid = os::current_thread_id();
++ set_debugger(buf, buflen);
++ int len = (int)strlen(buf) + 1;
++ char *msg = &buf[len];
++ error_string(msg, buflen - len);
++ len += (int)strlen(msg);
+ char *p = &buf[len];
+
jio_snprintf(p, buflen - len,
"\n\n"
"Do you want to debug the problem?\n\n"
- "To debug, run 'gdb /proc/%d/exe %d'; then switch to thread " INTX_FORMAT " (" INTPTR_FORMAT ")\n"
-+ "To debug, run 'gdb /proc/%d/file %d'; then switch to thread " INTX_FORMAT " (" INTPTR_FORMAT ")\n"
- "Enter 'yes' to launch gdb automatically (PATH must include gdb)\n"
+- "Enter 'yes' to launch gdb automatically (PATH must include gdb)\n"
++ "To debug, run '%s'; then switch to thread " INTX_FORMAT " (" INTPTR_FORMAT ")\n"
++ "Enter 'yes' to launch " GDB_CMD " automatically (PATH must include " GDB_CMD ")\n"
"Otherwise, press RETURN to abort...",
- os::current_process_id(), os::current_process_id(),
-@@ -54,7 +54,7 @@
+- os::current_process_id(), os::current_process_id(),
+- os::current_thread_id(), os::current_thread_id());
++ buf, tid, tid);
+
+- yes = os::message_box("Unexpected Error", buf);
++ yes = os::message_box("Unexpected Error", msg);
if (yes) {
// yes, user asked VM to launch debugger
- jio_snprintf(buf, buflen, "gdb /proc/%d/exe %d",
-+ jio_snprintf(buf, buflen, "gdb /proc/%d/file %d",
- os::current_process_id(), os::current_process_id());
-
+- os::current_process_id(), os::current_process_id());
+-
os::fork_and_exec(buf);
---- ./hotspot/src/share/vm/opto/node.cpp Mon Mar 16 11:19:42 2015 -0700
-+++ ./hotspot/src/share/vm/opto/node.cpp Tue May 05 18:06:56 2015 -0700
+ yes = false;
+ }
+--- ./hotspot/src/os/posix/vm/os_posix.cpp Mon Jun 01 11:24:34 2015 -0700
++++ ./hotspot/src/os/posix/vm/os_posix.cpp Sat Jul 18 13:32:27 2015 -0700
+@@ -201,8 +201,13 @@
+ if (rlim.rlim_cur == RLIM_INFINITY) st->print("infinity");
+ else st->print("%d", rlim.rlim_cur);
+
++#ifdef __OpenBSD__
++ st->print(", DATA ");
++ getrlimit(RLIMIT_DATA, &rlim);
++#else
+ st->print(", AS ");
+ getrlimit(RLIMIT_AS, &rlim);
++#endif
+ if (rlim.rlim_cur == RLIM_INFINITY) st->print("infinity");
+ else st->print("%uk", rlim.rlim_cur >> 10);
+ st->cr();
+@@ -222,7 +227,11 @@
+
+ bool os::has_allocatable_memory_limit(julong* limit) {
+ struct rlimit rlim;
++#ifdef __OpenBSD__
++ int getrlimit_res = getrlimit(RLIMIT_DATA, &rlim);
++#else
+ int getrlimit_res = getrlimit(RLIMIT_AS, &rlim);
++#endif
+ // if there was an error when calling getrlimit, assume that there is no limitation
+ // on virtual memory.
+ bool result;
+@@ -706,8 +715,12 @@
+ { SI_USER, "SI_USER", "Signal sent by kill()." },
+ { SI_QUEUE, "SI_QUEUE", "Signal sent by the sigqueue()." },
+ { SI_TIMER, "SI_TIMER", "Signal generated by expiration of a timer set by timer_settime()." },
++#ifdef SI_ASYNCIO
+ { SI_ASYNCIO, "SI_ASYNCIO", "Signal generated by completion of an asynchronous I/O request." },
++#endif
++#ifdef SI_MESGQ
+ { SI_MESGQ, "SI_MESGQ", "Signal generated by arrival of a message on an empty message queue." },
++#endif
+ // Linux specific
+ #ifdef SI_TKILL
+ { SI_TKILL, "SI_TKILL", "Signal sent by tkill (pthread_kill)" },
+--- ./hotspot/src/share/vm/opto/node.cpp Mon Jun 01 11:24:34 2015 -0700
++++ ./hotspot/src/share/vm/opto/node.cpp Sat Jul 18 13:32:27 2015 -0700
@@ -286,6 +286,10 @@
#ifdef _MSC_VER // the IDX_INIT hack falls foul of warning C4355
#pragma warning( disable:4355 ) // 'this' : used in base member initializer list
@@ -2838,8 +3565,26 @@
//------------------------------clone------------------------------------------
// Clone a Node.
---- ./hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp Mon Mar 16 11:19:42 2015 -0700
-+++ ./hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp Tue May 05 18:06:56 2015 -0700
+--- ./hotspot/src/share/vm/runtime/os.cpp Mon Jun 01 11:24:34 2015 -0700
++++ ./hotspot/src/share/vm/runtime/os.cpp Sat Jul 18 13:32:27 2015 -0700
+@@ -420,15 +420,6 @@
+ if (_native_java_library == NULL) {
+ vm_exit_during_initialization("Unable to load native library", ebuf);
+ }
+-
+-#if defined(__OpenBSD__)
+- // Work-around OpenBSD's lack of $ORIGIN support by pre-loading libnet.so
+- // ignore errors
+- if (dll_build_name(buffer, sizeof(buffer), Arguments::get_dll_dir(),
+- "net")) {
+- dll_load(buffer, ebuf, sizeof(ebuf));
+- }
+-#endif
+ }
+ static jboolean onLoaded = JNI_FALSE;
+ if (onLoaded) {
+--- ./hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp Mon Jun 01 11:24:34 2015 -0700
++++ ./hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp Sat Jul 18 13:32:27 2015 -0700
@@ -250,7 +250,7 @@
#endif
@@ -2849,8 +3594,8 @@
#define CAN_USE_NAN_DEFINE 1
#endif
---- ./jdk/make/CompileDemos.gmk Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/make/CompileDemos.gmk Tue May 05 18:07:05 2015 -0700
+--- ./jdk/make/CompileDemos.gmk Tue May 26 13:28:17 2015 -0700
++++ ./jdk/make/CompileDemos.gmk Sat Jul 18 13:32:37 2015 -0700
@@ -323,7 +323,7 @@
$(eval $(call SetupJVMTIDemo,hprof, java_crw_demo, \
-I$(JDK_TOPDIR)/src/share/npt -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/npt \
@@ -2860,8 +3605,8 @@
$(eval $(call SetupJVMTIDemo,minst, agent_util java_crw_demo))
$(eval $(call SetupJVMTIDemo,mtrace, agent_util java_crw_demo))
---- ./jdk/make/CompileJavaClasses.gmk Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/make/CompileJavaClasses.gmk Tue May 05 18:07:05 2015 -0700
+--- ./jdk/make/CompileJavaClasses.gmk Tue May 26 13:28:17 2015 -0700
++++ ./jdk/make/CompileJavaClasses.gmk Sat Jul 18 13:32:37 2015 -0700
@@ -130,23 +130,32 @@
sun/nio/fs/LinuxFileStore.java \
sun/nio/fs/LinuxFileSystem.java \
@@ -2962,14 +3707,14 @@
$(CLOSED_SRC_DIRS), \
INCLUDES := $(SECURITY_PKGS), \
EXCLUDES := $(EXCLUDES), \
---- ./jdk/make/CompileLaunchers.gmk Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/make/CompileLaunchers.gmk Tue May 05 18:07:05 2015 -0700
+--- ./jdk/make/CompileLaunchers.gmk Tue May 26 13:28:17 2015 -0700
++++ ./jdk/make/CompileLaunchers.gmk Sat Jul 18 13:32:37 2015 -0700
@@ -49,7 +49,7 @@
ORIGIN_ROOT := /..
endif
-ifeq ($(OPENJDK_TARGET_OS), macosx)
-+ifneq ($(findstring $(OPENJDK_TARGET_OS), bsd macosx), )
++ifneq ($(findstring $(OPENJDK_TARGET_OS), $(BSD_STATIC_LIBJLI) macosx), )
ORIGIN_ARG := $(call SET_EXECUTABLE_ORIGIN)
else
ORIGIN_ARG := $(call SET_EXECUTABLE_ORIGIN,$(ORIGIN_ROOT)/lib$(OPENJDK_TARGET_CPU_LIBDIR)/jli)
@@ -2982,20 +3727,26 @@
ORIGIN_ARG += $(call SET_EXECUTABLE_ORIGIN,$(ORIGIN_ROOT)/lib$(OPENJDK_TARGET_CPU_LIBDIR))
endif
-@@ -89,6 +89,12 @@
+@@ -89,6 +89,18 @@
$1_LDFLAGS := $3
$1_LDFLAGS_SUFFIX :=
+ ifeq ($(OPENJDK_TARGET_OS), bsd)
-+ $1_LDFLAGS += -Wl,--whole-archive $(JDK_OUTPUTDIR)/objs/libjli_static.a \
-+ -Wl,--no-whole-archive
-+ $1_LDFLAGS_SUFFIX += -pthread
++ ifeq ($(BSD_STATIC_LIBJLI), bsd)
++ $1_LDFLAGS += -Wl,--whole-archive $(JDK_OUTPUTDIR)/objs/libjli_static.a \
++ -Wl,--no-whole-archive
++ $1_LDFLAGS_SUFFIX += -pthread
++ else
++ $1_LDFLAGS += \
++ $(call SET_SHARED_LIBRARY_NAME,$(LIBRARY_PREFIX)$(SHARED_LIBRARY_SUFFIX))
++ $1_LDFLAGS_SUFFIX += -L$(JDK_OUTPUTDIR)/lib$(OPENJDK_TARGET_CPU_LIBDIR)/jli -ljli -pthread
++ endif
+ endif
+
ifeq ($(OPENJDK_TARGET_OS), macosx)
$1_PLIST_FILE := Info-cmdline.plist
ifneq ($(11), )
-@@ -162,9 +168,11 @@
+@@ -162,9 +174,11 @@
-DLIBARCHNAME='"$(OPENJDK_TARGET_CPU_LEGACY)"' \
-DLAUNCHER_NAME='"$(LAUNCHER_NAME)"' \
-DPROGNAME='"$1"' $(DPACKAGEPATH) \
@@ -3007,16 +3758,16 @@
LDFLAGS := $(LDFLAGS_JDKEXE) \
$(ORIGIN_ARG) \
$$($1_LDFLAGS), \
-@@ -195,7 +203,7 @@
+@@ -195,7 +209,7 @@
BUILD_LAUNCHERS += $$(BUILD_LAUNCHER_$1)
- ifneq (,$(filter $(OPENJDK_TARGET_OS), macosx aix))
-+ ifneq (,$(filter $(OPENJDK_TARGET_OS), bsd macosx aix))
++ ifneq (,$(filter $(OPENJDK_TARGET_OS), $(BSD_STATIC_LIBJLI) macosx aix))
$$(BUILD_LAUNCHER_$1): $(JDK_OUTPUTDIR)/objs/libjli_static.a
endif
-@@ -481,6 +489,7 @@
+@@ -481,6 +495,7 @@
CFLAGS_release := -DPRODUCT, \
CFLAGS_linux := -fPIC, \
CFLAGS_solaris := -KPIC, \
@@ -3024,7 +3775,7 @@
CFLAGS_macosx := -fPIC, \
MAPFILE := $(UNPACK_MAPFILE),\
LDFLAGS := $(UNPACKEXE_ZIPOBJS), \
-@@ -543,7 +552,7 @@
+@@ -543,7 +558,7 @@
endif
endif
@@ -3033,7 +3784,7 @@
BUILD_JEXEC := 1
endif # OPENJDK_TARGET_OS
-@@ -579,6 +588,7 @@
+@@ -579,6 +594,7 @@
$(BUILD_JEXEC_INC), \
CFLAGS_linux := -fPIC, \
CFLAGS_solaris := -KPIC, \
@@ -3041,7 +3792,7 @@
LDFLAGS := $(LDFLAGS_JDKEXE) \
$(call SET_SHARED_LIBRARY_NAME,$(LIBRARY_PREFIX)$(SHARED_LIBRARY_SUFFIX)), \
OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/jexec_obj, \
-@@ -595,10 +605,7 @@
+@@ -595,10 +611,7 @@
# The java-rmi.cgi script in bin/ only gets delivered in certain situations
#
JAVA_RMI_CGI := $(JDK_OUTPUTDIR)/bin$(OUTPUT_SUBDIR)/java-rmi.cgi
@@ -3053,7 +3804,7 @@
BUILD_LAUNCHERS += $(JAVA_RMI_CGI)
endif
-@@ -626,7 +633,7 @@
+@@ -626,7 +639,7 @@
LINK_JSPAWNHELPER_OBJECTS := $(JDK_OUTPUTDIR)/objs/libjava/childproc.o
LINK_JSPAWNHELPER_FLAGS :=
@@ -3062,8 +3813,8 @@
BUILD_JSPAWNHELPER := 1
endif
---- ./jdk/make/CopyFiles.gmk Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/make/CopyFiles.gmk Tue May 05 18:07:05 2015 -0700
+--- ./jdk/make/CopyFiles.gmk Tue May 26 13:28:17 2015 -0700
++++ ./jdk/make/CopyFiles.gmk Sat Jul 18 13:32:37 2015 -0700
@@ -29,6 +29,8 @@
ifeq ($(OPENJDK_TARGET_OS), windows)
@@ -3106,8 +3857,8 @@
endif
endif
endif
---- ./jdk/make/Images.gmk Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/make/Images.gmk Tue May 05 18:07:05 2015 -0700
+--- ./jdk/make/Images.gmk Tue May 26 13:28:17 2015 -0700
++++ ./jdk/make/Images.gmk Sat Jul 18 13:32:37 2015 -0700
@@ -234,11 +234,11 @@
endif
@@ -3178,7 +3929,7 @@
################################################################################
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
-+++ ./jdk/make/data/classlist/classlist.bsd Tue May 05 18:07:05 2015 -0700
++++ ./jdk/make/data/classlist/classlist.bsd Sat Jul 18 13:32:37 2015 -0700
@@ -0,0 +1,2803 @@
+com/sun/java/swing/SwingUtilities3
+com/sun/java/swing/plaf/windows/WindowsTabbedPaneUI
@@ -5983,8 +6734,8 @@
+sun/util/resources/en/TimeZoneNames_en
+sun/util/spi/CalendarProvider
+# ca392e7ee7285d72
---- ./jdk/make/gendata/GendataFontConfig.gmk Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/make/gendata/GendataFontConfig.gmk Tue May 05 18:07:05 2015 -0700
+--- ./jdk/make/gendata/GendataFontConfig.gmk Tue May 26 13:28:17 2015 -0700
++++ ./jdk/make/gendata/GendataFontConfig.gmk Sat Jul 18 13:32:37 2015 -0700
@@ -73,6 +73,13 @@
GENDATA_FONT_CONFIG_SRC_PREFIX := aix.
endif
@@ -5999,8 +6750,8 @@
###
$(GENDATA_FONT_CONFIG_DST)/%.src: \
---- ./jdk/make/lib/Awt2dLibraries.gmk Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/make/lib/Awt2dLibraries.gmk Tue May 05 18:07:05 2015 -0700
+--- ./jdk/make/lib/Awt2dLibraries.gmk Tue May 26 13:28:17 2015 -0700
++++ ./jdk/make/lib/Awt2dLibraries.gmk Sat Jul 18 13:32:37 2015 -0700
@@ -309,7 +309,7 @@
debug_trace.c \
debug_util.c
@@ -6047,7 +6798,15 @@
$(eval $(call SetupNativeCompilation,BUILD_LIBAWT_XAWT, \
LIBRARY := awt_xawt, \
OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \
-@@ -690,6 +706,7 @@
+@@ -648,6 +664,7 @@
+ -R/usr/dt/lib$(OPENJDK_TARGET_CPU_ISADIR) \
+ $(call SET_SHARED_LIBRARY_ORIGIN) \
+ $(call SET_SHARED_LIBRARY_ORIGIN,/..), \
++ LDFLAGS_bsd := $(call SET_SHARED_LIBRARY_ORIGIN), \
+ LDFLAGS_SUFFIX := $(LIBAWT_XAWT_LDFLAGS_SUFFIX), \
+ VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \
+ RC_FLAGS := $(RC_FLAGS) \
+@@ -690,6 +707,7 @@
LDFLAGS_SUFFIX_macosx := $(LIBM) -lawt -ljava -ljvm, \
LDFLAGS_SUFFIX_linux := -lm -lawt -ljava -ljvm, \
LDFLAGS_SUFFIX_aix := -lm -lawt -ljava -ljvm,\
@@ -6055,7 +6814,7 @@
VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \
RC_FLAGS := $(RC_FLAGS) \
-D "JDK_FNAME=lcms.dll" \
-@@ -829,6 +846,7 @@
+@@ -829,6 +847,7 @@
LDFLAGS_SUFFIX_linux := -lawt $(LIBM) $(LIBCXX) -ljava -ljvm -lc, \
LDFLAGS_SUFFIX_solaris := -lawt -lawt_xawt -lc $(LIBM) $(LIBCXX) -ljava -ljvm, \
LDFLAGS_SUFFIX_aix := -lawt -lawt_xawt $(LIBM) $(LIBCXX) -ljava -ljvm,\
@@ -6063,7 +6822,7 @@
LDFLAGS_SUFFIX_macosx := -lawt $(LIBM) $(LIBCXX) -undefined dynamic_lookup \
-ljava -ljvm, \
LDFLAGS_SUFFIX_windows := $(WIN_JAVA_LIB) advapi32.lib user32.lib gdi32.lib \
-@@ -972,6 +990,7 @@
+@@ -972,6 +991,7 @@
OPTIMIZATION := LOW, \
CFLAGS := $(CFLAGS_JDKLIB), \
CFLAGS_linux := $(HEADLESS_CFLAG), \
@@ -6071,7 +6830,7 @@
CFLAGS_macosx := -I$(JDK_TOPDIR)/src/solaris/native/sun/awt, \
MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjawt/mapfile-vers, \
LDFLAGS := $(LDFLAGS_JDKLIB) \
-@@ -980,6 +999,7 @@
+@@ -980,6 +1000,7 @@
LDFLAGS_SUFFIX_linux := $(JAWT_LIBS) $(LDFLAGS_JDKLIB_SUFFIX), \
LDFLAGS_SUFFIX_aix := $(JAWT_LIBS) $(LDFLAGS_JDKLIB_SUFFIX),\
LDFLAGS_SUFFIX_solaris := $(JAWT_LIBS) $(LDFLAGS_JDKLIB_SUFFIX) -lXrender, \
@@ -6079,7 +6838,7 @@
LDFLAGS_SUFFIX_macosx := -Xlinker -rpath -Xlinker @loader_path $(JAWT_LIBS) \
-framework Cocoa $(LDFLAGS_JDKLIB_SUFFIX), \
OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libjawt, \
-@@ -1181,6 +1201,7 @@
+@@ -1181,6 +1202,7 @@
LDFLAGS_SUFFIX_linux := -ljvm -lawt -lm $(LIBDL) -ljava, \
LDFLAGS_SUFFIX_aix := -ljvm -lawt -ljava,\
LDFLAGS_SUFFIX_solaris := $(LIBDL) -ljvm -lawt -lm -ljava $(LIBCXX) -lc, \
@@ -6087,26 +6846,38 @@
OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libawt_headless, \
DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES)))
-@@ -1234,6 +1255,8 @@
+@@ -1200,7 +1222,7 @@
+ $(JDK_TOPDIR)/src/share/native/sun/awt/splashscreen
+
+ ifeq ($(USE_EXTERNAL_LIBGIF), true)
+- GIFLIB_LDFLAGS := -lgif
++ GIFLIB_LDFLAGS += -lgif
+ else
+ LIBSPLASHSCREEN_DIRS += $(JDK_TOPDIR)/src/share/native/sun/awt/giflib
+ GIFLIB_CFLAGS := -I$(JDK_TOPDIR)/src/share/native/sun/awt/giflib
+@@ -1234,6 +1256,11 @@
LIBSPLASHSCREEN_CFLAGS += -DWITH_WIN32
else ifeq ($(OPENJDK_TARGET_OS), solaris)
LIBSPLASHSCREEN_CFLAGS += -DWITH_X11 -I$(OPENWIN_HOME)/include -I$(OPENWIN_HOME)/include/X11/extensions
+ else ifeq ($(OPENJDK_TARGET_OS), bsd)
-+ LIBSPLASHSCREEN_CFLAGS += -DWITH_X11 $(X_CFLAGS) -DLIBICONV_PLUG
++ LIBSPLASHSCREEN_CFLAGS += -DWITH_X11 $(X_CFLAGS) -I$(PACKAGE_PATH)/include
++ ifneq ($(OPENJDK_TARGET_OS_VENDOR), openbsd)
++ LIBSPLASHSCREEN_CFLAGS += -DLIBICONV_PLUG
++ endif
else
LIBSPLASHSCREEN_CFLAGS += -DWITH_X11 $(X_CFLAGS)
endif
-@@ -1257,6 +1280,8 @@
+@@ -1257,6 +1284,8 @@
else ifeq ($(OPENJDK_TARGET_OS), solaris)
# Solaris still uses OPENWIN_LIB ..
LIBSPLASHSCREEN_LDFLAGS_SUFFIX += -L$(OPENWIN_LIB)$(OPENJDK_TARGET_CPU_ISADIR) -lX11 -lXext $(LIBM) -lpthread
+ else ifeq ($(OPENJDK_TARGET_OS), bsd)
-+ LIBSPLASHSCREEN_LDFLAGS_SUFFIX += $(X_LIBS) -lX11 -lXext $(LIBM) -liconv -pthread
++ LIBSPLASHSCREEN_LDFLAGS_SUFFIX += $(X_LIBS) -lX11 -lXext $(LIBM) -L$(PACKAGE_PATH)/lib -liconv -pthread
else # .. all other Unixes can use X_LIBS
LIBSPLASHSCREEN_LDFLAGS_SUFFIX += $(X_LIBS) -lX11 -lXext $(LIBM) -lpthread
endif
---- ./jdk/make/lib/CoreLibraries.gmk Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/make/lib/CoreLibraries.gmk Tue May 05 18:07:05 2015 -0700
+--- ./jdk/make/lib/CoreLibraries.gmk Tue May 26 13:28:17 2015 -0700
++++ ./jdk/make/lib/CoreLibraries.gmk Sat Jul 18 13:32:37 2015 -0700
@@ -82,7 +82,7 @@
endif
@@ -6160,27 +6931,41 @@
BUILD_LIBRARIES += $(BUILD_LIBJLI_STATIC)
-else ifeq ($(OPENJDK_TARGET_OS), macosx)
-+else ifneq ($(findstring $(OPENJDK_TARGET_OS), bsd macosx), )
++else ifneq ($(findstring $(OPENJDK_TARGET_OS), $(BSD_STATIC_LIBJLI) macosx), )
#
- # On macosx they do partial (incremental) linking of libjli_static.a
+ # On BSD they do partial (incremental) linking of libjli_static.a
# code it here...rather than add support to NativeCompilation
# as this is first time I see it
$(eval $(call SetupNativeCompilation,BUILD_LIBJLI_STATIC, \
-@@ -512,9 +516,11 @@
+@@ -503,6 +507,13 @@
+
+ ##########################################################################################
+
++ifeq ($(OPENJDK_TARGET_OS), bsd)
++ BSD_ICONV_CFLAGS:= -I$(PACKAGE_PATH)/include
++ ifneq ($(OPENJDK_TARGET_OS_VENDOR), openbsd)
++ BSD_ICONV_CFLAGS += -DLIBICONV_PLUG
++ endif
++endif
++
+ $(eval $(call SetupNativeCompilation,BUILD_LIBNPT, \
+ LIBRARY := npt, \
+ OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \
+@@ -512,9 +523,11 @@
CFLAGS := $(CFLAGS_JDKLIB) \
-I$(JDK_TOPDIR)/src/share/npt \
-I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/npt, \
-+ CFLAGS_bsd := -DLIBICONV_PLUG, \
++ CFLAGS_bsd := $(BSD_ICONV_CFLAGS), \
MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libnpt/mapfile-vers, \
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
-+ LDFLAGS_bsd := -liconv, \
++ LDFLAGS_bsd := -L$(PACKAGE_PATH)/lib -liconv, \
LDFLAGS_macosx := -liconv, \
LDFLAGS_SUFFIX_windows := -export:nptInitialize -export:nptTerminate, \
LDFLAGS_SUFFIX_solaris := -lc, \
---- ./jdk/make/lib/NetworkingLibraries.gmk Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/make/lib/NetworkingLibraries.gmk Tue May 05 18:07:05 2015 -0700
+--- ./jdk/make/lib/NetworkingLibraries.gmk Tue May 26 13:28:17 2015 -0700
++++ ./jdk/make/lib/NetworkingLibraries.gmk Sat Jul 18 13:32:37 2015 -0700
@@ -42,7 +42,7 @@
LIBNET_EXCLUDE_FILES += linux_close.c
endif
@@ -6190,7 +6975,18 @@
LIBNET_EXCLUDE_FILES += bsd_close.c
endif
-@@ -74,6 +74,7 @@
+@@ -58,6 +58,10 @@
+ NTLMAuthSequence.c NetworkInterface_winXP.c
+ endif
+
++ifneq ($(DONT_ENABLE_IPV6),)
++ LIBNET_CFLAGS += -DDONT_ENABLE_IPV6
++endif
++
+ $(eval $(call SetupNativeCompilation,BUILD_LIBNET, \
+ LIBRARY := net, \
+ OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \
+@@ -74,6 +78,7 @@
LDFLAGS_SUFFIX_solaris := -ljvm -ljava -lnsl -lsocket $(LIBDL) -lc, \
LDFLAGS_SUFFIX_linux := $(LIBDL) -ljvm -lpthread -ljava, \
LDFLAGS_SUFFIX_aix := $(LIBDL) -ljvm -ljava,\
@@ -6198,8 +6994,8 @@
LDFLAGS_SUFFIX_windows := ws2_32.lib jvm.lib secur32.lib iphlpapi.lib \
delayimp.lib $(WIN_JAVA_LIB) advapi32.lib \
-DELAYLOAD:secur32.dll -DELAYLOAD:iphlpapi.dll, \
---- ./jdk/make/lib/NioLibraries.gmk Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/make/lib/NioLibraries.gmk Tue May 05 18:07:05 2015 -0700
+--- ./jdk/make/lib/NioLibraries.gmk Tue May 26 13:28:17 2015 -0700
++++ ./jdk/make/lib/NioLibraries.gmk Sat Jul 18 13:32:37 2015 -0700
@@ -77,9 +77,28 @@
UnixNativeDispatcher.c
endif
@@ -6242,7 +7038,7 @@
ifeq ($(OPENJDK_TARGET_OS_API), posix)
ifeq (, $(filter $(OPENJDK_TARGET_OS), macosx aix))
-+ ifneq ($(shell uname -s), NetBSD) # Not for NetBSD
++ ifeq (, $(filter $(OPENJDK_TARGET_OS_VENDOR), netbsd openbsd))
# Suppress unused parameters required by exported JNI functions.
SCTP_WERROR := -Werror -Wno-error=unused-parameter
@@ -6260,8 +7056,8 @@
endif
+ endif
endif
---- ./jdk/make/lib/ServiceabilityLibraries.gmk Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/make/lib/ServiceabilityLibraries.gmk Tue May 05 18:07:05 2015 -0700
+--- ./jdk/make/lib/ServiceabilityLibraries.gmk Tue May 26 13:28:17 2015 -0700
++++ ./jdk/make/lib/ServiceabilityLibraries.gmk Sat Jul 18 13:32:37 2015 -0700
@@ -34,7 +34,7 @@
ifneq ($(OPENJDK_TARGET_OS), linux)
LIBATTACH_EXCLUDE_FILES += LinuxVirtualMachine.c
@@ -6279,40 +7075,52 @@
LDFLAGS_SUFFIX_windows := $(LDFLAGS_JDKLIB_SUFFIX) -export:jdwpTransport_OnLoad ws2_32.lib, \
VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \
RC_FLAGS := $(RC_FLAGS) \
-@@ -255,12 +256,15 @@
+@@ -245,6 +246,19 @@
+ LIBINSTRUMENT_CFLAGS += -Dstrcasecmp=stricmp
+ endif
+
++ifeq ($(OPENJDK_TARGET_OS), bsd)
++ ifeq ($(BSD_STATIC_LIBJLI), bsd)
++ LIBINSTRUMENT_LDFLAGS += -Xlinker --whole-archive $(JDK_OUTPUTDIR)/objs/libjli_static.a \
++ -Xlinker --no-whole-archive
++ else
++ LIBINSTRUMENT_LDFLAGS += $(call SET_SHARED_LIBRARY_ORIGIN,/jli)
++ endif
++ BSD_ICONV_CFLAGS:= -I$(PACKAGE_PATH)/include
++ ifneq ($(OPENJDK_TARGET_OS_VENDOR), openbsd)
++ BSD_ICONV_CFLAGS += -DLIBICONV_PLUG
++ endif
++endif
++
+ $(eval $(call SetupNativeCompilation,BUILD_LIBINSTRUMENT, \
+ LIBRARY := instrument, \
+ OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \
+@@ -255,6 +269,7 @@
CFLAGS := $(LIBINSTRUMENT_CFLAGS), \
CFLAGS_debug := -DJPLIS_LOGGING, \
CFLAGS_release := -DNO_JPLIS_LOGGING, \
-+ CFLAGS_bsd := -DLIBICONV_PLUG, \
++ CFLAGS_bsd := $(BSD_ICONV_CFLAGS), \
MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libinstrument/mapfile-vers, \
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN) \
- $(LIBINSTRUMENT_LDFLAGS), \
- LDFLAGS_linux := $(call SET_SHARED_LIBRARY_ORIGIN,/jli), \
- LDFLAGS_solaris := $(call SET_SHARED_LIBRARY_ORIGIN,/jli), \
-+ LDFLAGS_bsd := -Xlinker --whole-archive $(JDK_OUTPUTDIR)/objs/libjli_static.a \
-+ -Xlinker --no-whole-archive, \
- LDFLAGS_macosx := -Xlinker -all_load $(JDK_OUTPUTDIR)/objs/libjli_static.a \
- -framework Cocoa -framework Security -framework ApplicationServices, \
- LDFLAGS_SUFFIX := $(LIBINSTRUMENT_LDFLAGS_SUFFIX), \
-@@ -268,6 +272,7 @@
+@@ -268,6 +283,7 @@
LDFLAGS_SUFFIX_solaris := $(LIBZ) -L $(INSTALL_LIBRARIES_HERE)/jli -ljli $(LIBDL) -lc, \
LDFLAGS_SUFFIX_linux := $(LIBZ) -L $(INSTALL_LIBRARIES_HERE)/jli -ljli $(LIBDL), \
LDFLAGS_SUFFIX_aix := $(LIBZ) -L$(JDK_OUTPUTDIR)/objs -ljli_static $(LIBDL),\
-+ LDFLAGS_SUFFIX_bsd := -liconv $(LIBZ), \
++ LDFLAGS_SUFFIX_bsd := -L$(PACKAGE_PATH)/lib -liconv $(LIBZ), \
VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \
RC_FLAGS := $(RC_FLAGS) \
-D "JDK_FNAME=instrument.dll" \
-@@ -276,7 +281,7 @@
+@@ -276,7 +292,7 @@
OBJECT_DIR := $(LIBINSTRUMENT_DIR), \
DEBUG_SYMBOLS := true))
-ifneq (, $(findstring $(OPENJDK_TARGET_OS), macosx windows aix))
-+ifneq (, $(findstring $(OPENJDK_TARGET_OS), bsd macosx windows aix))
++ifneq (, $(findstring $(OPENJDK_TARGET_OS), $(BSD_STATIC_LIBJLI) macosx windows aix))
$(BUILD_LIBINSTRUMENT): $(JDK_OUTPUTDIR)/objs/$(LIBRARY_PREFIX)jli_static$(STATIC_LIBRARY_SUFFIX)
else
$(BUILD_LIBINSTRUMENT): $(INSTALL_LIBRARIES_HERE)/jli/$(LIBRARY_PREFIX)jli$(SHARED_LIBRARY_SUFFIX)
-@@ -302,12 +307,16 @@
+@@ -302,12 +318,16 @@
BUILD_LIBMANAGEMENT_EXCLUDES += LinuxOperatingSystem.c
endif
@@ -6330,7 +7138,7 @@
ifeq ($(ENABLE_DEBUG_SYMBOLS), true)
LIBMANAGEMENT_OPTIMIZATION := LOW
endif
-@@ -359,7 +368,7 @@
+@@ -359,7 +379,7 @@
BUILD_LIBHPROF_LDFLAGS :=
LIBHPROF_OPTIMIZATION := HIGHEST
@@ -6339,21 +7147,23 @@
ifeq ($(ENABLE_DEBUG_SYMBOLS), true)
LIBHPROF_OPTIMIZATION := LOW
endif
---- ./jdk/make/lib/SoundLibraries.gmk Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/make/lib/SoundLibraries.gmk Tue May 05 18:07:05 2015 -0700
-@@ -75,6 +75,11 @@
+--- ./jdk/make/lib/SoundLibraries.gmk Tue May 26 13:28:17 2015 -0700
++++ ./jdk/make/lib/SoundLibraries.gmk Sat Jul 18 13:32:37 2015 -0700
+@@ -75,6 +75,13 @@
LIBJSOUND_CFLAGS += -DX_PLATFORM=X_AIX
endif # OPENJDK_TARGET_OS aix
+ifeq ($(OPENJDK_TARGET_OS), bsd)
-+ EXTRA_SOUND_JNI_LIBS += jsoundalsa
++ ifneq ($(OPENJDK_TARGET_OS_VENDOR), openbsd)
++ EXTRA_SOUND_JNI_LIBS += jsoundalsa
++ endif # OPENJDK_TARGET_OS_VENDOR openbsd
+ LIBJSOUND_CFLAGS += -DX_PLATFORM=X_BSD
+endif # OPENJDK_TARGET_OS bsd
+
ifeq ($(OPENJDK_TARGET_OS), macosx)
LIBJSOUND_LANG := C++
LIBJSOUND_CFLAGS += -DX_PLATFORM=X_MACOSX \
-@@ -196,12 +201,14 @@
+@@ -196,12 +203,14 @@
CFLAGS := $(CFLAGS_JDKLIB) $(ALSA_CFLAGS) \
$(LIBJSOUND_CFLAGS) \
-DUSE_DAUDIO=TRUE \
@@ -6370,8 +7180,8 @@
LDFLAGS_SUFFIX := $(ALSA_LIBS) -ljava -ljvm, \
OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libjsoundalsa, \
DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES)))
---- ./jdk/make/mapfiles/launchers/mapfile-x86 Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/make/mapfiles/launchers/mapfile-x86 Tue May 05 18:07:05 2015 -0700
+--- ./jdk/make/mapfiles/launchers/mapfile-x86 Tue May 26 13:28:17 2015 -0700
++++ ./jdk/make/mapfiles/launchers/mapfile-x86 Sat Jul 18 13:32:37 2015 -0700
@@ -33,6 +33,7 @@
environ; # Public symbols and required by Java run time
_environ;
@@ -6380,8 +7190,8 @@
___Argv; # The following are private, but as they are
_start; # exported from ctr1/crtn, the clever hacker
_init; # might know about them. However note, that
---- ./jdk/make/mapfiles/launchers/mapfile-x86_64 Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/make/mapfiles/launchers/mapfile-x86_64 Tue May 05 18:07:05 2015 -0700
+--- ./jdk/make/mapfiles/launchers/mapfile-x86_64 Tue May 26 13:28:17 2015 -0700
++++ ./jdk/make/mapfiles/launchers/mapfile-x86_64 Sat Jul 18 13:32:37 2015 -0700
@@ -33,6 +33,7 @@
environ; # Public symbols and required by Java run time
_environ;
@@ -6391,7 +7201,7 @@
local:
*;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
-+++ ./jdk/make/mapfiles/libattach/mapfile-bsd Tue May 05 18:07:05 2015 -0700
++++ ./jdk/make/mapfiles/libattach/mapfile-bsd Sat Jul 18 13:32:37 2015 -0700
@@ -0,0 +1,42 @@
+#
+# Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
@@ -6436,7 +7246,7 @@
+ *;
+};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
-+++ ./jdk/make/mapfiles/libnio/mapfile-bsd Tue May 05 18:07:05 2015 -0700
++++ ./jdk/make/mapfiles/libnio/mapfile-bsd Sat Jul 18 13:32:37 2015 -0700
@@ -0,0 +1,195 @@
+#
+# Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -6633,8 +7443,8 @@
+ local:
+ *;
+};
---- ./jdk/make/mapfiles/libunpack/mapfile-vers-unpack200 Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/make/mapfiles/libunpack/mapfile-vers-unpack200 Tue May 05 18:07:05 2015 -0700
+--- ./jdk/make/mapfiles/libunpack/mapfile-vers-unpack200 Tue May 26 13:28:17 2015 -0700
++++ ./jdk/make/mapfiles/libunpack/mapfile-vers-unpack200 Sat Jul 18 13:32:37 2015 -0700
@@ -26,6 +26,9 @@
# Define library interface.
@@ -6646,7 +7456,7 @@
*;
};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
-+++ ./jdk/make/netbeans/common/bsd-sources.ent Tue May 05 18:07:05 2015 -0700
++++ ./jdk/make/netbeans/common/bsd-sources.ent Sat Jul 18 13:32:37 2015 -0700
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
@@ -6694,7 +7504,7 @@
+ <location>${root}/src/bsd/classes</location>
+</source-folder>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
-+++ ./jdk/make/netbeans/common/bsd-view.ent Tue May 05 18:07:05 2015 -0700
++++ ./jdk/make/netbeans/common/bsd-view.ent Sat Jul 18 13:32:37 2015 -0700
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
@@ -6735,8 +7545,8 @@
+ <includes>${includes}</includes>
+ <excludes>${excludes}</excludes>
+</source-folder>
---- ./jdk/make/netbeans/common/java-data-native.ent Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/make/netbeans/common/java-data-native.ent Tue May 05 18:07:05 2015 -0700
+--- ./jdk/make/netbeans/common/java-data-native.ent Tue May 26 13:28:17 2015 -0700
++++ ./jdk/make/netbeans/common/java-data-native.ent Sat Jul 18 13:32:37 2015 -0700
@@ -34,6 +34,7 @@
<java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/4">
<compilation-unit>
@@ -6745,8 +7555,8 @@
<package-root>${root}/src/macosx/classes</package-root>
<package-root>${root}/src/solaris/classes</package-root>
<package-root>${root}/src/windows/classes</package-root>
---- ./jdk/make/netbeans/common/make.xml Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/make/netbeans/common/make.xml Tue May 05 18:07:05 2015 -0700
+--- ./jdk/make/netbeans/common/make.xml Tue May 26 13:28:17 2015 -0700
++++ ./jdk/make/netbeans/common/make.xml Sat Jul 18 13:32:37 2015 -0700
@@ -32,16 +32,21 @@
-->
@@ -6781,8 +7591,8 @@
<macrodef name="make-run">
<attribute name="target"/>
<attribute name="dir"/>
---- ./jdk/make/netbeans/j2se/nbproject/project.xml Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/make/netbeans/j2se/nbproject/project.xml Tue May 05 18:07:05 2015 -0700
+--- ./jdk/make/netbeans/j2se/nbproject/project.xml Tue May 26 13:28:17 2015 -0700
++++ ./jdk/make/netbeans/j2se/nbproject/project.xml Sat Jul 18 13:32:37 2015 -0700
@@ -34,6 +34,7 @@
<!DOCTYPE project [
<!ENTITY properties SYSTEM "../../common/properties.ent">
@@ -6815,8 +7625,8 @@
&macosx-view;
&unix-view;
&windows-view;
---- ./jdk/make/netbeans/world/nbproject/project.xml Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/make/netbeans/world/nbproject/project.xml Tue May 05 18:07:05 2015 -0700
+--- ./jdk/make/netbeans/world/nbproject/project.xml Tue May 26 13:28:17 2015 -0700
++++ ./jdk/make/netbeans/world/nbproject/project.xml Sat Jul 18 13:32:37 2015 -0700
@@ -34,12 +34,14 @@
<!DOCTYPE project [
<!ENTITY properties SYSTEM "../../common/properties.ent">
@@ -6849,7 +7659,7 @@
&unix-view;
&windows-view;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
-+++ ./jdk/src/bsd/classes/java/net/DefaultInterface.java Tue May 05 18:07:05 2015 -0700
++++ ./jdk/src/bsd/classes/java/net/DefaultInterface.java Sat Jul 18 13:32:37 2015 -0700
@@ -0,0 +1,97 @@
+/*
+ * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -6949,7 +7759,7 @@
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
-+++ ./jdk/src/bsd/classes/sun/nio/ch/DefaultSelectorProvider.java Tue May 05 18:07:05 2015 -0700
++++ ./jdk/src/bsd/classes/sun/nio/ch/DefaultSelectorProvider.java Sat Jul 18 13:32:37 2015 -0700
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
@@ -7000,7 +7810,7 @@
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
-+++ ./jdk/src/bsd/classes/sun/nio/ch/KQueueArrayWrapper.java Tue May 05 18:07:05 2015 -0700
++++ ./jdk/src/bsd/classes/sun/nio/ch/KQueueArrayWrapper.java Sat Jul 18 13:32:37 2015 -0700
@@ -0,0 +1,213 @@
+/*
+ * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -7216,7 +8026,7 @@
+ private static native void interrupt(int fd);
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
-+++ ./jdk/src/bsd/classes/sun/nio/ch/KQueueSelectorImpl.java Tue May 05 18:07:05 2015 -0700
++++ ./jdk/src/bsd/classes/sun/nio/ch/KQueueSelectorImpl.java Sat Jul 18 13:32:37 2015 -0700
@@ -0,0 +1,249 @@
+/*
+ * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -7468,7 +8278,7 @@
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
-+++ ./jdk/src/bsd/classes/sun/nio/ch/KQueueSelectorProvider.java Tue May 05 18:07:05 2015 -0700
++++ ./jdk/src/bsd/classes/sun/nio/ch/KQueueSelectorProvider.java Sat Jul 18 13:32:37 2015 -0700
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
@@ -7514,8 +8324,50 @@
+ return new KQueueSelectorImpl(this);
+ }
+}
+--- ./jdk/src/bsd/doc/man/javah.1 Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/bsd/doc/man/javah.1 Sat Jul 18 13:32:37 2015 -0700
+@@ -110,7 +110,7 @@
+
+ \&.:\fIyour-path\fR
+
+-Example: \f3\&.:/home/avh/classes:/usr/local/java/classes\fR
++Example: \f3\&.:/home/avh/classes:/usr/local/share/java/classes\fR
+
+ \fIWindows\fR:
+
+--- ./jdk/src/bsd/doc/man/rmic.1 Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/bsd/doc/man/rmic.1 Sat Jul 18 13:32:37 2015 -0700
+@@ -93,7 +93,7 @@
+ .TP
+ -classpath path
+ .br
+-Specifies the path the \f3rmic\fR command uses to look up classes\&. This option overrides the default or the \f3CLASSPATH\fR environment variable when it is set\&. Directories are separated by colons\&. The general format for path is: \f3\&.:<your_path>\fR, for example: \f3\&.:/usr/local/java/classes\fR\&.
++Specifies the path the \f3rmic\fR command uses to look up classes\&. This option overrides the default or the \f3CLASSPATH\fR environment variable when it is set\&. Directories are separated by colons\&. The general format for path is: \f3\&.:<your_path>\fR, for example: \f3\&.:/usr/local/share/java/classes\fR\&.
+ .TP
+ -d \fIdirectory\fR
+ .br
+@@ -207,7 +207,7 @@
+ .SH ENVIRONMENT\ VARIABLES
+ .TP
+ CLASSPATH
+-Used to provide the system a path to user-defined classes\&. Directories are separated by colons, for example: \f3\&.:/usr/local/java/classes\fR\&.
++Used to provide the system a path to user-defined classes\&. Directories are separated by colons, for example: \f3\&.:/usr/local/share/java/classes\fR\&.
+ .SH SEE\ ALSO
+ .TP 0.2i
+ \(bu
+--- ./jdk/src/bsd/doc/man/rmid.1 Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/bsd/doc/man/rmid.1 Sat Jul 18 13:32:37 2015 -0700
+@@ -301,7 +301,7 @@
+ .SH ENVIRONMENT\ VARIABLES
+ .TP
+ CLASSPATH
+-Used to provide the system a path to user-defined classes\&. Directories are separated by colons, for example: \f3\&.:/usr/local/java/classes\fR\&.
++Used to provide the system a path to user-defined classes\&. Directories are separated by colons, for example: \f3\&.:/usr/local/share/java/classes\fR\&.
+ .SH SEE\ ALSO
+ .TP 0.2i
+ \(bu
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
-+++ ./jdk/src/bsd/native/sun/nio/ch/KQueueArrayWrapper.c Tue May 05 18:07:05 2015 -0700
++++ ./jdk/src/bsd/native/sun/nio/ch/KQueueArrayWrapper.c Sat Jul 18 13:32:37 2015 -0700
@@ -0,0 +1,171 @@
+/*
+ * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
@@ -7688,7 +8540,7 @@
+ }
+}
+
---- ./jdk/src/macosx/classes/java/net/DefaultInterface.java Tue Mar 17 00:09:12 2015 +0300
+--- ./jdk/src/macosx/classes/java/net/DefaultInterface.java Tue May 26 13:28:17 2015 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,97 +0,0 @@
-/*
@@ -7788,7 +8640,7 @@
- return (ppp != null) ? ppp : loopback;
- }
-}
---- ./jdk/src/macosx/classes/sun/nio/ch/DefaultSelectorProvider.java Tue Mar 17 00:09:12 2015 +0300
+--- ./jdk/src/macosx/classes/sun/nio/ch/DefaultSelectorProvider.java Tue May 26 13:28:17 2015 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-/*
@@ -7839,7 +8691,7 @@
- }
-
-}
---- ./jdk/src/macosx/classes/sun/nio/ch/KQueueArrayWrapper.java Tue Mar 17 00:09:12 2015 +0300
+--- ./jdk/src/macosx/classes/sun/nio/ch/KQueueArrayWrapper.java Tue May 26 13:28:17 2015 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,213 +0,0 @@
-/*
@@ -8055,7 +8907,7 @@
- long timeout);
- private static native void interrupt(int fd);
-}
---- ./jdk/src/macosx/classes/sun/nio/ch/KQueueSelectorImpl.java Tue Mar 17 00:09:12 2015 +0300
+--- ./jdk/src/macosx/classes/sun/nio/ch/KQueueSelectorImpl.java Tue May 26 13:28:17 2015 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,249 +0,0 @@
-/*
@@ -8307,7 +9159,7 @@
- return this;
- }
-}
---- ./jdk/src/macosx/classes/sun/nio/ch/KQueueSelectorProvider.java Tue Mar 17 00:09:12 2015 +0300
+--- ./jdk/src/macosx/classes/sun/nio/ch/KQueueSelectorProvider.java Tue May 26 13:28:17 2015 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-/*
@@ -8354,7 +9206,7 @@
- return new KQueueSelectorImpl(this);
- }
-}
---- ./jdk/src/macosx/native/sun/nio/ch/KQueueArrayWrapper.c Tue Mar 17 00:09:12 2015 +0300
+--- ./jdk/src/macosx/native/sun/nio/ch/KQueueArrayWrapper.c Tue May 26 13:28:17 2015 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,171 +0,0 @@
-/*
@@ -8528,8 +9380,8 @@
- }
-}
-
---- ./jdk/src/share/bin/jli_util.h Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/share/bin/jli_util.h Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/share/bin/jli_util.h Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/share/bin/jli_util.h Sat Jul 18 13:32:37 2015 -0700
@@ -87,7 +87,7 @@
#define _LARGFILE64_SOURCE
#define JLI_Lseek lseek64
@@ -8539,8 +9391,8 @@
#define JLI_Lseek lseek
#endif
#ifdef _AIX
---- ./jdk/src/share/classes/sun/awt/FontConfiguration.java Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/share/classes/sun/awt/FontConfiguration.java Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/share/classes/sun/awt/FontConfiguration.java Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/share/classes/sun/awt/FontConfiguration.java Sat Jul 18 13:32:37 2015 -0700
@@ -1146,7 +1146,7 @@
*/
HashMap<String, Boolean> existsMap;
@@ -8550,8 +9402,8 @@
return false;
} else if (existsMap == null) {
existsMap = new HashMap<String, Boolean>();
---- ./jdk/src/share/classes/sun/awt/OSInfo.java Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/share/classes/sun/awt/OSInfo.java Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/share/classes/sun/awt/OSInfo.java Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/share/classes/sun/awt/OSInfo.java Sat Jul 18 13:32:37 2015 -0700
@@ -39,6 +39,7 @@
WINDOWS,
LINUX,
@@ -8571,8 +9423,8 @@
if (osName.contains("OS X")) {
return MACOSX;
}
---- ./jdk/src/share/classes/sun/font/FontUtilities.java Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/share/classes/sun/font/FontUtilities.java Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/share/classes/sun/font/FontUtilities.java Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/share/classes/sun/font/FontUtilities.java Sat Jul 18 13:32:37 2015 -0700
@@ -48,6 +48,8 @@
public static boolean isLinux;
@@ -8591,8 +9443,8 @@
isMacOSX = osName.contains("OS X"); // TODO: MacOSX
String t2kStr = System.getProperty("sun.java2d.font.scaler");
---- ./jdk/src/share/classes/sun/font/SunFontManager.java Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/share/classes/sun/font/SunFontManager.java Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/share/classes/sun/font/SunFontManager.java Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/share/classes/sun/font/SunFontManager.java Sat Jul 18 13:32:37 2015 -0700
@@ -418,7 +418,7 @@
* registerFonts method as on-screen these JRE fonts
* always go through the T2K rasteriser.
@@ -8602,8 +9454,8 @@
/* Linux font configuration uses these fonts */
registerFontDir(jreFontDirName);
}
---- ./jdk/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java Sat Jul 18 13:32:37 2015 -0700
@@ -1298,7 +1298,7 @@
String osName = AccessController.doPrivileged(
new GetPropertyAction("os.name"));
@@ -8613,19 +9465,44 @@
charset("x-COMPOUND_TEXT", "COMPOUND_TEXT",
new String[] {
"COMPOUND_TEXT", // JDK historical
---- ./jdk/src/share/classes/sun/print/PSPrinterJob.java Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/share/classes/sun/print/PSPrinterJob.java Tue May 05 18:07:05 2015 -0700
-@@ -1587,7 +1587,7 @@
+--- ./jdk/src/share/classes/sun/print/PSPrinterJob.java Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/share/classes/sun/print/PSPrinterJob.java Sat Jul 18 13:32:37 2015 -0700
+@@ -1587,9 +1587,31 @@
}
String osname = System.getProperty("os.name");
- if (osname.equals("Linux") || osname.contains("OS X")) {
+ if (osname.equals("Linux") || osname.endsWith("BSD") || osname.contains("OS X")) {
++ String lprPath = "/usr/bin/lpr";
++ if (osname.equals("FreeBSD")) {
++ final PrintService pservice = getPrintService();
++ Boolean isIPPPrinter =
++ (Boolean)java.security.AccessController.doPrivileged(
++ new java.security.PrivilegedAction() {
++ public Object run() {
++ try {
++ Class psClass =
++ Class.forName("sun.print.IPPPrintService");
++ if (psClass.isInstance(pservice)) {
++ return Boolean.TRUE;
++ }
++ } catch (Throwable t) {
++ }
++ return Boolean.FALSE;
++ }
++ });
++ if (isIPPPrinter) {
++ lprPath = "/usr/local/bin/lpr";
++ }
++ }
execCmd = new String[ncomps];
- execCmd[n++] = "/usr/bin/lpr";
+- execCmd[n++] = "/usr/bin/lpr";
++ execCmd[n++] = lprPath;
if ((pFlags & PRINTER) != 0) {
---- ./jdk/src/share/classes/sun/security/jgss/GSSManagerImpl.java Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/share/classes/sun/security/jgss/GSSManagerImpl.java Tue May 05 18:07:05 2015 -0700
+ execCmd[n++] = "-P" + printer;
+ }
+--- ./jdk/src/share/classes/sun/security/jgss/GSSManagerImpl.java Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/share/classes/sun/security/jgss/GSSManagerImpl.java Sat Jul 18 13:32:37 2015 -0700
@@ -48,6 +48,7 @@
public Boolean run() {
String osname = System.getProperty("os.name");
@@ -8634,8 +9511,8 @@
osname.contains("OS X") ||
osname.startsWith("Linux")) {
return new Boolean(System.getProperty
---- ./jdk/src/share/classes/sun/security/jgss/wrapper/SunNativeProvider.java Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/share/classes/sun/security/jgss/wrapper/SunNativeProvider.java Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/share/classes/sun/security/jgss/wrapper/SunNativeProvider.java Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/share/classes/sun/security/jgss/wrapper/SunNativeProvider.java Sat Jul 18 13:32:37 2015 -0700
@@ -90,6 +90,12 @@
"libgssapi_krb5.so",
"libgssapi_krb5.so.2",
@@ -8649,8 +9526,8 @@
} else if (osname.contains("OS X")) {
gssLibs = new String[]{
"libgssapi_krb5.dylib",
---- ./jdk/src/share/classes/sun/tools/attach/META-INF/services/com.sun.tools.attach.spi.AttachProvider Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/share/classes/sun/tools/attach/META-INF/services/com.sun.tools.attach.spi.AttachProvider Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/share/classes/sun/tools/attach/META-INF/services/com.sun.tools.attach.spi.AttachProvider Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/share/classes/sun/tools/attach/META-INF/services/com.sun.tools.attach.spi.AttachProvider Sat Jul 18 13:32:37 2015 -0700
@@ -31,4 +31,5 @@
#[windows]sun.tools.attach.WindowsAttachProvider
#[linux]sun.tools.attach.LinuxAttachProvider
@@ -8658,7 +9535,7 @@
+#[bsd]sun.tools.attach.BsdAttachProvider
#[aix]sun.tools.attach.AixAttachProvider
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
-+++ ./jdk/src/share/lib/security/java.security-bsd Tue May 05 18:07:05 2015 -0700
++++ ./jdk/src/share/lib/security/java.security-bsd Sat Jul 18 13:32:37 2015 -0700
@@ -0,0 +1,498 @@
+#
+# This is the "master security properties file".
@@ -9158,8 +10035,8 @@
+#
+# Example:
+# jdk.tls.disabledAlgorithms=MD5, SHA1, DSA, RSA keySize < 2048
---- ./jdk/src/share/native/com/sun/java/util/jar/pack/zip.cpp Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/share/native/com/sun/java/util/jar/pack/zip.cpp Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/share/native/com/sun/java/util/jar/pack/zip.cpp Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/share/native/com/sun/java/util/jar/pack/zip.cpp Sat Jul 18 13:32:37 2015 -0700
@@ -62,7 +62,7 @@
#endif // End of ZLIB
@@ -9169,8 +10046,8 @@
#define SWAP_BYTES(a) \
((((a) << 8) & 0xff00) | 0x00ff) & (((a) >> 8) | 0xff00)
#else
---- ./jdk/src/share/native/com/sun/media/sound/DirectAudioDevice.c Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/share/native/com/sun/media/sound/DirectAudioDevice.c Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/share/native/com/sun/media/sound/DirectAudioDevice.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/share/native/com/sun/media/sound/DirectAudioDevice.c Sat Jul 18 13:32:37 2015 -0700
@@ -121,7 +121,7 @@
}
@@ -9198,8 +10075,8 @@
#define MAP_NATIVE2LE16(a) (a)
#define MAP_NATIVE2BE16(a) MAP_SWAP16_impl(a)
#define MAP_NATIVE2LE32(a) (a)
---- ./jdk/src/share/native/com/sun/media/sound/Utilities.c Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/share/native/com/sun/media/sound/Utilities.c Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/share/native/com/sun/media/sound/Utilities.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/share/native/com/sun/media/sound/Utilities.c Sat Jul 18 13:32:37 2015 -0700
@@ -28,7 +28,7 @@
@@ -9209,8 +10086,8 @@
return 0;
#else
return 1;
---- ./jdk/src/share/native/java/lang/fdlibm/include/fdlibm.h Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/share/native/java/lang/fdlibm/include/fdlibm.h Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/share/native/java/lang/fdlibm/include/fdlibm.h Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/share/native/java/lang/fdlibm/include/fdlibm.h Sat Jul 18 13:32:37 2015 -0700
@@ -40,7 +40,7 @@
#endif
#endif
@@ -9220,8 +10097,8 @@
#define __HI(x) *(1+(int*)&x)
#define __LO(x) *(int*)&x
#define __HIp(x) *(1+(int*)x)
---- ./jdk/src/share/native/sun/awt/image/awt_parseImage.c Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/share/native/sun/awt/image/awt_parseImage.c Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/share/native/sun/awt/image/awt_parseImage.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/share/native/sun/awt/image/awt_parseImage.c Sat Jul 18 13:32:37 2015 -0700
@@ -624,7 +624,7 @@
switch(type) {
case java_awt_image_BufferedImage_TYPE_INT_ARGB:
@@ -9249,8 +10126,8 @@
colorOrder[0] = 2;
colorOrder[1] = 1;
colorOrder[2] = 0;
---- ./jdk/src/share/native/sun/awt/medialib/awt_ImagingLib.c Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/share/native/sun/awt/medialib/awt_ImagingLib.c Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/share/native/sun/awt/medialib/awt_ImagingLib.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/share/native/sun/awt/medialib/awt_ImagingLib.c Sat Jul 18 13:32:37 2015 -0700
@@ -1176,7 +1176,7 @@
#define NLUT 8
@@ -9260,8 +10137,8 @@
#define INDEXES { 3, 2, 1, 0, 7, 6, 5, 4 }
#else
#define INDEXES { 0, 1, 2, 3, 4, 5, 6, 7 }
---- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv2x2_f.c Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv2x2_f.c Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv2x2_f.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv2x2_f.c Sat Jul 18 13:32:37 2015 -0700
@@ -86,7 +86,7 @@
#endif /* MLIB_USE_FTOI_CLAMPING */
@@ -9301,8 +10178,8 @@
#endif /* _NO_LONGLONG */
---- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16ext.c Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16ext.c Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16ext.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16ext.c Sat Jul 18 13:32:37 2015 -0700
@@ -126,7 +126,7 @@
#define D2I(x) CLAMP_S32((x) SAT_OFF)
@@ -9342,8 +10219,8 @@
#endif /* _NO_LONGLONG */
/***************************************************************/
---- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16nw.c Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16nw.c Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16nw.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16nw.c Sat Jul 18 13:32:37 2015 -0700
@@ -94,7 +94,7 @@
#define D2I(x) CLAMP_S32((x) SAT_OFF)
@@ -9383,8 +10260,8 @@
#endif /* _NO_LONGLONG */
/***************************************************************/
---- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8ext.c Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8ext.c Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8ext.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8ext.c Sat Jul 18 13:32:37 2015 -0700
@@ -126,7 +126,7 @@
#define D2I(x) CLAMP_S32((x) SAT_OFF)
@@ -9424,8 +10301,8 @@
#endif /* _NO_LONGLONG */
/***************************************************************/
---- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8nw.c Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8nw.c Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8nw.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8nw.c Sat Jul 18 13:32:37 2015 -0700
@@ -95,7 +95,7 @@
#define D2I(x) CLAMP_S32((x) SAT_OFF)
@@ -9465,8 +10342,8 @@
#endif /* _NO_LONGLONG */
/***************************************************************/
---- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16ext.c Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16ext.c Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16ext.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16ext.c Sat Jul 18 13:32:37 2015 -0700
@@ -126,7 +126,7 @@
#define D2I(x) CLAMP_S32((x) SAT_OFF)
@@ -9506,8 +10383,8 @@
#endif /* _NO_LONGLONG */
/***************************************************************/
---- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16nw.c Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16nw.c Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16nw.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16nw.c Sat Jul 18 13:32:37 2015 -0700
@@ -94,7 +94,7 @@
#define D2I(x) CLAMP_S32((x) SAT_OFF)
@@ -9547,8 +10424,8 @@
#endif /* _NO_LONGLONG */
/***************************************************************/
---- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageCopy_Bit.c Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageCopy_Bit.c Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageCopy_Bit.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageCopy_Bit.c Sat Jul 18 13:32:37 2015 -0700
@@ -95,7 +95,7 @@
dst = dp[0];
if (ld_offset + size < 32) {
@@ -9768,8 +10645,8 @@
}
#else /* _LONGLONG */
---- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_64.c Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_64.c Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_64.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_64.c Sat Jul 18 13:32:37 2015 -0700
@@ -168,7 +168,7 @@
}
@@ -10050,8 +10927,8 @@
dp[12] = t0;
dp[13] = t1;
dp[14] = t2;
---- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_Bit.c Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_Bit.c Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_Bit.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_Bit.c Sat Jul 18 13:32:37 2015 -0700
@@ -88,7 +88,7 @@
} d64_2_f32;
@@ -10203,8 +11080,8 @@
((mlib_u32*)lh)[0] = l; ((mlib_u32*)lh)[1] = l;
((mlib_u32*)lh)[2] = l; ((mlib_u32*)lh)[3] = h;
---- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageUtils.c Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageUtils.c Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageUtils.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageUtils.c Sat Jul 18 13:32:37 2015 -0700
@@ -30,7 +30,7 @@
typedef union {
mlib_d64 db;
@@ -10214,8 +11091,8 @@
mlib_s32 int1, int0;
#else
mlib_s32 int0, int1;
---- ./jdk/src/share/native/sun/awt/medialib/mlib_c_ImageCopy.c Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/share/native/sun/awt/medialib/mlib_c_ImageCopy.c Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/share/native/sun/awt/medialib/mlib_c_ImageCopy.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/share/native/sun/awt/medialib/mlib_c_ImageCopy.c Sat Jul 18 13:32:37 2015 -0700
@@ -275,11 +275,11 @@
for (i = 0; j <= (b_size - 4); j += 4, i++) {
src0 = src1;
@@ -10314,8 +11191,8 @@
s0 = s1;
dp += SIZE;
sp += SIZE;
---- ./jdk/src/share/native/sun/awt/medialib/mlib_c_ImageLookUp_f.c Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/share/native/sun/awt/medialib/mlib_c_ImageLookUp_f.c Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/share/native/sun/awt/medialib/mlib_c_ImageLookUp_f.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/share/native/sun/awt/medialib/mlib_c_ImageLookUp_f.c Sat Jul 18 13:32:37 2015 -0700
@@ -120,7 +120,7 @@
} \
}
@@ -11548,8 +12425,8 @@
dp[12] = t0;
dp[13] = t1;
dp[14] = t2;
---- ./jdk/src/share/native/sun/awt/medialib/mlib_image.h Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/share/native/sun/awt/medialib/mlib_image.h Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/share/native/sun/awt/medialib/mlib_image.h Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/share/native/sun/awt/medialib/mlib_image.h Sat Jul 18 13:32:37 2015 -0700
@@ -27,9 +27,6 @@
#ifndef MLIB_IMAGE_H
#define MLIB_IMAGE_H
@@ -11560,8 +12437,8 @@
#include <mlib_types.h>
#include <mlib_status.h>
#include <mlib_sys.h>
---- ./jdk/src/share/native/sun/awt/medialib/mlib_sys.c Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/share/native/sun/awt/medialib/mlib_sys.c Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/share/native/sun/awt/medialib/mlib_sys.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/share/native/sun/awt/medialib/mlib_sys.c Sat Jul 18 13:32:37 2015 -0700
@@ -29,7 +29,7 @@
#ifdef MACOSX
#include <unistd.h>
@@ -11581,8 +12458,34 @@
#else
return (void *) memalign(8, size);
#endif /* _MSC_VER */
---- ./jdk/src/share/native/sun/font/layout/LEStandalone.h Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/share/native/sun/font/layout/LEStandalone.h Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/share/native/sun/awt/splashscreen/splashscreen_gif.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/share/native/sun/awt/splashscreen/splashscreen_gif.c Sat Jul 18 13:32:37 2015 -0700
+@@ -310,7 +310,11 @@
+ free(pBitmapBits);
+ free(pOldBitmapBits);
+
++#if (GIFLIB_MAJOR > 5) || ((GIFLIB_MAJOR == 5) && (GIFLIB_MINOR >= 1))
++ DGifCloseFile(gif, NULL);
++#else
+ DGifCloseFile(gif);
++#endif
+
+ return 1;
+ }
+@@ -318,7 +322,11 @@
+ int
+ SplashDecodeGifStream(Splash * splash, SplashStream * stream)
+ {
++#if GIFLIB_MAJOR >= 5
++ GifFileType *gif = DGifOpen((void *) stream, SplashStreamGifInputFunc, NULL);
++#else
+ GifFileType *gif = DGifOpen((void *) stream, SplashStreamGifInputFunc);
++#endif
+
+ if (!gif)
+ return 0;
+--- ./jdk/src/share/native/sun/font/layout/LEStandalone.h Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/share/native/sun/font/layout/LEStandalone.h Sat Jul 18 13:32:37 2015 -0700
@@ -136,7 +136,7 @@
#define U_CAPI extern "C"
@@ -11592,8 +12495,8 @@
#define U_IS_BIG_ENDIAN 0
#endif
#endif
---- ./jdk/src/share/native/sun/java2d/cmm/lcms/LCMS.c Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/share/native/sun/java2d/cmm/lcms/LCMS.c Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/share/native/sun/java2d/cmm/lcms/LCMS.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/share/native/sun/java2d/cmm/lcms/LCMS.c Sat Jul 18 13:32:37 2015 -0700
@@ -182,7 +182,7 @@
return 0L;
}
@@ -11603,8 +12506,8 @@
/* Reversing data packed into int for LE archs */
if (isInIntPacked) {
inFormatter ^= DOSWAP_SH(1);
---- ./jdk/src/share/native/sun/management/DiagnosticCommandImpl.c Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/share/native/sun/management/DiagnosticCommandImpl.c Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/share/native/sun/management/DiagnosticCommandImpl.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/share/native/sun/management/DiagnosticCommandImpl.c Sat Jul 18 13:32:37 2015 -0700
@@ -27,6 +27,7 @@
#include <jni.h>
#include "management.h"
@@ -11613,8 +12516,8 @@
JNIEXPORT void JNICALL Java_sun_management_DiagnosticCommandImpl_setNotificationEnabled
(JNIEnv *env, jobject dummy, jboolean enabled) {
---- ./jdk/src/solaris/back/util_md.h Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/solaris/back/util_md.h Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/solaris/back/util_md.h Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/solaris/back/util_md.h Sat Jul 18 13:32:37 2015 -0700
@@ -51,7 +51,7 @@
/* On little endian machines, convert java big endian numbers. */
@@ -11624,8 +12527,8 @@
#define HOST_TO_JAVA_CHAR(x) (((x & 0xff) << 8) | ((x >> 8) & (0xff)))
#define HOST_TO_JAVA_SHORT(x) (((x & 0xff) << 8) | ((x >> 8) & (0xff)))
---- ./jdk/src/solaris/bin/ergo_i586.c Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/solaris/bin/ergo_i586.c Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/solaris/bin/ergo_i586.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/solaris/bin/ergo_i586.c Sat Jul 18 13:32:37 2015 -0700
@@ -106,7 +106,7 @@
#endif /* __solaris__ */
@@ -11644,9 +12547,19 @@
/*
* Routines shared by solaris-i586 and linux-i586.
---- ./jdk/src/solaris/bin/java_md_solinux.c Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/solaris/bin/java_md_solinux.c Tue May 05 18:07:05 2015 -0700
-@@ -306,9 +306,9 @@
+--- ./jdk/src/solaris/bin/java_md_solinux.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/solaris/bin/java_md_solinux.c Sat Jul 18 13:32:37 2015 -0700
+@@ -35,6 +35,9 @@
+ #include <sys/stat.h>
+ #include <unistd.h>
+ #include <sys/types.h>
++#ifdef __FreeBSD__
++#include <sys/sysctl.h>
++#endif
+ #include "manifest_info.h"
+ #include "version_comp.h"
+
+@@ -306,9 +309,9 @@
if (llp == NULL && dmllp == NULL) {
return JNI_FALSE;
}
@@ -11658,7 +12571,7 @@
* LD_LIBRARY_PATH to the empty string for security purposes. (In contrast,
* on Solaris the LD_LIBRARY_PATH variable for a privileged binary does not
* lose its settings; but the dynamic linker does apply more scrutiny to the
-@@ -319,12 +319,18 @@
+@@ -319,12 +322,18 @@
* libraries will be handled by the RPATH. In reality, this check is
* redundant, as the previous check for a non-null LD_LIBRARY_PATH will
* return back to the calling function forthwith, it is left here to safe
@@ -11679,43 +12592,38 @@
/*
* Prevent recursions. Since LD_LIBRARY_PATH is the one which will be set by
-@@ -919,8 +925,9 @@
+@@ -929,8 +938,9 @@
* onwards the filename returned in DL_info structure from dladdr is
* an absolute pathname so technically realpath isn't required.
* On Linux we read the executable name from /proc/self/exe.
- * As a fallback, and for platforms other than Solaris and Linux,
- * we use FindExecName to compute the executable name.
-+ * On FreeBSD we read the executable name from /proc/curproc/file.
++ * On FreeBSD, we get the executable name via sysctl(3).
+ * As a fallback, and for platforms other than Solaris, Linux, and
+ * FreeBSD, we use FindExecName to compute the executable name.
*/
const char*
SetExecname(char **argv)
-@@ -947,9 +954,13 @@
- }
- }
- }
--#elif defined(__linux__)
-+#elif defined(__linux__) || defined(__FreeBSD__)
- {
-+#if defined(__FreeBSD__)
-+ const char* self = "/proc/curproc/file";
-+#else
- const char* self = "/proc/self/exe";
-+#endif
- char buf[PATH_MAX+1];
- int len = readlink(self, buf, PATH_MAX);
- if (len >= 0) {
-@@ -957,7 +968,7 @@
+@@ -967,7 +977,17 @@
exec_path = JLI_StringDup(buf);
}
}
-#else /* !__solaris__ && !__linux__ */
++#elif defined(__FreeBSD__)
++ {
++ char buf[PATH_MAX+1];
++ int name[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1 };
++ size_t len = sizeof(buf);
++ if (sysctl(name, 4, buf, &len, NULL, 0) == 0 && len > 0) {
++ buf[len] = '\0';
++ exec_path = JLI_StringDup(buf);
++ }
++ }
+#else /* !__solaris__ && !__linux__ && !__FreeBSD__ */
{
/* Not implemented */
}
-@@ -1063,13 +1074,13 @@
+@@ -1073,13 +1093,13 @@
#define MAX_PID_STR_SZ 20
void SetJavaLauncherPlatformProps() {
@@ -11732,8 +12640,8 @@
}
int
---- ./jdk/src/solaris/bin/java_md_solinux.h Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/solaris/bin/java_md_solinux.h Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/solaris/bin/java_md_solinux.h Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/solaris/bin/java_md_solinux.h Sat Jul 18 13:32:37 2015 -0700
@@ -26,17 +26,26 @@
#ifndef JAVA_MD_SOLINUX_H
#define JAVA_MD_SOLINUX_H
@@ -11774,8 +12682,8 @@
#else /* !__solaris__, i.e. Linux, AIX,.. */
static const char *system_dir = "/usr/java";
static const char *user_dir = "/java";
---- ./jdk/src/solaris/classes/java/lang/UNIXProcess.java Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/solaris/classes/java/lang/UNIXProcess.java Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/solaris/classes/java/lang/UNIXProcess.java Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/solaris/classes/java/lang/UNIXProcess.java Sat Jul 18 13:32:37 2015 -0700
@@ -82,6 +82,8 @@
LINUX(LaunchMechanism.VFORK, LaunchMechanism.FORK),
@@ -11823,8 +12731,8 @@
case BSD:
case AIX:
// There is a risk that pid will be recycled, causing us to
---- ./jdk/src/solaris/classes/sun/awt/X11FontManager.java Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/solaris/classes/sun/awt/X11FontManager.java Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/solaris/classes/sun/awt/X11FontManager.java Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/solaris/classes/sun/awt/X11FontManager.java Sat Jul 18 13:32:37 2015 -0700
@@ -236,7 +236,7 @@
if (fontID != null) {
fileName = (String)fontNameMap.get(fontID);
@@ -11852,8 +12760,8 @@
(!mFontConfig.foundOsSpecificFile() ||
!mFontConfig.fontFilesArePresent()) ||
(FontUtilities.isSolaris && !mFontConfig.fontFilesArePresent()))) {
---- ./jdk/src/solaris/classes/sun/awt/fontconfigs/bsd.fontconfig.properties Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/solaris/classes/sun/awt/fontconfigs/bsd.fontconfig.properties Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/solaris/classes/sun/awt/fontconfigs/bsd.fontconfig.properties Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/solaris/classes/sun/awt/fontconfigs/bsd.fontconfig.properties Sat Jul 18 13:32:37 2015 -0700
@@ -26,134 +26,134 @@
# Version
@@ -12116,8 +13024,8 @@
+filename.NanumGothic_Bold=/usr/local/lib/X11/fonts/nanum-ttf/NanumGothicBold.ttf
+filename.NanumMyeongjo=/usr/local/lib/X11/fonts/nanum-ttf/NanumMyeongjo.ttf
+filename.NanumMyeongjo_Bold=/usr/local/lib/X11/fonts/nanum-ttf/NanumMyeongjoBold.ttf
---- ./jdk/src/solaris/classes/sun/net/PortConfig.java Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/solaris/classes/sun/net/PortConfig.java Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/solaris/classes/sun/net/PortConfig.java Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/solaris/classes/sun/net/PortConfig.java Sat Jul 18 13:32:37 2015 -0700
@@ -52,7 +52,7 @@
} else if (os.startsWith("SunOS")) {
defaultLower = 32768;
@@ -12127,8 +13035,8 @@
defaultLower = 49152;
defaultUpper = 65535;
} else if (os.startsWith("AIX")) {
---- ./jdk/src/solaris/classes/sun/nio/ch/DefaultAsynchronousChannelProvider.java Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/solaris/classes/sun/nio/ch/DefaultAsynchronousChannelProvider.java Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/solaris/classes/sun/nio/ch/DefaultAsynchronousChannelProvider.java Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/solaris/classes/sun/nio/ch/DefaultAsynchronousChannelProvider.java Sat Jul 18 13:32:37 2015 -0700
@@ -66,7 +66,7 @@
return createProvider("sun.nio.ch.SolarisAsynchronousChannelProvider");
if (osname.equals("Linux"))
@@ -12138,8 +13046,8 @@
return createProvider("sun.nio.ch.BsdAsynchronousChannelProvider");
if (osname.equals("AIX"))
return createProvider("sun.nio.ch.AixAsynchronousChannelProvider");
---- ./jdk/src/solaris/classes/sun/nio/fs/BsdFileSystemProvider.java Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/solaris/classes/sun/nio/fs/BsdFileSystemProvider.java Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/solaris/classes/sun/nio/fs/BsdFileSystemProvider.java Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/solaris/classes/sun/nio/fs/BsdFileSystemProvider.java Sat Jul 18 13:32:37 2015 -0700
@@ -25,10 +25,14 @@
package sun.nio.fs;
@@ -12173,8 +13081,8 @@
+ new MagicFileTypeDetector());
+ }
}
---- ./jdk/src/solaris/classes/sun/nio/fs/DefaultFileSystemProvider.java Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/solaris/classes/sun/nio/fs/DefaultFileSystemProvider.java Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/solaris/classes/sun/nio/fs/DefaultFileSystemProvider.java Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/solaris/classes/sun/nio/fs/DefaultFileSystemProvider.java Sat Jul 18 13:32:37 2015 -0700
@@ -61,6 +61,8 @@
return createProvider("sun.nio.fs.SolarisFileSystemProvider");
if (osname.equals("Linux"))
@@ -12184,8 +13092,8 @@
if (osname.contains("OS X"))
return createProvider("sun.nio.fs.MacOSXFileSystemProvider");
if (osname.equals("AIX"))
---- ./jdk/src/solaris/classes/sun/print/UnixPrintServiceLookup.java Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/solaris/classes/sun/print/UnixPrintServiceLookup.java Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/solaris/classes/sun/print/UnixPrintServiceLookup.java Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/solaris/classes/sun/print/UnixPrintServiceLookup.java Sat Jul 18 13:32:37 2015 -0700
@@ -161,6 +161,7 @@
static boolean isBSD() {
@@ -12209,8 +13117,8 @@
"/usr/sbin/lpc status all | grep -E '^[ 0-9a-zA-Z_-]*@' | awk -F'@' '{print $1}' | sort"
};
---- ./jdk/src/solaris/classes/sun/tools/attach/BsdVirtualMachine.java Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/solaris/classes/sun/tools/attach/BsdVirtualMachine.java Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/solaris/classes/sun/tools/attach/BsdVirtualMachine.java Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/solaris/classes/sun/tools/attach/BsdVirtualMachine.java Sat Jul 18 13:32:37 2015 -0700
@@ -273,7 +273,7 @@
try {
b = s.getBytes("UTF-8");
@@ -12220,8 +13128,8 @@
}
BsdVirtualMachine.write(fd, b, 0, b.length);
}
---- ./jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_SolarisOS_PCM.c Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_SolarisOS_PCM.c Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_SolarisOS_PCM.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_SolarisOS_PCM.c Sat Jul 18 13:32:37 2015 -0700
@@ -140,7 +140,7 @@
(float) ((int) sr->samp_rates[s]),
DAUDIO_PCM, /* encoding - let's only do PCM */
@@ -12231,8 +13139,8 @@
FALSE /* little endian */
#else
(bits[b] > 8)?TRUE:FALSE /* big endian */
---- ./jdk/src/solaris/native/common/jni_util_md.c Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/solaris/native/common/jni_util_md.c Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/solaris/native/common/jni_util_md.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/solaris/native/common/jni_util_md.c Sat Jul 18 13:32:37 2015 -0700
@@ -28,6 +28,7 @@
#include "jni.h"
#include "jni_util.h"
@@ -12241,8 +13149,8 @@
jstring nativeNewStringPlatform(JNIEnv *env, const char *str) {
return NULL;
---- ./jdk/src/solaris/native/java/lang/java_props_md.c Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/solaris/native/java/lang/java_props_md.c Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/solaris/native/java/lang/java_props_md.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/solaris/native/java/lang/java_props_md.c Sat Jul 18 13:32:37 2015 -0700
@@ -151,7 +151,7 @@
lc = setlocale(cat, NULL);
#endif
@@ -12277,8 +13185,8 @@
/* user properties */
{
---- ./jdk/src/solaris/native/java/net/Inet4AddressImpl.c Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/solaris/native/java/net/Inet4AddressImpl.c Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/solaris/native/java/net/Inet4AddressImpl.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/solaris/native/java/net/Inet4AddressImpl.c Sat Jul 18 13:32:37 2015 -0700
@@ -36,20 +36,13 @@
#include <stdlib.h>
#include <ctype.h>
@@ -12597,8 +13505,8 @@
#define SET_NONBLOCKING(fd) { \
int flags = fcntl(fd, F_GETFL); \
flags |= O_NONBLOCK; \
---- ./jdk/src/solaris/native/java/net/Inet6AddressImpl.c Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/solaris/native/java/net/Inet6AddressImpl.c Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/solaris/native/java/net/Inet6AddressImpl.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/solaris/native/java/net/Inet6AddressImpl.c Sat Jul 18 13:32:37 2015 -0700
@@ -33,7 +33,7 @@
#include <strings.h>
#include <stdlib.h>
@@ -12629,9 +13537,9 @@
/*
* If we're looking up the local machine, attempt to get the address
* from getifaddrs. This ensures we get an IPv6 address for the local
---- ./jdk/src/solaris/native/java/net/NetworkInterface.c Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/solaris/native/java/net/NetworkInterface.c Tue May 05 18:07:05 2015 -0700
-@@ -67,14 +67,18 @@
+--- ./jdk/src/solaris/native/java/net/NetworkInterface.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/solaris/native/java/net/NetworkInterface.c Sat Jul 18 13:32:37 2015 -0700
+@@ -67,14 +67,19 @@
#include <sys/param.h>
#include <sys/ioctl.h>
#include <sys/sockio.h>
@@ -12641,6 +13549,7 @@
#include <net/if_var.h>
+#elif defined(__OpenBSD__)
+#include <netinet/if_ether.h>
++#include <netinet6/in6_var.h>
+#elif defined(__NetBSD__)
+#include <net/if_ether.h>
+#endif
@@ -12652,8 +13561,8 @@
#include "jvm.h"
#include "jni_util.h"
---- ./jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c Sat Jul 18 13:32:37 2015 -0700
@@ -2200,7 +2200,7 @@
}
}
@@ -12663,8 +13572,8 @@
if (family == AF_INET6 && index == 0) {
index = getDefaultScopeID(env);
}
---- ./jdk/src/solaris/native/java/net/bsd_close.c Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/solaris/native/java/net/bsd_close.c Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/solaris/native/java/net/bsd_close.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/solaris/native/java/net/bsd_close.c Sat Jul 18 13:32:37 2015 -0700
@@ -316,11 +316,8 @@
}
@@ -12679,9 +13588,20 @@
}
int NET_Connect(int s, struct sockaddr *addr, int addrlen) {
---- ./jdk/src/solaris/native/java/net/net_util_md.c Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/solaris/native/java/net/net_util_md.c Tue May 05 18:07:05 2015 -0700
-@@ -87,7 +87,7 @@
+--- ./jdk/src/solaris/native/java/net/net_util_md.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/solaris/native/java/net/net_util_md.c Sat Jul 18 13:32:37 2015 -0700
+@@ -45,6 +45,10 @@
+ #endif
+ #endif
+
++#ifdef __OpenBSD__
++#include <sys/socketvar.h>
++#endif
++
+ #ifdef __solaris__
+ #include <sys/sockio.h>
+ #include <stropts.h>
+@@ -87,7 +91,7 @@
void setDefaultScopeID(JNIEnv *env, struct sockaddr *him)
{
@@ -12690,8 +13610,8 @@
static jclass ni_class = NULL;
static jfieldID ni_defaultIndexID;
if (ni_class == NULL) {
---- ./jdk/src/solaris/native/java/net/net_util_md.h Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/solaris/native/java/net/net_util_md.h Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/solaris/native/java/net/net_util_md.h Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/solaris/native/java/net/net_util_md.h Sat Jul 18 13:32:37 2015 -0700
@@ -47,7 +47,7 @@
close subroutine does not return until the select call returns.
...
@@ -12701,8 +13621,8 @@
extern int NET_Timeout(int s, long timeout);
extern int NET_Read(int s, void* buf, size_t len);
extern int NET_RecvFrom(int s, void *buf, int len, unsigned int flags,
---- ./jdk/src/solaris/native/java/util/TimeZone_md.c Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/solaris/native/java/util/TimeZone_md.c Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/solaris/native/java/util/TimeZone_md.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/solaris/native/java/util/TimeZone_md.c Sat Jul 18 13:32:37 2015 -0700
@@ -52,7 +52,11 @@
#if defined(__linux__) || defined(_ALLBSD_SOURCE)
@@ -12787,8 +13707,8 @@
}
#endif
-
---- ./jdk/src/solaris/native/sun/awt/awt_Font.c Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/solaris/native/sun/awt/awt_Font.c Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/solaris/native/sun/awt/awt_Font.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/solaris/native/sun/awt/awt_Font.c Sat Jul 18 13:32:37 2015 -0700
@@ -255,7 +255,7 @@
if (strcmp(style, "regular") == 0) {
altstyle = "roman";
@@ -12798,8 +13718,8 @@
if (!strcmp(family, "lucidasans")) {
family = "lucida";
}
---- ./jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c Sat Jul 18 13:32:37 2015 -0700
@@ -120,7 +120,7 @@
*/
@@ -12884,8 +13804,8 @@
#endif /* HEADLESS */
return point;
}
---- ./jdk/src/solaris/native/sun/awt/awt_InputMethod.c Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/solaris/native/sun/awt/awt_InputMethod.c Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/solaris/native/sun/awt/awt_InputMethod.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/solaris/native/sun/awt/awt_InputMethod.c Sat Jul 18 13:32:37 2015 -0700
@@ -52,7 +52,7 @@
XIMPreeditDrawCallbackStruct *);
static void PreeditCaretCallback(XIC, XPointer,
@@ -13105,8 +14025,8 @@
AWT_LOCK();
adjustStatusWindow(window);
AWT_UNLOCK();
---- ./jdk/src/solaris/native/sun/awt/awt_Robot.c Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/solaris/native/sun/awt/awt_Robot.c Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/solaris/native/sun/awt/awt_Robot.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/solaris/native/sun/awt/awt_Robot.c Sat Jul 18 13:32:37 2015 -0700
@@ -45,7 +45,7 @@
#include "wsutils.h"
#include "list.h"
@@ -13116,8 +14036,8 @@
#include <sys/socket.h>
#endif
---- ./jdk/src/solaris/native/sun/awt/extutil.h Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/solaris/native/sun/awt/extutil.h Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/solaris/native/sun/awt/extutil.h Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/solaris/native/sun/awt/extutil.h Sat Jul 18 13:32:37 2015 -0700
@@ -58,7 +58,7 @@
*/
/* $XFree86: xc/include/extensions/extutil.h,v 1.5 2001/01/17 17:53:20 dawes Exp $ */
@@ -13133,8 +14053,8 @@
-#endif /* __linux__ || MACOSX */
+#endif /* __linux__ || _ALLBSD_SOURCE */
---- ./jdk/src/solaris/native/sun/awt/fontpath.c Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/solaris/native/sun/awt/fontpath.c Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/solaris/native/sun/awt/fontpath.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/solaris/native/sun/awt/fontpath.c Sat Jul 18 13:32:37 2015 -0700
@@ -23,9 +23,9 @@
* questions.
*/
@@ -13223,8 +14143,8 @@
&& (strcmp((char*)fontformat, "Type 1") != 0)
#endif
) {
---- ./jdk/src/solaris/native/sun/java2d/j2d_md.h Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/solaris/native/sun/java2d/j2d_md.h Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/solaris/native/sun/java2d/j2d_md.h Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/solaris/native/sun/java2d/j2d_md.h Sat Jul 18 13:32:37 2015 -0700
@@ -28,11 +28,11 @@
#include <sys/types.h>
@@ -13240,8 +14160,8 @@
typedef unsigned char jubyte;
typedef unsigned short jushort;
---- ./jdk/src/solaris/native/sun/java2d/loops/mlib_ImageZoom_NN.c Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/solaris/native/sun/java2d/loops/mlib_ImageZoom_NN.c Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/solaris/native/sun/java2d/loops/mlib_ImageZoom_NN.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/solaris/native/sun/java2d/loops/mlib_ImageZoom_NN.c Sat Jul 18 13:32:37 2015 -0700
@@ -63,9 +63,6 @@
* MLIB_EDGE_SRC_PADDED
*/
@@ -13346,8 +14266,8 @@
LOGIC(da[0], dtmp, dtmp1, |);
}
else { /* aligned */
---- ./jdk/src/solaris/native/sun/java2d/loops/vis_FuncArray.c Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/solaris/native/sun/java2d/loops/vis_FuncArray.c Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/solaris/native/sun/java2d/loops/vis_FuncArray.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/solaris/native/sun/java2d/loops/vis_FuncArray.c Sat Jul 18 13:32:37 2015 -0700
@@ -804,7 +804,7 @@
static int initialized;
static int usevis = JNI_TRUE;
@@ -13357,8 +14277,8 @@
# define ULTRA_CHIP "sparc64"
#else
# define ULTRA_CHIP "sun4u"
---- ./jdk/src/solaris/native/sun/management/OperatingSystemImpl.c Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/solaris/native/sun/management/OperatingSystemImpl.c Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/solaris/native/sun/management/OperatingSystemImpl.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/solaris/native/sun/management/OperatingSystemImpl.c Sat Jul 18 13:32:37 2015 -0700
@@ -56,6 +56,9 @@
#include <limits.h>
#include <stdlib.h>
@@ -13513,8 +14433,35 @@
return -1;
}
---- ./jdk/src/solaris/native/sun/nio/ch/sctp/Sctp.h Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/solaris/native/sun/nio/ch/sctp/Sctp.h Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/solaris/native/sun/net/portconfig.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/solaris/native/sun/net/portconfig.c Sat Jul 18 13:32:37 2015 -0700
+@@ -67,6 +67,24 @@
+ range->lower = net_getParam("/dev/tcp", "tcp_smallest_anon_port");
+ return 0;
+ }
++#elif defined(__OpenBSD__)
++ {
++ int mib[3];
++ mib[0] = CTL_NET;
++ mib[1] = PF_INET;
++
++ mib[2] = IPCTL_IPPORT_HIFIRSTAUTO;
++ size_t rlen = sizeof(range->lower);
++ if (sysctl(mib, 3, &range->lower, &rlen, NULL, 0) == -1)
++ return -1;
++
++ mib[2] = IPCTL_IPPORT_HILASTAUTO;
++ rlen = sizeof(range->higher);
++ if (sysctl(mib, 3, &range->higher, &rlen, NULL, 0) == -1)
++ return -1;
++
++ return 0;
++ }
+ #elif defined(_ALLBSD_SOURCE)
+ {
+ int ret;
+--- ./jdk/src/solaris/native/sun/nio/ch/sctp/Sctp.h Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/solaris/native/sun/nio/ch/sctp/Sctp.h Sat Jul 18 13:32:37 2015 -0700
@@ -67,7 +67,7 @@
@@ -13563,8 +14510,8 @@
jboolean loadSocketExtensionFuncs(JNIEnv* env);
#endif /* !SUN_NIO_CH_SCTP_H */
---- ./jdk/src/solaris/native/sun/nio/ch/sctp/SctpNet.c Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/solaris/native/sun/nio/ch/sctp/SctpNet.c Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/solaris/native/sun/nio/ch/sctp/SctpNet.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/solaris/native/sun/nio/ch/sctp/SctpNet.c Sat Jul 18 13:32:37 2015 -0700
@@ -58,6 +58,7 @@
*/
jboolean loadSocketExtensionFuncs
@@ -13581,8 +14528,8 @@
funcsLoaded = JNI_TRUE;
return JNI_TRUE;
---- ./jdk/src/solaris/native/sun/nio/fs/MagicFileTypeDetector.c Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/solaris/native/sun/nio/fs/MagicFileTypeDetector.c Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/solaris/native/sun/nio/fs/MagicFileTypeDetector.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/solaris/native/sun/nio/fs/MagicFileTypeDetector.c Sat Jul 18 13:32:37 2015 -0700
@@ -31,6 +31,12 @@
#include <dlfcn.h>
#include <string.h>
@@ -13605,8 +14552,19 @@
if (magic_handle == NULL) {
return JNI_FALSE;
}
---- ./jdk/src/solaris/native/sun/tools/attach/BsdVirtualMachine.c Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/solaris/native/sun/tools/attach/BsdVirtualMachine.c Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/solaris/native/sun/security/pkcs11/j2secmod_md.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/solaris/native/sun/security/pkcs11/j2secmod_md.c Sat Jul 18 13:32:37 2015 -0700
+@@ -54,7 +54,7 @@
+ }
+
+ // look up existing handle only, do not load
+-#if defined(AIX)
++#if defined(AIX) || !defined(RTLD_NOLOAD)
+ void *hModule = dlopen(libName, RTLD_LAZY);
+ #else
+ void *hModule = dlopen(libName, RTLD_NOLOAD);
+--- ./jdk/src/solaris/native/sun/tools/attach/BsdVirtualMachine.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/solaris/native/sun/tools/attach/BsdVirtualMachine.c Sat Jul 18 13:32:37 2015 -0700
@@ -37,7 +37,9 @@
#include <sys/types.h>
#include <sys/socket.h>
@@ -13617,8 +14575,8 @@
#include <sys/un.h>
#include <fcntl.h>
---- ./jdk/src/solaris/native/sun/xawt/XWindow.c Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/solaris/native/sun/xawt/XWindow.c Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/solaris/native/sun/xawt/XWindow.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/solaris/native/sun/xawt/XWindow.c Sat Jul 18 13:32:37 2015 -0700
@@ -886,7 +886,7 @@
{
KeySym originalKeysym = *keysym;
@@ -13628,8 +14586,8 @@
/* The following code on Linux will cause the keypad keys
* not to echo on JTextField when the NumLock is on. The
* keysyms will be 0, because the last parameter 2 is not defined.
---- ./jdk/src/windows/native/com/sun/media/sound/PLATFORM_API_WinOS_DirectSound.cpp Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/src/windows/native/com/sun/media/sound/PLATFORM_API_WinOS_DirectSound.cpp Tue May 05 18:07:05 2015 -0700
+--- ./jdk/src/windows/native/com/sun/media/sound/PLATFORM_API_WinOS_DirectSound.cpp Tue May 26 13:28:17 2015 -0700
++++ ./jdk/src/windows/native/com/sun/media/sound/PLATFORM_API_WinOS_DirectSound.cpp Sat Jul 18 13:32:37 2015 -0700
@@ -308,7 +308,7 @@
DAUDIO_PCM,
(bitsArray[bitIndex]==8)?FALSE:TRUE, /* signed */
diff --git a/java/openjdk8/files/patch-bsd-test b/java/openjdk8/files/patch-bsd-test
index 3b0cc2632014..ba055f0b35ba 100644
--- a/java/openjdk8/files/patch-bsd-test
+++ b/java/openjdk8/files/patch-bsd-test
@@ -1,5 +1,5 @@
---- ./hotspot/test/compiler/5091921/Test7005594.sh Mon Mar 16 11:19:42 2015 -0700
-+++ ./hotspot/test/compiler/5091921/Test7005594.sh Tue May 05 18:06:56 2015 -0700
+--- ./hotspot/test/compiler/5091921/Test7005594.sh Mon Jun 01 11:24:34 2015 -0700
++++ ./hotspot/test/compiler/5091921/Test7005594.sh Sat Jul 18 13:32:27 2015 -0700
@@ -60,6 +60,15 @@
# Windows/MKS
MEM=`"$ROOTDIR/mksnt/sysinf" memory -v | grep "Total Physical Memory: " | sed 's/Total Physical Memory: *//g'`
@@ -16,8 +16,8 @@
else
echo "Unable to determine amount of physical memory on the machine"
fi
---- ./hotspot/test/compiler/6894807/Test6894807.sh Mon Mar 16 11:19:42 2015 -0700
-+++ ./hotspot/test/compiler/6894807/Test6894807.sh Tue May 05 18:06:56 2015 -0700
+--- ./hotspot/test/compiler/6894807/Test6894807.sh Mon Jun 01 11:24:34 2015 -0700
++++ ./hotspot/test/compiler/6894807/Test6894807.sh Sat Jul 18 13:32:27 2015 -0700
@@ -21,7 +21,7 @@
# set platform-dependent variables
OS=`uname -s`
@@ -27,8 +27,8 @@
NULL=/dev/null
PS=":"
FS="/"
---- ./hotspot/test/runtime/7110720/Test7110720.sh Mon Mar 16 11:19:42 2015 -0700
-+++ ./hotspot/test/runtime/7110720/Test7110720.sh Tue May 05 18:06:56 2015 -0700
+--- ./hotspot/test/runtime/7110720/Test7110720.sh Mon Jun 01 11:24:34 2015 -0700
++++ ./hotspot/test/runtime/7110720/Test7110720.sh Sat Jul 18 13:32:27 2015 -0700
@@ -28,7 +28,7 @@
# set platform-dependent variables
OS=`uname -s`
@@ -38,8 +38,8 @@
FS="/"
RM=/bin/rm
CP=/bin/cp
---- ./hotspot/test/runtime/XCheckJniJsig/XCheckJSig.java Mon Mar 16 11:19:42 2015 -0700
-+++ ./hotspot/test/runtime/XCheckJniJsig/XCheckJSig.java Tue May 05 18:06:56 2015 -0700
+--- ./hotspot/test/runtime/XCheckJniJsig/XCheckJSig.java Mon Jun 01 11:24:34 2015 -0700
++++ ./hotspot/test/runtime/XCheckJniJsig/XCheckJSig.java Sat Jul 18 13:32:27 2015 -0700
@@ -37,8 +37,8 @@
public static void main(String args[]) throws Throwable {
@@ -51,8 +51,8 @@
return;
}
---- ./hotspot/test/test_env.sh Mon Mar 16 11:19:42 2015 -0700
-+++ ./hotspot/test/test_env.sh Tue May 05 18:06:56 2015 -0700
+--- ./hotspot/test/test_env.sh Mon Jun 01 11:24:34 2015 -0700
++++ ./hotspot/test/test_env.sh Sat Jul 18 13:32:27 2015 -0700
@@ -53,7 +53,7 @@
# set platform-dependent variables
OS=`uname -s`
@@ -62,8 +62,8 @@
NULL=/dev/null
PS=":"
FS="/"
---- ./jdk/test/com/sun/corba/5036554/TestCorbaBug.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/com/sun/corba/5036554/TestCorbaBug.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/com/sun/corba/5036554/TestCorbaBug.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/com/sun/corba/5036554/TestCorbaBug.sh Sat Jul 18 13:32:37 2015 -0700
@@ -48,7 +48,7 @@
# set platform-dependent variables
OS=`uname -s`
@@ -73,8 +73,8 @@
PS=":"
FS="/"
;;
---- ./jdk/test/com/sun/corba/cachedSocket/7056731.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/com/sun/corba/cachedSocket/7056731.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/com/sun/corba/cachedSocket/7056731.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/com/sun/corba/cachedSocket/7056731.sh Sat Jul 18 13:32:37 2015 -0700
@@ -31,7 +31,7 @@
OS=`uname -s`
@@ -84,8 +84,8 @@
PS=":"
FS="/"
;;
---- ./jdk/test/com/sun/jdi/ImmutableResourceTest.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/com/sun/jdi/ImmutableResourceTest.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/com/sun/jdi/ImmutableResourceTest.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/com/sun/jdi/ImmutableResourceTest.sh Sat Jul 18 13:32:37 2015 -0700
@@ -56,7 +56,7 @@
OS=`uname -s`
@@ -95,8 +95,8 @@
PATHSEP=":"
;;
---- ./jdk/test/com/sun/jdi/JITDebug.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/com/sun/jdi/JITDebug.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/com/sun/jdi/JITDebug.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/com/sun/jdi/JITDebug.sh Sat Jul 18 13:32:37 2015 -0700
@@ -63,7 +63,7 @@
OS=`uname -s`
export TRANSPORT_METHOD
@@ -106,8 +106,8 @@
PATHSEP=":"
TRANSPORT_METHOD=dt_socket
;;
---- ./jdk/test/com/sun/jdi/PrivateTransportTest.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/com/sun/jdi/PrivateTransportTest.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/com/sun/jdi/PrivateTransportTest.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/com/sun/jdi/PrivateTransportTest.sh Sat Jul 18 13:32:37 2015 -0700
@@ -106,7 +106,7 @@
xx=`find ${jreloc}/lib -name libdt_socket.so`
libloc=`dirname ${xx}`
@@ -117,8 +117,8 @@
libloc=${jreloc}/lib
;;
Windows*)
---- ./jdk/test/com/sun/jdi/ShellScaffold.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/com/sun/jdi/ShellScaffold.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/com/sun/jdi/ShellScaffold.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/com/sun/jdi/ShellScaffold.sh Sat Jul 18 13:32:37 2015 -0700
@@ -295,7 +295,7 @@
psCmd=ps
jstack=jstack.exe
@@ -128,8 +128,8 @@
transport=dt_socket
address=
devnull=/dev/null
---- ./jdk/test/com/sun/jdi/connect/spi/JdiLoadedByCustomLoader.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/com/sun/jdi/connect/spi/JdiLoadedByCustomLoader.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/com/sun/jdi/connect/spi/JdiLoadedByCustomLoader.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/com/sun/jdi/connect/spi/JdiLoadedByCustomLoader.sh Sat Jul 18 13:32:37 2015 -0700
@@ -45,7 +45,7 @@
OS=`uname -s`
@@ -139,8 +139,8 @@
PS=":"
;;
Windows* | CYGWIN*)
---- ./jdk/test/java/awt/JAWT/JAWT.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/java/awt/JAWT/JAWT.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/java/awt/JAWT/JAWT.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/java/awt/JAWT/JAWT.sh Sat Jul 18 13:32:37 2015 -0700
@@ -62,6 +62,23 @@
MAKE="make"
LD_LIBRARY_PATH="."
@@ -174,8 +174,8 @@
exit 0;
;;
* )
---- ./jdk/test/java/awt/Toolkit/AutoShutdown/ShowExitTest/ShowExitTest.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/java/awt/Toolkit/AutoShutdown/ShowExitTest/ShowExitTest.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/java/awt/Toolkit/AutoShutdown/ShowExitTest/ShowExitTest.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/java/awt/Toolkit/AutoShutdown/ShowExitTest/ShowExitTest.sh Sat Jul 18 13:32:37 2015 -0700
@@ -86,6 +86,14 @@
TMP="/tmp"
;;
@@ -191,8 +191,8 @@
Windows* )
VAR="A different value for Win32"
DEFAULT_JDK="C:/Program Files/Java/jdk1.8.0"
---- ./jdk/test/java/awt/Toolkit/Headless/WrappedToolkitTest/WrappedToolkitTest.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/java/awt/Toolkit/Headless/WrappedToolkitTest/WrappedToolkitTest.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/java/awt/Toolkit/Headless/WrappedToolkitTest/WrappedToolkitTest.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/java/awt/Toolkit/Headless/WrappedToolkitTest/WrappedToolkitTest.sh Sat Jul 18 13:32:37 2015 -0700
@@ -59,7 +59,7 @@
# Checking for proper OS
OS=`uname -s`
@@ -202,8 +202,8 @@
FILESEP="/"
;;
---- ./jdk/test/java/awt/appletviewer/IOExceptionIfEncodedURLTest/IOExceptionIfEncodedURLTest.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/java/awt/appletviewer/IOExceptionIfEncodedURLTest/IOExceptionIfEncodedURLTest.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/java/awt/appletviewer/IOExceptionIfEncodedURLTest/IOExceptionIfEncodedURLTest.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/java/awt/appletviewer/IOExceptionIfEncodedURLTest/IOExceptionIfEncodedURLTest.sh Sat Jul 18 13:32:37 2015 -0700
@@ -119,6 +119,14 @@
TMP="/tmp"
;;
@@ -219,8 +219,8 @@
Windows* )
VAR="A different value for Win32"
DEFAULT_JDK="C:/Program Files/Java/jdk1.8.0"
---- ./jdk/test/java/io/File/GetXSpace.java Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/java/io/File/GetXSpace.java Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/java/io/File/GetXSpace.java Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/java/io/File/GetXSpace.java Sat Jul 18 13:32:37 2015 -0700
@@ -51,7 +51,7 @@
private static final String dfFormat;
static {
@@ -230,8 +230,8 @@
// FileSystem Total Used Available Use% MountedOn
dfFormat = "([^\\s]+)\\s+(\\d+)\\s+\\d+\\s+(\\d+)\\s+\\d+%\\s+([^\\s]+)";
} else if (name.startsWith("Windows")) {
---- ./jdk/test/java/io/File/GetXSpace.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/java/io/File/GetXSpace.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/java/io/File/GetXSpace.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/java/io/File/GetXSpace.sh Sat Jul 18 13:32:37 2015 -0700
@@ -26,7 +26,7 @@
# set platform-dependent variable
OS=`uname -s`
@@ -241,8 +241,8 @@
Windows_98 ) return ;;
Windows* ) SID=`sid`; TMP="c:/temp" ;;
* )
---- ./jdk/test/java/io/Serializable/evolution/RenamePackage/run.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/java/io/Serializable/evolution/RenamePackage/run.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/java/io/Serializable/evolution/RenamePackage/run.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/java/io/Serializable/evolution/RenamePackage/run.sh Sat Jul 18 13:32:37 2015 -0700
@@ -45,7 +45,7 @@
# Need to determine the classpath separator and filepath separator based on the
# operating system.
@@ -252,8 +252,8 @@
PS=":" ;;
Windows* | CYGWIN* )
PS=";" ;;
---- ./jdk/test/java/io/Serializable/serialver/classpath/run.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/java/io/Serializable/serialver/classpath/run.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/java/io/Serializable/serialver/classpath/run.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/java/io/Serializable/serialver/classpath/run.sh Sat Jul 18 13:32:37 2015 -0700
@@ -47,7 +47,7 @@
# set platform-dependent variables
OS=`uname -s`
@@ -263,8 +263,8 @@
PS=":" ;;
Windows* | CYGWIN* )
PS=";" ;;
---- ./jdk/test/java/io/Serializable/serialver/nested/run.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/java/io/Serializable/serialver/nested/run.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/java/io/Serializable/serialver/nested/run.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/java/io/Serializable/serialver/nested/run.sh Sat Jul 18 13:32:37 2015 -0700
@@ -47,7 +47,7 @@
# set platform-dependent variables
OS=`uname -s`
@@ -274,8 +274,8 @@
PS=":" ;;
Windows* | CYGWIN* )
PS=";" ;;
---- ./jdk/test/java/lang/ClassLoader/Assert.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/java/lang/ClassLoader/Assert.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/java/lang/ClassLoader/Assert.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/java/lang/ClassLoader/Assert.sh Sat Jul 18 13:32:37 2015 -0700
@@ -25,7 +25,7 @@
OS=`uname -s`
@@ -285,8 +285,8 @@
FS="/"
CHMOD="${FS}bin${FS}chmod"
;;
---- ./jdk/test/java/lang/ClassLoader/deadlock/TestCrossDelegate.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/java/lang/ClassLoader/deadlock/TestCrossDelegate.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/java/lang/ClassLoader/deadlock/TestCrossDelegate.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/java/lang/ClassLoader/deadlock/TestCrossDelegate.sh Sat Jul 18 13:32:37 2015 -0700
@@ -55,7 +55,7 @@
Linux )
FS="/"
@@ -296,8 +296,8 @@
FS="/"
;;
AIX )
---- ./jdk/test/java/lang/ClassLoader/deadlock/TestOneWayDelegate.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/java/lang/ClassLoader/deadlock/TestOneWayDelegate.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/java/lang/ClassLoader/deadlock/TestOneWayDelegate.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/java/lang/ClassLoader/deadlock/TestOneWayDelegate.sh Sat Jul 18 13:32:37 2015 -0700
@@ -60,7 +60,7 @@
Linux )
FS="/"
@@ -307,8 +307,8 @@
FS="/"
;;
AIX )
---- ./jdk/test/java/lang/ProcessBuilder/DestroyTest.java Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/java/lang/ProcessBuilder/DestroyTest.java Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/java/lang/ProcessBuilder/DestroyTest.java Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/java/lang/ProcessBuilder/DestroyTest.java Sat Jul 18 13:32:37 2015 -0700
@@ -148,6 +148,9 @@
} else if (osName.startsWith("Linux") == true) {
return new UnixTest(
@@ -319,8 +319,8 @@
} else if (osName.startsWith("Mac OS")) {
return new MacTest(
File.createTempFile("ProcessTrap-", ".sh",null));
---- ./jdk/test/java/lang/ProcessBuilder/Zombies.java Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/java/lang/ProcessBuilder/Zombies.java Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/java/lang/ProcessBuilder/Zombies.java Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/java/lang/ProcessBuilder/Zombies.java Sat Jul 18 13:32:37 2015 -0700
@@ -34,7 +34,7 @@
static final String os = System.getProperty("os.name");
@@ -330,8 +330,8 @@
"/usr/bin/true" : "/bin/true";
public static void main(String[] args) throws Throwable {
---- ./jdk/test/java/lang/StringCoding/CheckEncodings.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/java/lang/StringCoding/CheckEncodings.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/java/lang/StringCoding/CheckEncodings.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/java/lang/StringCoding/CheckEncodings.sh Sat Jul 18 13:32:37 2015 -0700
@@ -30,7 +30,7 @@
# set platform-dependent variables
OS=`uname -s`
@@ -341,8 +341,8 @@
Windows* | CYGWIN* )
echo "Passed"; exit 0 ;;
* ) echo "Unrecognized system!" ; exit 1 ;;
---- ./jdk/test/java/lang/annotation/loaderLeak/LoaderLeak.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/java/lang/annotation/loaderLeak/LoaderLeak.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/java/lang/annotation/loaderLeak/LoaderLeak.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/java/lang/annotation/loaderLeak/LoaderLeak.sh Sat Jul 18 13:32:37 2015 -0700
@@ -48,7 +48,7 @@
# set platform-dependent variables
OS=`uname -s`
@@ -352,8 +352,8 @@
NULL=/dev/null
PS=":"
FS="/"
---- ./jdk/test/java/lang/instrument/MakeJAR2.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/java/lang/instrument/MakeJAR2.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/java/lang/instrument/MakeJAR2.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/java/lang/instrument/MakeJAR2.sh Sat Jul 18 13:32:37 2015 -0700
@@ -55,7 +55,7 @@
OS=`uname -s`
@@ -363,8 +363,8 @@
PATHSEP=":"
;;
---- ./jdk/test/java/lang/instrument/appendToClassLoaderSearch/CommonSetup.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/java/lang/instrument/appendToClassLoaderSearch/CommonSetup.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/java/lang/instrument/appendToClassLoaderSearch/CommonSetup.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/java/lang/instrument/appendToClassLoaderSearch/CommonSetup.sh Sat Jul 18 13:32:37 2015 -0700
@@ -43,7 +43,7 @@
PS=":"
FS="/"
@@ -374,8 +374,8 @@
PS=":"
FS="/"
;;
---- ./jdk/test/java/lang/management/OperatingSystemMXBean/GetSystemLoadAverage.java Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/java/lang/management/OperatingSystemMXBean/GetSystemLoadAverage.java Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/java/lang/management/OperatingSystemMXBean/GetSystemLoadAverage.java Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/java/lang/management/OperatingSystemMXBean/GetSystemLoadAverage.java Sat Jul 18 13:32:37 2015 -0700
@@ -79,8 +79,10 @@
System.out.println("Test passed.");
}
@@ -397,8 +397,8 @@
? output.split(" ")
: output.split(",");
double expected = Double.parseDouble(lavg[0]);
---- ./jdk/test/java/lang/management/OperatingSystemMXBean/TestSystemLoadAvg.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/java/lang/management/OperatingSystemMXBean/TestSystemLoadAvg.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/java/lang/management/OperatingSystemMXBean/TestSystemLoadAvg.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/java/lang/management/OperatingSystemMXBean/TestSystemLoadAvg.sh Sat Jul 18 13:32:37 2015 -0700
@@ -61,7 +61,7 @@
while true; do
echo "Run $i: TestSystemLoadAvg"
@@ -408,8 +408,8 @@
runOne GetSystemLoadAverage
;;
* )
---- ./jdk/test/java/net/Authenticator/B4933582.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/java/net/Authenticator/B4933582.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/java/net/Authenticator/B4933582.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/java/net/Authenticator/B4933582.sh Sat Jul 18 13:32:37 2015 -0700
@@ -26,7 +26,7 @@
OS=`uname -s`
@@ -419,8 +419,8 @@
PS=":"
FS="/"
;;
---- ./jdk/test/java/net/DatagramSocket/Send12k.java Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/java/net/DatagramSocket/Send12k.java Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/java/net/DatagramSocket/Send12k.java Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/java/net/DatagramSocket/Send12k.java Sat Jul 18 13:32:37 2015 -0700
@@ -36,9 +36,10 @@
public static void main(String args[]) throws Exception {
@@ -434,8 +434,8 @@
SEND_SIZE = 16 * 576;
} else {
SEND_SIZE = 16 * 1024;
---- ./jdk/test/java/net/DatagramSocket/SendDatagramToBadAddress.java Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/java/net/DatagramSocket/SendDatagramToBadAddress.java Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/java/net/DatagramSocket/SendDatagramToBadAddress.java Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/java/net/DatagramSocket/SendDatagramToBadAddress.java Sat Jul 18 13:32:37 2015 -0700
@@ -45,6 +45,8 @@
return (true);
if (p.getProperty ("os.name").equals ("Linux"))
@@ -445,8 +445,8 @@
if (p.getProperty ("os.name").startsWith ("Mac OS"))
return (true);
// Check for specific Solaris version from here
---- ./jdk/test/java/net/DatagramSocket/SetDatagramSocketImplFactory/ADatagramSocket.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/java/net/DatagramSocket/SetDatagramSocketImplFactory/ADatagramSocket.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/java/net/DatagramSocket/SetDatagramSocketImplFactory/ADatagramSocket.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/java/net/DatagramSocket/SetDatagramSocketImplFactory/ADatagramSocket.sh Sat Jul 18 13:32:37 2015 -0700
@@ -27,11 +27,7 @@
# set platform-dependent variables
OS=`uname -s`
@@ -460,8 +460,8 @@
PATHSEP=":"
FILESEP="/"
;;
---- ./jdk/test/java/net/Socket/OldSocketImpl.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/java/net/Socket/OldSocketImpl.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/java/net/Socket/OldSocketImpl.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/java/net/Socket/OldSocketImpl.sh Sat Jul 18 13:32:37 2015 -0700
@@ -28,7 +28,7 @@
OS=`uname -s`
@@ -471,8 +471,8 @@
PS=":"
FS="/"
;;
---- ./jdk/test/java/net/URL/B5086147.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/java/net/URL/B5086147.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/java/net/URL/B5086147.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/java/net/URL/B5086147.sh Sat Jul 18 13:32:37 2015 -0700
@@ -26,7 +26,7 @@
OS=`uname -s`
@@ -482,8 +482,8 @@
exit 0
;;
CYGWIN* )
---- ./jdk/test/java/net/URLClassLoader/B5077773.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/java/net/URLClassLoader/B5077773.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/java/net/URLClassLoader/B5077773.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/java/net/URLClassLoader/B5077773.sh Sat Jul 18 13:32:37 2015 -0700
@@ -34,11 +34,7 @@
OS=`uname -s`
@@ -497,8 +497,8 @@
PS=":"
FS="/"
;;
---- ./jdk/test/java/net/URLClassLoader/sealing/checksealed.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/java/net/URLClassLoader/sealing/checksealed.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/java/net/URLClassLoader/sealing/checksealed.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/java/net/URLClassLoader/sealing/checksealed.sh Sat Jul 18 13:32:37 2015 -0700
@@ -27,11 +27,7 @@
OS=`uname -s`
@@ -512,8 +512,8 @@
PS=":"
FS="/"
;;
---- ./jdk/test/java/net/URLConnection/6212146/test.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/java/net/URLConnection/6212146/test.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/java/net/URLConnection/6212146/test.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/java/net/URLConnection/6212146/test.sh Sat Jul 18 13:32:37 2015 -0700
@@ -33,11 +33,7 @@
OS=`uname -s`
@@ -527,8 +527,8 @@
PS=":"
FS="/"
;;
---- ./jdk/test/java/nio/channels/FileChannel/Transfer.java Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/java/nio/channels/FileChannel/Transfer.java Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/java/nio/channels/FileChannel/Transfer.java Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/java/nio/channels/FileChannel/Transfer.java Sat Jul 18 13:32:37 2015 -0700
@@ -228,7 +228,7 @@
// Windows and Linux can't handle the really large file sizes for a
// truncate or a positional write required by the test for 4563125
@@ -538,8 +538,8 @@
return;
File source = File.createTempFile("blah", null);
source.deleteOnExit();
---- ./jdk/test/java/nio/channels/spi/SelectorProvider/inheritedChannel/Launcher.c Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/java/nio/channels/spi/SelectorProvider/inheritedChannel/Launcher.c Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/java/nio/channels/spi/SelectorProvider/inheritedChannel/Launcher.c Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/java/nio/channels/spi/SelectorProvider/inheritedChannel/Launcher.c Sat Jul 18 13:32:37 2015 -0700
@@ -17,6 +17,12 @@
#include "Launcher.h"
@@ -562,8 +562,8 @@
_exit(-1);
}
---- ./jdk/test/java/nio/charset/coders/CheckSJISMappingProp.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/java/nio/charset/coders/CheckSJISMappingProp.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/java/nio/charset/coders/CheckSJISMappingProp.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/java/nio/charset/coders/CheckSJISMappingProp.sh Sat Jul 18 13:32:37 2015 -0700
@@ -34,7 +34,7 @@
OS=`uname -s`
@@ -573,8 +573,8 @@
# Skip locale test for Windows
Windows* | CYGWIN* )
echo "Passed"; exit 0 ;;
---- ./jdk/test/java/nio/charset/spi/basic.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/java/nio/charset/spi/basic.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/java/nio/charset/spi/basic.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/java/nio/charset/spi/basic.sh Sat Jul 18 13:32:37 2015 -0700
@@ -48,7 +48,7 @@
DIR=`pwd`
@@ -584,8 +584,8 @@
Windows* ) CPS=';' ;;
CYGWIN* )
DIR=`/usr/bin/cygpath -a -s -m $DIR`
---- ./jdk/test/java/nio/file/FileSystem/Basic.java Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/java/nio/file/FileSystem/Basic.java Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/java/nio/file/FileSystem/Basic.java Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/java/nio/file/FileSystem/Basic.java Sat Jul 18 13:32:37 2015 -0700
@@ -76,7 +76,7 @@
checkSupported(fs, "posix", "unix", "owner", "acl", "user");
if (os.equals("Linux"))
@@ -595,8 +595,8 @@
checkSupported(fs, "posix", "unix", "owner");
if (os.equals("Windows"))
checkSupported(fs, "owner", "dos", "acl", "user");
---- ./jdk/test/java/nio/file/Files/CopyAndMove.java Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/java/nio/file/Files/CopyAndMove.java Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/java/nio/file/Files/CopyAndMove.java Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/java/nio/file/Files/CopyAndMove.java Sat Jul 18 13:32:37 2015 -0700
@@ -651,7 +651,7 @@
// check POSIX attributes are copied
@@ -615,8 +615,8 @@
boolean isDirectory = isDirectory(file, NOFOLLOW_LINKS);
if (isUnix) {
---- ./jdk/test/java/rmi/activation/Activatable/extLoadedImpl/ext.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/java/rmi/activation/Activatable/extLoadedImpl/ext.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/java/rmi/activation/Activatable/extLoadedImpl/ext.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/java/rmi/activation/Activatable/extLoadedImpl/ext.sh Sat Jul 18 13:32:37 2015 -0700
@@ -33,7 +33,7 @@
OS=`uname -s`
@@ -626,8 +626,8 @@
PS=":"
;;
Windows* | CYGWIN* )
---- ./jdk/test/java/rmi/registry/readTest/readTest.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/java/rmi/registry/readTest/readTest.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/java/rmi/registry/readTest/readTest.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/java/rmi/registry/readTest/readTest.sh Sat Jul 18 13:32:37 2015 -0700
@@ -34,7 +34,7 @@
REGARGS=""
@@ -637,8 +637,8 @@
PS=":"
FS="/"
CHMOD="${FS}bin${FS}chmod"
---- ./jdk/test/java/security/Security/ClassLoaderDeadlock/ClassLoaderDeadlock.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/java/security/Security/ClassLoaderDeadlock/ClassLoaderDeadlock.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/java/security/Security/ClassLoaderDeadlock/ClassLoaderDeadlock.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/java/security/Security/ClassLoaderDeadlock/ClassLoaderDeadlock.sh Sat Jul 18 13:32:37 2015 -0700
@@ -58,7 +58,7 @@
PATHSEP=":"
FILESEP="/"
@@ -648,8 +648,8 @@
PATHSEP=":"
FILESEP="/"
;;
---- ./jdk/test/java/security/Security/ClassLoaderDeadlock/Deadlock.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/java/security/Security/ClassLoaderDeadlock/Deadlock.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/java/security/Security/ClassLoaderDeadlock/Deadlock.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/java/security/Security/ClassLoaderDeadlock/Deadlock.sh Sat Jul 18 13:32:37 2015 -0700
@@ -42,7 +42,7 @@
PATHSEP=":"
FILESEP="/"
@@ -659,8 +659,8 @@
PATHSEP=":"
FILESEP="/"
;;
---- ./jdk/test/java/security/Security/ClassLoaderDeadlock/Deadlock2.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/java/security/Security/ClassLoaderDeadlock/Deadlock2.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/java/security/Security/ClassLoaderDeadlock/Deadlock2.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/java/security/Security/ClassLoaderDeadlock/Deadlock2.sh Sat Jul 18 13:32:37 2015 -0700
@@ -66,7 +66,7 @@
PATHSEP=";"
FILESEP="/"
@@ -670,8 +670,8 @@
PATHSEP=":"
FILESEP="/"
;;
---- ./jdk/test/java/security/Security/signedfirst/Dyn.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/java/security/Security/signedfirst/Dyn.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/java/security/Security/signedfirst/Dyn.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/java/security/Security/signedfirst/Dyn.sh Sat Jul 18 13:32:37 2015 -0700
@@ -58,7 +58,7 @@
PATHSEP=":"
FILESEP="/"
@@ -681,8 +681,8 @@
PATHSEP=":"
FILESEP="/"
;;
---- ./jdk/test/java/security/Security/signedfirst/Static.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/java/security/Security/signedfirst/Static.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/java/security/Security/signedfirst/Static.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/java/security/Security/signedfirst/Static.sh Sat Jul 18 13:32:37 2015 -0700
@@ -58,7 +58,7 @@
PATHSEP=":"
FILESEP="/"
@@ -692,8 +692,8 @@
PATHSEP=":"
FILESEP="/"
;;
---- ./jdk/test/java/util/Currency/PropertiesTest.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/java/util/Currency/PropertiesTest.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/java/util/Currency/PropertiesTest.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/java/util/Currency/PropertiesTest.sh Sat Jul 18 13:32:37 2015 -0700
@@ -52,7 +52,7 @@
# set platform-dependent variables
OS=`uname -s`
@@ -703,8 +703,8 @@
PS=":"
FS="/"
;;
---- ./jdk/test/java/util/PluggableLocale/ExecTest.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/java/util/PluggableLocale/ExecTest.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/java/util/PluggableLocale/ExecTest.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/java/util/PluggableLocale/ExecTest.sh Sat Jul 18 13:32:37 2015 -0700
@@ -62,7 +62,7 @@
# set platform-dependent variables
OS=`uname -s`
@@ -714,8 +714,8 @@
PS=":"
FS="/"
;;
---- ./jdk/test/java/util/ResourceBundle/Bug6299235Test.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/java/util/ResourceBundle/Bug6299235Test.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/java/util/ResourceBundle/Bug6299235Test.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/java/util/ResourceBundle/Bug6299235Test.sh Sat Jul 18 13:32:37 2015 -0700
@@ -31,7 +31,7 @@
# set platform-dependent variables
OS=`uname -s`
@@ -725,8 +725,8 @@
PATHSEP=":"
FILESEP="/"
;;
---- ./jdk/test/java/util/ServiceLoader/basic.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/java/util/ServiceLoader/basic.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/java/util/ServiceLoader/basic.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/java/util/ServiceLoader/basic.sh Sat Jul 18 13:32:37 2015 -0700
@@ -43,9 +43,7 @@
OS=`uname -s`
@@ -738,8 +738,8 @@
SEP=':' ;;
* )
SEP='\;' ;;
---- ./jdk/test/java/util/prefs/CheckUserPrefsStorage.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/java/util/prefs/CheckUserPrefsStorage.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/java/util/prefs/CheckUserPrefsStorage.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/java/util/prefs/CheckUserPrefsStorage.sh Sat Jul 18 13:32:37 2015 -0700
@@ -31,7 +31,7 @@
OS=`uname -s`
@@ -749,8 +749,8 @@
PS=":"
FS="/"
;;
---- ./jdk/test/javax/crypto/SecretKeyFactory/FailOverTest.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/javax/crypto/SecretKeyFactory/FailOverTest.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/javax/crypto/SecretKeyFactory/FailOverTest.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/javax/crypto/SecretKeyFactory/FailOverTest.sh Sat Jul 18 13:32:37 2015 -0700
@@ -56,7 +56,7 @@
# set platform-dependent variables
OS=`uname -s`
@@ -760,8 +760,8 @@
NULL=/dev/null
PS=":"
FS="/"
---- ./jdk/test/javax/imageio/metadata/IIOMetadataFormat/runMetadataFormatTest.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/javax/imageio/metadata/IIOMetadataFormat/runMetadataFormatTest.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/javax/imageio/metadata/IIOMetadataFormat/runMetadataFormatTest.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/javax/imageio/metadata/IIOMetadataFormat/runMetadataFormatTest.sh Sat Jul 18 13:32:37 2015 -0700
@@ -89,7 +89,7 @@
FILESEP="/"
;;
@@ -771,8 +771,8 @@
VAR="A different value for Linux"
DEFAULT_JDK=/none
#DEFAULT_JDK=/usr/local/java/jdk1.4/linux-i386
---- ./jdk/test/javax/imageio/metadata/IIOMetadataFormat/runMetadataFormatThreadTest.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/javax/imageio/metadata/IIOMetadataFormat/runMetadataFormatThreadTest.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/javax/imageio/metadata/IIOMetadataFormat/runMetadataFormatThreadTest.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/javax/imageio/metadata/IIOMetadataFormat/runMetadataFormatThreadTest.sh Sat Jul 18 13:32:37 2015 -0700
@@ -90,7 +90,7 @@
FILESEP="/"
;;
@@ -782,8 +782,8 @@
VAR="A different value for Linux"
DEFAULT_JDK=/none
#DEFAULT_JDK=/usr/local/java/jdk1.4/linux-i386
---- ./jdk/test/javax/imageio/stream/StreamCloserLeak/run_test.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/javax/imageio/stream/StreamCloserLeak/run_test.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/javax/imageio/stream/StreamCloserLeak/run_test.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/javax/imageio/stream/StreamCloserLeak/run_test.sh Sat Jul 18 13:32:37 2015 -0700
@@ -108,6 +108,14 @@
TMP="/tmp"
;;
@@ -799,8 +799,8 @@
Windows* )
VAR="A different value for Win32"
DEFAULT_JDK="C:/Program Files/Java/jdk1.8.0"
---- ./jdk/test/javax/script/CommonSetup.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/javax/script/CommonSetup.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/javax/script/CommonSetup.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/javax/script/CommonSetup.sh Sat Jul 18 13:32:37 2015 -0700
@@ -36,7 +36,7 @@
OS=`uname -s`
@@ -810,8 +810,8 @@
PS=":"
FS="/"
;;
---- ./jdk/test/javax/security/auth/Subject/doAs/Test.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/javax/security/auth/Subject/doAs/Test.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/javax/security/auth/Subject/doAs/Test.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/javax/security/auth/Subject/doAs/Test.sh Sat Jul 18 13:32:37 2015 -0700
@@ -43,7 +43,7 @@
FS="/"
RM="/bin/rm -f"
@@ -821,8 +821,8 @@
PS=":"
FS="/"
RM="/bin/rm -f"
---- ./jdk/test/lib/security/java.policy/Ext_AllPolicy.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/lib/security/java.policy/Ext_AllPolicy.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/lib/security/java.policy/Ext_AllPolicy.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/lib/security/java.policy/Ext_AllPolicy.sh Sat Jul 18 13:32:37 2015 -0700
@@ -53,7 +53,7 @@
# set platform-dependent variables
OS=`uname -s`
@@ -832,8 +832,8 @@
NULL=/dev/null
PS=":"
FS="/"
---- ./jdk/test/lib/testlibrary/jdk/testlibrary/Platform.java Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/lib/testlibrary/jdk/testlibrary/Platform.java Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/lib/testlibrary/jdk/testlibrary/Platform.java Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/lib/testlibrary/jdk/testlibrary/Platform.java Sat Jul 18 13:32:37 2015 -0700
@@ -53,8 +53,13 @@
return isOs("linux");
}
@@ -849,8 +849,8 @@
}
public static String getOsName() {
---- ./jdk/test/sun/awt/dnd/8024061/bug8024061.java Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/sun/awt/dnd/8024061/bug8024061.java Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/sun/awt/dnd/8024061/bug8024061.java Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/sun/awt/dnd/8024061/bug8024061.java Sat Jul 18 13:32:37 2015 -0700
@@ -107,8 +107,8 @@
public static void main(String[] args) throws AWTException, InvocationTargetException, InterruptedException {
@@ -862,8 +862,8 @@
"skipping!");
return;
}
---- ./jdk/test/sun/management/jmxremote/bootstrap/GeneratePropertyPassword.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/sun/management/jmxremote/bootstrap/GeneratePropertyPassword.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/sun/management/jmxremote/bootstrap/GeneratePropertyPassword.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/sun/management/jmxremote/bootstrap/GeneratePropertyPassword.sh Sat Jul 18 13:32:37 2015 -0700
@@ -42,7 +42,7 @@
fi
@@ -873,8 +873,22 @@
PATHSEP=":"
FILESEP="/"
DFILESEP=$FILESEP
---- ./jdk/test/sun/net/ftp/MarkResetTest.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/sun/net/ftp/MarkResetTest.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/sun/management/jmxremote/bootstrap/management_ssltest07_ok.properties.in Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/sun/management/jmxremote/bootstrap/management_ssltest07_ok.properties.in Sat Jul 18 13:32:37 2015 -0700
+@@ -2,3 +2,4 @@
+ com.sun.management.jmxremote.ssl.enabled.protocols=SSLv2Hello,SSLv3,TLSv1
+ com.sun.management.jmxremote.ssl.need.client.auth=true
+ com.sun.management.jmxremote.authenticate=false
++javax.rmi.ssl.client.enabledCipherSuites=SSL_RSA_WITH_RC4_128_SHA,SSL_RSA_WITH_RC4_128_MD5
+--- ./jdk/test/sun/management/jmxremote/bootstrap/management_ssltest11_ok.properties.in Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/sun/management/jmxremote/bootstrap/management_ssltest11_ok.properties.in Sat Jul 18 13:32:37 2015 -0700
+@@ -3,3 +3,4 @@
+ com.sun.management.jmxremote.ssl.need.client.auth=true
+ com.sun.management.jmxremote.ssl.config.file=@TEST-SRC@/jmxremote_ssltest11_ok.ssl
+ com.sun.management.jmxremote.authenticate=false
++javax.rmi.ssl.client.enabledCipherSuites=SSL_RSA_WITH_RC4_128_SHA,SSL_RSA_WITH_RC4_128_MD5
+--- ./jdk/test/sun/net/ftp/MarkResetTest.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/sun/net/ftp/MarkResetTest.sh Sat Jul 18 13:32:37 2015 -0700
@@ -28,7 +28,7 @@
OS=`uname -s`
@@ -884,8 +898,8 @@
PS=":"
FS="/"
;;
---- ./jdk/test/sun/net/www/http/HttpClient/RetryPost.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/sun/net/www/http/HttpClient/RetryPost.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/sun/net/www/http/HttpClient/RetryPost.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/sun/net/www/http/HttpClient/RetryPost.sh Sat Jul 18 13:32:37 2015 -0700
@@ -28,7 +28,7 @@
OS=`uname -s`
@@ -895,8 +909,8 @@
PS=":"
FS="/"
;;
---- ./jdk/test/sun/net/www/protocol/jar/B5105410.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/sun/net/www/protocol/jar/B5105410.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/sun/net/www/protocol/jar/B5105410.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/sun/net/www/protocol/jar/B5105410.sh Sat Jul 18 13:32:37 2015 -0700
@@ -31,7 +31,7 @@
OS=`uname -s`
@@ -906,8 +920,8 @@
PS=":"
FS="/"
;;
---- ./jdk/test/sun/net/www/protocol/jar/jarbug/run.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/sun/net/www/protocol/jar/jarbug/run.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/sun/net/www/protocol/jar/jarbug/run.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/sun/net/www/protocol/jar/jarbug/run.sh Sat Jul 18 13:32:37 2015 -0700
@@ -31,7 +31,7 @@
OS=`uname -s`
@@ -917,8 +931,8 @@
PS=":"
FS="/"
CHMOD="${FS}bin${FS}chmod"
---- ./jdk/test/sun/nio/ch/SelProvider.java Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/sun/nio/ch/SelProvider.java Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/sun/nio/ch/SelProvider.java Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/sun/nio/ch/SelProvider.java Sat Jul 18 13:32:37 2015 -0700
@@ -39,7 +39,7 @@
expected = "sun.nio.ch.DevPollSelectorProvider";
} else if ("Linux".equals(osname)) {
@@ -928,8 +942,8 @@
expected = "sun.nio.ch.KQueueSelectorProvider";
} else {
return;
---- ./jdk/test/sun/security/krb5/runNameEquals.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/sun/security/krb5/runNameEquals.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/sun/security/krb5/runNameEquals.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/sun/security/krb5/runNameEquals.sh Sat Jul 18 13:32:37 2015 -0700
@@ -52,7 +52,7 @@
# set platform-dependent variables
OS=`uname -s`
@@ -939,8 +953,8 @@
PATHSEP=":"
FILESEP="/"
NATIVE=true
---- ./jdk/test/sun/security/mscapi/ShortRSAKey1024.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/sun/security/mscapi/ShortRSAKey1024.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/sun/security/mscapi/ShortRSAKey1024.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/sun/security/mscapi/ShortRSAKey1024.sh Sat Jul 18 13:32:37 2015 -0700
@@ -49,7 +49,7 @@
OS=`uname -s`
@@ -950,8 +964,8 @@
FS="/"
;;
Windows_* )
---- ./jdk/test/sun/security/pkcs11/Provider/ConfigQuotedString.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/sun/security/pkcs11/Provider/ConfigQuotedString.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/sun/security/pkcs11/Provider/ConfigQuotedString.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/sun/security/pkcs11/Provider/ConfigQuotedString.sh Sat Jul 18 13:32:37 2015 -0700
@@ -66,7 +66,7 @@
CP="${FS}bin${FS}cp"
CHMOD="${FS}bin${FS}chmod"
@@ -961,8 +975,8 @@
FS="/"
PS=":"
CP="${FS}bin${FS}cp"
---- ./jdk/test/sun/security/pkcs11/Provider/Login.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/sun/security/pkcs11/Provider/Login.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/sun/security/pkcs11/Provider/Login.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/sun/security/pkcs11/Provider/Login.sh Sat Jul 18 13:32:37 2015 -0700
@@ -67,7 +67,7 @@
CP="${FS}bin${FS}cp"
CHMOD="${FS}bin${FS}chmod"
@@ -972,8 +986,8 @@
FS="/"
PS=":"
CP="${FS}bin${FS}cp"
---- ./jdk/test/sun/security/provider/KeyStore/DKSTest.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/sun/security/provider/KeyStore/DKSTest.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/sun/security/provider/KeyStore/DKSTest.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/sun/security/provider/KeyStore/DKSTest.sh Sat Jul 18 13:32:37 2015 -0700
@@ -50,7 +50,7 @@
# set platform-dependent variables
OS=`uname -s`
@@ -983,8 +997,8 @@
PS=":"
FS="/"
;;
---- ./jdk/test/sun/security/provider/PolicyFile/GrantAllPermToExtWhenNoPolicy.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/sun/security/provider/PolicyFile/GrantAllPermToExtWhenNoPolicy.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/sun/security/provider/PolicyFile/GrantAllPermToExtWhenNoPolicy.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/sun/security/provider/PolicyFile/GrantAllPermToExtWhenNoPolicy.sh Sat Jul 18 13:32:37 2015 -0700
@@ -52,7 +52,7 @@
PATHSEP=":"
FILESEP="/"
@@ -994,8 +1008,8 @@
PATHSEP=":"
FILESEP="/"
;;
---- ./jdk/test/sun/security/provider/PolicyFile/getinstance/getinstance.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/sun/security/provider/PolicyFile/getinstance/getinstance.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/sun/security/provider/PolicyFile/getinstance/getinstance.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/sun/security/provider/PolicyFile/getinstance/getinstance.sh Sat Jul 18 13:32:37 2015 -0700
@@ -59,7 +59,7 @@
PS=":"
FS="/"
@@ -1005,8 +1019,8 @@
PS=":"
FS="/"
;;
---- ./jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/EngineArgs/DebugReportsOneExtraByte.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/EngineArgs/DebugReportsOneExtraByte.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/EngineArgs/DebugReportsOneExtraByte.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/EngineArgs/DebugReportsOneExtraByte.sh Sat Jul 18 13:32:37 2015 -0700
@@ -33,7 +33,7 @@
OS=`uname -s`
@@ -1016,8 +1030,8 @@
PS=":"
FS="/"
;;
---- ./jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/NotifyHandshakeTest.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/NotifyHandshakeTest.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/NotifyHandshakeTest.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/NotifyHandshakeTest.sh Sat Jul 18 13:32:37 2015 -0700
@@ -46,7 +46,7 @@
OS=`uname -s`
@@ -1027,8 +1041,8 @@
FILESEP="/"
PATHSEP=":"
;;
---- ./jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/PostThruProxy.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/PostThruProxy.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/PostThruProxy.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/PostThruProxy.sh Sat Jul 18 13:32:37 2015 -0700
@@ -32,7 +32,7 @@
HOSTNAME=`uname -n`
OS=`uname -s`
@@ -1038,8 +1052,8 @@
PS=":"
FS="/"
;;
---- ./jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/PostThruProxyWithAuth.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/PostThruProxyWithAuth.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/PostThruProxyWithAuth.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/PostThruProxyWithAuth.sh Sat Jul 18 13:32:37 2015 -0700
@@ -32,7 +32,7 @@
HOSTNAME=`uname -n`
OS=`uname -s`
@@ -1049,8 +1063,8 @@
PS=":"
FS="/"
;;
---- ./jdk/test/sun/security/tools/jarsigner/AlgOptions.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/sun/security/tools/jarsigner/AlgOptions.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/sun/security/tools/jarsigner/AlgOptions.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/sun/security/tools/jarsigner/AlgOptions.sh Sat Jul 18 13:32:37 2015 -0700
@@ -46,7 +46,7 @@
# set platform-dependent variables
OS=`uname -s`
@@ -1060,8 +1074,8 @@
NULL=/dev/null
PS=":"
FS="/"
---- ./jdk/test/sun/security/tools/jarsigner/PercentSign.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/sun/security/tools/jarsigner/PercentSign.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/sun/security/tools/jarsigner/PercentSign.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/sun/security/tools/jarsigner/PercentSign.sh Sat Jul 18 13:32:37 2015 -0700
@@ -46,7 +46,7 @@
# set platform-dependent variables
OS=`uname -s`
@@ -1071,8 +1085,8 @@
NULL=/dev/null
PS=":"
FS="/"
---- ./jdk/test/sun/security/tools/jarsigner/diffend.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/sun/security/tools/jarsigner/diffend.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/sun/security/tools/jarsigner/diffend.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/sun/security/tools/jarsigner/diffend.sh Sat Jul 18 13:32:37 2015 -0700
@@ -47,6 +47,13 @@
FS="/"
CP="${FS}bin${FS}cp -f"
@@ -1087,8 +1101,8 @@
CYGWIN* )
NULL=/dev/null
PS=";"
---- ./jdk/test/sun/security/tools/jarsigner/emptymanifest.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/sun/security/tools/jarsigner/emptymanifest.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/sun/security/tools/jarsigner/emptymanifest.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/sun/security/tools/jarsigner/emptymanifest.sh Sat Jul 18 13:32:37 2015 -0700
@@ -39,6 +39,11 @@
Windows_* )
FS="\\"
@@ -1101,8 +1115,8 @@
* )
FS="/"
;;
---- ./jdk/test/sun/security/tools/jarsigner/oldsig.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/sun/security/tools/jarsigner/oldsig.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/sun/security/tools/jarsigner/oldsig.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/sun/security/tools/jarsigner/oldsig.sh Sat Jul 18 13:32:37 2015 -0700
@@ -42,7 +42,7 @@
# set platform-dependent variables
OS=`uname -s`
@@ -1112,8 +1126,8 @@
NULL=/dev/null
PS=":"
FS="/"
---- ./jdk/test/sun/security/tools/keytool/AltProviderPath.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/sun/security/tools/keytool/AltProviderPath.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/sun/security/tools/keytool/AltProviderPath.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/sun/security/tools/keytool/AltProviderPath.sh Sat Jul 18 13:32:37 2015 -0700
@@ -46,7 +46,7 @@
# set platform-dependent variables
OS=`uname -s`
@@ -1123,8 +1137,8 @@
NULL=/dev/null
PS=":"
FS="/"
---- ./jdk/test/sun/security/tools/keytool/CloneKeyAskPassword.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/sun/security/tools/keytool/CloneKeyAskPassword.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/sun/security/tools/keytool/CloneKeyAskPassword.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/sun/security/tools/keytool/CloneKeyAskPassword.sh Sat Jul 18 13:32:37 2015 -0700
@@ -55,7 +55,7 @@
PATHSEP=":"
FILESEP="/"
@@ -1134,8 +1148,8 @@
PATHSEP=":"
FILESEP="/"
;;
---- ./jdk/test/sun/security/tools/keytool/NoExtNPE.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/sun/security/tools/keytool/NoExtNPE.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/sun/security/tools/keytool/NoExtNPE.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/sun/security/tools/keytool/NoExtNPE.sh Sat Jul 18 13:32:37 2015 -0700
@@ -48,7 +48,7 @@
Linux )
FILESEP="/"
@@ -1145,8 +1159,8 @@
FILESEP="/"
;;
AIX )
---- ./jdk/test/sun/security/tools/keytool/SecretKeyKS.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/sun/security/tools/keytool/SecretKeyKS.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/sun/security/tools/keytool/SecretKeyKS.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/sun/security/tools/keytool/SecretKeyKS.sh Sat Jul 18 13:32:37 2015 -0700
@@ -45,7 +45,7 @@
# set platform-dependent variables
OS=`uname -s`
@@ -1156,8 +1170,8 @@
NULL=/dev/null
PS=":"
FS="/"
---- ./jdk/test/sun/security/tools/keytool/StandardAlgName.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/sun/security/tools/keytool/StandardAlgName.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/sun/security/tools/keytool/StandardAlgName.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/sun/security/tools/keytool/StandardAlgName.sh Sat Jul 18 13:32:37 2015 -0700
@@ -46,7 +46,7 @@
# set platform-dependent variables
OS=`uname -s`
@@ -1167,8 +1181,8 @@
NULL=/dev/null
PS=":"
FS="/"
---- ./jdk/test/sun/security/tools/keytool/StorePasswordsByShell.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/sun/security/tools/keytool/StorePasswordsByShell.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/sun/security/tools/keytool/StorePasswordsByShell.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/sun/security/tools/keytool/StorePasswordsByShell.sh Sat Jul 18 13:32:37 2015 -0700
@@ -46,7 +46,7 @@
# set platform-dependent variables
OS=`uname -s`
@@ -1178,8 +1192,8 @@
PATHSEP=":"
FILESEP="/"
;;
---- ./jdk/test/sun/security/tools/keytool/i18n.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/sun/security/tools/keytool/i18n.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/sun/security/tools/keytool/i18n.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/sun/security/tools/keytool/i18n.sh Sat Jul 18 13:32:37 2015 -0700
@@ -46,7 +46,7 @@
# set platform-dependent variables
OS=`uname -s`
@@ -1189,8 +1203,8 @@
NULL=/dev/null
PS=":"
FS="/"
---- ./jdk/test/sun/security/tools/keytool/printssl.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/sun/security/tools/keytool/printssl.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/sun/security/tools/keytool/printssl.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/sun/security/tools/keytool/printssl.sh Sat Jul 18 13:32:37 2015 -0700
@@ -40,7 +40,7 @@
# set platform-dependent variables
OS=`uname -s`
@@ -1200,8 +1214,8 @@
FS="/"
;;
CYGWIN* )
---- ./jdk/test/sun/security/tools/keytool/resource.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/sun/security/tools/keytool/resource.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/sun/security/tools/keytool/resource.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/sun/security/tools/keytool/resource.sh Sat Jul 18 13:32:37 2015 -0700
@@ -43,7 +43,7 @@
# set platform-dependent variables
OS=`uname -s`
@@ -1211,8 +1225,8 @@
NULL=/dev/null
FS="/"
;;
---- ./jdk/test/sun/security/tools/keytool/standard.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/sun/security/tools/keytool/standard.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/sun/security/tools/keytool/standard.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/sun/security/tools/keytool/standard.sh Sat Jul 18 13:32:37 2015 -0700
@@ -45,7 +45,7 @@
# set platform-dependent variables
OS=`uname -s`
@@ -1222,8 +1236,8 @@
FS="/"
;;
Windows_* )
---- ./jdk/test/sun/security/tools/policytool/Alias.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/sun/security/tools/policytool/Alias.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/sun/security/tools/policytool/Alias.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/sun/security/tools/policytool/Alias.sh Sat Jul 18 13:32:37 2015 -0700
@@ -47,7 +47,7 @@
# set platform-dependent variables
OS=`uname -s`
@@ -1233,8 +1247,8 @@
NULL=/dev/null
PS=":"
FS="/"
---- ./jdk/test/sun/security/tools/policytool/ChangeUI.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/sun/security/tools/policytool/ChangeUI.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/sun/security/tools/policytool/ChangeUI.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/sun/security/tools/policytool/ChangeUI.sh Sat Jul 18 13:32:37 2015 -0700
@@ -46,7 +46,7 @@
# set platform-dependent variables
OS=`uname -s`
@@ -1244,8 +1258,8 @@
NULL=/dev/null
PS=":"
FS="/"
---- ./jdk/test/sun/security/tools/policytool/OpenPolicy.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/sun/security/tools/policytool/OpenPolicy.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/sun/security/tools/policytool/OpenPolicy.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/sun/security/tools/policytool/OpenPolicy.sh Sat Jul 18 13:32:37 2015 -0700
@@ -46,7 +46,7 @@
# set platform-dependent variables
OS=`uname -s`
@@ -1255,8 +1269,8 @@
NULL=/dev/null
PS=":"
FS="/"
---- ./jdk/test/sun/security/tools/policytool/SaveAs.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/sun/security/tools/policytool/SaveAs.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/sun/security/tools/policytool/SaveAs.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/sun/security/tools/policytool/SaveAs.sh Sat Jul 18 13:32:37 2015 -0700
@@ -47,7 +47,7 @@
# set platform-dependent variables
OS=`uname -s`
@@ -1266,8 +1280,8 @@
NULL=/dev/null
PS=":"
FS="/"
---- ./jdk/test/sun/security/tools/policytool/UpdatePermissions.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/sun/security/tools/policytool/UpdatePermissions.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/sun/security/tools/policytool/UpdatePermissions.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/sun/security/tools/policytool/UpdatePermissions.sh Sat Jul 18 13:32:37 2015 -0700
@@ -47,7 +47,7 @@
# set platform-dependent variables
OS=`uname -s`
@@ -1277,8 +1291,8 @@
NULL=/dev/null
PS=":"
FS="/"
---- ./jdk/test/sun/security/tools/policytool/UsePolicy.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/sun/security/tools/policytool/UsePolicy.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/sun/security/tools/policytool/UsePolicy.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/sun/security/tools/policytool/UsePolicy.sh Sat Jul 18 13:32:37 2015 -0700
@@ -46,7 +46,7 @@
# set platform-dependent variables
OS=`uname -s`
@@ -1288,8 +1302,8 @@
NULL=/dev/null
PS=":"
FS="/"
---- ./jdk/test/sun/security/tools/policytool/i18n.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/sun/security/tools/policytool/i18n.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/sun/security/tools/policytool/i18n.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/sun/security/tools/policytool/i18n.sh Sat Jul 18 13:32:37 2015 -0700
@@ -49,7 +49,7 @@
# set platform-dependent variables
OS=`uname -s`
@@ -1299,8 +1313,8 @@
NULL=/dev/null
PS=":"
FS="/"
---- ./jdk/test/sun/tools/common/CommonSetup.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/sun/tools/common/CommonSetup.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/sun/tools/common/CommonSetup.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/sun/tools/common/CommonSetup.sh Sat Jul 18 13:32:37 2015 -0700
@@ -47,6 +47,7 @@
# isLinux - true if OS is Linux
# isSolaris - true if OS is Solaris
@@ -1328,8 +1342,8 @@
Darwin )
OS="Mac OS X"
isMacos=true
---- ./jdk/test/sun/tools/jconsole/ResourceCheckTest.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/sun/tools/jconsole/ResourceCheckTest.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/sun/tools/jconsole/ResourceCheckTest.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/sun/tools/jconsole/ResourceCheckTest.sh Sat Jul 18 13:32:37 2015 -0700
@@ -54,7 +54,7 @@
OS=`uname -s`
@@ -1339,8 +1353,8 @@
PATHSEP=":"
;;
---- ./jdk/test/sun/tools/native2ascii/resources/ImmutableResourceTest.sh Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/sun/tools/native2ascii/resources/ImmutableResourceTest.sh Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/sun/tools/native2ascii/resources/ImmutableResourceTest.sh Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/sun/tools/native2ascii/resources/ImmutableResourceTest.sh Sat Jul 18 13:32:37 2015 -0700
@@ -56,7 +56,7 @@
OS=`uname -s`
@@ -1350,8 +1364,8 @@
PATHSEP=":"
;;
---- ./jdk/test/tools/launcher/ExecutionEnvironment.java Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/tools/launcher/ExecutionEnvironment.java Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/tools/launcher/ExecutionEnvironment.java Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/tools/launcher/ExecutionEnvironment.java Sat Jul 18 13:32:37 2015 -0700
@@ -194,7 +194,7 @@
Map<String, String> env = new HashMap<>();
@@ -1361,8 +1375,8 @@
for (String x : LD_PATH_STRINGS) {
String pairs[] = x.split("=");
env.put(pairs[0], pairs[1]);
---- ./jdk/test/tools/launcher/RunpathTest.java Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/tools/launcher/RunpathTest.java Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/tools/launcher/RunpathTest.java Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/tools/launcher/RunpathTest.java Sat Jul 18 13:32:37 2015 -0700
@@ -69,7 +69,7 @@
}
@@ -1372,8 +1386,8 @@
RunpathTest rp = new RunpathTest();
rp.testRpath();
}
---- ./jdk/test/tools/launcher/Test7029048.java Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/tools/launcher/Test7029048.java Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/tools/launcher/Test7029048.java Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/tools/launcher/Test7029048.java Sat Jul 18 13:32:37 2015 -0700
@@ -223,7 +223,7 @@
} else if (isSolaris && passes < 9) {
throw new Exception("Test7029048: FAIL: " +
@@ -1383,8 +1397,8 @@
throw new Exception("Test7029048: FAIL: " +
"all tests did not run, expected " + 6 + " got " + passes);
} else {
---- ./jdk/test/tools/launcher/TestHelper.java Tue Mar 17 00:09:12 2015 +0300
-+++ ./jdk/test/tools/launcher/TestHelper.java Tue May 05 18:07:05 2015 -0700
+--- ./jdk/test/tools/launcher/TestHelper.java Tue May 26 13:28:17 2015 -0700
++++ ./jdk/test/tools/launcher/TestHelper.java Sat Jul 18 13:32:37 2015 -0700
@@ -94,6 +94,8 @@
System.getProperty("os.name", "unknown").startsWith("Linux");
static final boolean isAIX =
@@ -1394,13 +1408,13 @@
static final String LIBJVM = isWindows
? "jvm.dll"
: "libjvm" + (isMacOSX ? ".dylib" : ".so");
---- ./langtools/test/Makefile Mon Mar 16 11:21:59 2015 -0700
-+++ ./langtools/test/Makefile Tue May 05 18:06:51 2015 -0700
+--- ./langtools/test/Makefile Tue May 26 13:29:30 2015 -0700
++++ ./langtools/test/Makefile Sat Jul 18 13:32:23 2015 -0700
@@ -36,6 +36,14 @@
ARCH=i586
endif
endif
-+ifneq ($(findstring $(OSNAME), BSD), )
++ifneq ($(findstring BSD, $(OSNAME)), )
+ PLATFORM = bsd
+ JT_PLATFORM = linux
+ ARCH = $(shell uname -p)
@@ -1411,8 +1425,8 @@
ifeq ($(OSNAME), Darwin)
PLATFORM = bsd
JT_PLATFORM = linux
---- ./langtools/test/tools/javah/ReadOldClass.sh Mon Mar 16 11:21:59 2015 -0700
-+++ ./langtools/test/tools/javah/ReadOldClass.sh Tue May 05 18:06:51 2015 -0700
+--- ./langtools/test/tools/javah/ReadOldClass.sh Tue May 26 13:29:30 2015 -0700
++++ ./langtools/test/tools/javah/ReadOldClass.sh Sat Jul 18 13:32:23 2015 -0700
@@ -43,7 +43,7 @@
# set platform-dependent variables
OS=`uname -s`
@@ -1422,8 +1436,8 @@
PS=":"
FS="/"
;;
---- ./nashorn/test/script/jfx.js Mon Mar 16 11:22:08 2015 -0700
-+++ ./nashorn/test/script/jfx.js Tue May 05 18:06:53 2015 -0700
+--- ./nashorn/test/script/jfx.js Tue May 26 13:29:41 2015 -0700
++++ ./nashorn/test/script/jfx.js Sat Jul 18 13:32:24 2015 -0700
@@ -93,6 +93,8 @@
f2 = new File(sb.append(fsep + "linux.png").toString());
} else if (OSInfo.getOSType() == OSType.MACOSX) {
diff --git a/java/openjdk8/files/patch-hotspot-src-os-bsd-vm-os_bsd.cpp b/java/openjdk8/files/patch-hotspot-src-os-bsd-vm-os_bsd.cpp
deleted file mode 100644
index 0e4656cbdedd..000000000000
--- a/java/openjdk8/files/patch-hotspot-src-os-bsd-vm-os_bsd.cpp
+++ /dev/null
@@ -1,31 +0,0 @@
---- hotspot/src/os/bsd/vm/os_bsd.cpp.orig
-+++ hotspot/src/os/bsd/vm/os_bsd.cpp
-@@ -1234,14 +1234,14 @@
- pid_t os::Bsd::gettid() {
- int retval = -1;
-
--#ifdef __APPLE__ //XNU kernel
-+#if defined(__APPLE__) //XNU kernel
- // despite the fact mach port is actually not a thread id use it
- // instead of syscall(SYS_thread_selfid) as it certainly fits to u4
- retval = ::pthread_mach_thread_np(::pthread_self());
- guarantee(retval != 0, "just checking");
- return retval;
-
--#elifdef __FreeBSD__
-+#elif defined(__FreeBSD__)
- #if __FreeBSD_version > 900030
- return ::pthread_getthreadid_np();
- #else
-@@ -1249,9 +1249,9 @@
- thr_self(&tid);
- return (pid_t)tid;
- #endif
--#elifdef __OpenBSD__
-+#elif defined(__OpenBSD__)
- retval = syscall(SYS_getthrid);
--#elifdef __NetBSD__
-+#elif defined(__NetBSD__)
- retval = (pid_t) _lwp_self();
- #endif
-
diff --git a/java/openjdk8/files/patch-hotspot-src-os-bsd-vm-vmError_bsd.cpp b/java/openjdk8/files/patch-hotspot-src-os-bsd-vm-vmError_bsd.cpp
deleted file mode 100644
index cb383ca48f37..000000000000
--- a/java/openjdk8/files/patch-hotspot-src-os-bsd-vm-vmError_bsd.cpp
+++ /dev/null
@@ -1,63 +0,0 @@
---- hotspot/src/os/bsd/vm/vmError_bsd.cpp.orig
-+++ hotspot/src/os/bsd/vm/vmError_bsd.cpp
-@@ -33,30 +33,50 @@
- #include <sys/syscall.h>
- #include <unistd.h>
- #include <signal.h>
-+#ifdef __FreeBSD__
-+#include <limits.h>
-+#include <sys/sysctl.h>
-+#endif
-+
-+#define GDB_CMD "gdb"
-+
-+static void set_debugger(char *buf, int buflen) {
-+ int pid = os::current_process_id();
-+#ifdef __FreeBSD__
-+ char cmd[PATH_MAX+1];
-+ int name[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, pid };
-+ size_t len = sizeof(cmd);
-+ if (sysctl(name, 4, cmd, &len, NULL, 0) == 0 && len > 0) {
-+ cmd[len] = '\0';
-+ jio_snprintf(buf, buflen, "%s %s %d", GDB_CMD, cmd, pid);
-+ } else
-+#endif
-+ jio_snprintf(buf, buflen, "%s /proc/%d/file %d", GDB_CMD, pid, pid);
-+}
-
- void VMError::show_message_box(char *buf, int buflen) {
- bool yes;
- do {
-- error_string(buf, buflen);
-- int len = (int)strlen(buf);
-+ intx tid = os::current_thread_id();
-+ set_debugger(buf, buflen);
-+ int len = (int)strlen(buf) + 1;
-+ char *msg = &buf[len];
-+ error_string(msg, buflen - len);
-+ len += (int)strlen(msg);
- char *p = &buf[len];
-
- jio_snprintf(p, buflen - len,
- "\n\n"
- "Do you want to debug the problem?\n\n"
-- "To debug, run 'gdb /proc/%d/file %d'; then switch to thread " INTX_FORMAT " (" INTPTR_FORMAT ")\n"
-- "Enter 'yes' to launch gdb automatically (PATH must include gdb)\n"
-+ "To debug, run '%s'; then switch to thread " INTX_FORMAT " (" INTPTR_FORMAT ")\n"
-+ "Enter 'yes' to launch " GDB_CMD " automatically (PATH must include " GDB_CMD ")\n"
- "Otherwise, press RETURN to abort...",
-- os::current_process_id(), os::current_process_id(),
-- os::current_thread_id(), os::current_thread_id());
-+ buf, tid, tid);
-
-- yes = os::message_box("Unexpected Error", buf);
-+ yes = os::message_box("Unexpected Error", msg);
-
- if (yes) {
- // yes, user asked VM to launch debugger
-- jio_snprintf(buf, buflen, "gdb /proc/%d/file %d",
-- os::current_process_id(), os::current_process_id());
--
- os::fork_and_exec(buf);
- yes = false;
- }
diff --git a/java/openjdk8/files/patch-jdk-make-lib-Awt2dLibraries.gmk b/java/openjdk8/files/patch-jdk-make-lib-Awt2dLibraries.gmk
index 679ce886e7ad..74afef350bc8 100644
--- a/java/openjdk8/files/patch-jdk-make-lib-Awt2dLibraries.gmk
+++ b/java/openjdk8/files/patch-jdk-make-lib-Awt2dLibraries.gmk
@@ -1,28 +1,20 @@
---- jdk/make/lib/Awt2dLibraries.gmk.orig 2015-03-25 15:50:52.527704000 -0400
-+++ jdk/make/lib/Awt2dLibraries.gmk 2015-03-25 17:59:54.197133000 -0400
-@@ -664,6 +664,7 @@
- -R/usr/dt/lib$(OPENJDK_TARGET_CPU_ISADIR) \
- $(call SET_SHARED_LIBRARY_ORIGIN) \
- $(call SET_SHARED_LIBRARY_ORIGIN,/..), \
-+ LDFLAGS_bsd := $(call SET_SHARED_LIBRARY_ORIGIN), \
- LDFLAGS_SUFFIX := $(LIBAWT_XAWT_LDFLAGS_SUFFIX), \
- VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \
- RC_FLAGS := $(RC_FLAGS) \
-@@ -1257,7 +1258,7 @@
- else ifeq ($(OPENJDK_TARGET_OS), solaris)
- LIBSPLASHSCREEN_CFLAGS += -DWITH_X11 -I$(OPENWIN_HOME)/include -I$(OPENWIN_HOME)/include/X11/extensions
- else ifeq ($(OPENJDK_TARGET_OS), bsd)
-- LIBSPLASHSCREEN_CFLAGS += -DWITH_X11 $(X_CFLAGS) -DLIBICONV_PLUG
-+ LIBSPLASHSCREEN_CFLAGS += -DWITH_X11 $(X_CFLAGS) %%ICONV_CPPFLAGS%%
+--- jdk/make/lib/Awt2dLibraries.gmk.orig 2015-07-18 14:30:01.000000000 -0700
++++ jdk/make/lib/Awt2dLibraries.gmk 2015-07-18 14:30:08.000000000 -0700
+@@ -1260,6 +1260,8 @@
+ LIBSPLASHSCREEN_CFLAGS += -DWITH_X11 $(X_CFLAGS) -I$(PACKAGE_PATH)/include
+ ifneq ($(OPENJDK_TARGET_OS_VENDOR), openbsd)
+ LIBSPLASHSCREEN_CFLAGS += -DLIBICONV_PLUG
++ else
++ LIBSPLASHSCREEN_CFLAGS += %%ICONV_CPPFLAGS%%
+ endif
else
LIBSPLASHSCREEN_CFLAGS += -DWITH_X11 $(X_CFLAGS)
- endif
-@@ -1282,7 +1283,7 @@
+@@ -1285,7 +1287,7 @@
# Solaris still uses OPENWIN_LIB ..
LIBSPLASHSCREEN_LDFLAGS_SUFFIX += -L$(OPENWIN_LIB)$(OPENJDK_TARGET_CPU_ISADIR) -lX11 -lXext $(LIBM) -lpthread
else ifeq ($(OPENJDK_TARGET_OS), bsd)
-- LIBSPLASHSCREEN_LDFLAGS_SUFFIX += $(X_LIBS) -lX11 -lXext $(LIBM) -liconv -pthread
-+ LIBSPLASHSCREEN_LDFLAGS_SUFFIX += $(X_LIBS) -lX11 -lXext $(LIBM) %%ICONV_LDFLAGS%% -pthread
+- LIBSPLASHSCREEN_LDFLAGS_SUFFIX += $(X_LIBS) -lX11 -lXext $(LIBM) -L$(PACKAGE_PATH)/lib -liconv -pthread
++ LIBSPLASHSCREEN_LDFLAGS_SUFFIX += $(X_LIBS) -lX11 -lXext $(LIBM) -L$(PACKAGE_PATH)/lib %%ICONV_LDFLAGS%% -pthread
else # .. all other Unixes can use X_LIBS
LIBSPLASHSCREEN_LDFLAGS_SUFFIX += $(X_LIBS) -lX11 -lXext $(LIBM) -lpthread
endif
diff --git a/java/openjdk8/files/patch-jdk-make-lib-CoreLibraries.gmk b/java/openjdk8/files/patch-jdk-make-lib-CoreLibraries.gmk
index 7c55ac72243a..5ff9fc8d7df3 100644
--- a/java/openjdk8/files/patch-jdk-make-lib-CoreLibraries.gmk
+++ b/java/openjdk8/files/patch-jdk-make-lib-CoreLibraries.gmk
@@ -1,15 +1,15 @@
---- jdk/make/lib/CoreLibraries.gmk.orig 2014-11-08 19:58:00.000000000 -0800
-+++ jdk/make/lib/CoreLibraries.gmk 2014-11-08 19:58:38.000000000 -0800
-@@ -516,11 +516,11 @@
+--- jdk/make/lib/CoreLibraries.gmk.orig 2015-07-18 14:40:01.000000000 -0700
++++ jdk/make/lib/CoreLibraries.gmk 2015-07-18 14:40:47.000000000 -0700
+@@ -523,11 +523,11 @@
CFLAGS := $(CFLAGS_JDKLIB) \
-I$(JDK_TOPDIR)/src/share/npt \
-I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/npt, \
-- CFLAGS_bsd := -DLIBICONV_PLUG, \
+- CFLAGS_bsd := $(BSD_ICONV_CFLAGS), \
+ CFLAGS_bsd := %%ICONV_CPPFLAGS%%, \
MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libnpt/mapfile-vers, \
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
-- LDFLAGS_bsd := -liconv, \
+- LDFLAGS_bsd := -L$(PACKAGE_PATH)/lib -liconv, \
+ LDFLAGS_bsd := %%ICONV_LDFLAGS%%, \
LDFLAGS_macosx := -liconv, \
LDFLAGS_SUFFIX_windows := -export:nptInitialize -export:nptTerminate, \
diff --git a/java/openjdk8/files/patch-jdk-make-lib-ServiceabilityLibraries.gmk b/java/openjdk8/files/patch-jdk-make-lib-ServiceabilityLibraries.gmk
index 451f7f0ff001..01264c9e4c63 100644
--- a/java/openjdk8/files/patch-jdk-make-lib-ServiceabilityLibraries.gmk
+++ b/java/openjdk8/files/patch-jdk-make-lib-ServiceabilityLibraries.gmk
@@ -1,19 +1,19 @@
---- jdk/make/lib/ServiceabilityLibraries.gmk 2014-11-25 21:11:53 UTC
-+++ jdk/make/lib/ServiceabilityLibraries.gmk
-@@ -252,7 +252,7 @@
+--- jdk/make/lib/ServiceabilityLibraries.gmk.orig 2015-07-18 14:43:00.000000000 -0700
++++ jdk/make/lib/ServiceabilityLibraries.gmk 2015-07-18 14:44:25.000000000 -0700
+@@ -269,7 +269,7 @@
CFLAGS := $(LIBINSTRUMENT_CFLAGS), \
CFLAGS_debug := -DJPLIS_LOGGING, \
CFLAGS_release := -DNO_JPLIS_LOGGING, \
-- CFLAGS_bsd := -DLIBICONV_PLUG, \
+- CFLAGS_bsd := $(BSD_ICONV_CFLAGS), \
+ CFLAGS_bsd := %%ICONV_CPPFLAGS%%, \
MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libinstrument/mapfile-vers, \
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN) \
-@@ -268,7 +268,7 @@
+@@ -283,7 +283,7 @@
LDFLAGS_SUFFIX_solaris := $(LIBZ) -L $(INSTALL_LIBRARIES_HERE)/jli -ljli $(LIBDL) -lc, \
LDFLAGS_SUFFIX_linux := $(LIBZ) -L $(INSTALL_LIBRARIES_HERE)/jli -ljli $(LIBDL), \
LDFLAGS_SUFFIX_aix := $(LIBZ) -L$(JDK_OUTPUTDIR)/objs -ljli_static $(LIBDL),\
-- LDFLAGS_SUFFIX_bsd := -liconv $(LIBZ), \
+- LDFLAGS_SUFFIX_bsd := -L$(PACKAGE_PATH)/lib -liconv $(LIBZ), \
+ LDFLAGS_SUFFIX_bsd := %%ICONV_LDFLAGS%% $(LIBZ), \
VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \
RC_FLAGS := $(RC_FLAGS) \
diff --git a/java/openjdk8/files/patch-jdk-src-share-classes-sun-print-PSPrinterJob.java b/java/openjdk8/files/patch-jdk-src-share-classes-sun-print-PSPrinterJob.java
index b32b1579c72b..aed831dfa6de 100644
--- a/java/openjdk8/files/patch-jdk-src-share-classes-sun-print-PSPrinterJob.java
+++ b/java/openjdk8/files/patch-jdk-src-share-classes-sun-print-PSPrinterJob.java
@@ -1,34 +1,11 @@
---- jdk/src/share/classes/sun/print/PSPrinterJob.java
-+++ jdk/src/share/classes/sun/print/PSPrinterJob.java
-@@ -1588,8 +1588,30 @@
-
- String osname = System.getProperty("os.name");
- if (osname.equals("Linux") || osname.endsWith("BSD") || osname.contains("OS X")) {
-+ String lprPath = "/usr/bin/lpr";
-+ if (osname.endsWith("BSD")) {
-+ final PrintService pservice = getPrintService();
-+ Boolean isIPPPrinter =
-+ (Boolean)java.security.AccessController.doPrivileged(
-+ new java.security.PrivilegedAction() {
-+ public Object run() {
-+ try {
-+ Class psClass =
-+ Class.forName("sun.print.IPPPrintService");
-+ if (psClass.isInstance(pservice)) {
-+ return Boolean.TRUE;
-+ }
-+ } catch (Throwable t) {
-+ }
-+ return Boolean.FALSE;
-+ }
-+ });
-+ if (isIPPPrinter) {
+--- .jdk/src/share/classes/sun/print/PSPrinterJob.java.orig 2015-07-18 14:45:27.000000000 -0700
++++ jdk/src/share/classes/sun/print/PSPrinterJob.java 2015-07-18 14:50:32.000000000 -0700
+@@ -1607,7 +1607,7 @@
+ }
+ });
+ if (isIPPPrinter) {
+- lprPath = "/usr/local/bin/lpr";
+ lprPath = "%%LOCALBASE%%/bin/lpr";
-+ }
-+ }
- execCmd = new String[ncomps];
-- execCmd[n++] = "/usr/bin/lpr";
-+ execCmd[n++] = lprPath;
- if ((pFlags & PRINTER) != 0) {
- execCmd[n++] = "-P" + printer;
+ }
}
+ execCmd = new String[ncomps];
diff --git a/java/openjdk8/files/patch-jdk-src-solaris-bin-java_md_solinux.c b/java/openjdk8/files/patch-jdk-src-solaris-bin-java_md_solinux.c
deleted file mode 100644
index c858a0c14fc1..000000000000
--- a/java/openjdk8/files/patch-jdk-src-solaris-bin-java_md_solinux.c
+++ /dev/null
@@ -1,53 +0,0 @@
---- jdk/src/solaris/bin/java_md_solinux.c.orig
-+++ jdk/src/solaris/bin/java_md_solinux.c
-@@ -35,6 +35,9 @@
- #include <sys/stat.h>
- #include <unistd.h>
- #include <sys/types.h>
-+#ifdef __FreeBSD__
-+#include <sys/sysctl.h>
-+#endif
- #include "manifest_info.h"
- #include "version_comp.h"
-
-@@ -925,7 +928,7 @@
- * onwards the filename returned in DL_info structure from dladdr is
- * an absolute pathname so technically realpath isn't required.
- * On Linux we read the executable name from /proc/self/exe.
-- * On FreeBSD we read the executable name from /proc/curproc/file.
-+ * On FreeBSD, we get the executable name via sysctl(3).
- * As a fallback, and for platforms other than Solaris, Linux, and
- * FreeBSD, we use FindExecName to compute the executable name.
- */
-@@ -954,13 +957,9 @@
- }
- }
- }
--#elif defined(__linux__) || defined(__FreeBSD__)
-+#elif defined(__linux__)
- {
--#if defined(__FreeBSD__)
-- const char* self = "/proc/curproc/file";
--#else
- const char* self = "/proc/self/exe";
--#endif
- char buf[PATH_MAX+1];
- int len = readlink(self, buf, PATH_MAX);
- if (len >= 0) {
-@@ -968,6 +967,16 @@
- exec_path = JLI_StringDup(buf);
- }
- }
-+#elif defined(__FreeBSD__)
-+ {
-+ char buf[PATH_MAX+1];
-+ int name[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1 };
-+ size_t len = sizeof(buf);
-+ if (sysctl(name, 4, buf, &len, NULL, 0) == 0 && len > 0) {
-+ buf[len] = '\0';
-+ exec_path = JLI_StringDup(buf);
-+ }
-+ }
- #else /* !__solaris__ && !__linux__ && !__FreeBSD__ */
- {
- /* Not implemented */
diff --git a/java/openjdk8/files/patch-jdk_src_share_native_sun_awt_splashscreen_splashscreen__gif.c b/java/openjdk8/files/patch-jdk_src_share_native_sun_awt_splashscreen_splashscreen__gif.c
deleted file mode 100644
index 2a5a5af4340e..000000000000
--- a/java/openjdk8/files/patch-jdk_src_share_native_sun_awt_splashscreen_splashscreen__gif.c
+++ /dev/null
@@ -1,14 +0,0 @@
---- jdk/src/share/native/sun/awt/splashscreen/splashscreen_gif.c.orig 2014-03-04 02:59:38 UTC
-+++ jdk/src/share/native/sun/awt/splashscreen/splashscreen_gif.c
-@@ -318,7 +318,11 @@ SplashDecodeGif(Splash * splash, GifFile
- int
- SplashDecodeGifStream(Splash * splash, SplashStream * stream)
- {
-+#if GIFLIB_MAJOR >= 5
-+ GifFileType *gif = DGifOpen((void *) stream, SplashStreamGifInputFunc, NULL);
-+#else
- GifFileType *gif = DGifOpen((void *) stream, SplashStreamGifInputFunc);
-+#endif
-
- if (!gif)
- return 0;
diff --git a/java/openjdk8/files/patch-langtools-test-Makefile b/java/openjdk8/files/patch-langtools-test-Makefile
deleted file mode 100644
index 85cd3ca71f95..000000000000
--- a/java/openjdk8/files/patch-langtools-test-Makefile
+++ /dev/null
@@ -1,11 +0,0 @@
---- langtools/test/Makefile Tue May 05 18:06:51 2015 -0700
-+++ langtools/test/Makefile Sat Jul 04 15:31:54 2015 -0700
-@@ -36,7 +36,7 @@
- ARCH=i586
- endif
- endif
--ifneq ($(findstring $(OSNAME), BSD), )
-+ifneq ($(findstring BSD, $(OSNAME)), )
- PLATFORM = bsd
- JT_PLATFORM = linux
- ARCH = $(shell uname -p)
diff --git a/java/openjdk8/files/patch-static-libjli b/java/openjdk8/files/patch-static-libjli
deleted file mode 100644
index 606f0679cc9a..000000000000
--- a/java/openjdk8/files/patch-static-libjli
+++ /dev/null
@@ -1,121 +0,0 @@
---- common/autoconf/jdk-options.m4
-+++ common/autoconf/jdk-options.m4
-@@ -407,6 +407,20 @@
-
- ###############################################################################
- #
-+ # Enable or disable static linking of libjli on bsd only
-+ #
-+ AC_ARG_ENABLE(static-libjli, [AS_HELP_STRING([--enable-static-libjli],
-+ [Enable staticly linking libjli on bsd @<:@disabled@:>@])],,
-+ [enable_static_libjli=no])
-+ if test "x$OPENJDK_TARGET_OS" = "xbsd" && test "x$enable_static_libjli" = "xyes"; then
-+ BSD_STATIC_LIBJLI=bsd
-+ else
-+ BSD_STATIC_LIBJLI=
-+ fi
-+ AC_SUBST(BSD_STATIC_LIBJLI)
-+
-+ ###############################################################################
-+ #
- # Enable or disable the elliptic curve crypto implementation
- #
- AC_DEFUN_ONCE([JDKOPT_DETECT_INTREE_EC],
---- common/autoconf/spec.gmk.in
-+++ common/autoconf/spec.gmk.in
-@@ -283,6 +283,9 @@
- # Enable unlimited crypto policy
- UNLIMITED_CRYPTO=@UNLIMITED_CRYPTO@
-
-+# Build static libjli on bsd
-+BSD_STATIC_LIBJLI=@BSD_STATIC_LIBJLI@
-+
- # Necessary additional compiler flags to compile X11
- X_CFLAGS:=@X_CFLAGS@
- X_LIBS:=@X_LIBS@
---- jdk/make/CompileLaunchers.gmk
-+++ jdk/make/CompileLaunchers.gmk
-@@ -49,7 +49,7 @@
- ORIGIN_ROOT := /..
- endif
-
--ifneq ($(findstring $(OPENJDK_TARGET_OS), bsd macosx), )
-+ifneq ($(findstring $(OPENJDK_TARGET_OS), $(BSD_STATIC_LIBJLI) macosx), )
- ORIGIN_ARG := $(call SET_EXECUTABLE_ORIGIN)
- else
- ORIGIN_ARG := $(call SET_EXECUTABLE_ORIGIN,$(ORIGIN_ROOT)/lib$(OPENJDK_TARGET_CPU_LIBDIR)/jli)
-@@ -90,9 +90,15 @@
- $1_LDFLAGS := $3
- $1_LDFLAGS_SUFFIX :=
- ifeq ($(OPENJDK_TARGET_OS), bsd)
-- $1_LDFLAGS += -Wl,--whole-archive $(JDK_OUTPUTDIR)/objs/libjli_static.a \
-- -Wl,--no-whole-archive
-- $1_LDFLAGS_SUFFIX += -pthread
-+ ifeq ($(BSD_STATIC_LIBJLI), bsd)
-+ $1_LDFLAGS += -Wl,--whole-archive $(JDK_OUTPUTDIR)/objs/libjli_static.a \
-+ -Wl,--no-whole-archive
-+ $1_LDFLAGS_SUFFIX += -pthread
-+ else
-+ $1_LDFLAGS += \
-+ $(call SET_SHARED_LIBRARY_NAME,$(LIBRARY_PREFIX)$(SHARED_LIBRARY_SUFFIX))
-+ $1_LDFLAGS_SUFFIX += -L$(JDK_OUTPUTDIR)/lib$(OPENJDK_TARGET_CPU_LIBDIR)/jli -ljli -pthread
-+ endif
- endif
-
- ifeq ($(OPENJDK_TARGET_OS), macosx)
-@@ -203,7 +209,7 @@
-
- BUILD_LAUNCHERS += $$(BUILD_LAUNCHER_$1)
-
-- ifneq (,$(filter $(OPENJDK_TARGET_OS), bsd macosx aix))
-+ ifneq (,$(filter $(OPENJDK_TARGET_OS), $(BSD_STATIC_LIBJLI) macosx aix))
- $$(BUILD_LAUNCHER_$1): $(JDK_OUTPUTDIR)/objs/libjli_static.a
- endif
-
---- jdk/make/lib/CoreLibraries.gmk
-+++ jdk/make/lib/CoreLibraries.gmk
-@@ -466,7 +466,7 @@
-
- BUILD_LIBRARIES += $(BUILD_LIBJLI_STATIC)
-
--else ifneq ($(findstring $(OPENJDK_TARGET_OS), bsd macosx), )
-+else ifneq ($(findstring $(OPENJDK_TARGET_OS), $(BSD_STATIC_LIBJLI) macosx), )
- #
- # On BSD they do partial (incremental) linking of libjli_static.a
- # code it here...rather than add support to NativeCompilation
---- jdk/make/lib/ServiceabilityLibraries.gmk
-+++ jdk/make/lib/ServiceabilityLibraries.gmk
-@@ -246,6 +246,15 @@
- LIBINSTRUMENT_CFLAGS += -Dstrcasecmp=stricmp
- endif
-
-+ifeq ($(OPENJDK_TARGET_OS), bsd)
-+ ifeq ($(BSD_STATIC_LIBJLI), bsd)
-+ LIBINSTRUMENT_LDFLAGS += -Xlinker --whole-archive $(JDK_OUTPUTDIR)/objs/libjli_static.a \
-+ -Xlinker --no-whole-archive
-+ else
-+ LIBINSTRUMENT_LDFLAGS += $(call SET_SHARED_LIBRARY_ORIGIN,/jli)
-+ endif
-+endif
-+
- $(eval $(call SetupNativeCompilation,BUILD_LIBINSTRUMENT, \
- LIBRARY := instrument, \
- OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \
-@@ -263,8 +272,6 @@
- $(LIBINSTRUMENT_LDFLAGS), \
- LDFLAGS_linux := $(call SET_SHARED_LIBRARY_ORIGIN,/jli), \
- LDFLAGS_solaris := $(call SET_SHARED_LIBRARY_ORIGIN,/jli), \
-- LDFLAGS_bsd := -Xlinker --whole-archive $(JDK_OUTPUTDIR)/objs/libjli_static.a \
-- -Xlinker --no-whole-archive, \
- LDFLAGS_macosx := -Xlinker -all_load $(JDK_OUTPUTDIR)/objs/libjli_static.a \
- -framework Cocoa -framework Security -framework ApplicationServices, \
- LDFLAGS_SUFFIX := $(LIBINSTRUMENT_LDFLAGS_SUFFIX), \
-@@ -281,7 +288,7 @@
- OBJECT_DIR := $(LIBINSTRUMENT_DIR), \
- DEBUG_SYMBOLS := true))
-
--ifneq (, $(findstring $(OPENJDK_TARGET_OS), bsd macosx windows aix))
-+ifneq (, $(findstring $(OPENJDK_TARGET_OS), $(BSD_STATIC_LIBJLI) macosx windows aix))
- $(BUILD_LIBINSTRUMENT): $(JDK_OUTPUTDIR)/objs/$(LIBRARY_PREFIX)jli_static$(STATIC_LIBRARY_SUFFIX)
- else
- $(BUILD_LIBINSTRUMENT): $(INSTALL_LIBRARIES_HERE)/jli/$(LIBRARY_PREFIX)jli$(SHARED_LIBRARY_SUFFIX)