Finished updtae to u92, added many known regression fixes

This commit is contained in:
Jiri Vanek 2016-06-08 19:11:04 +02:00
parent 07077ab8b1
commit 418a52c266
10 changed files with 717 additions and 63 deletions

View File

@ -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();
}

45
8044762-pr2960.patch Normal file
View File

@ -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. */

View File

@ -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)

View File

@ -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);
+ }
+}

47
8154210.patch Normal file
View File

@ -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,

View File

@ -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=<path to checked-out repository> 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 <jvanek@redhat.com> - 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 <jvanek@redhat.com> - 1:1.8.0.91-7.b14
- added patch519, jdwpCrash.abrt.patch to fix trasnportation error

44
pr1834-rh1022017.patch Normal file
View File

@ -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);
}

View File

@ -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

148
pr2974-rh1337583.patch Normal file
View File

@ -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", "<startdate>", "certificate.validity.start.date.time"),
STOREPASS("storepass", "<arg>", "keystore.password"),
STORETYPE("storetype", "<storetype>", "keystore.type"),
+ SYSTEMLINEENDINGS("systemlineendings", null, "system.line.endings"),
TRUSTCACERTS("trustcacerts", null, "trust.certificates.from.cacerts"),
V("v", null, "verbose.output"),
VALIDITY("validity", "<valDays>", "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",

248
pr2991-rh1341258.patch Normal file
View File

@ -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);
%}