diff --git a/6961123-pr2972-rh1339740.patch b/6961123-pr2972-rh1339740.patch new file mode 100644 index 0000000..d880c5f --- /dev/null +++ b/6961123-pr2972-rh1339740.patch @@ -0,0 +1,21 @@ +# HG changeset patch +# User omajid +# Date 1451403643 18000 +# Tue Dec 29 10:40:43 2015 -0500 +# Node ID 0be28a33e12dfc9ae1e4be381530643f691d351a +# Parent f4c9545cd8a56a5fab74c95de3573623ba2b83c4 +6961123, PR2972: setWMClass fails to null-terminate WM_CLASS string +Reviewed-by: serb + +diff -r f4c9545cd8a5 -r 0be28a33e12d src/solaris/classes/sun/awt/X11/XBaseWindow.java +--- openjdk/jdk/src/solaris/classes/sun/awt/X11/XBaseWindow.java Thu Aug 28 05:20:02 2014 -0700 ++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XBaseWindow.java Tue Dec 29 10:40:43 2015 -0500 +@@ -673,7 +673,7 @@ + XToolkit.awtLock(); + try { + XAtom xa = XAtom.get(XAtom.XA_WM_CLASS); +- xa.setProperty8(getWindow(), cl[0] + '\0' + cl[1]); ++ xa.setProperty8(getWindow(), cl[0] + '\0' + cl[1] + '\0'); + } finally { + XToolkit.awtUnlock(); + } diff --git a/8044762-pr2960.patch b/8044762-pr2960.patch new file mode 100644 index 0000000..af5b606 --- /dev/null +++ b/8044762-pr2960.patch @@ -0,0 +1,45 @@ +# HG changeset patch +# User dsamersoff +# Date 1403087398 25200 +# Wed Jun 18 03:29:58 2014 -0700 +# Node ID 13411144d46b50d0087f35eca2b8e827aae558f1 +# Parent 10c9f8461c297a200ef57970c1f4c32d4081d790 +8044762, PR2960: com/sun/jdi/OptionTest.java test time out +Summary: gdata could be NULL in debugInit_exit +Reviewed-by: dcubed + +diff -r 10c9f8461c29 -r 13411144d46b src/share/back/debugInit.c +--- openjdk/jdk/src/share/back/debugInit.c Fri May 20 19:42:05 2016 +0100 ++++ openjdk/jdk/src/share/back/debugInit.c Wed Jun 18 03:29:58 2014 -0700 +@@ -1307,22 +1307,26 @@ + if ( error != JVMTI_ERROR_NONE ) { + exit_code = 1; + if ( docoredump ) { ++ LOG_MISC(("Dumping core as requested by command line")); + finish_logging(exit_code); + abort(); + } + } ++ + if ( msg==NULL ) { + msg = ""; + } + + LOG_MISC(("Exiting with error %s(%d): %s", jvmtiErrorText(error), error, msg)); + +- gdata->vmDead = JNI_TRUE; ++ if (gdata != NULL) { ++ gdata->vmDead = JNI_TRUE; + +- /* Let's try and cleanup the JVMTI, if we even have one */ +- if ( gdata->jvmti != NULL ) { +- /* Dispose of jvmti (gdata->jvmti becomes NULL) */ +- disposeEnvironment(gdata->jvmti); ++ /* Let's try and cleanup the JVMTI, if we even have one */ ++ if ( gdata->jvmti != NULL ) { ++ /* Dispose of jvmti (gdata->jvmti becomes NULL) */ ++ disposeEnvironment(gdata->jvmti); ++ } + } + + /* Finish up logging. We reach here if JDWP is doing the exiting. */ diff --git a/jdwpCrash.abrt.patch b/8049226-pr2960.patch similarity index 68% rename from jdwpCrash.abrt.patch rename to 8049226-pr2960.patch index 9ff2590..0f6bdf8 100644 --- a/jdwpCrash.abrt.patch +++ b/8049226-pr2960.patch @@ -1,56 +1,14 @@ # HG changeset patch # User dsamersoff -# Date 1403087398 25200 -# Node ID 7eb9656224049bee9ca32cca8217fb12e8686b76 -# Parent 66c61047f119f2919f4087f49189ee7171e7205d -8044762: com/sun/jdi/OptionTest.java test time out -Summary: gdata could be NULL in debugInit_exit -Reviewed-by: dcubed -# HG changeset patch -# User dsamersoff # Date 1409228402 25200 -# Node ID 66199a53c7f9b21032666a7e3655daab408d9881 -# Parent 7eb9656224049bee9ca32cca8217fb12e8686b76 -8049226: com/sun/jdi/OptionTest.java test times out again +# Thu Aug 28 05:20:02 2014 -0700 +# Node ID f4c9545cd8a56a5fab74c95de3573623ba2b83c4 +# Parent 13411144d46b50d0087f35eca2b8e827aae558f1 +8049226, PR2960: com/sun/jdi/OptionTest.java test times out again Summary: Don't call jni_FatalError if transport initialization fails Reviewed-by: sspitsyn, sla -diff -r 66c61047f119 -r 7eb965622404 src/share/back/debugInit.c ---- openjdk/jdk/src/share/back/debugInit.c Mon May 16 09:54:50 2016 +0300 -+++ openjdk/jdk/src/share/back/debugInit.c Wed Jun 18 03:29:58 2014 -0700 -@@ -1307,22 +1307,26 @@ - if ( error != JVMTI_ERROR_NONE ) { - exit_code = 1; - if ( docoredump ) { -+ LOG_MISC(("Dumping core as requested by command line")); - finish_logging(exit_code); - abort(); - } - } -+ - if ( msg==NULL ) { - msg = ""; - } - - LOG_MISC(("Exiting with error %s(%d): %s", jvmtiErrorText(error), error, msg)); - -- gdata->vmDead = JNI_TRUE; -+ if (gdata != NULL) { -+ gdata->vmDead = JNI_TRUE; - -- /* Let's try and cleanup the JVMTI, if we even have one */ -- if ( gdata->jvmti != NULL ) { -- /* Dispose of jvmti (gdata->jvmti becomes NULL) */ -- disposeEnvironment(gdata->jvmti); -+ /* Let's try and cleanup the JVMTI, if we even have one */ -+ if ( gdata->jvmti != NULL ) { -+ /* Dispose of jvmti (gdata->jvmti becomes NULL) */ -+ disposeEnvironment(gdata->jvmti); -+ } - } - - /* Finish up logging. We reach here if JDWP is doing the exiting. */ -diff -r 7eb965622404 -r 66199a53c7f9 src/share/back/debugInit.c +diff -r 13411144d46b -r f4c9545cd8a5 src/share/back/debugInit.c --- openjdk/jdk/src/share/back/debugInit.c Wed Jun 18 03:29:58 2014 -0700 +++ openjdk/jdk/src/share/back/debugInit.c Thu Aug 28 05:20:02 2014 -0700 @@ -1013,7 +1013,7 @@ @@ -139,7 +97,7 @@ diff -r 7eb965622404 -r 66199a53c7f9 src/share/back/debugInit.c + // Last chance to die, this kills the entire process. + forceExit(EXIT_JVMTI_ERROR); } -diff -r 7eb965622404 -r 66199a53c7f9 src/share/back/log_messages.c +diff -r 13411144d46b -r f4c9545cd8a5 src/share/back/log_messages.c --- openjdk/jdk/src/share/back/log_messages.c Wed Jun 18 03:29:58 2014 -0700 +++ openjdk/jdk/src/share/back/log_messages.c Thu Aug 28 05:20:02 2014 -0700 @@ -230,7 +230,7 @@ @@ -151,7 +109,7 @@ diff -r 7eb965622404 -r 66199a53c7f9 src/share/back/log_messages.c { #ifdef JDWP_LOGGING MUTEX_LOCK(my_mutex); -diff -r 7eb965622404 -r 66199a53c7f9 src/share/back/log_messages.h +diff -r 13411144d46b -r f4c9545cd8a5 src/share/back/log_messages.h --- openjdk/jdk/src/share/back/log_messages.h Wed Jun 18 03:29:58 2014 -0700 +++ openjdk/jdk/src/share/back/log_messages.h Thu Aug 28 05:20:02 2014 -0700 @@ -29,7 +29,7 @@ @@ -163,4 +121,3 @@ diff -r 7eb965622404 -r 66199a53c7f9 src/share/back/log_messages.h #define LOG_NULL ((void)0) - diff --git a/8148752-pr2943-rh1330188.patch b/8148752-pr2943-rh1330188.patch new file mode 100644 index 0000000..d1207d0 --- /dev/null +++ b/8148752-pr2943-rh1330188.patch @@ -0,0 +1,114 @@ +# HG changeset patch +# User thartmann +# Date 1455606693 -3600 +# Tue Feb 16 08:11:33 2016 +0100 +# Node ID 7bb48ba4de4fb35c10c526146f65da74a3a16c7a +# Parent d15bc25b259dcffd2566f90ff09fd263e87e0304 +8148752, PR2943: Compiled StringBuilder code throws StringIndexOutOfBoundsException +Summary: Fixed handling of long/double MH arguments in GraphBuilder::try_method_handle_inline(). +Reviewed-by: roland, shade, vlivanov, kvn, twisti + +diff -r d15bc25b259d -r 7bb48ba4de4f src/share/vm/opto/callGenerator.cpp +--- openjdk/hotspot/src/share/vm/opto/callGenerator.cpp Wed Apr 20 04:04:43 2016 +0100 ++++ openjdk/hotspot/src/share/vm/opto/callGenerator.cpp Tue Feb 16 08:11:33 2016 +0100 +@@ -829,17 +829,18 @@ + } + } + // Cast reference arguments to its type. +- for (int i = 0; i < signature->count(); i++) { ++ for (int i = 0, j = 0; i < signature->count(); i++) { + ciType* t = signature->type_at(i); + if (t->is_klass()) { +- Node* arg = kit.argument(receiver_skip + i); ++ Node* arg = kit.argument(receiver_skip + j); + const TypeOopPtr* arg_type = arg->bottom_type()->isa_oopptr(); + const Type* sig_type = TypeOopPtr::make_from_klass(t->as_klass()); + if (arg_type != NULL && !arg_type->higher_equal(sig_type)) { + Node* cast_obj = gvn.transform(new (C) CheckCastPPNode(kit.control(), arg, sig_type)); +- kit.set_argument(receiver_skip + i, cast_obj); ++ kit.set_argument(receiver_skip + j, cast_obj); + } + } ++ j += t->size(); // long and double take two slots + } + + // Try to get the most accurate receiver type +diff -r d15bc25b259d -r 7bb48ba4de4f test/compiler/jsr292/LongReferenceCastingTest.java +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ openjdk/hotspot/test/compiler/jsr292/LongReferenceCastingTest.java Tue Feb 16 08:11:33 2016 +0100 +@@ -0,0 +1,75 @@ ++/* ++ * Copyright (c) 2016, 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.lang.invoke.*; ++ ++/** ++ * @test ++ * @bug 8148752 ++ * @summary Test correct casting of MH arguments during inlining. ++ * @run main LongReferenceCastingTest ++ */ ++public class LongReferenceCastingTest { ++ static final String MY_STRING = "myString"; ++ static final MethodHandle MH; ++ ++ static { ++ try { ++ MethodHandles.Lookup lookup = MethodHandles.lookup(); ++ MethodType mt = MethodType.methodType(String.class, long.class, Object.class, String.class); ++ MH = lookup.findVirtual(LongReferenceCastingTest.class, "myMethod", mt); ++ } catch (Exception e) { ++ throw new Error(e); ++ } ++ } ++ ++ public String myMethod(long l, Object o, String s) { ++ // The long argument occupies two stack slots, causing C2 to treat it as ++ // two arguments and casting the fist one two long and the second one to Object. ++ // As a result, Object o is casted to String and the o.toString() call is ++ // inlined as String::toString(). We fail at runtime because 'o' is not a String. ++ return o.toString(); ++ } ++ ++ public String toString() { ++ return MY_STRING; ++ } ++ ++ public static void main(String[] args) throws Exception { ++ LongReferenceCastingTest test = new LongReferenceCastingTest(); ++ try { ++ for (int i = 0; i < 20_000; ++i) { ++ if (!test.invoke().equals(MY_STRING)) { ++ throw new RuntimeException("Invalid string"); ++ } ++ } ++ } catch (Throwable t) { ++ throw new RuntimeException("Test failed", t); ++ } ++ } ++ ++ public String invoke() throws Throwable { ++ return (String) MH.invokeExact(this, 0L, (Object)this, MY_STRING); ++ } ++} diff --git a/8154210.patch b/8154210.patch new file mode 100644 index 0000000..51b8138 --- /dev/null +++ b/8154210.patch @@ -0,0 +1,47 @@ +# HG changeset patch +# User aph +# Date 1461121375 -3600 +# Wed Apr 20 04:02:55 2016 +0100 +# Node ID 5605c859f0ec47d6f507cc83e783554a4210ccf6 +# Parent 7458e5178c8646a9b4f76ac3d13b222abed3f16f +8154210: Zero: Better byte behaviour +Summary: Complete support for 8132051 on Zero and fix failure on 64-bit big-endian systems +Reviewed-by: andrew, chrisphi + +diff -r 7458e5178c86 -r 5605c859f0ec src/cpu/zero/vm/cppInterpreter_zero.cpp +--- openjdk/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp Tue May 17 03:03:36 2016 +0100 ++++ openjdk/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp Wed Apr 20 04:02:55 2016 +0100 +@@ -220,9 +220,16 @@ + // Push our result + for (int i = 0; i < result_slots; i++) { + // Adjust result to smaller +- intptr_t res = result[-i]; ++ union { ++ intptr_t res; ++ jint res_jint; ++ }; ++ res = result[-i]; + if (result_slots == 1) { +- res = narrow(method->result_type(), res); ++ BasicType t = method->result_type(); ++ if (is_subword_type(t)) { ++ res_jint = (jint)narrow(t, res_jint); ++ } + } + stack->push(res); + } +diff -r 7458e5178c86 -r 5605c859f0ec src/share/vm/interpreter/bytecodeInterpreter.cpp +--- openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp Tue May 17 03:03:36 2016 +0100 ++++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp Wed Apr 20 04:02:55 2016 +0100 +@@ -593,8 +593,9 @@ + /* 0xDC */ &&opc_default, &&opc_default, &&opc_default, &&opc_default, + + /* 0xE0 */ &&opc_default, &&opc_default, &&opc_default, &&opc_default, +-/* 0xE4 */ &&opc_default, &&opc_fast_aldc, &&opc_fast_aldc_w, &&opc_return_register_finalizer, +-/* 0xE8 */ &&opc_invokehandle,&&opc_default, &&opc_default, &&opc_default, ++/* 0xE4 */ &&opc_default, &&opc_default, &&opc_fast_aldc, &&opc_fast_aldc_w, ++/* 0xE8 */ &&opc_return_register_finalizer, ++ &&opc_invokehandle, &&opc_default, &&opc_default, + /* 0xEC */ &&opc_default, &&opc_default, &&opc_default, &&opc_default, + + /* 0xF0 */ &&opc_default, &&opc_default, &&opc_default, &&opc_default, diff --git a/java-1.8.0-openjdk.spec b/java-1.8.0-openjdk.spec index 95b0e2e..4895367 100644 --- a/java-1.8.0-openjdk.spec +++ b/java-1.8.0-openjdk.spec @@ -803,7 +803,7 @@ URL: http://openjdk.java.net/ # aarch64-port now contains integration forest of both aarch64 and normal jdk # Source from upstream OpenJDK8 project. To regenerate, use -# VERSION=aarch64-jdk8u91-b14 FILE_NAME_ROOT=aarch64-port-jdk8u-${VERSION} +# VERSION=aarch64-jdk8u92-b14 FILE_NAME_ROOT=aarch64-port-jdk8u-${VERSION} # REPO_ROOT= generate_source_tarball.sh # where the source is obtained from http://hg.openjdk.java.net/%%{project}/%%{repo} Source0: %{project}-%{repo}-%{revision}.tar.xz @@ -863,13 +863,19 @@ Patch512: no_strict_overflow.patch # PR2127: SunEC provider crashes when built using system NSS # PR2815: Race condition in SunEC provider with system NSS # PR2899: Don't use WithSeed versions of NSS functions as they don't fully process the seed +# PR2934: SunEC provider throwing KeyException with current NSS Patch513: pr1983-jdk.patch Patch514: pr1983-root.patch Patch515: pr2127.patch Patch516: pr2815.patch Patch517: pr2899.patch -Patch518: httpsFix1329342.patch -Patch519: jdwpCrash.abrt.patch +Patch518: pr2934.patch +# S8150954, RH1176206, PR2866: Taking screenshots on x11 composite desktop produces wrong result +# In progress: http://mail.openjdk.java.net/pipermail/awt-dev/2016-March/010742.html +Patch508: rh1176206-jdk.patch +Patch509: rh1176206-root.patch +# RH1337583, PR2974: PKCS#10 certificate requests now use CRLF line endings rather than system line endings +Patch523: pr2974-rh1337583.patch # Arch-specific upstreamable patches # PR2415: JVM -Xmx requirement is too high on s390 @@ -878,6 +884,8 @@ Patch100: %{name}-s390-java-opts.patch Patch102: %{name}-size_t.patch # Use "%z" for size_t on s390 as size_t != intptr_t Patch103: s390-size_t_format_flags.patch +# PR2991, RH1341258: JVM on PPC64 LE crashes due to an illegal instruction in JITed code +Patch524: pr2991-rh1341258.patch # Patches which need backporting to 8u # S8073139, RH1191652; fix name of ppc64le architecture @@ -899,14 +907,20 @@ Patch605: soundFontPatch.patch # S8148351, PR2842: Only display resolved symlink for compiler, do not change path Patch506: pr2842-01.patch Patch507: pr2842-02.patch -# S8150954, RH1176206, PR2866: Taking screenshots on x11 composite desktop produces wrong result -# In progress: http://mail.openjdk.java.net/pipermail/awt-dev/2016-March/010742.html -Patch508: rh1176206-jdk.patch -Patch509: rh1176206-root.patch -# Patches which need adding to aarch64/8u +# Patches upstream and appearing in 8u102 +# S8148752, PR2943, RH1330188: Compiled StringBuilder code throws StringIndexOutOfBoundsException +Patch519: 8148752-pr2943-rh1330188.patch +# S6961123, PR2972, RH1339740: Java application name in GNOME Shell contains funny characters +Patch520: 6961123-pr2972-rh1339740.patch -# Patches upstream and appearing in 8u76 +# Patches upstream and appearing in 8u112 +# S8044762, PR2960: com/sun/jdi/OptionTest.java test time out +Patch521: 8044762-pr2960.patch +# S8049226, PR2960: com/sun/jdi/OptionTest.java test times out again +Patch522: 8049226-pr2960.patch +# 8154210: Zero: Better byte behaviour +Patch606: 8154210.patch # Patches ineligible for 8u # 8043805: Allow using a system-installed libjpeg @@ -915,8 +929,8 @@ Patch201: system-libjpeg.patch # Local fixes # see http://mail.openjdk.java.net/pipermail/build-dev/2016-March/016852.html thread Patch400: jdk8-archivedJavadoc.patch -# already in shenandoah repo: http://hg.openjdk.java.net/shenandoah/jdk8u/hotspot/rev/06556235f193 -# proposed for shenandoah integration forest: http://mail.openjdk.java.net/pipermail/aarch64-port-dev/2016-May/003461.html +# PR1834, RH1022017: Reduce curves reported by SSL to those in NSS +Patch525: pr1834-rh1022017.patch # Non-OpenJDK fixes Patch300: jstack-pr1845.patch @@ -1216,7 +1230,11 @@ sh %{SOURCE12} %patch102 %patch103 +# ppc64le fixes +%patch524 + # Zero fixes. +%patch606 %patch603 %patch601 @@ -1239,6 +1257,11 @@ sh %{SOURCE12} %patch518 %patch519 %patch400 +%patch520 +%patch521 +%patch522 +%patch523 +%patch525 # Extract systemtap tapsets %if %{with_systemtap} @@ -1827,6 +1850,14 @@ require "copy_jdk_configs.lua" %endif %changelog +* Tue Jun 07 2016 Jiri Vanek - 1:1.8.0.92-1.b14 +- updated to u92 +- removed upstreamed patches 8132051-aarch64.patch, 8143855.patch, criticalShenandoahFix.patch, rhbz1206656_fix_current_stack_pointer.patch +- 8132051-zero.patch, remove_aarch64_template_for_gcc6.patch +- jdwpCrash.abrt.patch renamed to 8044762-pr2960.patch +- httpsFix1329342.patch renamed to pr2934.patch +- added known regresisonos fixes for u92 scheduled for next u (519-525) + * Thu May 19 2016 jvanek - 1:1.8.0.91-7.b14 - added patch519, jdwpCrash.abrt.patch to fix trasnportation error diff --git a/pr1834-rh1022017.patch b/pr1834-rh1022017.patch new file mode 100644 index 0000000..1b3c903 --- /dev/null +++ b/pr1834-rh1022017.patch @@ -0,0 +1,44 @@ +diff -r a5c3d9643077 src/share/classes/sun/security/ssl/SupportedEllipticCurvesExtension.java +--- openjdk/jdk/src/share/classes/sun/security/ssl/SupportedEllipticCurvesExtension.java Tue Feb 10 16:24:28 2015 +0000 ++++ openjdk/jdk/src/share/classes/sun/security/ssl/SupportedEllipticCurvesExtension.java Thu May 14 04:01:02 2015 +0100 +@@ -37,25 +37,11 @@ + // the extension value to send in the ClientHello message + static final SupportedEllipticCurvesExtension DEFAULT; + +- private static final boolean fips; +- + static { +- int[] ids; +- fips = SunJSSE.isFIPS(); +- if (fips == false) { +- ids = new int[] { +- // NIST curves first +- // prefer NIST P-256, rest in order of increasing key length +- 23, 1, 3, 19, 21, 6, 7, 9, 10, 24, 11, 12, 25, 13, 14, +- // non-NIST curves +- 15, 16, 17, 2, 18, 4, 5, 20, 8, 22, +- }; +- } else { +- ids = new int[] { +- // same as above, but allow only NIST curves in FIPS mode +- 23, 1, 3, 19, 21, 6, 7, 9, 10, 24, 11, 12, 25, 13, 14, +- }; +- } ++ int[] ids = new int[] { ++ // NSS currently only supports these three NIST curves ++ 23, 24, 25 ++ }; + DEFAULT = new SupportedEllipticCurvesExtension(ids); + } + +@@ -150,10 +136,6 @@ + if ((index <= 0) || (index >= NAMED_CURVE_OID_TABLE.length)) { + return false; + } +- if (fips == false) { +- // in non-FIPS mode, we support all valid indices +- return true; +- } + return DEFAULT.contains(index); + } + diff --git a/httpsFix1329342.patch b/pr2934.patch similarity index 98% rename from httpsFix1329342.patch rename to pr2934.patch index 7f1bfbd..21e769d 100644 --- a/httpsFix1329342.patch +++ b/pr2934.patch @@ -1,7 +1,7 @@ - # HG changeset patch # User andrew # Date 1461349033 -3600 +# Fri Apr 22 19:17:13 2016 +0100 # Node ID dab76de2f91cf1791c03560a3f45aaa69f8351fd # Parent 3fa42705acab6d69b6141f47ebba4f85739a338c PR2934: SunEC provider throwing KeyException with current NSS @@ -88,4 +88,3 @@ diff -r 3fa42705acab -r dab76de2f91c src/share/native/sun/security/ec/ecc_impl.h #define ECDSA_VerifyDigest(a,b,c,d) ECDSA_VerifyDigest(a,b,c) #define ECDH_Derive(a,b,c,d,e,f) ECDH_Derive(a,b,c,d,e) #else - diff --git a/pr2974-rh1337583.patch b/pr2974-rh1337583.patch new file mode 100644 index 0000000..5c00050 --- /dev/null +++ b/pr2974-rh1337583.patch @@ -0,0 +1,148 @@ +# HG changeset patch +# User andrew +# Date 1464316115 -3600 +# Fri May 27 03:28:35 2016 +0100 +# Node ID 794541fbbdc323f7da8a5cee75611f977eee66ee +# Parent 0be28a33e12dfc9ae1e4be381530643f691d351a +PR2974: PKCS#10 certificate requests now use CRLF line endings rather than system line endings +Summary: Add -systemlineendings option to keytool to allow system line endings to be used again. + +diff -r 0be28a33e12d -r 794541fbbdc3 src/share/classes/sun/security/pkcs10/PKCS10.java +--- openjdk/jdk/src/share/classes/sun/security/pkcs10/PKCS10.java Tue Dec 29 10:40:43 2015 -0500 ++++ openjdk/jdk/src/share/classes/sun/security/pkcs10/PKCS10.java Fri May 27 03:28:35 2016 +0100 +@@ -30,6 +30,7 @@ + import java.io.IOException; + import java.math.BigInteger; + ++import java.security.AccessController; + import java.security.cert.CertificateException; + import java.security.NoSuchAlgorithmException; + import java.security.InvalidKeyException; +@@ -39,6 +40,7 @@ + + import java.util.Base64; + ++import sun.security.action.GetPropertyAction; + import sun.security.util.*; + import sun.security.x509.AlgorithmId; + import sun.security.x509.X509Key; +@@ -76,6 +78,14 @@ + * @author Hemma Prafullchandra + */ + public class PKCS10 { ++ ++ private static final byte[] sysLineEndings; ++ ++ static { ++ sysLineEndings = ++ AccessController.doPrivileged(new GetPropertyAction("line.separator")).getBytes(); ++ } ++ + /** + * Constructs an unsigned PKCS #10 certificate request. Before this + * request may be used, it must be encoded and signed. Then it +@@ -286,13 +296,39 @@ + */ + public void print(PrintStream out) + throws IOException, SignatureException { ++ print(out, false); ++ } ++ ++ /** ++ * Prints an E-Mailable version of the certificate request on the print ++ * stream passed. The format is a common base64 encoded one, supported ++ * by most Certificate Authorities because Netscape web servers have ++ * used this for some time. Some certificate authorities expect some ++ * more information, in particular contact information for the web ++ * server administrator. ++ * ++ * @param out the print stream where the certificate request ++ * will be printed. ++ * @param systemLineEndings true if the request should be terminated ++ * using the system line endings. ++ * @exception IOException when an output operation failed ++ * @exception SignatureException when the certificate request was ++ * not yet signed. ++ */ ++ public void print(PrintStream out, boolean systemLineEndings) ++ throws IOException, SignatureException { ++ byte[] lineEndings; ++ + if (encoded == null) + throw new SignatureException("Cert request was not signed"); + ++ if (systemLineEndings) ++ lineEndings = sysLineEndings; ++ else ++ lineEndings = new byte[] {'\r', '\n'}; // CRLF + +- byte[] CRLF = new byte[] {'\r', '\n'}; + out.println("-----BEGIN NEW CERTIFICATE REQUEST-----"); +- out.println(Base64.getMimeEncoder(64, CRLF).encodeToString(encoded)); ++ out.println(Base64.getMimeEncoder(64, lineEndings).encodeToString(encoded)); + out.println("-----END NEW CERTIFICATE REQUEST-----"); + } + +diff -r 0be28a33e12d -r 794541fbbdc3 src/share/classes/sun/security/tools/keytool/Main.java +--- openjdk/jdk/src/share/classes/sun/security/tools/keytool/Main.java Tue Dec 29 10:40:43 2015 -0500 ++++ openjdk/jdk/src/share/classes/sun/security/tools/keytool/Main.java Fri May 27 03:28:35 2016 +0100 +@@ -117,6 +117,7 @@ + private String infilename = null; + private String outfilename = null; + private String srcksfname = null; ++ private boolean systemLineEndings = false; + + // User-specified providers are added before any command is called. + // However, they are not removed before the end of the main() method. +@@ -163,7 +164,7 @@ + CERTREQ("Generates.a.certificate.request", + ALIAS, SIGALG, FILEOUT, KEYPASS, KEYSTORE, DNAME, + STOREPASS, STORETYPE, PROVIDERNAME, PROVIDERCLASS, +- PROVIDERARG, PROVIDERPATH, V, PROTECTED), ++ PROVIDERARG, PROVIDERPATH, SYSTEMLINEENDINGS, V, PROTECTED), + CHANGEALIAS("Changes.an.entry.s.alias", + ALIAS, DESTALIAS, KEYPASS, KEYSTORE, STOREPASS, + STORETYPE, PROVIDERNAME, PROVIDERCLASS, PROVIDERARG, +@@ -296,6 +297,7 @@ + STARTDATE("startdate", "", "certificate.validity.start.date.time"), + STOREPASS("storepass", "", "keystore.password"), + STORETYPE("storetype", "", "keystore.type"), ++ SYSTEMLINEENDINGS("systemlineendings", null, "system.line.endings"), + TRUSTCACERTS("trustcacerts", null, "trust.certificates.from.cacerts"), + V("v", null, "verbose.output"), + VALIDITY("validity", "", "validity.number.of.days"); +@@ -537,6 +539,8 @@ + protectedPath = true; + } else if (collator.compare(flags, "-srcprotected") == 0) { + srcprotectedPath = true; ++ } else if (collator.compare(flags, "-systemlineendings") == 0) { ++ systemLineEndings = true; + } else { + System.err.println(rb.getString("Illegal.option.") + flags); + tinyHelp(); +@@ -1335,7 +1339,7 @@ + + // Sign the request and base-64 encode it + request.encodeAndSign(subject, signature); +- request.print(out); ++ request.print(out, systemLineEndings); + } + + /** +@@ -4191,4 +4195,3 @@ + return new Pair<>(a,b); + } + } +- +diff -r 0be28a33e12d -r 794541fbbdc3 src/share/classes/sun/security/tools/keytool/Resources.java +--- openjdk/jdk/src/share/classes/sun/security/tools/keytool/Resources.java Tue Dec 29 10:40:43 2015 -0500 ++++ openjdk/jdk/src/share/classes/sun/security/tools/keytool/Resources.java Fri May 27 03:28:35 2016 +0100 +@@ -168,6 +168,8 @@ + "keystore password"}, //-storepass + {"keystore.type", + "keystore type"}, //-storetype ++ {"system.line.endings", ++ "use system line endings rather than CRLF to terminate output"}, //-systemlineendings + {"trust.certificates.from.cacerts", + "trust certificates from cacerts"}, //-trustcacerts + {"verbose.output", diff --git a/pr2991-rh1341258.patch b/pr2991-rh1341258.patch new file mode 100644 index 0000000..f13b388 --- /dev/null +++ b/pr2991-rh1341258.patch @@ -0,0 +1,248 @@ +diff -r 3fc29347b27f src/cpu/ppc/vm/ppc.ad +--- openjdk/hotspot/src/cpu/ppc/vm/ppc.ad Fri May 20 19:42:15 2016 +0100 ++++ openjdk/hotspot/src/cpu/ppc/vm/ppc.ad Thu Jun 02 17:36:55 2016 +0100 +@@ -2516,8 +2516,13 @@ + MacroAssembler _masm(&cbuf); + int Idisp = $mem$$disp + frame_slots_bias($mem$$base, ra_); + // Operand 'ds' requires 4-alignment. +- assert((Idisp & 0x3) == 0, "unaligned offset"); +- __ ld($dst$$Register, Idisp, $mem$$base$$Register); ++ if (Idisp & 0x3) { ++ __ addi($dst$$Register, $mem$$base$$Register, Idisp); ++ __ ld($dst$$Register, 0, $dst$$Register); ++ } else { ++ __ ld($dst$$Register, Idisp, $mem$$base$$Register); ++ __ nop(); ++ } + %} + + // Load acquire. +@@ -2526,11 +2531,30 @@ + MacroAssembler _masm(&cbuf); + int Idisp = $mem$$disp + frame_slots_bias($mem$$base, ra_); + // Operand 'ds' requires 4-alignment. +- assert((Idisp & 0x3) == 0, "unaligned offset"); +- __ ld($dst$$Register, Idisp, $mem$$base$$Register); ++ if (Idisp & 0x3) { ++ __ addi($dst$$Register, $mem$$base$$Register, Idisp); ++ __ ld($dst$$Register, 0, $dst$$Register); ++ } else { ++ __ ld($dst$$Register, Idisp, $mem$$base$$Register); ++ __ nop(); ++ } + __ twi_0($dst$$Register); + __ isync(); + %} ++ ++ enc_class enc_lwa(iRegLdst dst, memoryAlg4 mem) %{ ++ // TODO: PPC port $archOpcode(ppc64Opcode_ld); ++ MacroAssembler _masm(&cbuf); ++ int Idisp = $mem$$disp + frame_slots_bias($mem$$base, ra_); ++ // Operand 'ds' requires 4-alignment. ++ if (Idisp & 0x3) { ++ __ addi($dst$$Register, $mem$$base$$Register, Idisp); ++ __ lwa($dst$$Register, 0, $dst$$Register); ++ } else { ++ __ lwa($dst$$Register, Idisp, $mem$$base$$Register); ++ __ nop(); ++ } ++ %} + + enc_class enc_lfd(RegF dst, memory mem) %{ + // TODO: PPC port $archOpcode(ppc64Opcode_lfd); +@@ -2857,8 +2881,13 @@ + MacroAssembler _masm(&cbuf); + int Idisp = $mem$$disp + frame_slots_bias($mem$$base, ra_); + // Operand 'ds' requires 4-alignment. +- assert((Idisp & 0x3) == 0, "unaligned offset"); +- __ std($src$$Register, Idisp, $mem$$base$$Register); ++ if (Idisp & 0x3) { ++ __ addi($src$$Register, $mem$$base$$Register, Idisp); ++ __ std($src$$Register, Idisp, $src$$Register); ++ } else { ++ __ std($src$$Register, Idisp, $mem$$base$$Register); ++ __ nop(); ++ } + %} + + enc_class enc_stfs(RegF src, memory mem) %{ +@@ -5467,12 +5496,8 @@ + ins_cost(MEMORY_REF_COST); + + format %{ "LWA $dst, $mem \t// loadI2L" %} +- size(4); +- ins_encode %{ +- // TODO: PPC port $archOpcode(ppc64Opcode_lwa); +- int Idisp = $mem$$disp + frame_slots_bias($mem$$base, ra_); +- __ lwa($dst$$Register, Idisp, $mem$$base$$Register); +- %} ++ size(8); ++ ins_encode( enc_lwa(dst, mem) ); + ins_pipe(pipe_class_memory); + %} + +@@ -5484,11 +5509,18 @@ + format %{ "LWA $dst, $mem \t// loadI2L acquire" + "TWI $dst\n\t" + "ISYNC" %} +- size(12); ++ size(16); + ins_encode %{ + // TODO: PPC port $archOpcode(ppc64Opcode_lwa); + int Idisp = $mem$$disp + frame_slots_bias($mem$$base, ra_); +- __ lwa($dst$$Register, Idisp, $mem$$base$$Register); ++ // Operand 'ds' requires 4-alignment. ++ if (Idisp & 0x3) { ++ __ addi($dst$$Register, $mem$$base$$Register, Idisp); ++ __ lwa($dst$$Register, 0, $dst$$Register); ++ } else { ++ __ lwa($dst$$Register, Idisp, $mem$$base$$Register); ++ __ nop(); ++ } + __ twi_0($dst$$Register); + __ isync(); + %} +@@ -5502,7 +5534,7 @@ + ins_cost(MEMORY_REF_COST); + + format %{ "LD $dst, $mem \t// long" %} +- size(4); ++ size(8); + ins_encode( enc_ld(dst, mem) ); + ins_pipe(pipe_class_memory); + %} +@@ -5515,7 +5547,7 @@ + format %{ "LD $dst, $mem \t// long acquire\n\t" + "TWI $dst\n\t" + "ISYNC" %} +- size(12); ++ size(16); + ins_encode( enc_ld_ac(dst, mem) ); + ins_pipe(pipe_class_memory); + %} +@@ -5527,7 +5559,7 @@ + ins_cost(MEMORY_REF_COST); + + format %{ "LD $dst, $mem \t// unaligned long" %} +- size(4); ++ size(8); + ins_encode( enc_ld(dst, mem) ); + ins_pipe(pipe_class_memory); + %} +@@ -5541,7 +5573,7 @@ + ins_cost(MEMORY_REF_COST); + + format %{ "LD $dst, $mem \t// load 8-byte Vector" %} +- size(4); ++ size(8); + ins_encode( enc_ld(dst, mem) ); + ins_pipe(pipe_class_memory); + %} +@@ -5601,7 +5633,7 @@ + ins_cost(MEMORY_REF_COST); + + format %{ "LD $dst, $mem \t// ptr" %} +- size(4); ++ size(8); + ins_encode( enc_ld(dst, mem) ); + ins_pipe(pipe_class_memory); + %} +@@ -5614,7 +5646,7 @@ + format %{ "LD $dst, $mem \t// ptr acquire\n\t" + "TWI $dst\n\t" + "ISYNC" %} +- size(12); ++ size(16); + ins_encode( enc_ld_ac(dst, mem) ); + ins_pipe(pipe_class_memory); + %} +@@ -5626,7 +5658,7 @@ + ins_cost(MEMORY_REF_COST); + + format %{ "LD $dst, $mem \t// ptr + p2x" %} +- size(4); ++ size(8); + ins_encode( enc_ld(dst, mem) ); + ins_pipe(pipe_class_memory); + %} +@@ -5648,7 +5680,7 @@ + ins_cost(MEMORY_REF_COST); + + format %{ "LD $dst, $mem \t// klass ptr" %} +- size(4); ++ size(8); + ins_encode( enc_ld(dst, mem) ); + ins_pipe(pipe_class_memory); + %} +@@ -6521,7 +6553,7 @@ + ins_cost(MEMORY_REF_COST); + + format %{ "STD $src, $mem \t// long" %} +- size(4); ++ size(8); + ins_encode( enc_std(src, mem) ); + ins_pipe(pipe_class_memory); + %} +@@ -6535,7 +6567,7 @@ + ins_cost(MEMORY_REF_COST); + + format %{ "STD $mem, $src \t// packed8B" %} +- size(4); ++ size(8); + ins_encode( enc_std(src, mem) ); + ins_pipe(pipe_class_memory); + %} +@@ -6568,7 +6600,7 @@ + ins_cost(MEMORY_REF_COST); + + format %{ "STD $src, $dst \t// ptr" %} +- size(4); ++ size(8); + ins_encode( enc_std(src, dst) ); + ins_pipe(pipe_class_memory); + %} +@@ -7521,7 +7553,7 @@ + format %{ "LD $dst, $mem \t// loadPLocked\n\t" + "TWI $dst\n\t" + "ISYNC" %} +- size(12); ++ size(16); + ins_encode( enc_ld_ac(dst, mem) ); + ins_pipe(pipe_class_memory); + %} +@@ -9287,7 +9319,7 @@ + ins_cost(MEMORY_REF_COST); + + format %{ "LD $dst, $src \t// long" %} +- size(4); ++ size(8); + ins_encode( enc_ld(dst, src) ); + ins_pipe(pipe_class_memory); + %} +@@ -9298,7 +9330,7 @@ + ins_cost(MEMORY_REF_COST); + + format %{ "STD $src, $dst \t// long" %} +- size(4); ++ size(8); + ins_encode( enc_std(src, dst) ); // rs=rt + ins_pipe(pipe_class_memory); + %} +@@ -9372,7 +9404,7 @@ + instruct moveD2L_stack_reg(iRegLdst dst, stackSlotD src) %{ + match(Set dst (MoveD2L src)); + ins_cost(MEMORY_REF_COST); +- size(4); ++ size(8); + format %{ "LD $dst, $src \t// MoveD2L" %} + ins_encode( enc_ld(dst, src) ); + ins_pipe(pipe_class_memory); +@@ -9407,7 +9439,7 @@ + ins_cost(MEMORY_REF_COST); + + format %{ "STD $src, $dst \t// MoveL2D" %} +- size(4); ++ size(8); + ins_encode( enc_std(src, dst) ); + ins_pipe(pipe_class_memory); + %}