diff --git a/.gitignore b/.gitignore index d19e02f..010e1ba 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ -SOURCES/aarch64-port-jdk8u-aarch64-jdk8u101-b13.tar.xz -SOURCES/systemtap-tapset.tar.gz +SOURCES/aarch64-port-jdk8u-aarch64-jdk8u102-b14.tar.xz +SOURCES/systemtap-tapset-3.1.0.tar.xz diff --git a/.java-1.8.0-openjdk.metadata b/.java-1.8.0-openjdk.metadata index be5b5b0..3ceac4b 100644 --- a/.java-1.8.0-openjdk.metadata +++ b/.java-1.8.0-openjdk.metadata @@ -1,2 +1,2 @@ -493d8737db5adf5aded6cc57ca3313604dc4f6ec SOURCES/aarch64-port-jdk8u-aarch64-jdk8u101-b13.tar.xz -8dd5345808d840741a9619becc84302f44b54e78 SOURCES/systemtap-tapset.tar.gz +4c11157a3c6ae41fb5345769a1f5cebd0de50d91 SOURCES/aarch64-port-jdk8u-aarch64-jdk8u102-b14.tar.xz +44b09844ec2e90db08d3d883993e0dbab0c1988a SOURCES/systemtap-tapset-3.1.0.tar.xz diff --git a/SOURCES/6961123-pr2972-rh1339740.patch b/SOURCES/6961123-pr2972-rh1339740.patch deleted file mode 100644 index d880c5f..0000000 --- a/SOURCES/6961123-pr2972-rh1339740.patch +++ /dev/null @@ -1,21 +0,0 @@ -# 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/SOURCES/8147771-additional_hunk.patch b/SOURCES/8147771-additional_hunk.patch deleted file mode 100644 index 36c951d..0000000 --- a/SOURCES/8147771-additional_hunk.patch +++ /dev/null @@ -1,23 +0,0 @@ -# HG changeset patch -# User igerasim -# Date 1468169506 -3600 -# Sun Jul 10 17:51:46 2016 +0100 -# Node ID 5e27ac7f7cbc125d91530f9e49dcdb488eacc78f -# Parent 8b1a17d4bf3d2a90fafbb1fccc8a6af7c4b38df5 -8147771: Construction of static protection domains under Javax custom policy -Summary: Changed SubjectDomainCombiner to combine static PD as is even when custom policy is enabled. -Reviewed-by: valeriep - -diff -r 8b1a17d4bf3d -r 5e27ac7f7cbc src/share/classes/javax/security/auth/SubjectDomainCombiner.java ---- openjdk/jdk/src/share/classes/javax/security/auth/SubjectDomainCombiner.java Fri Jul 01 04:11:25 2016 +0100 -+++ openjdk/jdk/src/share/classes/javax/security/auth/SubjectDomainCombiner.java Sun Jul 10 17:51:46 2016 +0100 -@@ -246,7 +246,8 @@ - if (subjectPd == null) { - if (pdAccess.getStaticPermissionsField(pd)) { - // Need to keep static ProtectionDomain objects static -- subjectPd = pd; -+ subjectPd = new ProtectionDomain(pd.getCodeSource(), -+ pd.getPermissions()); - } else { - subjectPd = new ProtectionDomain(pd.getCodeSource(), - pd.getPermissions(), diff --git a/SOURCES/8148752-pr2943-rh1330188.patch b/SOURCES/8148752-pr2943-rh1330188.patch deleted file mode 100644 index d1207d0..0000000 --- a/SOURCES/8148752-pr2943-rh1330188.patch +++ /dev/null @@ -1,114 +0,0 @@ -# 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/SOURCES/8157306-pr3121-rh1360863.patch b/SOURCES/8157306-pr3121-rh1360863.patch new file mode 100644 index 0000000..8cb69ae --- /dev/null +++ b/SOURCES/8157306-pr3121-rh1360863.patch @@ -0,0 +1,29 @@ +# HG changeset patch +# User aph +# Date 1470065634 -3600 +# Mon Aug 01 16:33:54 2016 +0100 +# Node ID ee9bffb3bd390b2ad805c7b59d7d2ab8a68a4367 +# Parent ab3e0bde3c15bbba60de4decabcd70ffef657448 +8157306, PR3121: Random infrequent null pointer exceptions in javac +Reviewed-by: kvn + +diff -r ab3e0bde3c15 -r ee9bffb3bd39 src/share/vm/opto/lcm.cpp +--- openjdk/hotspot/src/share/vm/opto/lcm.cpp Tue Jul 26 04:42:03 2016 +0100 ++++ openjdk/hotspot/src/share/vm/opto/lcm.cpp Mon Aug 01 16:33:54 2016 +0100 +@@ -1090,11 +1090,14 @@ + Block *sb = block->_succs[i]; + // Clone the entire area; ignoring the edge fixup for now. + for( uint j = end; j > beg; j-- ) { +- // It is safe here to clone a node with anti_dependence +- // since clones dominate on each path. + Node *clone = block->get_node(j-1)->clone(); + sb->insert_node(clone, 1); + map_node_to_block(clone, sb); ++#ifdef AARCH64 ++ if (clone->needs_anti_dependence_check()) { ++ insert_anti_dependences(sb, clone); ++ } ++#endif + } + } + diff --git a/SOURCES/jstack-pr1845.patch b/SOURCES/jstack-pr1845.patch deleted file mode 100644 index 5d036ba..0000000 --- a/SOURCES/jstack-pr1845.patch +++ /dev/null @@ -1,274 +0,0 @@ -diff -r c728621e76f2 tapset/jstack.stp.in ---- tapset/jstack-1.8.0.stp.in Mon Jun 02 18:41:24 2014 +0100 -+++ tapset/jstack-1.8.0.stp.in Sat Jun 14 00:21:14 2014 +0900 -@@ -45,11 +45,7 @@ - semantic error: failed to retrieve location attribute for local - */ - --global Universe_methodKlassObj; --global Universe_collectedHeap; --global HeapWordSize; - global CodeCache_heap; --global NarrowOopStruct; - - global sp_register; - global fp_register; -@@ -57,9 +53,8 @@ - global ptr_size; - global ptr_mask; - --global constantPoolOopDesc_size; -+global constantPool_size; - global HeapBlock_Header_size; --global oopDesc_size; - - global vm_inited; - -@@ -67,26 +62,6 @@ - in a bare function and vm_init_end seems a good place to use. */ - probe hotspot.vm_init_end - { -- // The parent/type oop for a methodOop. -- Universe_methodKlassObj[pid()] = %( systemtap_v >= "1.8" -- %? @var("_methodKlassObj@universe.cpp") -- %: $_methodKlassObj %); -- -- /** -- * The Universe class holds some of the interesting statics for -- * introspection into HotSpot. The CollectedHeap -- * (Universe::_collectedHeap) is an abstraction of a java heap for Hotspot -- * it contains a _reserved MemRegion which represents a contigous -- * region of the address space consisting of HeapWords (which just -- * have one field member char *i). -- * -- * Note that we access it through its "short name" _collectedHeap. -- */ -- Universe_collectedHeap[pid()] = %( systemtap_v >= "1.8" -- %? @var("_collectedHeap@universe.cpp") -- %: $_collectedHeap %); -- HeapWordSize[pid()] = $HeapWordSize; -- - /** - * The CodeCache class contains the static CodeHeap _heap that - * is malloced at the start of the vm run and holds all generated -@@ -107,17 +82,6 @@ - %? @var("_heap@codeCache.cpp") - %: $_heap %); - -- /** -- * Does target process use CompressedOops ? -- */ -- NarrowOopStruct[pid()] = 0; -- %( systemtap_v >= "1.8" -- %? if (@var("UseCompressedOops@globals.cpp")) -- NarrowOopStruct[pid()] = &@var("_narrow_oop@universe.cpp"); -- %: if($UseCompressedOops) -- NarrowOopStruct[pid()] = $_narrow_oop; -- %) -- - // Should really check arch of user space (for 32bit jvm on 64bit kernel). - %( arch == "i386" %? - sp_register = "esp"; -@@ -136,22 +100,17 @@ - - // Pretend we have an array at address zero and take address of second - // element and we have the size. -- constantPoolOopDesc_size = &@cast(0, "constantPoolOopDesc")[1]; -+ constantPool_size = &@cast(0, "ConstantPool")[1]; - - // Really should get from dwarf: @size("HeapBlock::Header"), @size("oopDesc") - HeapBlock_Header_size = 2 * ptr_size; -- oopDesc_size = 2 * ptr_size; - - vm_inited[pid()] = 1; - } - - probe hotspot.vm_shutdown - { -- delete(Universe_methodKlassObj[pid()]); -- delete(Universe_collectedHeap[pid()]); -- delete(HeapWordSize[pid()]); - delete(CodeCache_heap[pid()]); -- delete(NarrowOopStruct[pid()]); - delete(vm_inited[pid()]); - } - -@@ -262,15 +221,7 @@ - return frame; - } - -- // Extract heap and code bounds. -- heap_start = @cast(Universe_collectedHeap[pid()], -- "CollectedHeap", -- "@ABS_SERVER_LIBJVM_SO@")->_reserved->_start; -- heap_size = HeapWordSize[pid()] * @cast(Universe_collectedHeap[pid()], -- "CollectedHeap", -- "@ABS_SERVER_LIBJVM_SO@")->_reserved->_word_size; -- heap_end = heap_start + heap_size; -- -+ // Extract code bounds. - CodeCache_low = @cast(CodeCache_heap[pid()], "CodeHeap", - "@ABS_SERVER_LIBJVM_SO@")->_memory->_low; - CodeCache_high = @cast(CodeCache_heap[pid()], "CodeHeap", -@@ -351,105 +302,69 @@ - // For the interpreter (and other code blobs) it is on the - // stack relative to the frame pointer. - if (blob_name == "nmethod") -- methodOopPtr = @cast(blob, "nmethod", -+ methodPtr = @cast(blob, "nmethod", - "@ABS_SERVER_LIBJVM_SO@")->_method - else -- methodOopPtr = user_long(fp + (-3 * ptr_size)) & ptr_mask -- -- // Start optimistic. A methodOop is only valid if it was -- // heap allocated. And if the "type class" oop equals the -- // Universe::methodKlassObj. -- if (heap_start > methodOopPtr || methodOopPtr >= heap_end) -- isMethodOop = 0 -- else -- { -- if (NarrowOopStruct[pid()]) -- { -- methodOopKlass = @cast(methodOopPtr, "methodOopDesc", -- "@ABS_SERVER_LIBJVM_SO@")->_metadata->_compressed_klass; -- methodOopKlass = (@cast(NarrowOopStruct[pid()], -- "NarrowOopStruct", -- "@ABS_SERVER_LIBJVM_SO@")->_base -- + (methodOopKlass -- << @cast(NarrowOopStruct[pid()], -- "NarrowOopStruct", -- "@ABS_SERVER_LIBJVM_SO@")->_shift)); -- } -- else -- methodOopKlass = @cast(methodOopPtr, "methodOopDesc", -- "@ABS_SERVER_LIBJVM_SO@")->_metadata->_klass; -+ methodPtr = user_long(fp + (-3 * ptr_size)) & ptr_mask - -- isMethodOop = (methodOopKlass == Universe_methodKlassObj[pid()]); -- } -+ // The java class is the holder of the constants (strings) -+ // that describe the method and signature. This constant pool -+ // contains symbolic information that describe the properties -+ // of the class. The indexes for methods and signaturates in -+ // the constant pool are Symbols that contain utf8 -+ // strings (plus lenghts). (We could also sanity check that -+ // the tag value is correct [CONSTANT_String = 8]). -+ // Note that the class name uses '/' instead of '.' as -+ // package name separator and that the method signature is -+ // encoded as a method descriptor string. Both of which we -+ // don't demangle here. -+ constMethod = @cast(methodPtr, "Method", -+ "@ABS_SERVER_LIBJVM_SO@")->_constMethod; -+ constantPool = @cast(constMethod, "ConstMethod", -+ "@ABS_SERVER_LIBJVM_SO@")->_constants; -+ constantPool_base = constantPool + constantPool_size; -+ -+ klass = @cast(constantPool, "ConstantPool", -+ "@ABS_SERVER_LIBJVM_SO@")->_pool_holder; -+ klassSymbol = @cast(klass, "Klass", -+ "@ABS_SERVER_LIBJVM_SO@")->_name; -+ klassName = &@cast(klassSymbol, "Symbol", -+ "@ABS_SERVER_LIBJVM_SO@")->_body[0]; -+ klassLength = @cast(klassSymbol, "Symbol", -+ "@ABS_SERVER_LIBJVM_SO@")->_length; -+ -+ methodIndex = @cast(constMethod, "ConstMethod", -+ "@ABS_SERVER_LIBJVM_SO@")->_name_index; -+ methodSymbol = user_long(constantPool_base + (methodIndex * ptr_size)); -+ methodName = &@cast(methodSymbol, "Symbol", -+ "@ABS_SERVER_LIBJVM_SO@")->_body[0]; -+ methodLength = @cast(methodSymbol, "Symbol", -+ "@ABS_SERVER_LIBJVM_SO@")->_length; - -- if (isMethodOop) -+ if (log_sig) - { -- // The java class is the holder of the constants (strings) -- // that describe the method and signature. This constant pool -- // contains symbolic information that describe the properties -- // of the class. The indexes for methods and signaturates in -- // the constant pool are Symbols that contain utf8 -- // strings (plus lenghts). (We could also sanity check that -- // the tag value is correct [CONSTANT_String = 8]). -- // Note that the class name uses '/' instead of '.' as -- // package name separator and that the method signature is -- // encoded as a method descriptor string. Both of which we -- // don't demangle here. -- constantPoolOopDesc = @cast(methodOopPtr, "methodOopDesc", -- "@ABS_SERVER_LIBJVM_SO@")->_constants; -- constantPoolOop_base = constantPoolOopDesc + constantPoolOopDesc_size; -- -- klassPtr = @cast(constantPoolOopDesc, "constantPoolOopDesc", -- "@ABS_SERVER_LIBJVM_SO@")->_pool_holder; -- klassSymbol = @cast(klassPtr + oopDesc_size, "Klass", -- "@ABS_SERVER_LIBJVM_SO@")->_name; -- klassName = &@cast(klassSymbol, "Symbol", -- "@ABS_SERVER_LIBJVM_SO@")->_body[0]; -- klassLength = @cast(klassSymbol, "Symbol", -- "@ABS_SERVER_LIBJVM_SO@")->_length; -- -- methodIndex = @cast(methodOopPtr, "methodOopDesc", -- "@ABS_SERVER_LIBJVM_SO@")->_constMethod->_name_index; -- methodOopDesc = user_long(constantPoolOop_base + (methodIndex * ptr_size)) - 1; -- methodName = &@cast(methodOopDesc, "Symbol", -- "@ABS_SERVER_LIBJVM_SO@")->_body[0]; -- methodLength = @cast(methodOopDesc, "Symbol", -- "@ABS_SERVER_LIBJVM_SO@")->_length; -- -- if (log_sig) -- { -- sigIndex = @cast(methodOopPtr, "methodOopDesc", -- "@ABS_SERVER_LIBJVM_SO@")->_constMethod->_signature_index; -- sigOopDesc = user_long(constantPoolOop_base -- + (sigIndex * ptr_size)) - 1; -- sigName = &@cast(sigOopDesc, "Symbol", -- "@ABS_SERVER_LIBJVM_SO@")->_body[0]; -- sigLength = @cast(sigOopDesc, "Symbol", -- "@ABS_SERVER_LIBJVM_SO@")->_length; -- sig = user_string_n(sigName, sigLength); -- } -- else -- sig = ""; -- -- code_name = (log_native -- ? sprintf("<%s@0x%x>", -- str_replace(blob_name, " ", "_"), pc) -- : ""); -- -- frame = sprintf("%s.%s%s%s", -- user_string_n(klassName, klassLength), -- user_string_n(methodName, methodLength), -- sig, code_name); -+ sigIndex = @cast(constMethod, "ConstMethod", -+ "@ABS_SERVER_LIBJVM_SO@")->_signature_index; -+ sigSymbol = user_long(constantPool_base -+ + (sigIndex * ptr_size)); -+ sigName = &@cast(sigSymbol, "Symbol", -+ "@ABS_SERVER_LIBJVM_SO@")->_body[0]; -+ sigLength = @cast(sigSymbol, "Symbol", -+ "@ABS_SERVER_LIBJVM_SO@")->_length; -+ sig = user_string_n(sigName, sigLength); - } - else -- { -- // This is probably just an internal function, not a java -- // method, just print the blob_name and continue. -- // fp is probably still trusted. -- if (log_native) -- frame = sprintf("<%s@0x%x>", -- str_replace(blob_name, " ", "_"), pc); -- } -+ sig = ""; -+ -+ code_name = (log_native -+ ? sprintf("<%s@0x%x>", -+ str_replace(blob_name, " ", "_"), pc) -+ : ""); -+ -+ frame = sprintf("%s.%s%s%s", -+ user_string_n(klassName, klassLength), -+ user_string_n(methodName, methodLength), -+ sig, code_name); - - // We cannot trust the frame pointer of compiled methods. - // The server (c2) jit compiler uses the fp register. diff --git a/SOURCES/pr3083-rh1346460.patch b/SOURCES/pr3083-rh1346460.patch new file mode 100644 index 0000000..d44ed1d --- /dev/null +++ b/SOURCES/pr3083-rh1346460.patch @@ -0,0 +1,152 @@ +# HG changeset patch +# User andrew +# Date 1467652889 -3600 +# Mon Jul 04 18:21:29 2016 +0100 +# Node ID a4541d1d8609cadb08d3e31b40b9184ff32dd6c3 +# Parent bc6eab2038c603afb2eb2b4644f3b900c8fd0c46 +PR3083, RH1346460: Regression in SSL debug output without an ECC provider +Summary: Return null rather than throwing an exception when there's no ECC provider. + +diff -r bc6eab2038c6 -r a4541d1d8609 src/share/classes/sun/security/util/Debug.java +--- openjdk/jdk/src/share/classes/sun/security/util/Debug.java Mon Jul 04 17:08:12 2016 +0100 ++++ openjdk/jdk/src/share/classes/sun/security/util/Debug.java Mon Jul 04 18:21:29 2016 +0100 +@@ -73,6 +73,7 @@ + System.err.println("certpath PKIX CertPathBuilder and"); + System.err.println(" CertPathValidator debugging"); + System.err.println("combiner SubjectDomainCombiner debugging"); ++ System.err.println("ecc Elliptic Curve Cryptography debugging"); + System.err.println("gssloginconfig"); + System.err.println(" GSS LoginConfigImpl debugging"); + System.err.println("configfile JAAS ConfigFile loading"); +diff -r bc6eab2038c6 -r a4541d1d8609 src/share/classes/sun/security/util/ECUtil.java +--- openjdk/jdk/src/share/classes/sun/security/util/ECUtil.java Mon Jul 04 17:08:12 2016 +0100 ++++ openjdk/jdk/src/share/classes/sun/security/util/ECUtil.java Mon Jul 04 18:21:29 2016 +0100 +@@ -41,6 +41,9 @@ + + public class ECUtil { + ++ /* Are we debugging ? */ ++ private static final Debug debug = Debug.getInstance("ecc"); ++ + // Used by SunPKCS11 and SunJSSE. + public static ECPoint decodePoint(byte[] data, EllipticCurve curve) + throws IOException { +@@ -90,6 +93,10 @@ + } + + private static AlgorithmParameters getECParameters(Provider p) { ++ return getECParameters(p, false); ++ } ++ ++ private static AlgorithmParameters getECParameters(Provider p, boolean throwException) { + try { + if (p != null) { + return AlgorithmParameters.getInstance("EC", p); +@@ -97,13 +104,21 @@ + + return AlgorithmParameters.getInstance("EC"); + } catch (NoSuchAlgorithmException nsae) { +- throw new RuntimeException(nsae); ++ if (throwException) { ++ throw new RuntimeException(nsae); ++ } else { ++ // ECC provider is optional so just return null ++ if (debug != null) { ++ debug.println("Provider unavailable: " + nsae); ++ } ++ return null; ++ } + } + } + + public static byte[] encodeECParameterSpec(Provider p, + ECParameterSpec spec) { +- AlgorithmParameters parameters = getECParameters(p); ++ AlgorithmParameters parameters = getECParameters(p, true); + + try { + parameters.init(spec); +@@ -122,11 +137,16 @@ + public static ECParameterSpec getECParameterSpec(Provider p, + ECParameterSpec spec) { + AlgorithmParameters parameters = getECParameters(p); ++ if (parameters == null) ++ return null; + + try { + parameters.init(spec); + return parameters.getParameterSpec(ECParameterSpec.class); + } catch (InvalidParameterSpecException ipse) { ++ if (debug != null) { ++ debug.println("Invalid parameter specification: " + ipse); ++ } + return null; + } + } +@@ -135,34 +155,49 @@ + byte[] params) + throws IOException { + AlgorithmParameters parameters = getECParameters(p); ++ if (parameters == null) ++ return null; + + parameters.init(params); + + try { + return parameters.getParameterSpec(ECParameterSpec.class); + } catch (InvalidParameterSpecException ipse) { ++ if (debug != null) { ++ debug.println("Invalid parameter specification: " + ipse); ++ } + return null; + } + } + + public static ECParameterSpec getECParameterSpec(Provider p, String name) { + AlgorithmParameters parameters = getECParameters(p); ++ if (parameters == null) ++ return null; + + try { + parameters.init(new ECGenParameterSpec(name)); + return parameters.getParameterSpec(ECParameterSpec.class); + } catch (InvalidParameterSpecException ipse) { ++ if (debug != null) { ++ debug.println("Invalid parameter specification: " + ipse); ++ } + return null; + } + } + + public static ECParameterSpec getECParameterSpec(Provider p, int keySize) { + AlgorithmParameters parameters = getECParameters(p); ++ if (parameters == null) ++ return null; + + try { + parameters.init(new ECKeySizeParameterSpec(keySize)); + return parameters.getParameterSpec(ECParameterSpec.class); + } catch (InvalidParameterSpecException ipse) { ++ if (debug != null) { ++ debug.println("Invalid parameter specification: " + ipse); ++ } + return null; + } + +@@ -171,11 +206,16 @@ + public static String getCurveName(Provider p, ECParameterSpec spec) { + ECGenParameterSpec nameSpec; + AlgorithmParameters parameters = getECParameters(p); ++ if (parameters == null) ++ return null; + + try { + parameters.init(spec); + nameSpec = parameters.getParameterSpec(ECGenParameterSpec.class); + } catch (InvalidParameterSpecException ipse) { ++ if (debug != null) { ++ debug.println("Invalid parameter specification: " + ipse); ++ } + return null; + } + diff --git a/SOURCES/soundFontPatch.patch b/SOURCES/soundFontPatch.patch deleted file mode 100644 index 2009642..0000000 --- a/SOURCES/soundFontPatch.patch +++ /dev/null @@ -1,53 +0,0 @@ -# HG changeset patch -# User omajid -# Date 1445973555 14400 -# Node ID 3e006ea10d21a7fcf15725c51f2ab7ededce53ab -# Parent dfeaf40df80032570558c031f37f6630dc729e3f -8140620: Find and load default.sf2 as the default soundbank on Linux -Reviewed-by: serb - -+++ openjdk/jdk/src/share/classes/com/sun/media/sound/SoftSynthesizer.java ---- openjdk/jdk/src/share/classes/com/sun/media/sound/SoftSynthesizer.java -@@ -671,6 +671,40 @@ - actions.add(new PrivilegedAction() { - public InputStream run() { - if (System.getProperties().getProperty("os.name") -+ .startsWith("Linux")) { -+ -+ File[] systemSoundFontsDir = new File[] { -+ /* Arch, Fedora, Mageia */ -+ new File("/usr/share/soundfonts/"), -+ new File("/usr/local/share/soundfonts/"), -+ /* Debian, Gentoo, OpenSUSE, Ubuntu */ -+ new File("/usr/share/sounds/sf2/"), -+ new File("/usr/local/share/sounds/sf2/"), -+ }; -+ -+ /* -+ * Look for a default.sf2 -+ */ -+ for (File systemSoundFontDir : systemSoundFontsDir) { -+ if (systemSoundFontDir.exists()) { -+ File defaultSoundFont = new File(systemSoundFontDir, "default.sf2"); -+ if (defaultSoundFont.exists()) { -+ try { -+ return new FileInputStream(defaultSoundFont); -+ } catch (IOException e) { -+ // continue with lookup -+ } -+ } -+ } -+ } -+ } -+ return null; -+ } -+ }); -+ -+ actions.add(new PrivilegedAction() { -+ public InputStream run() { -+ if (System.getProperties().getProperty("os.name") - .startsWith("Windows")) { - File gm_dls = new File(System.getenv("SystemRoot") - + "\\system32\\drivers\\gm.dls"); - - diff --git a/SPECS/java-1.8.0-openjdk.spec b/SPECS/java-1.8.0-openjdk.spec index 12edc74..856d031 100644 --- a/SPECS/java-1.8.0-openjdk.spec +++ b/SPECS/java-1.8.0-openjdk.spec @@ -147,7 +147,7 @@ # note, following three variables are sedded from update_sources if used correctly. Hardcode them rather there. %global project aarch64-port %global repo jdk8u -%global revision aarch64-jdk8u101-b13 +%global revision aarch64-jdk8u102-b14 # eg # jdk8u60-b27 -> jdk8u60 or # aarch64-jdk8u60-b27 -> aarch64-jdk8u60 (dont forget spec escape % by %%) %global whole_update %(VERSION=%{revision}; echo ${VERSION%%-*}) # eg jdk8u60 -> 60 or aarch64-jdk8u60 -> 60 @@ -715,7 +715,7 @@ OrderWithRequires: %{name}-headless%1 = %{epoch}:%{version}-%{release} Name: java-%{javaver}-%{origin} Version: %{javaver}.%{updatever} -Release: 3.%{buildver}%{?dist} +Release: 1.%{buildver}%{?dist} # java-1.5.0-ibm from jpackage.org set Epoch to 1 for unknown reasons, # and this change was brought into RHEL-4. java-1.5.0-ibm packages # also included the epoch in their virtual provides. This created a @@ -735,7 +735,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-jdk8u101-b13 FILE_NAME_ROOT=aarch64-port-jdk8u-${VERSION} +# VERSION=aarch64-jdk8u102-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 @@ -747,7 +747,7 @@ Source2: README.src # They are based on code contained in the IcedTea7 project. # Systemtap tapsets. Zipped up to keep it small. -Source8: systemtap-tapset.tar.gz +Source8: systemtap-tapset-3.1.0.tar.xz # Desktop files. Adapated from IcedTea. Source9: jconsole.desktop.in @@ -787,6 +787,8 @@ Patch511: rh1214835.patch Patch512: no_strict_overflow.patch # RH1337583, PR2974: PKCS#10 certificate requests now use CRLF line endings rather than system line endings Patch523: pr2974-rh1343832.patch +# PR3083, RH1346460: Regression in SSL debug output without an ECC provider +Patch528: pr3083-rh1346460.patch # Arch-specific upstreamable patches # PR2415: JVM -Xmx requirement is too high on s390 @@ -810,18 +812,12 @@ Patch203: system-lcms.patch # PR2462: Backport "8074839: Resolve disabled warnings for libunpack and the unpack200 binary" # This fixes printf warnings that lead to build failure with -Werror=format-security from optflags Patch502: pr2462.patch -# S8140620, PR2769: Find and load default.sf2 as the default soundbank on Linux -Patch605: soundFontPatch.patch -# S8158260, PR2991, RH1341258: JVM on PPC64 LE crashes due to an illegal instruction in JITed code -Patch524: 8158260-pr2991-rh1341258.patch # S6260348, PR3066: GTK+ L&F JTextComponent not respecting desktop caret blink rate Patch526: 6260348-pr3066.patch +# S8157306, PR3121, RH1360863: Random infrequent null pointer exceptions in javac +Patch531: 8157306-pr3121-rh1360863.patch -# 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 8u111 # S8159244, PR3074: Partially initialized string object created by C2's string concat optimization may escape Patch527: 8159244-pr3074.patch @@ -832,6 +828,8 @@ Patch521: 8044762-pr2960.patch Patch522: 8049226-pr2960.patch # 8154210: Zero: Better byte behaviour Patch606: 8154210.patch +# S8158260, PR2991, RH1341258: JVM on PPC64 LE crashes due to an illegal instruction in JITed code +Patch524: 8158260-pr2991-rh1341258.patch # Patches ineligible for 8u # 8043805: Allow using a system-installed libjpeg @@ -842,11 +840,8 @@ Patch201: system-libjpeg.patch Patch12: removeSunEcProvider-RH1154143.patch # Temporary fix for typo in CORBA security patch Patch529: corba_typo_fix.patch -# Temporary fix to apply missing hunk from 8147771 (missed due to unneeded 8138811) -Patch530: 8147771-additional_hunk.patch # Non-OpenJDK fixes -Patch300: jstack-pr1845.patch BuildRequires: autoconf BuildRequires: automake @@ -1115,26 +1110,23 @@ sh %{SOURCE12} %patch603 %patch601 %patch602 -%patch605 %patch502 %patch504 %patch511 %patch512 -%patch519 -%patch520 %patch521 %patch522 %patch523 %patch526 %patch527 +%patch528 %patch529 -%patch530 +%patch531 # Extract systemtap tapsets %if %{with_systemtap} -tar xzf %{SOURCE8} -%patch300 +tar -x -I xz -f %{SOURCE8} %if %{include_debug_build} cp -r tapset tapset%{debug_suffix} %endif @@ -1152,6 +1144,7 @@ for suffix in %{build_loop} ; do %endif sed -i -e s:@ABS_JAVA_HOME_DIR@:%{_jvmdir}/%{sdkdir $suffix}:g $OUTPUT_FILE sed -i -e s:@INSTALL_ARCH_DIR@:%{archinstall}:g $OUTPUT_FILE + sed -i -e s:@prefix@:%{_jvmdir}/%{sdkdir $suffix}/:g $OUTPUT_FILE done done # systemtap tapsets ends @@ -1821,6 +1814,31 @@ end %endif %changelog +* Tue Aug 30 2016 Jiri Vanek - 1:1.8.0.102-1.b14 +- New variable, @prefix@, needs to be substituted in tapsets (rhbz1371005) +- Resolves: rhbz#1368440 + +* Tue Aug 23 2016 Andrew Hughes - 1:1.8.0.102-0.b14 +- Update to aarch64-jdk8u102-b14. +- Drop 8140620, 8148752 and 6961123, all of which appear upstream in u102. +- Move 8159244 to 8u111 section as it only appears to be in unpublished u102 b31. +- Move 8158260 to 8u112 section following its backport to 8u. +- Resolves: rhbz#1368440 + +* Tue Aug 23 2016 Andrew Hughes - 1:1.8.0.101-5.b15 +- Update to aarch64-jdk8u101-b15. +- Rebase SystemTap tarball on IcedTea 3.1.0 versions so as to avoid patching. +- Drop additional hunk for 8147771 which is now applied upstream. +- Resolves: rhbz#1368440 + +* Tue Aug 09 2016 Andrew Hughes - 1:1.8.0.101-4.b13 +- Fix regression in SSL debug output when no ECC provider is available. +- Resolves: rhbz#1365618 + +* Mon Aug 01 2016 Andrew Hughes - 1:1.8.0.101-4.b13 +- Add upstream patch for S8157306, documented & applied on all archs with conditional in patch +- Resolves: rhbz#1365620 + * Mon Jul 11 2016 Andrew Hughes - 1:1.8.0.101-3.b13 - Replace bad 8159244 patch from upstream 8u with fresh backport from OpenJDK 9. - Resolves: rhbz#1350036