diff --git a/BackPort-JDK-8324580-SIGFPE-on-THP-initialization-on.patch b/BackPort-JDK-8324580-SIGFPE-on-THP-initialization-on.patch deleted file mode 100644 index 3d3f47e74d1315503e1b30bb4b91f17d88c05c4b..0000000000000000000000000000000000000000 --- a/BackPort-JDK-8324580-SIGFPE-on-THP-initialization-on.patch +++ /dev/null @@ -1,106 +0,0 @@ -Subject: BackPort of JDK-8324580: SIGFPE on THP initialization on kernels < 4.10 - ---- - src/hotspot/os/linux/hugepages.cpp | 13 +++++++++++++ - src/hotspot/os/linux/hugepages.hpp | 1 + - src/hotspot/os/linux/os_linux.cpp | 6 +++++- - .../jtreg/runtime/os/HugePageConfiguration.java | 14 ++++++++++++++ - .../os/TestHugePageDecisionsAtVMStartup.java | 3 ++- - 5 files changed, 35 insertions(+), 2 deletions(-) - -diff --git a/src/hotspot/os/linux/hugepages.cpp b/src/hotspot/os/linux/hugepages.cpp -index f9f9dd497..715bfc165 100644 ---- a/src/hotspot/os/linux/hugepages.cpp -+++ b/src/hotspot/os/linux/hugepages.cpp -@@ -230,6 +230,19 @@ void THPSupport::print_on(outputStream* os) { - StaticHugePageSupport HugePages::_static_hugepage_support; - THPSupport HugePages::_thp_support; - -+size_t HugePages::thp_pagesize_fallback() { -+ // Older kernels won't publish the THP page size. Fall back to default static huge page size, -+ // since that is likely to be the THP page size as well. Don't do it if the page size is considered -+ // too large to avoid large alignment waste. If static huge page size is unknown, use educated guess. -+ if (thp_pagesize() != 0) { -+ return thp_pagesize(); -+ } -+ if (supports_static_hugepages()) { -+ return MIN2(default_static_hugepage_size(), 16 * M); -+ } -+ return 2 * M; -+} -+ - void HugePages::initialize() { - _static_hugepage_support.scan_os(); - _thp_support.scan_os(); -diff --git a/src/hotspot/os/linux/hugepages.hpp b/src/hotspot/os/linux/hugepages.hpp -index cb7c992d7..5d196504c 100644 ---- a/src/hotspot/os/linux/hugepages.hpp -+++ b/src/hotspot/os/linux/hugepages.hpp -@@ -107,6 +107,7 @@ public: - static THPMode thp_mode() { return _thp_support.mode(); } - static bool supports_thp() { return thp_mode() == THPMode::madvise || thp_mode() == THPMode::always; } - static size_t thp_pagesize() { return _thp_support.pagesize(); } -+ static size_t thp_pagesize_fallback(); - - static void initialize(); - static void print_on(outputStream* os); -diff --git a/src/hotspot/os/linux/os_linux.cpp b/src/hotspot/os/linux/os_linux.cpp -index 4da04ebc7..4ece9f471 100644 ---- a/src/hotspot/os/linux/os_linux.cpp -+++ b/src/hotspot/os/linux/os_linux.cpp -@@ -3843,8 +3843,12 @@ void os::large_page_init() { - // In THP mode: - // - os::large_page_size() is the *THP page size* - // - os::pagesizes() has two members, the THP page size and the system page size -- assert(HugePages::supports_thp() && HugePages::thp_pagesize() > 0, "Missing OS info"); - _large_page_size = HugePages::thp_pagesize(); -+ if (_large_page_size == 0) { -+ log_info(pagesize) ("Cannot determine THP page size (kernel < 4.10 ?)"); -+ _large_page_size = HugePages::thp_pagesize_fallback(); -+ log_info(pagesize) ("Assuming THP page size to be: " EXACTFMT " (heuristics)", EXACTFMTARGS(_large_page_size)); -+ } - _page_sizes.add(_large_page_size); - _page_sizes.add(os::vm_page_size()); - -diff --git a/test/hotspot/jtreg/runtime/os/HugePageConfiguration.java b/test/hotspot/jtreg/runtime/os/HugePageConfiguration.java -index f475af4c2..14cb88fb6 100644 ---- a/test/hotspot/jtreg/runtime/os/HugePageConfiguration.java -+++ b/test/hotspot/jtreg/runtime/os/HugePageConfiguration.java -@@ -84,6 +84,20 @@ class HugePageConfiguration { - return _thpPageSize; - } - -+ // Returns the THP page size (if exposed by the kernel) or a guessed THP page size. -+ // Mimics HugePages::thp_pagesize_fallback() method in hotspot (must be kept in sync with it). -+ public long getThpPageSizeOrFallback() { -+ long pageSize = getThpPageSize(); -+ if (pageSize != 0) { -+ return pageSize; -+ } -+ pageSize = getStaticDefaultHugePageSize(); -+ if (pageSize != 0) { -+ return Math.min(pageSize, 16 * 1024 * 1024); -+ } -+ return 2 * 1024 * 1024; -+ } -+ - // Returns true if the THP support is enabled - public boolean supportsTHP() { - return _thpMode == THPMode.always || _thpMode == THPMode.madvise; -diff --git a/test/hotspot/jtreg/runtime/os/TestHugePageDecisionsAtVMStartup.java b/test/hotspot/jtreg/runtime/os/TestHugePageDecisionsAtVMStartup.java -index 340c13707..18242578d 100644 ---- a/test/hotspot/jtreg/runtime/os/TestHugePageDecisionsAtVMStartup.java -+++ b/test/hotspot/jtreg/runtime/os/TestHugePageDecisionsAtVMStartup.java -@@ -125,7 +125,8 @@ public class TestHugePageDecisionsAtVMStartup { - out.shouldContain("[info][pagesize] UseLargePages=1, UseTransparentHugePages=0"); - out.shouldContain("[info][pagesize] Large page support enabled"); - } else if (useLP && useTHP && configuration.supportsTHP()) { -- String thpPageSizeString = buildSizeString(configuration.getThpPageSize()); -+ long thpPageSize = configuration.getThpPageSizeOrFallback(); -+ String thpPageSizeString = buildSizeString(thpPageSize); - // We expect to see exactly two "Usable page sizes" : the system page size and the THP page size. The system - // page size differs, but its always in KB). - out.shouldContain("[info][pagesize] UseLargePages=1, UseTransparentHugePages=1"); --- -2.33.0 - diff --git a/Backport-JDK-8325022-Incorrect-error-message-on-clie.patch b/Backport-JDK-8325022-Incorrect-error-message-on-clie.patch deleted file mode 100644 index 2a43f67176316677ecd54770cfa2cca2b304ef2c..0000000000000000000000000000000000000000 --- a/Backport-JDK-8325022-Incorrect-error-message-on-clie.patch +++ /dev/null @@ -1,47 +0,0 @@ -Subject: Backport JDK-8325022 Incorrect error message on client authentication - ---- - .../classes/sun/security/ssl/CertificateMessage.java | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/src/java.base/share/classes/sun/security/ssl/CertificateMessage.java b/src/java.base/share/classes/sun/security/ssl/CertificateMessage.java -index 155cb4392..8c6ee9151 100644 ---- a/src/java.base/share/classes/sun/security/ssl/CertificateMessage.java -+++ b/src/java.base/share/classes/sun/security/ssl/CertificateMessage.java -@@ -1,5 +1,5 @@ - /* -- * Copyright (c) 2015, 2022, Oracle and/or its affiliates. All rights reserved. -+ * Copyright (c) 2015, 2024, 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 -@@ -382,7 +382,7 @@ final class CertificateMessage { - ClientAuthType.CLIENT_AUTH_REQUESTED) { - // unexpected or require client authentication - throw shc.conContext.fatal(Alert.BAD_CERTIFICATE, -- "Empty server certificate chain"); -+ "Empty client certificate chain"); - } else { - return; - } -@@ -399,7 +399,7 @@ final class CertificateMessage { - } - } catch (CertificateException ce) { - throw shc.conContext.fatal(Alert.BAD_CERTIFICATE, -- "Failed to parse server certificates", ce); -+ "Failed to parse client certificates", ce); - } - - checkClientCerts(shc, x509Certs); -@@ -1216,7 +1216,7 @@ final class CertificateMessage { - } - } catch (CertificateException ce) { - throw shc.conContext.fatal(Alert.BAD_CERTIFICATE, -- "Failed to parse server certificates", ce); -+ "Failed to parse client certificates", ce); - } - - // find out the types of client authentication used --- -2.33.0 - diff --git a/Backport-JDK-8332524-Instead-of-printing-TLSv1.3,-.patch b/Backport-JDK-8332524-Instead-of-printing-TLSv1.3,-.patch deleted file mode 100644 index a031562dc448f5892c2c1d38365a6450ca9a8422..0000000000000000000000000000000000000000 --- a/Backport-JDK-8332524-Instead-of-printing-TLSv1.3,-.patch +++ /dev/null @@ -1,31 +0,0 @@ -Subject: Backport of JDK-8332524: Instead of printing "TLSv1.3," it is showing "TLS13" - ---- - .../share/classes/sun/security/ssl/ClientHello.java | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/src/java.base/share/classes/sun/security/ssl/ClientHello.java b/src/java.base/share/classes/sun/security/ssl/ClientHello.java -index 091bfa898..fa9bf0440 100644 ---- a/src/java.base/share/classes/sun/security/ssl/ClientHello.java -+++ b/src/java.base/share/classes/sun/security/ssl/ClientHello.java -@@ -1,5 +1,5 @@ - /* -- * Copyright (c) 2015, 2022, Oracle and/or its affiliates. All rights reserved. -+ * Copyright (c) 2015, 2024, 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 -@@ -903,8 +903,8 @@ final class ClientHello { - throw context.conContext.fatal(Alert.PROTOCOL_VERSION, - "The client supported protocol versions " + Arrays.toString( - ProtocolVersion.toStringArray(clientSupportedVersions)) + -- " are not accepted by server preferences " + -- context.activeProtocols); -+ " are not accepted by server preferences " + Arrays.toString( -+ ProtocolVersion.toStringArray(context.activeProtocols))); - } - } - --- -2.33.0 - diff --git a/Backport-JDK-8332818-ubsan-archiveHeapLoader.cpp:70:.patch b/Backport-JDK-8332818-ubsan-archiveHeapLoader.cpp:70:.patch deleted file mode 100644 index 950de5ed069cf7a778a6333801e5f9c9e1b1f334..0000000000000000000000000000000000000000 --- a/Backport-JDK-8332818-ubsan-archiveHeapLoader.cpp:70:.patch +++ /dev/null @@ -1,23 +0,0 @@ -Subject: Backport of JDK-8332818: ubsan: archiveHeapLoader.cpp:70:27: runtime error: applying non-zero offset 18446744073707454464 to null pointer - ---- - src/hotspot/share/cds/archiveHeapLoader.cpp | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/src/hotspot/share/cds/archiveHeapLoader.cpp b/src/hotspot/share/cds/archiveHeapLoader.cpp -index 28d2718b7..ecd65e952 100644 ---- a/src/hotspot/share/cds/archiveHeapLoader.cpp -+++ b/src/hotspot/share/cds/archiveHeapLoader.cpp -@@ -59,6 +59,9 @@ ptrdiff_t ArchiveHeapLoader::_mapped_heap_delta = 0; - - // Every mapped region is offset by _mapped_heap_delta from its requested address. - // See FileMapInfo::heap_region_requested_address(). -+#if defined(__clang__) || defined(__GNUC__) -+__attribute__((no_sanitize("undefined"))) -+#endif - void ArchiveHeapLoader::init_mapped_heap_relocation(ptrdiff_t delta, int dumptime_oop_shift) { - assert(!_mapped_heap_relocation_initialized, "only once"); - if (!UseCompressedOops) { --- -2.33.0 - diff --git a/Backport-JDK-8332920-C2-Partial-Peeling-is-wrongly-a.patch b/Backport-JDK-8332920-C2-Partial-Peeling-is-wrongly-a.patch deleted file mode 100644 index 783d7baf57d5a527904a72fe08abf0cef0823d0b..0000000000000000000000000000000000000000 --- a/Backport-JDK-8332920-C2-Partial-Peeling-is-wrongly-a.patch +++ /dev/null @@ -1,590 +0,0 @@ -Subject: Backport JDK-8332920 C2: Partial Peeling is wrongly applied for CmpU with negative limit - ---- - src/hotspot/share/opto/loopopts.cpp | 204 +++++++++-- - ...rtialPeelAtUnsignedTestsNegativeLimit.java | 327 ++++++++++++++++++ - 2 files changed, 493 insertions(+), 38 deletions(-) - create mode 100644 test/hotspot/jtreg/compiler/loopopts/TestPartialPeelAtUnsignedTestsNegativeLimit.java - -diff --git a/src/hotspot/share/opto/loopopts.cpp b/src/hotspot/share/opto/loopopts.cpp -index be9f5599d..2f32ca9bd 100644 ---- a/src/hotspot/share/opto/loopopts.cpp -+++ b/src/hotspot/share/opto/loopopts.cpp -@@ -2881,52 +2881,101 @@ RegionNode* PhaseIdealLoop::insert_region_before_proj(ProjNode* proj) { - return reg; - } - --//------------------------------ insert_cmpi_loop_exit ------------------------------------- --// Clone a signed compare loop exit from an unsigned compare and --// insert it before the unsigned cmp on the stay-in-loop path. --// All new nodes inserted in the dominator tree between the original --// if and it's projections. The original if test is replaced with --// a constant to force the stay-in-loop path. -+// Idea -+// ---- -+// Partial Peeling tries to rotate the loop in such a way that it can later be turned into a counted loop. Counted loops -+// require a signed loop exit test. When calling this method, we've only found a suitable unsigned test to partial peel -+// with. Therefore, we try to split off a signed loop exit test from the unsigned test such that it can be used as new -+// loop exit while keeping the unsigned test unchanged and preserving the same behavior as if we've used the unsigned -+// test alone instead: - // --// This is done to make sure that the original if and it's projections --// still dominate the same set of control nodes, that the ctrl() relation --// from data nodes to them is preserved, and that their loop nesting is --// preserved. -+// Before Partial Peeling: -+// Loop: -+// -+// Split off signed loop exit test -+// <-- CUT HERE --> -+// Unchanged unsigned loop exit test -+// -+// goto Loop - // --// before --// if(i -+// Cloned split off signed loop exit test -+// Loop: -+// Unchanged unsigned loop exit test -+// -+// -+// Split off signed loop exit test -+// goto Loop -+// -+// Details -+// ------- -+// Before: -+// if (i in(1)->as_Bool(); -- if (bol->_test._test != BoolTest::lt) return nullptr; -+ if (bol->_test._test != BoolTest::lt) { -+ return nullptr; -+ } - CmpNode* cmpu = bol->in(1)->as_Cmp(); -- if (cmpu->Opcode() != Op_CmpU) return nullptr; -+ assert(cmpu->Opcode() == Op_CmpU, "must be unsigned comparison"); -+ - int stride = stride_of_possible_iv(if_cmpu); -- if (stride == 0) return nullptr; -+ if (stride == 0) { -+ return nullptr; -+ } - - Node* lp_proj = stay_in_loop(if_cmpu, loop); - guarantee(lp_proj != nullptr, "null loop node"); -@@ -2938,14 +2987,93 @@ IfNode* PhaseIdealLoop::insert_cmpi_loop_exit(IfNode* if_cmpu, IdealLoopTree *lo - // We therefore can't add a single exit condition. - return nullptr; - } -- // The loop exit condition is !(i (i < 0 || i >= limit). -- // Split out the exit condition (i < 0) for stride < 0 or (i >= limit) for stride > 0. -- Node* limit = nullptr; -+ // The unsigned loop exit condition is -+ // !(i =u limit -+ // -+ // First, we note that for any x for which -+ // 0 <= x <= INT_MAX -+ // we can convert x to an unsigned int and still get the same guarantee: -+ // 0 <= (uint) x <= INT_MAX = (uint) INT_MAX -+ // 0 <=u (uint) x <=u INT_MAX = (uint) INT_MAX (LEMMA) -+ // -+ // With that in mind, if -+ // limit >= 0 (COND) -+ // then the unsigned loop exit condition -+ // i >=u limit (ULE) -+ // is equivalent to -+ // i < 0 || i >= limit (SLE-full) -+ // because either i is negative and therefore always greater than MAX_INT when converting to unsigned -+ // (uint) i >=u MAX_INT >= limit >= 0 -+ // or otherwise -+ // i >= limit >= 0 -+ // holds due to (LEMMA). -+ // -+ // For completeness, a counterexample with limit < 0: -+ // Assume i = -3 and limit = -2: -+ // i < 0 -+ // -2 < 0 -+ // is true and thus also "i < 0 || i >= limit". But -+ // i >=u limit -+ // -3 >=u -2 -+ // is false. -+ Node* limit = cmpu->in(2); -+ const TypeInt* type_limit = _igvn.type(limit)->is_int(); -+ if (type_limit->_lo < 0) { -+ return nullptr; -+ } -+ -+ // We prove below that we can extract a single signed loop exit condition from (SLE-full), depending on the stride: -+ // stride < 0: -+ // i < 0 (SLE = SLE-negative) -+ // stride > 0: -+ // i >= limit (SLE = SLE-positive) -+ // such that we have the following graph before Partial Peeling with stride > 0 (similar for stride < 0): -+ // -+ // Loop: -+ // -+ // i >= limit (SLE-positive) -+ // <-- CUT HERE --> -+ // i >=u limit (ULE) -+ // -+ // goto Loop -+ // -+ // We exit the loop if: -+ // (SLE) is true OR (ULE) is true -+ // However, if (SLE) is true then (ULE) also needs to be true to ensure the exact same behavior. Otherwise, we wrongly -+ // exit a loop that should not have been exited if we did not apply Partial Peeling. More formally, we need to ensure: -+ // (SLE) IMPLIES (ULE) -+ // This indeed holds when (COND) is given: -+ // - stride > 0: -+ // i >= limit // (SLE = SLE-positive) -+ // i >= limit >= 0 // (COND) -+ // i >=u limit >= 0 // (LEMMA) -+ // which is the unsigned loop exit condition (ULE). -+ // - stride < 0: -+ // i < 0 // (SLE = SLE-negative) -+ // (uint) i >u MAX_INT // (NEG) all negative values are greater than MAX_INT when converted to unsigned -+ // MAX_INT >= limit >= 0 // (COND) -+ // MAX_INT >=u limit >= 0 // (LEMMA) -+ // and thus from (NEG) and (LEMMA): -+ // i >=u limit -+ // which is the unsigned loop exit condition (ULE). -+ // -+ // -+ // After Partial Peeling, we have the following structure for stride > 0 (similar for stride < 0): -+ // -+ // i >= limit (SLE-positive) -+ // Loop: -+ // i >=u limit (ULE) -+ // -+ // -+ // i >= limit (SLE-positive) -+ // goto Loop -+ Node* rhs_cmpi; - if (stride > 0) { -- limit = cmpu->in(2); -+ rhs_cmpi = limit; // For i >= limit - } else { -- limit = _igvn.makecon(TypeInt::ZERO); -- set_ctrl(limit, C->root()); -+ rhs_cmpi = _igvn.makecon(TypeInt::ZERO); // For i < 0 -+ set_ctrl(rhs_cmpi, C->root()); - } - // Create a new region on the exit path - RegionNode* reg = insert_region_before_proj(lp_exit); -@@ -2953,7 +3081,7 @@ IfNode* PhaseIdealLoop::insert_cmpi_loop_exit(IfNode* if_cmpu, IdealLoopTree *lo - - // Clone the if-cmpu-true-false using a signed compare - BoolTest::mask rel_i = stride > 0 ? bol->_test._test : BoolTest::ge; -- ProjNode* cmpi_exit = insert_if_before_proj(cmpu->in(1), Signed, rel_i, limit, lp_continue); -+ ProjNode* cmpi_exit = insert_if_before_proj(cmpu->in(1), Signed, rel_i, rhs_cmpi, lp_continue); - reg->add_req(cmpi_exit); - - // Clone the if-cmpu-true-false -diff --git a/test/hotspot/jtreg/compiler/loopopts/TestPartialPeelAtUnsignedTestsNegativeLimit.java b/test/hotspot/jtreg/compiler/loopopts/TestPartialPeelAtUnsignedTestsNegativeLimit.java -new file mode 100644 -index 000000000..7809f79ce ---- /dev/null -+++ b/test/hotspot/jtreg/compiler/loopopts/TestPartialPeelAtUnsignedTestsNegativeLimit.java -@@ -0,0 +1,327 @@ -+/* -+ * Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved. -+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -+ * -+ * This code is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License version 2 only, as -+ * published by the Free Software Foundation. -+ * -+ * This code is distributed in the hope that it will be useful, but WITHOUT -+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -+ * version 2 for more details (a copy is included in the LICENSE file that -+ * accompanied this code). -+ * -+ * You should have received a copy of the GNU General Public License version -+ * 2 along with this work; if not, write to the Free Software Foundation, -+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -+ * -+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -+ * or visit www.oracle.com if you need additional information or have any -+ * questions. -+ */ -+ -+/* -+ * @test id=Xbatch -+ * @bug 8332920 -+ * @summary Tests partial peeling at unsigned tests with limit being negative in exit tests "i >u limit". -+ * @run main/othervm -Xbatch -XX:-TieredCompilation -+ * -XX:CompileOnly=*TestPartialPeel*::original*,*TestPartialPeel*::test* -+ * compiler.loopopts.TestPartialPeelAtUnsignedTestsNegativeLimit -+ */ -+ -+/* -+ * @test id=Xcomp-run-inline -+ * @bug 8332920 -+ * @summary Tests partial peeling at unsigned tests with limit being negative in exit tests "i >u limit". -+ * @run main/othervm -Xcomp -XX:-TieredCompilation -+ * -XX:CompileOnly=*TestPartialPeel*::original*,*TestPartialPeel*::run*,*TestPartialPeel*::test* -+ * -XX:CompileCommand=inline,*TestPartialPeelAtUnsignedTestsNegativeLimit::test* -+ * -XX:CompileCommand=dontinline,*TestPartialPeelAtUnsignedTestsNegativeLimit::check -+ * compiler.loopopts.TestPartialPeelAtUnsignedTestsNegativeLimit -+ */ -+ -+/* -+ * @test id=Xcomp-compile-test -+ * @bug 8332920 -+ * @summary Tests partial peeling at unsigned tests with limit being negative in exit tests "i >u limit". -+ * @run main/othervm -Xcomp -XX:-TieredCompilation -XX:CompileOnly=*TestPartialPeel*::original*,*TestPartialPeel*::test* -+ * compiler.loopopts.TestPartialPeelAtUnsignedTestsNegativeLimit -+ */ -+ -+/* -+ * @test id=vanilla -+ * @bug 8332920 -+ * @requires vm.flavor == "server" & (vm.opt.TieredStopAtLevel == null | vm.opt.TieredStopAtLevel == 4) -+ * @summary Tests partial peeling at unsigned tests with limit being negative in exit tests "i >u limit". -+ * Only run this test with C2 since it is time-consuming and only tests a C2 issue. -+ * @run main compiler.loopopts.TestPartialPeelAtUnsignedTestsNegativeLimit -+ */ -+ -+package compiler.loopopts; -+ -+import java.util.Random; -+ -+import static java.lang.Integer.*; -+ -+public class TestPartialPeelAtUnsignedTestsNegativeLimit { -+ static int iFld = 10000; -+ static int iterations = 0; -+ static int iFld2; -+ static boolean flag; -+ final static Random RANDOM = new Random(); -+ -+ public static void main(String[] args) { -+ compareUnsigned(3, 3); // Load Integer class for -Xcomp -+ for (int i = 0; i < 2; i++) { -+ if (!originalTest()) { -+ throw new RuntimeException("originalTest() failed"); -+ } -+ } -+ -+ for (int i = 0; i < 2000; i++) { -+ // For profiling -+ iFld = -1; -+ originalTestVariation1(); -+ -+ // Actual run -+ iFld = MAX_VALUE - 100_000; -+ if (!originalTestVariation1()) { -+ throw new RuntimeException("originalTestVariation1() failed"); -+ } -+ } -+ -+ for (int i = 0; i < 2000; ++i) { -+ // For profiling -+ iFld = MAX_VALUE; -+ originalTestVariation2(); -+ -+ // Actual run -+ iFld = MIN_VALUE + 100000; -+ if (!originalTestVariation2()) { -+ throw new RuntimeException("originalTestVariation2() failed"); -+ } -+ } -+ -+ runWhileLTIncr(); -+ runWhileLTDecr(); -+ } -+ -+ // Originally reported simplified regression test with 2 variations (see below). -+ public static boolean originalTest() { -+ for (int i = MAX_VALUE - 50_000; compareUnsigned(i, -1) < 0; i++) { -+ if (compareUnsigned(MIN_VALUE, i) < 0) { -+ return true; -+ } -+ } -+ return false; -+ } -+ -+ public static boolean originalTestVariation1() { -+ int a = 0; -+ for (int i = iFld; compareUnsigned(i, -1) < 0; ++i) { // i = Integer.MIN_VALUE + 1 && i <= 100) { // Transformed to unsigned test. -+ return true; -+ } -+ a *= 23; -+ } -+ return false; -+ } -+ -+ public static boolean originalTestVariation2() { -+ int a = 0; -+ for (int i = iFld; compareUnsigned(i, -1000) < 0; i--) { // i 0) { -+ return true; -+ } -+ a = i; -+ } -+ System.out.println(a); -+ return false; -+ } -+ -+ -+ public static void testWhileLTIncr(int init, int limit) { -+ int i = init; -+ while (true) { -+ // -+ -+ // Found as loop head in ciTypeFlow, but both paths inside loop -> head not cloned. -+ // As a result, this head has the safepoint as backedge instead of the loop exit test -+ // and we cannot create a counted loop (yet). We first need to partial peel. -+ if (flag) { -+ } -+ -+ iFld2++; -+ -+ // Loop exit test i >=u limit (i.e. "while (i = limit && i >=u limit -+ // where the signed condition can be used as proper loop exit condition for a counted loop -+ // (we cannot use an unsigned counted loop exit condition). -+ // -+ // After Partial Peeling, we have: -+ // if (i >= limit) goto Exit -+ // Loop: -+ // if (i >=u limit) goto Exit -+ // ... -+ // i++; -+ // if (i >= limit) goto Exit -+ // goto Loop -+ // Exit: -+ // ... -+ // -+ // If init = MAX_VALUE and limit = MIN_VALUE: -+ // i >= limit -+ // MAX_VALUE >= MIN_VALUE -+ // which is true where -+ // i >=u limit -+ // MAX_VALUE >=u MIN_VALUE -+ // MAX_VALUE >=u (uint)(MAX_INT + 1) -+ // is false and we wrongly never enter the loop even though we should have. -+ // This results in a wrong execution. -+ if (compareUnsigned(i, limit) >= 0) { -+ return; -+ } -+ // <-- Partial Peeling CUT --> -+ // Safepoint -+ // -+ iterations++; -+ i++; -+ } -+ } -+ -+ // Same as testWhileLTIncr() but with decrement instead. -+ public static void testWhileLTDecr(int init, int limit) { -+ int i = init; -+ while (true) { -+ if (flag) { -+ } -+ -+ // Loop exit test. -+ if (compareUnsigned(i, limit) >= 0) { // While (i 0) { - // we have contending and/or waiting threads --- -2.33.0 - diff --git a/Backport-JDK-8333354-ubsan-frame.inline.hpp:91:25:-a.patch b/Backport-JDK-8333354-ubsan-frame.inline.hpp:91:25:-a.patch deleted file mode 100644 index 940d37022beb53d13ad0aa7d2cd85ddada93b900..0000000000000000000000000000000000000000 --- a/Backport-JDK-8333354-ubsan-frame.inline.hpp:91:25:-a.patch +++ /dev/null @@ -1,370 +0,0 @@ -Subject: Backport of JDK-8333354 ubsan: frame.inline.hpp:91:25: and src/hotspot/share/runtime/frame.inline.hpp:88:29: runtime error: member call on null pointer of type 'const struct SmallRegisterMap' - ---- - .../smallRegisterMap_aarch64.inline.hpp | 20 +++++++---------- - .../cpu/arm/smallRegisterMap_arm.inline.hpp | 15 +++++++------ - .../cpu/ppc/smallRegisterMap_ppc.inline.hpp | 22 +++++++------------ - .../riscv/smallRegisterMap_riscv.inline.hpp | 20 +++++++---------- - .../cpu/s390/smallRegisterMap_s390.inline.hpp | 15 +++++++------ - .../cpu/x86/smallRegisterMap_x86.inline.hpp | 19 ++++++---------- - .../cpu/zero/smallRegisterMap_zero.inline.hpp | 15 +++++++------ - src/hotspot/share/oops/stackChunkOop.cpp | 2 +- - .../share/oops/stackChunkOop.inline.hpp | 2 +- - .../share/runtime/continuationFreezeThaw.cpp | 14 ++++++------ - 10 files changed, 64 insertions(+), 80 deletions(-) - -diff --git a/src/hotspot/cpu/aarch64/smallRegisterMap_aarch64.inline.hpp b/src/hotspot/cpu/aarch64/smallRegisterMap_aarch64.inline.hpp -index db38b9cf5..dcba233c9 100644 ---- a/src/hotspot/cpu/aarch64/smallRegisterMap_aarch64.inline.hpp -+++ b/src/hotspot/cpu/aarch64/smallRegisterMap_aarch64.inline.hpp -@@ -30,8 +30,15 @@ - - // Java frames don't have callee saved registers (except for rfp), so we can use a smaller RegisterMap - class SmallRegisterMap { -+ constexpr SmallRegisterMap() = default; -+ ~SmallRegisterMap() = default; -+ NONCOPYABLE(SmallRegisterMap); -+ - public: -- static constexpr SmallRegisterMap* instance = nullptr; -+ static const SmallRegisterMap* instance() { -+ static constexpr SmallRegisterMap the_instance{}; -+ return &the_instance; -+ } - private: - static void assert_is_rfp(VMReg r) NOT_DEBUG_RETURN - DEBUG_ONLY({ assert (r == rfp->as_VMReg() || r == rfp->as_VMReg()->next(), "Reg: %s", r->name()); }) -@@ -48,17 +55,6 @@ public: - return map; - } - -- SmallRegisterMap() {} -- -- SmallRegisterMap(const RegisterMap* map) { -- #ifdef ASSERT -- for(int i = 0; i < RegisterMap::reg_count; i++) { -- VMReg r = VMRegImpl::as_VMReg(i); -- if (map->location(r, (intptr_t*)nullptr) != nullptr) assert_is_rfp(r); -- } -- #endif -- } -- - inline address location(VMReg reg, intptr_t* sp) const { - assert_is_rfp(reg); - return (address)(sp - frame::sender_sp_offset); -diff --git a/src/hotspot/cpu/arm/smallRegisterMap_arm.inline.hpp b/src/hotspot/cpu/arm/smallRegisterMap_arm.inline.hpp -index 4186eafd3..08adbbd89 100644 ---- a/src/hotspot/cpu/arm/smallRegisterMap_arm.inline.hpp -+++ b/src/hotspot/cpu/arm/smallRegisterMap_arm.inline.hpp -@@ -30,8 +30,15 @@ - - // Java frames don't have callee saved registers (except for rfp), so we can use a smaller RegisterMap - class SmallRegisterMap { -+ constexpr SmallRegisterMap() = default; -+ ~SmallRegisterMap() = default; -+ NONCOPYABLE(SmallRegisterMap); -+ - public: -- static constexpr SmallRegisterMap* instance = nullptr; -+ static const SmallRegisterMap* instance() { -+ static constexpr SmallRegisterMap the_instance{}; -+ return &the_instance; -+ } - private: - static void assert_is_rfp(VMReg r) NOT_DEBUG_RETURN - DEBUG_ONLY({ Unimplemented(); }) -@@ -46,12 +53,6 @@ public: - return map; - } - -- SmallRegisterMap() {} -- -- SmallRegisterMap(const RegisterMap* map) { -- Unimplemented(); -- } -- - inline address location(VMReg reg, intptr_t* sp) const { - Unimplemented(); - return nullptr; -diff --git a/src/hotspot/cpu/ppc/smallRegisterMap_ppc.inline.hpp b/src/hotspot/cpu/ppc/smallRegisterMap_ppc.inline.hpp -index 8c96f51fd..3b143839c 100644 ---- a/src/hotspot/cpu/ppc/smallRegisterMap_ppc.inline.hpp -+++ b/src/hotspot/cpu/ppc/smallRegisterMap_ppc.inline.hpp -@@ -30,8 +30,15 @@ - - // Java frames don't have callee saved registers, so we can use a smaller RegisterMap - class SmallRegisterMap { -+ constexpr SmallRegisterMap() = default; -+ ~SmallRegisterMap() = default; -+ NONCOPYABLE(SmallRegisterMap); -+ - public: -- static constexpr SmallRegisterMap* instance = nullptr; -+ static const SmallRegisterMap* instance() { -+ static constexpr SmallRegisterMap the_instance{}; -+ return &the_instance; -+ } - public: - // as_RegisterMap is used when we didn't want to templatize and abstract over RegisterMap type to support SmallRegisterMap - // Consider enhancing SmallRegisterMap to support those cases -@@ -44,19 +51,6 @@ public: - return map; - } - -- SmallRegisterMap() {} -- -- SmallRegisterMap(const RegisterMap* map) { --#ifdef ASSERT -- for(int i = 0; i < RegisterMap::reg_count; i++) { -- VMReg r = VMRegImpl::as_VMReg(i); -- if (map->location(r, (intptr_t*)nullptr) != nullptr) { -- assert(false, "Reg: %s", r->name()); // Should not reach here -- } -- } --#endif -- } -- - inline address location(VMReg reg, intptr_t* sp) const { - assert(false, "Reg: %s", reg->name()); - return nullptr; -diff --git a/src/hotspot/cpu/riscv/smallRegisterMap_riscv.inline.hpp b/src/hotspot/cpu/riscv/smallRegisterMap_riscv.inline.hpp -index 93adaadce..9fc4f1d7b 100644 ---- a/src/hotspot/cpu/riscv/smallRegisterMap_riscv.inline.hpp -+++ b/src/hotspot/cpu/riscv/smallRegisterMap_riscv.inline.hpp -@@ -30,8 +30,15 @@ - - // Java frames don't have callee saved registers (except for fp), so we can use a smaller RegisterMap - class SmallRegisterMap { -+ constexpr SmallRegisterMap() = default; -+ ~SmallRegisterMap() = default; -+ NONCOPYABLE(SmallRegisterMap); -+ - public: -- static constexpr SmallRegisterMap* instance = nullptr; -+ static const SmallRegisterMap* instance() { -+ static constexpr SmallRegisterMap the_instance{}; -+ return &the_instance; -+ } - private: - static void assert_is_fp(VMReg r) NOT_DEBUG_RETURN - DEBUG_ONLY({ assert (r == fp->as_VMReg() || r == fp->as_VMReg()->next(), "Reg: %s", r->name()); }) -@@ -48,17 +55,6 @@ public: - return map; - } - -- SmallRegisterMap() {} -- -- SmallRegisterMap(const RegisterMap* map) { -- #ifdef ASSERT -- for(int i = 0; i < RegisterMap::reg_count; i++) { -- VMReg r = VMRegImpl::as_VMReg(i); -- if (map->location(r, (intptr_t*)nullptr) != nullptr) assert_is_fp(r); -- } -- #endif -- } -- - inline address location(VMReg reg, intptr_t* sp) const { - assert_is_fp(reg); - return (address)(sp - 2); -diff --git a/src/hotspot/cpu/s390/smallRegisterMap_s390.inline.hpp b/src/hotspot/cpu/s390/smallRegisterMap_s390.inline.hpp -index 8c74eb7dd..625d17cf9 100644 ---- a/src/hotspot/cpu/s390/smallRegisterMap_s390.inline.hpp -+++ b/src/hotspot/cpu/s390/smallRegisterMap_s390.inline.hpp -@@ -30,8 +30,15 @@ - - // Java frames don't have callee saved registers (except for rfp), so we can use a smaller RegisterMap - class SmallRegisterMap { -+ constexpr SmallRegisterMap() = default; -+ ~SmallRegisterMap() = default; -+ NONCOPYABLE(SmallRegisterMap); -+ - public: -- static constexpr SmallRegisterMap* instance = nullptr; -+ static const SmallRegisterMap* instance() { -+ static constexpr SmallRegisterMap the_instance{}; -+ return &the_instance; -+ } - private: - static void assert_is_rfp(VMReg r) NOT_DEBUG_RETURN - DEBUG_ONLY({ Unimplemented(); }) -@@ -46,12 +53,6 @@ public: - return map; - } - -- SmallRegisterMap() {} -- -- SmallRegisterMap(const RegisterMap* map) { -- Unimplemented(); -- } -- - inline address location(VMReg reg, intptr_t* sp) const { - Unimplemented(); - return nullptr; -diff --git a/src/hotspot/cpu/x86/smallRegisterMap_x86.inline.hpp b/src/hotspot/cpu/x86/smallRegisterMap_x86.inline.hpp -index 5f21939a3..ca2f8ea1a 100644 ---- a/src/hotspot/cpu/x86/smallRegisterMap_x86.inline.hpp -+++ b/src/hotspot/cpu/x86/smallRegisterMap_x86.inline.hpp -@@ -30,8 +30,14 @@ - - // Java frames don't have callee saved registers (except for rbp), so we can use a smaller RegisterMap - class SmallRegisterMap { -+ constexpr SmallRegisterMap() = default; -+ ~SmallRegisterMap() = default; -+ NONCOPYABLE(SmallRegisterMap); - public: -- static constexpr SmallRegisterMap* instance = nullptr; -+ static const SmallRegisterMap* instance() { -+ static constexpr SmallRegisterMap the_instance{}; -+ return &the_instance; -+ } - private: - static void assert_is_rbp(VMReg r) NOT_DEBUG_RETURN - DEBUG_ONLY({ assert(r == rbp->as_VMReg() || r == rbp->as_VMReg()->next(), "Reg: %s", r->name()); }) -@@ -48,17 +54,6 @@ public: - return map; - } - -- SmallRegisterMap() {} -- -- SmallRegisterMap(const RegisterMap* map) { -- #ifdef ASSERT -- for(int i = 0; i < RegisterMap::reg_count; i++) { -- VMReg r = VMRegImpl::as_VMReg(i); -- if (map->location(r, (intptr_t*)nullptr) != nullptr) assert_is_rbp(r); -- } -- #endif -- } -- - inline address location(VMReg reg, intptr_t* sp) const { - assert_is_rbp(reg); - return (address)(sp - frame::sender_sp_offset); -diff --git a/src/hotspot/cpu/zero/smallRegisterMap_zero.inline.hpp b/src/hotspot/cpu/zero/smallRegisterMap_zero.inline.hpp -index b85ead32f..51fb114f5 100644 ---- a/src/hotspot/cpu/zero/smallRegisterMap_zero.inline.hpp -+++ b/src/hotspot/cpu/zero/smallRegisterMap_zero.inline.hpp -@@ -30,8 +30,15 @@ - - // Java frames don't have callee saved registers (except for rfp), so we can use a smaller RegisterMap - class SmallRegisterMap { -+ constexpr SmallRegisterMap() = default; -+ ~SmallRegisterMap() = default; -+ NONCOPYABLE(SmallRegisterMap); -+ - public: -- static constexpr SmallRegisterMap* instance = nullptr; -+ static const SmallRegisterMap* instance() { -+ static constexpr SmallRegisterMap the_instance{}; -+ return &the_instance; -+ } - private: - static void assert_is_rfp(VMReg r) NOT_DEBUG_RETURN - DEBUG_ONLY({ Unimplemented(); }) -@@ -46,12 +53,6 @@ public: - return map; - } - -- SmallRegisterMap() {} -- -- SmallRegisterMap(const RegisterMap* map) { -- Unimplemented(); -- } -- - inline address location(VMReg reg, intptr_t* sp) const { - Unimplemented(); - return nullptr; -diff --git a/src/hotspot/share/oops/stackChunkOop.cpp b/src/hotspot/share/oops/stackChunkOop.cpp -index 4e771939d..c1fea1d44 100644 ---- a/src/hotspot/share/oops/stackChunkOop.cpp -+++ b/src/hotspot/share/oops/stackChunkOop.cpp -@@ -125,7 +125,7 @@ static int num_java_frames(const StackChunkFrameStream& f) { - int stackChunkOopDesc::num_java_frames() const { - int n = 0; - for (StackChunkFrameStream f(const_cast(this)); !f.is_done(); -- f.next(SmallRegisterMap::instance)) { -+ f.next(SmallRegisterMap::instance())) { - if (!f.is_stub()) { - n += ::num_java_frames(f); - } -diff --git a/src/hotspot/share/oops/stackChunkOop.inline.hpp b/src/hotspot/share/oops/stackChunkOop.inline.hpp -index 9bde7e255..a7725f0b2 100644 ---- a/src/hotspot/share/oops/stackChunkOop.inline.hpp -+++ b/src/hotspot/share/oops/stackChunkOop.inline.hpp -@@ -200,7 +200,7 @@ inline void stackChunkOopDesc::iterate_stack(StackChunkFrameClosureType* closure - - template - inline void stackChunkOopDesc::iterate_stack(StackChunkFrameClosureType* closure) { -- const SmallRegisterMap* map = SmallRegisterMap::instance; -+ const SmallRegisterMap* map = SmallRegisterMap::instance(); - assert(!map->in_cont(), ""); - - StackChunkFrameStream f(this); -diff --git a/src/hotspot/share/runtime/continuationFreezeThaw.cpp b/src/hotspot/share/runtime/continuationFreezeThaw.cpp -index 0882bc933..832ff70fb 100644 ---- a/src/hotspot/share/runtime/continuationFreezeThaw.cpp -+++ b/src/hotspot/share/runtime/continuationFreezeThaw.cpp -@@ -1834,7 +1834,7 @@ inline void ThawBase::clear_chunk(stackChunkOop chunk) { - const int frame_size = f.cb()->frame_size(); - argsize = f.stack_argsize(); - -- f.next(SmallRegisterMap::instance, true /* stop */); -+ f.next(SmallRegisterMap::instance(), true /* stop */); - empty = f.is_done(); - assert(!empty || argsize == chunk->argsize(), ""); - -@@ -2034,7 +2034,7 @@ bool ThawBase::recurse_thaw_java_frame(frame& caller, int num_frames) { - - int argsize = _stream.stack_argsize(); - -- _stream.next(SmallRegisterMap::instance); -+ _stream.next(SmallRegisterMap::instance()); - assert(_stream.to_frame().is_empty() == _stream.is_done(), ""); - - // we never leave a compiled caller of an interpreted frame as the top frame in the chunk -@@ -2143,7 +2143,7 @@ NOINLINE void ThawBase::recurse_thaw_interpreted_frame(const frame& hf, frame& c - assert(hf.is_interpreted_frame(), ""); - - if (UNLIKELY(seen_by_gc())) { -- _cont.tail()->do_barriers(_stream, SmallRegisterMap::instance); -+ _cont.tail()->do_barriers(_stream, SmallRegisterMap::instance()); - } - - const bool is_bottom_frame = recurse_thaw_java_frame(caller, num_frames); -@@ -2186,7 +2186,7 @@ NOINLINE void ThawBase::recurse_thaw_interpreted_frame(const frame& hf, frame& c - - if (!is_bottom_frame) { - // can only fix caller once this frame is thawed (due to callee saved regs) -- _cont.tail()->fix_thawed_frame(caller, SmallRegisterMap::instance); -+ _cont.tail()->fix_thawed_frame(caller, SmallRegisterMap::instance()); - } else if (_cont.tail()->has_bitmap() && locals > 0) { - assert(hf.is_heap_frame(), "should be"); - address start = (address)(heap_frame_bottom - locals); -@@ -2203,7 +2203,7 @@ void ThawBase::recurse_thaw_compiled_frame(const frame& hf, frame& caller, int n - assert(_cont.is_preempted() || !stub_caller, "stub caller not at preemption"); - - if (!stub_caller && UNLIKELY(seen_by_gc())) { // recurse_thaw_stub_frame already invoked our barriers with a full regmap -- _cont.tail()->do_barriers(_stream, SmallRegisterMap::instance); -+ _cont.tail()->do_barriers(_stream, SmallRegisterMap::instance()); - } - - const bool is_bottom_frame = recurse_thaw_java_frame(caller, num_frames); -@@ -2262,7 +2262,7 @@ void ThawBase::recurse_thaw_compiled_frame(const frame& hf, frame& caller, int n - - if (!is_bottom_frame) { - // can only fix caller once this frame is thawed (due to callee saved regs); this happens on the stack -- _cont.tail()->fix_thawed_frame(caller, SmallRegisterMap::instance); -+ _cont.tail()->fix_thawed_frame(caller, SmallRegisterMap::instance()); - } else if (_cont.tail()->has_bitmap() && added_argsize > 0) { - address start = (address)(heap_frame_top + ContinuationHelper::CompiledFrame::size(hf) + frame::metadata_words_at_top); - int stack_args_slots = f.cb()->as_compiled_method()->method()->num_stack_arg_slots(false /* rounded */); -@@ -2345,7 +2345,7 @@ void ThawBase::finish_thaw(frame& f) { - f.set_sp(align_down(f.sp(), frame::frame_alignment)); - } - push_return_frame(f); -- chunk->fix_thawed_frame(f, SmallRegisterMap::instance); // can only fix caller after push_return_frame (due to callee saved regs) -+ chunk->fix_thawed_frame(f, SmallRegisterMap::instance()); // can only fix caller after push_return_frame (due to callee saved regs) - - assert(_cont.is_empty() == _cont.last_frame().is_empty(), ""); - --- -2.33.0 - diff --git a/Backport-JDK-8333462-Performance-regression-of-new-D.patch b/Backport-JDK-8333462-Performance-regression-of-new-D.patch deleted file mode 100644 index 8e7cb6baf80dd4357b019332fcc342e82553f601..0000000000000000000000000000000000000000 --- a/Backport-JDK-8333462-Performance-regression-of-new-D.patch +++ /dev/null @@ -1,38 +0,0 @@ -Subject: Backport JDK-8333462 Performance regression of new DecimalFormat() when compare to jdk11 - ---- - .../classes/java/text/DecimalFormatSymbols.java | 13 ++++++++----- - 1 file changed, 8 insertions(+), 5 deletions(-) - -diff --git a/src/java.base/share/classes/java/text/DecimalFormatSymbols.java b/src/java.base/share/classes/java/text/DecimalFormatSymbols.java -index 795e087a3..72b273f6b 100644 ---- a/src/java.base/share/classes/java/text/DecimalFormatSymbols.java -+++ b/src/java.base/share/classes/java/text/DecimalFormatSymbols.java -@@ -1,5 +1,5 @@ - /* -- * Copyright (c) 1996, 2022, Oracle and/or its affiliates. All rights reserved. -+ * Copyright (c) 1996, 2024, 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 -@@ -849,10 +849,13 @@ public class DecimalFormatSymbols implements Cloneable, Serializable { - * Obtains non-format single character from String - */ - private char findNonFormatChar(String src, char defChar) { -- return (char)src.chars() -- .filter(c -> Character.getType(c) != Character.FORMAT) -- .findFirst() -- .orElse(defChar); -+ for (int i = 0; i < src.length(); i++) { -+ char c = src.charAt(i); -+ if (Character.getType(c) != Character.FORMAT) { -+ return c; -+ } -+ } -+ return defChar; - } - - /** --- -2.33.0 - diff --git a/Backport-JDK-8333622-ubsan-relocInfo_x86.cpp:101:56:.patch b/Backport-JDK-8333622-ubsan-relocInfo_x86.cpp:101:56:.patch deleted file mode 100644 index 557b03bd238a8cf9b8793dbc1b7aa70665ea8b28..0000000000000000000000000000000000000000 --- a/Backport-JDK-8333622-ubsan-relocInfo_x86.cpp:101:56:.patch +++ /dev/null @@ -1,26 +0,0 @@ -Subject: Backport of JDK-8333622 ubsan: relocInfo_x86.cpp:101:56: runtime error: pointer index expression with base (-1) overflowed - ---- - src/hotspot/cpu/x86/relocInfo_x86.cpp | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git a/src/hotspot/cpu/x86/relocInfo_x86.cpp b/src/hotspot/cpu/x86/relocInfo_x86.cpp -index b382b0290..648c4d4b5 100644 ---- a/src/hotspot/cpu/x86/relocInfo_x86.cpp -+++ b/src/hotspot/cpu/x86/relocInfo_x86.cpp -@@ -97,7 +97,11 @@ address Relocation::pd_call_destination(address orig_addr) { - if (ni->is_call()) { - return nativeCall_at(addr())->destination() + adj; - } else if (ni->is_jump()) { -- return nativeJump_at(addr())->jump_destination() + adj; -+ address dest = nativeJump_at(addr())->jump_destination(); -+ if (dest == (address) -1) { -+ return addr(); // jump to self -+ } -+ return dest + adj; - } else if (ni->is_cond_jump()) { - return nativeGeneralJump_at(addr())->jump_destination() + adj; - } else if (ni->is_mov_literal64()) { --- -2.33.0 - diff --git a/Backport-JDK-8333639-ubsan-cppVtables.cpp:81:55-runt.patch b/Backport-JDK-8333639-ubsan-cppVtables.cpp:81:55-runt.patch deleted file mode 100644 index a6bbd540de0ec204fe747b4222bd566b5d1a73b4..0000000000000000000000000000000000000000 --- a/Backport-JDK-8333639-ubsan-cppVtables.cpp:81:55-runt.patch +++ /dev/null @@ -1,39 +0,0 @@ -Subject: Backport of JDK-8333639 ubsan: cppVtables.cpp:81:55: runtime error: index 14 out of bounds for type 'long int [1]' - ---- - src/hotspot/share/cds/cppVtables.cpp | 14 ++++++-------- - 1 file changed, 6 insertions(+), 8 deletions(-) - -diff --git a/src/hotspot/share/cds/cppVtables.cpp b/src/hotspot/share/cds/cppVtables.cpp -index 94ec7cd9f..6586a586e 100644 ---- a/src/hotspot/share/cds/cppVtables.cpp -+++ b/src/hotspot/share/cds/cppVtables.cpp -@@ -65,19 +65,17 @@ - - class CppVtableInfo { - intptr_t _vtable_size; -- intptr_t _cloned_vtable[1]; -+ intptr_t _cloned_vtable[1]; // Pseudo flexible array member. -+ static size_t cloned_vtable_offset() { return offset_of(CppVtableInfo, _cloned_vtable); } - public: -- static int num_slots(int vtable_size) { -- return 1 + vtable_size; // Need to add the space occupied by _vtable_size; -- } - int vtable_size() { return int(uintx(_vtable_size)); } - void set_vtable_size(int n) { _vtable_size = intptr_t(n); } -- intptr_t* cloned_vtable() { return &_cloned_vtable[0]; } -- void zero() { memset(_cloned_vtable, 0, sizeof(intptr_t) * vtable_size()); } -+ // Using _cloned_vtable[i] for i > 0 causes undefined behavior. We use address calculation instead. -+ intptr_t* cloned_vtable() { return (intptr_t*)((char*)this + cloned_vtable_offset()); } -+ void zero() { memset(cloned_vtable(), 0, sizeof(intptr_t) * vtable_size()); } - // Returns the address of the next CppVtableInfo that can be placed immediately after this CppVtableInfo - static size_t byte_size(int vtable_size) { -- CppVtableInfo i; -- return pointer_delta(&i._cloned_vtable[vtable_size], &i, sizeof(u1)); -+ return cloned_vtable_offset() + (sizeof(intptr_t) * vtable_size); - } - }; - --- -2.33.0 - diff --git a/Backport-JDK-8333887-ubsan-unsafe.cpp:247:13:-runtim.patch b/Backport-JDK-8333887-ubsan-unsafe.cpp:247:13:-runtim.patch deleted file mode 100644 index 93e4291fd3d6eae132c68e555f25acb586618540..0000000000000000000000000000000000000000 --- a/Backport-JDK-8333887-ubsan-unsafe.cpp:247:13:-runtim.patch +++ /dev/null @@ -1,25 +0,0 @@ -Subject: Backport of JDK-8333887 ubsan: unsafe.cpp:247:13: runtime error: store to null pointer of type 'volatile int' - ---- - src/hotspot/share/prims/unsafe.cpp | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/src/hotspot/share/prims/unsafe.cpp b/src/hotspot/share/prims/unsafe.cpp -index c6fd8449a..5c30182df 100644 ---- a/src/hotspot/share/prims/unsafe.cpp -+++ b/src/hotspot/share/prims/unsafe.cpp -@@ -223,6 +223,11 @@ public: - return normalize_for_read(*addr()); - } - -+ // we use this method at some places for writing to 0 e.g. to cause a crash; -+ // ubsan does not know that this is the desired behavior -+#if defined(__clang__) || defined(__GNUC__) -+__attribute__((no_sanitize("undefined"))) -+#endif - void put(T x) { - GuardUnsafeAccess guard(_thread); - *addr() = normalize_for_write(x); --- -2.33.0 - diff --git a/Backport-JDK-8334123-log-the-opening-of-Type-1-fonts.patch b/Backport-JDK-8334123-log-the-opening-of-Type-1-fonts.patch deleted file mode 100644 index 95df5124e80f9715aaddd9e5b65bc5579cc32885..0000000000000000000000000000000000000000 --- a/Backport-JDK-8334123-log-the-opening-of-Type-1-fonts.patch +++ /dev/null @@ -1,41 +0,0 @@ -Subject: Backport JDK-8334123 log the opening of Type 1 fonts - ---- - src/java.desktop/share/classes/sun/font/Type1Font.java | 9 +++++++-- - 1 file changed, 7 insertions(+), 2 deletions(-) - -diff --git a/src/java.desktop/share/classes/sun/font/Type1Font.java b/src/java.desktop/share/classes/sun/font/Type1Font.java -index 1cd046ead..cc36c193d 100644 ---- a/src/java.desktop/share/classes/sun/font/Type1Font.java -+++ b/src/java.desktop/share/classes/sun/font/Type1Font.java -@@ -1,5 +1,5 @@ - /* -- * Copyright (c) 2003, 2022, Oracle and/or its affiliates. All rights reserved. -+ * Copyright (c) 2003, 2024, 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 -@@ -187,7 +187,9 @@ public class Type1Font extends FileFont { - private synchronized ByteBuffer getBuffer() throws FontFormatException { - ByteBuffer bbuf = bufferRef.get(); - if (bbuf == null) { -- //System.out.println("open T1 " + platName); -+ if (FontUtilities.isLogging()) { -+ FontUtilities.logInfo("open Type 1 font: " + platName); -+ } - try { - @SuppressWarnings("removal") - RandomAccessFile raf = (RandomAccessFile) -@@ -229,6 +231,9 @@ public class Type1Font extends FileFont { - void readFile(ByteBuffer buffer) { - RandomAccessFile raf = null; - FileChannel fc; -+ if (FontUtilities.isLogging()) { -+ FontUtilities.logInfo("open Type 1 font: " + platName); -+ } - try { - raf = (RandomAccessFile) - java.security.AccessController.doPrivileged( --- -2.33.0 - diff --git a/Backport-JDK-8334239-Introduce-macro-for-ubsan-metho.patch b/Backport-JDK-8334239-Introduce-macro-for-ubsan-metho.patch deleted file mode 100644 index 2c90844b4fcb6a67b34f56b2bab1471c38406497..0000000000000000000000000000000000000000 --- a/Backport-JDK-8334239-Introduce-macro-for-ubsan-metho.patch +++ /dev/null @@ -1,130 +0,0 @@ -Subject: Backport of JDK-8334239 : Introduce macro for ubsan method/function exclusions - ---- - src/hotspot/share/cds/archiveHeapLoader.cpp | 5 +-- - src/hotspot/share/prims/unsafe.cpp | 5 +-- - src/hotspot/share/sanitizers/ub.hpp | 43 +++++++++++++++++++++ - src/hotspot/share/utilities/vmError.cpp | 3 ++ - 4 files changed, 50 insertions(+), 6 deletions(-) - create mode 100644 src/hotspot/share/sanitizers/ub.hpp - -diff --git a/src/hotspot/share/cds/archiveHeapLoader.cpp b/src/hotspot/share/cds/archiveHeapLoader.cpp -index ecd65e952..2d39ccef7 100644 ---- a/src/hotspot/share/cds/archiveHeapLoader.cpp -+++ b/src/hotspot/share/cds/archiveHeapLoader.cpp -@@ -33,6 +33,7 @@ - #include "memory/iterator.inline.hpp" - #include "memory/resourceArea.hpp" - #include "memory/universe.hpp" -+#include "sanitizers/ub.hpp" - #include "utilities/bitMap.inline.hpp" - #include "utilities/copy.hpp" - -@@ -59,9 +60,7 @@ ptrdiff_t ArchiveHeapLoader::_mapped_heap_delta = 0; - - // Every mapped region is offset by _mapped_heap_delta from its requested address. - // See FileMapInfo::heap_region_requested_address(). --#if defined(__clang__) || defined(__GNUC__) --__attribute__((no_sanitize("undefined"))) --#endif -+ATTRIBUTE_NO_UBSAN - void ArchiveHeapLoader::init_mapped_heap_relocation(ptrdiff_t delta, int dumptime_oop_shift) { - assert(!_mapped_heap_relocation_initialized, "only once"); - if (!UseCompressedOops) { -diff --git a/src/hotspot/share/prims/unsafe.cpp b/src/hotspot/share/prims/unsafe.cpp -index 5c30182df..3fefb36ef 100644 ---- a/src/hotspot/share/prims/unsafe.cpp -+++ b/src/hotspot/share/prims/unsafe.cpp -@@ -55,6 +55,7 @@ - #include "runtime/threadSMR.hpp" - #include "runtime/vmOperations.hpp" - #include "runtime/vm_version.hpp" -+#include "sanitizers/ub.hpp" - #include "services/threadService.hpp" - #include "utilities/align.hpp" - #include "utilities/copy.hpp" -@@ -225,9 +226,7 @@ public: - - // we use this method at some places for writing to 0 e.g. to cause a crash; - // ubsan does not know that this is the desired behavior --#if defined(__clang__) || defined(__GNUC__) --__attribute__((no_sanitize("undefined"))) --#endif -+ ATTRIBUTE_NO_UBSAN - void put(T x) { - GuardUnsafeAccess guard(_thread); - *addr() = normalize_for_write(x); -diff --git a/src/hotspot/share/sanitizers/ub.hpp b/src/hotspot/share/sanitizers/ub.hpp -new file mode 100644 -index 000000000..b62ffed0b ---- /dev/null -+++ b/src/hotspot/share/sanitizers/ub.hpp -@@ -0,0 +1,43 @@ -+/* -+ * Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved. -+ * Copyright (c) 2024 SAP SE. 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. -+ * -+ */ -+ -+#ifndef SHARE_SANITIZERS_UB_HPP -+#define SHARE_SANITIZERS_UB_HPP -+ -+// ATTRIBUTE_NO_UBSAN -+// -+// Function attribute which informs the compiler to disable UBSan checks in the -+// following function or method. -+// Useful if the function or method is known to do something special or even 'dangerous', for -+// example causing desired signals/crashes. -+#if defined(__clang__) || defined(__GNUC__) -+#define ATTRIBUTE_NO_UBSAN __attribute__((no_sanitize("undefined"))) -+#endif -+ -+#ifndef ATTRIBUTE_NO_UBSAN -+#define ATTRIBUTE_NO_UBSAN -+#endif -+ -+#endif // SHARE_SANITIZERS_UB_HPP -\ No newline at end of file -diff --git a/src/hotspot/share/utilities/vmError.cpp b/src/hotspot/share/utilities/vmError.cpp -index 868c67a7d..e8962633c 100644 ---- a/src/hotspot/share/utilities/vmError.cpp -+++ b/src/hotspot/share/utilities/vmError.cpp -@@ -59,6 +59,7 @@ - #include "runtime/vmOperations.hpp" - #include "runtime/vm_version.hpp" - #include "services/memTracker.hpp" -+#include "sanitizers/ub.hpp" - #include "utilities/debug.hpp" - #include "utilities/decoder.hpp" - #include "utilities/defaultStream.hpp" -@@ -2060,6 +2061,8 @@ typedef void (*voidfun_t)(); - - // Crash with an authentic sigfpe - volatile int sigfpe_int = 0; -+ -+ATTRIBUTE_NO_UBSAN - static void ALWAYSINLINE crash_with_sigfpe() { - - // generate a native synchronous SIGFPE where possible; --- -2.33.0 - diff --git a/Backport-of-8333088-ubsan-shenandoahAdaptiveHeuristi.patch b/Backport-of-8333088-ubsan-shenandoahAdaptiveHeuristi.patch deleted file mode 100644 index 5cb3b129a2e2217aea1f5660234450f34bcf4f30..0000000000000000000000000000000000000000 --- a/Backport-of-8333088-ubsan-shenandoahAdaptiveHeuristi.patch +++ /dev/null @@ -1,22 +0,0 @@ -Subject: Backport of 8333088: ubsan: shenandoahAdaptiveHeuristics.cpp: runtime error: division by zero - ---- - .../gc/shenandoah/heuristics/shenandoahAdaptiveHeuristics.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/hotspot/share/gc/shenandoah/heuristics/shenandoahAdaptiveHeuristics.cpp b/src/hotspot/share/gc/shenandoah/heuristics/shenandoahAdaptiveHeuristics.cpp -index a8f71c8c5..4f46611c4 100644 ---- a/src/hotspot/share/gc/shenandoah/heuristics/shenandoahAdaptiveHeuristics.cpp -+++ b/src/hotspot/share/gc/shenandoah/heuristics/shenandoahAdaptiveHeuristics.cpp -@@ -243,7 +243,7 @@ bool ShenandoahAdaptiveHeuristics::should_start_gc() { - - double avg_cycle_time = _gc_time_history->davg() + (_margin_of_error_sd * _gc_time_history->dsd()); - double avg_alloc_rate = _allocation_rate.upper_bound(_margin_of_error_sd); -- if (avg_cycle_time > allocation_headroom / avg_alloc_rate) { -+ if (avg_cycle_time * avg_alloc_rate > allocation_headroom) { - log_info(gc)("Trigger: Average GC time (%.2f ms) is above the time for average allocation rate (%.0f %sB/s) to deplete free headroom (" SIZE_FORMAT "%s) (margin of error = %.2f)", - avg_cycle_time * 1000, - byte_size_in_proper_unit(avg_alloc_rate), proper_unit_for_byte_size(avg_alloc_rate), --- -2.33.0 - diff --git a/Backport-of-JDK-8332720-ubsan-instanceKlass.cpp:3550.patch b/Backport-of-JDK-8332720-ubsan-instanceKlass.cpp:3550.patch deleted file mode 100644 index d618d2d8e16a8a41ed660259edb5b7c57be5e0db..0000000000000000000000000000000000000000 --- a/Backport-of-JDK-8332720-ubsan-instanceKlass.cpp:3550.patch +++ /dev/null @@ -1,32 +0,0 @@ -Subject: Backport of JDK-8332720 ubsan: instanceKlass.cpp:3550:76: runtime error: member call on null pointer of type 'struct Array' - ---- - src/hotspot/share/oops/instanceKlass.cpp | 12 +++++++----- - 1 file changed, 7 insertions(+), 5 deletions(-) - -diff --git a/src/hotspot/share/oops/instanceKlass.cpp b/src/hotspot/share/oops/instanceKlass.cpp -index 6f0d521b9..edbca5df7 100644 ---- a/src/hotspot/share/oops/instanceKlass.cpp -+++ b/src/hotspot/share/oops/instanceKlass.cpp -@@ -3587,11 +3587,13 @@ void InstanceKlass::print_on(outputStream* st) const { - } - } - st->print(BULLET"method ordering: "); method_ordering()->print_value_on(st); st->cr(); -- st->print(BULLET"default_methods: "); default_methods()->print_value_on(st); st->cr(); -- if (Verbose && default_methods() != nullptr) { -- Array* method_array = default_methods(); -- for (int i = 0; i < method_array->length(); i++) { -- st->print("%d : ", i); method_array->at(i)->print_value(); st->cr(); -+ if (default_methods() != nullptr) { -+ st->print(BULLET"default_methods: "); default_methods()->print_value_on(st); st->cr(); -+ if (Verbose) { -+ Array* method_array = default_methods(); -+ for (int i = 0; i < method_array->length(); i++) { -+ st->print("%d : ", i); method_array->at(i)->print_value(); st->cr(); -+ } - } - } - if (default_vtable_indices() != nullptr) { --- -2.33.0 - diff --git a/Backport-of-JDK-8336343-Add-more-known-sysroot-libra.patch b/Backport-of-JDK-8336343-Add-more-known-sysroot-libra.patch deleted file mode 100644 index 7e534355dc4f539433c32ceb0ed67f8df4155eca..0000000000000000000000000000000000000000 --- a/Backport-of-JDK-8336343-Add-more-known-sysroot-libra.patch +++ /dev/null @@ -1,39 +0,0 @@ -Subject: Backport of JDK-8336343 Add more known sysroot library locations for ALSA - ---- - make/autoconf/lib-alsa.m4 | 19 +++++++++++++++++++ - 1 file changed, 19 insertions(+) - -diff --git a/make/autoconf/lib-alsa.m4 b/make/autoconf/lib-alsa.m4 -index 19a91f948..8d0fb324c 100644 ---- a/make/autoconf/lib-alsa.m4 -+++ b/make/autoconf/lib-alsa.m4 -@@ -70,6 +70,25 @@ AC_DEFUN_ONCE([LIB_SETUP_ALSA], - PKG_CHECK_MODULES(ALSA, alsa, [ALSA_FOUND=yes], [ALSA_FOUND=no]) - fi - fi -+ if test "x$ALSA_FOUND" = xno; then -+ # If we have sysroot set, and no explicit library location is set, -+ # look at known locations in sysroot. -+ if test "x$SYSROOT" != "x" && test "x${with_alsa_lib}" == x; then -+ if test -f "$SYSROOT/usr/lib64/libasound.so" && test "x$OPENJDK_TARGET_CPU_BITS" = x64; then -+ ALSA_LIBS="-L$SYSROOT/usr/lib64 -lasound" -+ ALSA_FOUND=yes -+ elif test -f "$SYSROOT/usr/lib/libasound.so"; then -+ ALSA_LIBS="-L$SYSROOT/usr/lib -lasound" -+ ALSA_FOUND=yes -+ elif test -f "$SYSROOT/usr/lib/$OPENJDK_TARGET_CPU-$OPENJDK_TARGET_OS-$OPENJDK_TARGET_ABI/libasound.so"; then -+ ALSA_LIBS="-L$SYSROOT/usr/lib/$OPENJDK_TARGET_CPU-$OPENJDK_TARGET_OS-$OPENJDK_TARGET_ABI -lasound" -+ ALSA_FOUND=yes -+ elif test -f "$SYSROOT/usr/lib/$OPENJDK_TARGET_CPU_AUTOCONF-$OPENJDK_TARGET_OS-$OPENJDK_TARGET_ABI/libasound.so"; then -+ ALSA_LIBS="-L$SYSROOT/usr/lib/$OPENJDK_TARGET_CPU_AUTOCONF-$OPENJDK_TARGET_OS-$OPENJDK_TARGET_ABI -lasound" -+ ALSA_FOUND=yes -+ fi -+ fi -+ fi - if test "x$ALSA_FOUND" = xno; then - AC_CHECK_HEADERS([alsa/asoundlib.h], - [ --- -2.33.0 - diff --git a/jdk-updates-jdk21u-jdk-21.0.4+7.tar.gz b/jdk-updates-jdk21u-jdk-21.0.5+11.tar.gz similarity index 82% rename from jdk-updates-jdk21u-jdk-21.0.4+7.tar.gz rename to jdk-updates-jdk21u-jdk-21.0.5+11.tar.gz index 17a24f498b2b503670f6687d067e75ab331833bd..f50a8c51e19c6b3ceae85cfb41078e29d98647fe 100644 Binary files a/jdk-updates-jdk21u-jdk-21.0.4+7.tar.gz and b/jdk-updates-jdk21u-jdk-21.0.5+11.tar.gz differ diff --git a/openjdk-21.spec b/openjdk-21.spec index d7f92a9c7269c32a34cbc4e4dac63484b004e090..250b9648b9b56d36ad0b2c384187d497cff7dbb1 100644 --- a/openjdk-21.spec +++ b/openjdk-21.spec @@ -158,7 +158,7 @@ # Used via new version scheme. JDK 19 was # GA'ed in March 2022 => 22.3 %global vendor_version_string BiSheng -%global securityver 4 +%global securityver 5 # buildjdkver is usually same as %%{majorver}, # but in time of bootstrap of next jdk, it is majorver-1, # and this it is better to change it here, on single place @@ -178,7 +178,7 @@ %global origin_nice OpenJDK %global top_level_dir_name %{origin} %global minorver 0 -%global buildver 7 +%global buildver 11 %global rpmrelease 1 # priority must be 8 digits in total; up to openjdk 1.8, we were using 18..... so when we moved to 11, we had to add another digit %if %is_system_jdk @@ -897,7 +897,7 @@ Name: java-21-%{origin} Version: %{newjavaver}.%{buildver} # This package needs `.rolling` as part of Release so as to not conflict on install with # java-X-openjdk. I.e. when latest rolling release is also an LTS release packaged as -Release: 5 +Release: 0 # 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 @@ -977,46 +977,31 @@ Patch9: add-downgrade-the-glibc-symbol-of-fcntl.patch Patch10: Backport-JDK-8336855-Duplicate-protected-declaration.patch Patch11: Backport-JDK-8334758-Incorrect-note-in-Javadoc-for-a.patch Patch12: Backport-JDK-8323699-MessageFormat.toPattern-generat.patch -Patch13: Backport-JDK-8325022-Incorrect-error-message-on-clie.patch -Patch14: Backport-JDK-8333462-Performance-regression-of-new-D.patch Patch15: Backport-JDK-8332866-Crash-in-ImageIO-JPEG-decoding-.patch Patch16: Backport-JDK-8333805-Replaying-compilation-with-null.patch -Patch17: Backport-JDK-8332818-ubsan-archiveHeapLoader.cpp:70:.patch -Patch18: Backport-JDK-8333887-ubsan-unsafe.cpp:247:13:-runtim.patch Patch19: 8339351-Remove-duplicate-line-in-FileMapHeader-print.patch -Patch20: BackPort-JDK-8324580-SIGFPE-on-THP-initialization-on.patch Patch21: 8339149-jfr_flush_event_writer-return-value-type-mis.patch Patch22: 8300800-UB-Shift-exponent-32-is-too-large-for-32-bit.patch Patch23: 8334780-Crash-assert-h_array_list.not_null-failed-in.patch Patch24: 8337982-Remove-dead-undef-assrt0n.patch -Patch25: Backport-JDK-8334239-Introduce-macro-for-ubsan-metho.patch Patch26: 8335610-DiagnosticFramework-CmdLine-is_executable-co.patch Patch27: Backport-of-8337245-Fix-wrong-comment-of-StringConca.patch Patch28: Backport-of-8337274-Remove-repeated-the.patch Patch29: backport-of-8339298-Remove-unused-function-declarati.patch -Patch30: Backport-of-8333088-ubsan-shenandoahAdaptiveHeuristi.patch Patch31: Backport-JDK-8320682-[AArch64]-C1-compilation-fails-.patch Patch32: BackPort-JDK-8336346-Fix--Wzero-as-null-pointer-cons.patch -Patch33: Backport-JDK-8332524-Instead-of-printing-TLSv1.3,-.patch -Patch34: Backport-JDK-8333149-ubsan-memset-on-nullptr-target-.patch -Patch35: Backport-JDK-8333622-ubsan-relocInfo_x86.cpp:101:56:.patch -Patch36: Backport-JDK-8333354-ubsan-frame.inline.hpp:91:25:-a.patch Patch37: Backport-JDK-8336080-Fix--Wzero-as-null-pointer-cons.patch Patch38: Backport-JDK-8336152-Remove-unused-forward-declarati.patch Patch39: Backport-of-8330191-Fix-typo-in-precompiled.hpp.patch Patch40: Backport-of-8337787-Fix-Wzero-as-null-pointer-consta.patch Patch41: Backport-of-8337712-Wrong-javadoc-in-java.util.Date-.patch Patch42: Backport-of-8337067-Test-runtime-classFileParserBug-.patch -Patch43: Backport-JDK-8333639-ubsan-cppVtables.cpp:81:55-runt.patch -Patch44: Backport-of-JDK-8336343-Add-more-known-sysroot-libra.patch Patch45: Backport-of-JDK-8316895-SeenThread::print_action_que.patch Patch46: Backport-of-JDK-8328723-IP-Address-error-when-client.patch -Patch47: Backport-of-JDK-8332720-ubsan-instanceKlass.cpp:3550.patch Patch48: Backport-JDK-8207908-JMXStatusTest.java-fails-assert.patch Patch49: Backport-JDK-8328107-Shenandoah-C2-TestVerifyLoopOpt.patch Patch50: Backport-JDK-8328553-Get-rid-of-JApplet-in-test-jdk-.patch Patch51: Backport-JDK-8329754-The-ThreadSafe-attribute-is-ign.patch -Patch52: Backport-JDK-8332920-C2-Partial-Peeling-is-wrongly-a.patch Patch53: Backport-JDK-8335638-Calling-VarHandle.-access-mode-.patch Patch54: Backport-JDK-8338938-The-result-of-the-combine-metho.patch Patch55: Backport-JDK-8313909-JVMCI-assert-cp-tag_at-index-.i.patch @@ -1025,7 +1010,6 @@ Patch57: Backport-JDK-8322812-Manpage-for-jcmd-is-missing-JFR.patch Patch58: Backport-JDK-8327538-The-SSLExtension-class-specifie.patch Patch59: Backport-JDK-8331391-Enhance-the-keytool-code-by-inv.patch Patch60: Backport-JDK-8333599-Improve-description-of-b-matche.patch -Patch61: Backport-JDK-8334123-log-the-opening-of-Type-1-fonts.patch Patch62: Backport-JDK-8336012-Fix-usages-of-jtreg-reserved-pr.patch Patch63: Backport-JDK-8336879-Always-true-condition-img-null-.patch Patch64: Backport-JDK-8337334-Test-tools-javac-7142086-T71420.patch @@ -1280,46 +1264,31 @@ pushd %{top_level_dir_name} %patch10 -p1 %patch11 -p1 %patch12 -p1 -%patch13 -p1 -%patch14 -p1 %patch15 -p1 %patch16 -p1 -%patch17 -p1 -%patch18 -p1 %patch19 -p1 -%patch20 -p1 %patch21 -p1 %patch22 -p1 %patch23 -p1 %patch24 -p1 -%patch25 -p1 %patch26 -p1 %patch27 -p1 %patch28 -p1 %patch29 -p1 -%patch30 -p1 %patch31 -p1 %patch32 -p1 -%patch33 -p1 -%patch34 -p1 -%patch35 -p1 -%patch36 -p1 %patch37 -p1 %patch38 -p1 %patch39 -p1 %patch40 -p1 %patch41 -p1 %patch42 -p1 -%patch43 -p1 -%patch44 -p1 %patch45 -p1 %patch46 -p1 -%patch47 -p1 %patch48 -p1 %patch49 -p1 %patch50 -p1 %patch51 -p1 -%patch52 -p1 %patch53 -p1 %patch54 -p1 %patch55 -p1 @@ -1328,7 +1297,6 @@ pushd %{top_level_dir_name} %patch58 -p1 %patch59 -p1 %patch60 -p1 -%patch61 -p1 %patch62 -p1 %patch63 -p1 %patch64 -p1 @@ -1904,6 +1872,25 @@ cjc.mainProgram(args) -- the returns from copy_jdk_configs.lua should not affect %changelog +* Tue Oct 16 2024 huangjie - 1:21.0.5.11-0 +- update to jdk21.0.5-ga +- delete Backport-JDK-8333462-Performance-regression-of-new-D.patch +- delete Backport-JDK-8332818-ubsan-archiveHeapLoader.cpp:70:.patch +- detete Backport-JDK-8333887-ubsan-unsafe.cpp:247:13:-runtim.patch +- detete BackPort-JDK-8324580-SIGFPE-on-THP-initialization-on.patch +- delete Backport-JDK-8334239-Introduce-macro-for-ubsan-metho.patch +- delete Backport-of-8333088-ubsan-shenandoahAdaptiveHeuristi.patch +- detete Backport-JDK-8332524-Instead-of-printing-TLSv1.3,-.patch +- delete Backport-JDK-8333149-ubsan-memset-on-nullptr-target-.patch +- detete Backport-JDK-8333622-ubsan-relocInfo_x86.cpp:101:56:.patch +- detete Backport-JDK-8333354-ubsan-frame.inline.hpp:91:25:-a.patch +- delete Backport-JDK-8333639-ubsan-cppVtables.cpp:81:55-runt.patch +- delete Backport-of-JDK-8336343-Add-more-known-sysroot-libra.patch +- delete Backport-of-JDK-8332720-ubsan-instanceKlass.cpp:3550.patch +- delete Backport-JDK-8332920-C2-Partial-Peeling-is-wrongly-a.patch +- delete Backport-JDK-8334123-log-the-opening-of-Type-1-fonts.patch +- delete Backport-JDK-8325022-Incorrect-error-message-on-clie.patch + * Sat Oct 12 2024 Autistic_boyya - 1:21.0.4.7-5 - add 8300800-UB-Shift-exponent-32-is-too-large-for-32-bit.patch - add 8334780-Crash-assert-h_array_list.not_null-failed-in.patch