diff --git a/java-11-openjdk.spec b/java-11-openjdk.spec index 26609d4..96f8b51 100644 --- a/java-11-openjdk.spec +++ b/java-11-openjdk.spec @@ -223,7 +223,7 @@ %global top_level_dir_name %{origin} %global minorver 0 %global buildver 2 -%global rpmrelease 3 +%global rpmrelease 4 #%%global tagsuffix "" # priority must be 8 digits in total; untill openjdk 1.8 we were using 18..... so when moving to 11 we had to add another digit %if %is_system_jdk @@ -1056,6 +1056,16 @@ Patch6: rh1566890-CVE_2018_3639-speculative_store_bypass.patch Patch7: pr3695-toggle_system_crypto_policy.patch # S390 ambiguous log2_intptr call Patch8: s390-8214206_fix.patch + +############################################# +# +# Patches appearing in 11.0.7 +# +# This section includes patches which are present +# in the listed OpenJDK 11u release and should be +# able to be removed once that release is out +# and used by this RPM. +############################################# # JDK-8241296: Segfault in JNIHandleBlock::oops_do() Patch10: jdk8241296-jnihandleblock_segfault.patch @@ -1070,6 +1080,8 @@ Patch10: jdk8241296-jnihandleblock_segfault.patch ############################################# # JDK-8237879: make 4.3 breaks build Patch9: jdk8237879-make_4_3_build_fixes.patch +# JDK-8237396: JvmtiTagMap::weak_oops_do() should not trigger barriers +Patch11: jdk8237396-avoid_triggering_barriers.patch ############################################# # @@ -1307,6 +1319,7 @@ pushd %{top_level_dir_name} %patch8 -p1 %patch9 -p1 %patch10 -p1 +%patch11 -p1 popd # openjdk %patch1000 @@ -1850,6 +1863,9 @@ require "copy_jdk_configs.lua" %changelog +* Sat Mar 28 2020 Andrew John Hughes - 1:11.0.7.2-0.4.ea +- Add JDK-8237396 backport to resolve Shenandoah TCK breakage in traversal mode. + * Tue Mar 24 2020 Severin Gehwolf - 1:11.0.7.2-0.3.ea - Revert GCC 10 workaround for s390x. - Resolves RHBZ#1799087. diff --git a/jdk8237396-avoid_triggering_barriers.patch b/jdk8237396-avoid_triggering_barriers.patch new file mode 100644 index 0000000..90d7c65 --- /dev/null +++ b/jdk8237396-avoid_triggering_barriers.patch @@ -0,0 +1,58 @@ +# HG changeset patch +# User zgu +# Date 1579696811 18000 +# Wed Jan 22 07:40:11 2020 -0500 +# Node ID 91ea567eeabeade6b3f8d6cf10c02ba53f700eca +# Parent 082f1d3eb1649ff776cda165ed78d65bc7361ebc +8237396: JvmtiTagMap::weak_oops_do() should not trigger barriers +Reviewed-by: stefank, rkennke + +diff --git a/src/hotspot/share/prims/jvmtiTagMap.cpp b/src/hotspot/share/prims/jvmtiTagMap.cpp +--- a/src/hotspot/share/prims/jvmtiTagMap.cpp ++++ b/src/hotspot/share/prims/jvmtiTagMap.cpp +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2003, 2020, 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 +@@ -96,6 +96,11 @@ + inline oop object_peek() { + return NativeAccess::oop_load(object_addr()); + } ++ ++ inline oop object_raw() { ++ return RawAccess<>::oop_load(object_addr()); ++ } ++ + inline jlong tag() const { return _tag; } + + inline void set_tag(jlong tag) { +@@ -3357,7 +3362,7 @@ + JvmtiTagHashmapEntry* next = entry->next(); + + // has object been GC'ed +- if (!is_alive->do_object_b(entry->object_peek())) { ++ if (!is_alive->do_object_b(entry->object_raw())) { + // grab the tag + jlong tag = entry->tag(); + guarantee(tag != 0, "checking"); +@@ -3375,7 +3380,7 @@ + ++freed; + } else { + f->do_oop(entry->object_addr()); +- oop new_oop = entry->object_peek(); ++ oop new_oop = entry->object_raw(); + + // if the object has moved then re-hash it and move its + // entry to its new location. +@@ -3409,7 +3414,7 @@ + // Re-add all the entries which were kept aside + while (delayed_add != NULL) { + JvmtiTagHashmapEntry* next = delayed_add->next(); +- unsigned int pos = JvmtiTagHashmap::hash(delayed_add->object_peek(), size); ++ unsigned int pos = JvmtiTagHashmap::hash(delayed_add->object_raw(), size); + delayed_add->set_next(table[pos]); + table[pos] = delayed_add; + delayed_add = next;