From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id B7FCBCCFA13 for ; Fri, 1 May 2026 15:30:46 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id 93185844EE; Fri, 1 May 2026 15:30:46 +0000 (UTC) X-Virus-Scanned: amavis at osuosl.org Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP id bSWWncl3rLtv; Fri, 1 May 2026 15:30:45 +0000 (UTC) X-Comment: SPF check N/A for local connections - client-ip=140.211.166.142; helo=lists1.osuosl.org; envelope-from=buildroot-bounces@buildroot.org; receiver= DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org 0386D8454D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=buildroot.org; s=default; t=1777649445; bh=W6sG/Hqkmvzf8dNSkk4NX0+Y0R8ZSzBuAH921Df6PdA=; h=From:To:Date:In-Reply-To:References:Subject:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: Cc:From; b=OT5PozWdhJQYWCIdnyZ8SCKzDhKte/HuiK13d0YD4cetQSEM2NZLlddog8WH37xyU YcsyrnI/J5nYehI9jpK+EwH7AWC29GNsYELfoKNpXBHWuFsaLxpSe4Lz00IFbCG3MA q15hmW5QvtNH0miY1IjCozmNLdLXyzO3qYDrJcsRvjiasx+pOFAUbdNxPMn/TVEoqD OPYU5/kdHiKS/1944yC5QFTJoPQIkBP3N5gonUet8dziCC5AQKnoGgWQ2VNa3DmdKC L9V/T34528ZHz1DhljZHqJAvIpdxQriF58892dOk50P4jywHDAKLj5v1ginaU5U35N 7omXn5v/5HK2w== Received: from lists1.osuosl.org (lists1.osuosl.org [140.211.166.142]) by smtp1.osuosl.org (Postfix) with ESMTP id 0386D8454D; Fri, 1 May 2026 15:30:45 +0000 (UTC) Received: from smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138]) by lists1.osuosl.org (Postfix) with ESMTP id 8AFEB293 for ; Fri, 1 May 2026 15:30:44 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id 7C832844EE for ; Fri, 1 May 2026 15:30:44 +0000 (UTC) X-Virus-Scanned: amavis at osuosl.org Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP id 5IuIcl4EZcND for ; Fri, 1 May 2026 15:30:43 +0000 (UTC) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=85.13.140.57; helo=dd20012.kasserver.com; envelope-from=bernd@kuhls.net; receiver= DMARC-Filter: OpenDMARC Filter v1.4.2 smtp1.osuosl.org ABB74844E6 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org ABB74844E6 Received: from dd20012.kasserver.com (dd20012.kasserver.com [85.13.140.57]) by smtp1.osuosl.org (Postfix) with ESMTPS id ABB74844E6 for ; Fri, 1 May 2026 15:30:42 +0000 (UTC) Received: from fli4l.lan.fli4l (p4fd6c2eb.dip0.t-ipconnect.de [79.214.194.235]) by dd20012.kasserver.com (Postfix) with ESMTPSA id 3267EA4C024A; Fri, 1 May 2026 17:28:03 +0200 (CEST) Received: from bruckner.lan.fli4l ([192.168.1.1]:42324) by fli4l.lan.fli4l with esmtp (Exim 4.99.2) (envelope-from ) id 1wIpmb-00000000172-0Uhh; Fri, 01 May 2026 15:28:01 +0000 From: Bernd Kuhls To: buildroot@buildroot.org Date: Fri, 1 May 2026 17:27:48 +0200 Message-ID: <20260501152758.2610763-13-bernd@kuhls.net> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260501152758.2610763-1-bernd@kuhls.net> References: <20260501152758.2610763-1-bernd@kuhls.net> MIME-Version: 1.0 X-Spamd-Bar: + X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kuhls.net; s=kas202511301023; t=1777649283; bh=BgIqYbl9lh3SpFN6ThXHYQjnjIQ8hzwJJdsXVgaR6PE=; h=From:To:Cc:Subject:Date:In-Reply-To:From; b=E1kJY3pDOSP3OuP+4ZuLR6UNIWEmAf3p5uNsdVS+fIEyVXKxUSJtaWWXUwiuVE5xD 1Aqb+mJo8Tg8pF3Z9GeAgGlFzr+VpExQyFVcNz+9aW5S1zgiUIsCSQXsQpfJfeXaZ/ Keawgd2gXyHZ11CXszJfilqu+++93nmzBDjudmqsw+dwfEFOg/m2ZOSguCc4LM3O7L 88kPVpJWAaM2UQsachAsOawHCYp9D3HHwTHa+uck9tMzlT1urHptGFKxoN+X8jtqxh D2wBVpNFLU5AbZPAI94sUiOgDrWQqazdyMd61xZMc7SdbRvA52XjsfneBQ3yYV/cT+ ua8N8TJWc9Igg== X-Mailman-Original-Authentication-Results: smtp1.osuosl.org; dmarc=pass (p=none dis=none) header.from=kuhls.net X-Mailman-Original-Authentication-Results: smtp1.osuosl.org; dkim=pass (2048-bit key) header.d=kuhls.net header.i=@kuhls.net header.a=rsa-sha256 header.s=kas202511301023 header.b=E1kJY3pD Subject: [Buildroot] [PATCH v4 12/21] package/openjdk{-bin}: add OpenJDK25 and configure it as latest X-BeenThere: buildroot@buildroot.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Zoltan Gyarmati , Thomas Devoogdt , Tudor Holton , Fabrice Fontaine , Angelo Compagnucci , Olivier Schonken , Thomas Petazzoni , Romain Naour , Giulio Benetti Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: buildroot-bounces@buildroot.org Sender: "buildroot" From: Thomas Devoogdt OpenJDK 25 is the latest release. See: https://endoflife.date/oracle-jdk - BR2_OPENJDK_VERSION_LATEST is now set to 25. - Add version-specific patches for 25.0.2+10: - 0001: Add ARCv2 ISA processors support to Zero - 0002: Compile OpenJDK in headless mode without requirements - 0003: Fix ambiguous cmp() overload in aarch64 macro assembler (older GCC 6.x compatibility) - 0004: Fix constexpr on non-literal type in Shenandoah GC (older GCC 6.x compatibility) - Add -fpermissive to fix template definition error with older GCC. - Update HOST_OPENJDK_BIN_VERSION for OpenJDK 25. - Update the expectedVersion variable in JniTest.java from 0x00150000 (JNI 21) to 0x00180000 (JNI 24/25). Tested with: $ ./support/testing/run-tests -o ~/br-test-py/ -d ~/br-test-dl/ \ tests.package.test_openjdk.TestOpenJdk Signed-off-by: Thomas Devoogdt [Bernd: - rebased on bump of versions 17 & 21 - build-tested with gcc 16-snapshot] Signed-off-by: Bernd Kuhls --- .../openjdk-bin/25.0.2_10/openjdk-bin.hash | 7 + package/openjdk-bin/openjdk-bin.mk | 6 +- ...ARCv2-ISA-processors-support-to-Zero.patch | 109 +++++++++++++ ...OpenJDK-in-headless-mode-without-req.patch | 144 ++++++++++++++++++ ...spot-aarch64-macro-assembler-fix-cmp.patch | 43 ++++++ ...ot-share-gc-shenandoah-fix-constexpr.patch | 42 +++++ package/openjdk/Config.in | 7 +- package/openjdk/openjdk.hash | 1 + package/openjdk/openjdk.mk | 10 +- .../package/openjdk-jni-test/JniTest.java | 2 +- 10 files changed, 363 insertions(+), 8 deletions(-) create mode 100644 package/openjdk-bin/25.0.2_10/openjdk-bin.hash create mode 100644 package/openjdk/25.0.2+10/0001-Add-ARCv2-ISA-processors-support-to-Zero.patch create mode 100644 package/openjdk/25.0.2+10/0002-8376684-Compile-OpenJDK-in-headless-mode-without-req.patch create mode 100644 package/openjdk/25.0.2+10/0003-src-hotspot-aarch64-macro-assembler-fix-cmp.patch create mode 100644 package/openjdk/25.0.2+10/0004-src-hotspot-share-gc-shenandoah-fix-constexpr.patch diff --git a/package/openjdk-bin/25.0.2_10/openjdk-bin.hash b/package/openjdk-bin/25.0.2_10/openjdk-bin.hash new file mode 100644 index 0000000000..42892b1e6c --- /dev/null +++ b/package/openjdk-bin/25.0.2_10/openjdk-bin.hash @@ -0,0 +1,7 @@ +# From https://github.com/adoptium/temurin25-binaries/releases +sha256 987387933b64b9833846dee373b640440d3e1fd48a04804ec01a6dbf718e8ab8 OpenJDK25U-jdk_x64_linux_hotspot_25.0.2_10.tar.gz +sha256 a9d73e711d967dc44896d4f430f73a68fd33590dabc29a7f2fb9f593425b854c OpenJDK25U-jdk_aarch64_linux_hotspot_25.0.2_10.tar.gz + +# Locally calculated +sha256 4b9abebc4338048a7c2dc184e9f800deb349366bdf28eb23c2677a77b4c87726 legal/java.prefs/LICENSE +sha256 75292f03bf23d3db7c985aecc191029b93883200721ed23ed34a2e601463df33 legal/java.prefs/ASSEMBLY_EXCEPTION diff --git a/package/openjdk-bin/openjdk-bin.mk b/package/openjdk-bin/openjdk-bin.mk index 819bf9052b..5f1922dea5 100644 --- a/package/openjdk-bin/openjdk-bin.mk +++ b/package/openjdk-bin/openjdk-bin.mk @@ -4,7 +4,11 @@ # ################################################################################ -ifeq ($(BR2_PACKAGE_OPENJDK_VERSION_21),y) +ifeq ($(BR2_PACKAGE_OPENJDK_VERSION_25),y) +HOST_OPENJDK_BIN_VERSION_MAJOR = 25 +HOST_OPENJDK_BIN_VERSION_MINOR = 0.2 +HOST_OPENJDK_BIN_VERSION_BUILD = 10 +else ifeq ($(BR2_PACKAGE_OPENJDK_VERSION_21),y) HOST_OPENJDK_BIN_VERSION_MAJOR = 21 HOST_OPENJDK_BIN_VERSION_MINOR = 0.10 HOST_OPENJDK_BIN_VERSION_BUILD = 7 diff --git a/package/openjdk/25.0.2+10/0001-Add-ARCv2-ISA-processors-support-to-Zero.patch b/package/openjdk/25.0.2+10/0001-Add-ARCv2-ISA-processors-support-to-Zero.patch new file mode 100644 index 0000000000..5cbc30ddd6 --- /dev/null +++ b/package/openjdk/25.0.2+10/0001-Add-ARCv2-ISA-processors-support-to-Zero.patch @@ -0,0 +1,109 @@ +From 86aee60f0457bd9716c4221da53bcd9d893359b3 Mon Sep 17 00:00:00 2001 +From: Alexey Brodkin +Date: Mon, 18 Oct 2021 05:20:05 -0700 +Subject: [PATCH] Add ARCv2 ISA processors support to Zero + +This adds ARCv2 processors support in OpenJDK via +"Zero Assembly Project" (see https://openjdk.java.net/projects/zero). + +That' a purely interpretive mode, so likely not that fast +as JIT'ed version, but for starters it's much better than nothing. + +Once all the logistical problems are solved hopefully this +change will be accepted upstream. + +Signed-off-by: Alexey Brodkin +--- + make/autoconf/libraries.m4 | 8 ++++++++ + make/autoconf/platform.m4 | 8 ++++++++ + src/hotspot/os/linux/os_linux.cpp | 8 +++++++- + 3 files changed, 23 insertions(+), 1 deletion(-) + +diff --git a/make/autoconf/libraries.m4 b/make/autoconf/libraries.m4 +index 8dc3d55ed0c..96f377c2f99 100644 +--- a/make/autoconf/libraries.m4 ++++ b/make/autoconf/libraries.m4 +@@ -141,6 +141,14 @@ AC_DEFUN_ONCE([LIB_SETUP_LIBRARIES], + BASIC_JVM_LIBS="$BASIC_JVM_LIBS -lrt" + fi + ++ # Libatomic library ++ # 32-bit ARC needs fallback library for 8-byte atomic ops ++ # Inspired by a fix for MIPS, see https://github.com/openjdk/jdk/commit/1b3aa3af ++ if test "x$OPENJDK_TARGET_OS" = xlinux && ++ (test "x$OPENJDK_TARGET_CPU" = xarc); then ++ BASIC_JVM_LIBS="$BASIC_JVM_LIBS -latomic" ++ fi ++ + # perfstat lib + if test "x$OPENJDK_TARGET_OS" = xaix; then + BASIC_JVM_LIBS="$BASIC_JVM_LIBS -lperfstat" +diff --git a/make/autoconf/platform.m4 b/make/autoconf/platform.m4 +index 31451d0c37f..8d2b95d4399 100644 +--- a/make/autoconf/platform.m4 ++++ b/make/autoconf/platform.m4 +@@ -54,6 +54,12 @@ AC_DEFUN([PLATFORM_EXTRACT_VARS_FROM_CPU], + VAR_CPU_BITS=64 + VAR_CPU_ENDIAN=little + ;; ++ arc) ++ VAR_CPU=arc ++ VAR_CPU_ARCH=arc ++ VAR_CPU_BITS=32 ++ VAR_CPU_ENDIAN=little ++ ;; + arm*) + VAR_CPU=arm + VAR_CPU_ARCH=arm +@@ -571,6 +577,8 @@ AC_DEFUN([PLATFORM_SETUP_LEGACY_VARS_HELPER], + HOTSPOT_$1_CPU_DEFINE=RISCV64 + + # The cpu defines below are for zero, we don't support them directly. ++ elif test "x$OPENJDK_$1_CPU" = xarc; then ++ HOTSPOT_$1_CPU_DEFINE=ARC + elif test "x$OPENJDK_$1_CPU" = xsparc; then + HOTSPOT_$1_CPU_DEFINE=SPARC + elif test "x$OPENJDK_$1_CPU" = xppc; then +diff --git a/src/hotspot/os/linux/os_linux.cpp b/src/hotspot/os/linux/os_linux.cpp +index 49125ae8954..317e779782d 100644 +--- a/src/hotspot/os/linux/os_linux.cpp ++++ b/src/hotspot/os/linux/os_linux.cpp +@@ -1757,6 +1757,9 @@ void * os::dll_load(const char *filename, char *ebuf, int ebuflen) { + #ifndef EM_AARCH64 + #define EM_AARCH64 183 /* ARM AARCH64 */ + #endif ++#ifndef EM_ARC_COMPACT2 ++ #define EM_ARC_COMPACT2 195 /* ARC ARCv2 ISA */ ++#endif + #ifndef EM_RISCV + #define EM_RISCV 243 /* RISC-V */ + #endif +@@ -1781,6 +1784,7 @@ void * os::dll_load(const char *filename, char *ebuf, int ebuflen) { + {EM_SH, EM_SH, ELFCLASS32, ELFDATA2MSB, (char*)"SuperH BE"}, + #endif + {EM_ARM, EM_ARM, ELFCLASS32, ELFDATA2LSB, (char*)"ARM"}, ++ {EM_ARC_COMPACT2, EM_ARC_COMPACT2, ELFCLASS32, ELFDATA2LSB, (char*)"ARC"}, + // we only support 64 bit z architecture + {EM_S390, EM_S390, ELFCLASS64, ELFDATA2MSB, (char*)"IBM System/390"}, + {EM_ALPHA, EM_ALPHA, ELFCLASS64, ELFDATA2LSB, (char*)"Alpha"}, +@@ -1811,6 +1815,8 @@ void * os::dll_load(const char *filename, char *ebuf, int ebuflen) { + static Elf32_Half running_arch_code=EM_PPC; + #elif (defined AARCH64) + static Elf32_Half running_arch_code=EM_AARCH64; ++#elif (defined ARC) ++ static Elf32_Half running_arch_code=EM_ARC_COMPACT2; + #elif (defined ARM) + static Elf32_Half running_arch_code=EM_ARM; + #elif (defined S390) +@@ -1833,7 +1839,7 @@ void * os::dll_load(const char *filename, char *ebuf, int ebuflen) { + static Elf32_Half running_arch_code=EM_LOONGARCH; + #else + #error Method os::dll_load requires that one of following is defined:\ +- AARCH64, ALPHA, ARM, AMD64, IA32, LOONGARCH64, M68K, MIPS, MIPSEL, PARISC, __powerpc__, __powerpc64__, RISCV, S390, SH, __sparc ++ AARCH64, ALPHA, ARC, ARM, AMD64, IA32, LOONGARCH64, M68K, MIPS, MIPSEL, PARISC, __powerpc__, __powerpc64__, RISCV, S390, SH, __sparc + #endif + + // Identify compatibility class for VM's architecture and library's architecture +-- +2.43.0 + diff --git a/package/openjdk/25.0.2+10/0002-8376684-Compile-OpenJDK-in-headless-mode-without-req.patch b/package/openjdk/25.0.2+10/0002-8376684-Compile-OpenJDK-in-headless-mode-without-req.patch new file mode 100644 index 0000000000..78ab31ff62 --- /dev/null +++ b/package/openjdk/25.0.2+10/0002-8376684-Compile-OpenJDK-in-headless-mode-without-req.patch @@ -0,0 +1,144 @@ +From 434d082d9082c1ce2d9ea46ec3c90420442567b9 Mon Sep 17 00:00:00 2001 +From: Thomas Devoogdt +Date: Wed, 4 Feb 2026 06:48:59 +0000 +Subject: [PATCH] 8376684: Compile OpenJDK in headless mode without required + X11 libraries + +Reviewed-by: erikj, aivanov + +Upstream: https://github.com/openjdk/jdk/pull/28310 +Signed-off-by: Thomas Devoogdt +--- + doc/building.html | 7 +++---- + doc/building.md | 6 ++---- + make/autoconf/libraries.m4 | 8 ++++---- + make/modules/java.desktop/lib/AwtLibraries.gmk | 16 ++++++++++++++-- + .../unix/native/common/awt/utility/rect.h | 4 ++-- + 5 files changed, 25 insertions(+), 16 deletions(-) + +diff --git a/doc/building.html b/doc/building.html +index da8465bc532..f8d815a5474 100644 +--- a/doc/building.html ++++ b/doc/building.html +@@ -1380,10 +1380,9 @@

ALSA

+ can specify it by --with-alsa.

+ +

X11

+-

You will need X11 libraries suitable for your target system. +-In most cases, using Debian's pre-built libraries work fine.

+-

Note that X11 is needed even if you only want to build a headless +-JDK.

++

When not building a headless JDK, you will need X11 libraries ++suitable for your target system. In most cases, using Debian's ++pre-built libraries work fine.

+
    +
  • Go to Debian + Package Search, search for the following packages for your +diff --git a/doc/building.md b/doc/building.md +index 1a9fe6b2e78..92ebd3d32c7 100644 +--- a/doc/building.md ++++ b/doc/building.md +@@ -1173,10 +1173,8 @@ #### ALSA + + #### X11 + +-You will need X11 libraries suitable for your *target* system. In most cases, +-using Debian's pre-built libraries work fine. +- +-Note that X11 is needed even if you only want to build a headless JDK. ++When not building a headless JDK, you will need X11 libraries suitable for your ++*target* system. In most cases, using Debian's pre-built libraries work fine. + + * Go to [Debian Package Search](https://www.debian.org/distrib/packages), + search for the following packages for your *target* system, and download them +diff --git a/make/autoconf/libraries.m4 b/make/autoconf/libraries.m4 +index 96f377c2f99..8f02b7ec8a7 100644 +--- a/make/autoconf/libraries.m4 ++++ b/make/autoconf/libraries.m4 +@@ -42,12 +42,12 @@ m4_include([lib-tests.m4]) + AC_DEFUN_ONCE([LIB_DETERMINE_DEPENDENCIES], + [ + # Check if X11 is needed +- if test "x$OPENJDK_TARGET_OS" = xwindows || test "x$OPENJDK_TARGET_OS" = xmacosx; then +- # No X11 support on windows or macosx ++ if test "x$OPENJDK_TARGET_OS" = xwindows || ++ test "x$OPENJDK_TARGET_OS" = xmacosx || ++ test "x$ENABLE_HEADLESS_ONLY" = xtrue; then + NEEDS_LIB_X11=false + else +- # All other instances need X11, even if building headless only, libawt still +- # needs X11 headers. ++ # All other instances need X11 for libawt. + NEEDS_LIB_X11=true + fi + +diff --git a/make/modules/java.desktop/lib/AwtLibraries.gmk b/make/modules/java.desktop/lib/AwtLibraries.gmk +index 463e09e12dc..8b6b50b9e62 100644 +--- a/make/modules/java.desktop/lib/AwtLibraries.gmk ++++ b/make/modules/java.desktop/lib/AwtLibraries.gmk +@@ -88,6 +88,10 @@ LIBAWT_EXTRA_HEADER_DIRS := \ + + LIBAWT_CFLAGS := -D__MEDIALIB_OLD_NAMES -D__USE_J2D_NAMES -DMLIB_NO_LIBSUNMATH + ++ifeq ($(ENABLE_HEADLESS_ONLY), true) ++ LIBAWT_CFLAGS += -DHEADLESS ++endif ++ + ifeq ($(call isTargetOs, windows), true) + LIBAWT_CFLAGS += -EHsc -DUNICODE -D_UNICODE -DMLIB_OS64BIT + LIBAWT_RCFLAGS ?= -I$(TOPDIR)/src/java.base/windows/native/launcher/icons +@@ -167,11 +171,18 @@ ifeq ($(call isTargetOs, windows macosx), false) + $(TOPDIR)/src/$(MODULE)/$(OPENJDK_TARGET_OS_TYPE)/native/common/awt \ + # + ++ LIBAWT_HEADLESS_EXCLUDE_FILES := \ ++ GLXGraphicsConfig.c \ ++ GLXSurfaceData.c \ ++ X11PMBlitLoops.c \ ++ X11Renderer.c \ ++ X11SurfaceData.c \ ++ # ++ + LIBAWT_HEADLESS_EXTRA_HEADER_DIRS := \ + $(LIBAWT_DEFAULT_HEADER_DIRS) \ + common/awt/debug \ + common/font \ +- common/java2d/opengl \ + java.base:libjvm \ + # + +@@ -191,7 +202,8 @@ ifeq ($(call isTargetOs, windows macosx), false) + $(eval $(call SetupJdkLibrary, BUILD_LIBAWT_HEADLESS, \ + NAME := awt_headless, \ + EXTRA_SRC := $(LIBAWT_HEADLESS_EXTRA_SRC), \ +- EXCLUDES := medialib, \ ++ EXCLUDES := medialib opengl, \ ++ EXCLUDE_FILES := $(LIBAWT_HEADLESS_EXCLUDE_FILES), \ + ONLY_EXPORTED := $(LIBAWT_HEADLESS_ONLY_EXPORTED), \ + OPTIMIZATION := LOW, \ + CFLAGS := -DHEADLESS=true $(CUPS_CFLAGS) $(FONTCONFIG_CFLAGS) \ +diff --git a/src/java.desktop/unix/native/common/awt/utility/rect.h b/src/java.desktop/unix/native/common/awt/utility/rect.h +index ceea38f4349..91b5a17ec58 100644 +--- a/src/java.desktop/unix/native/common/awt/utility/rect.h ++++ b/src/java.desktop/unix/native/common/awt/utility/rect.h +@@ -28,7 +28,7 @@ + #ifndef _AWT_RECT_H + #define _AWT_RECT_H + +-#ifndef MACOSX ++#if !defined(HEADLESS) && !defined(MACOSX) + #include + typedef XRectangle RECT_T; + #else +@@ -39,7 +39,7 @@ typedef struct { + int width; + int height; + } RECT_T; +-#endif /* !MACOSX */ ++#endif /* !HEADLESS && !MACOSX */ + + #define RECT_EQ_X(r1,r2) ((r1).x==(r2).x && (r1).width==(r2).width) + +-- +2.43.0 + diff --git a/package/openjdk/25.0.2+10/0003-src-hotspot-aarch64-macro-assembler-fix-cmp.patch b/package/openjdk/25.0.2+10/0003-src-hotspot-aarch64-macro-assembler-fix-cmp.patch new file mode 100644 index 0000000000..f1d4de85d7 --- /dev/null +++ b/package/openjdk/25.0.2+10/0003-src-hotspot-aarch64-macro-assembler-fix-cmp.patch @@ -0,0 +1,43 @@ +From ac1110be8a65b230a3413890c77565cead5fa44f Mon Sep 17 00:00:00 2001 +From: Thomas Devoogdt +Date: Sat, 21 Feb 2026 15:45:42 +0100 +Subject: [PATCH 3/4] src: hotspot: aarch64: macro assembler: fix cmp + +Older GCC versions (e.g., GCC 6.x from bootlin toolchains) cannot +resolve the overload ambiguity when passing an InstanceKlass::ClassState +enum value to cmp(). The compiler sees both cmp(Register, unsigned char) +and the deleted cmp(Register, unsigned int) as candidates. + +Explicitly cast the enum value to unsigned char to fix the build with +older toolchains. + +Fixes: + + * For target hotspot_variant-server_libjvm_objs_macroAssembler_aarch64.o: + /home/thomas/br-test-pkg/bootlin-aarch64-glibc-old/build/openjdk-25.0.2+10/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp: In member function 'void MacroAssembler::clinit_barrier(Register, Register, Label*, Label*)': + /home/thomas/br-test-pkg/bootlin-aarch64-glibc-old/build/openjdk-25.0.2+10/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp:2048:48: error: call of overloaded 'cmp(Register&, InstanceKlass::ClassState)' is ambiguous + cmp(scratch, InstanceKlass::fully_initialized); + ^ + +Upstream: https://github.com/openjdk/jdk/pull/29856 +Signed-off-by: Thomas Devoogdt +--- + src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp b/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp +index a424bd7f275..5cf4b1d981f 100644 +--- a/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp ++++ b/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp +@@ -2045,7 +2045,7 @@ void MacroAssembler::clinit_barrier(Register klass, Register scratch, Label* L_f + // Fast path check: class is fully initialized + lea(scratch, Address(klass, InstanceKlass::init_state_offset())); + ldarb(scratch, scratch); +- cmp(scratch, InstanceKlass::fully_initialized); ++ cmp(scratch, (unsigned char)InstanceKlass::fully_initialized); + br(Assembler::EQ, *L_fast_path); + + // Fast path check: current thread is initializer thread +-- +2.43.0 + diff --git a/package/openjdk/25.0.2+10/0004-src-hotspot-share-gc-shenandoah-fix-constexpr.patch b/package/openjdk/25.0.2+10/0004-src-hotspot-share-gc-shenandoah-fix-constexpr.patch new file mode 100644 index 0000000000..72e5f657ab --- /dev/null +++ b/package/openjdk/25.0.2+10/0004-src-hotspot-share-gc-shenandoah-fix-constexpr.patch @@ -0,0 +1,42 @@ +From 87cb37e3341a33c5a8fac361972c53b1edc56799 Mon Sep 17 00:00:00 2001 +From: Thomas Devoogdt +Date: Sat, 21 Feb 2026 15:50:42 +0100 +Subject: [PATCH 4/4] src: hotspot: share: gc: shenandoah: fix constexpr + +Older GCC versions (e.g., GCC 6.x from bootlin toolchains) enforce +C++14 rules more strictly and do not allow constexpr member functions +on non-literal types. ShenandoahSimpleBitMap is not a literal type +because it has a non-trivial destructor or other disqualifying members. + +Remove constexpr from ShenandoahSimpleBitMap::alignment() to fix the +build with older toolchains. The function can still be inlined and +optimized. + +Fixes: + + /home/thomas/br-test-pkg/bootlin-aarch64-glibc-old/build/openjdk-25.0.2+10/src/hotspot/share/gc/shenandoah/shenandoahSimpleBitMap.hpp:93:26: error: enclosing class of constexpr non-static member function 'idx_t ShenandoahSimpleBitMap::alignment() const' is not a literal type + inline constexpr idx_t alignment() const { + ^~~~~~~~~ + +Upstream: https://github.com/openjdk/jdk/pull/29856 +Signed-off-by: Thomas Devoogdt +--- + src/hotspot/share/gc/shenandoah/shenandoahSimpleBitMap.hpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/hotspot/share/gc/shenandoah/shenandoahSimpleBitMap.hpp b/src/hotspot/share/gc/shenandoah/shenandoahSimpleBitMap.hpp +index 3a4cb8cf742..451c11e2e58 100644 +--- a/src/hotspot/share/gc/shenandoah/shenandoahSimpleBitMap.hpp ++++ b/src/hotspot/share/gc/shenandoah/shenandoahSimpleBitMap.hpp +@@ -90,7 +90,7 @@ class ShenandoahSimpleBitMap { + return array_idx; + } + +- inline constexpr idx_t alignment() const { ++ inline idx_t alignment() const { + return BitsPerWord; + } + +-- +2.43.0 + diff --git a/package/openjdk/Config.in b/package/openjdk/Config.in index 7f29e7a489..022ded8dbb 100644 --- a/package/openjdk/Config.in +++ b/package/openjdk/Config.in @@ -53,8 +53,8 @@ if BR2_PACKAGE_OPENJDK choice prompt "openjdk version" default BR2_PACKAGE_OPENJDK_VERSION_17 if BR2_OPENJDK_VERSION_LTS # legacy - default BR2_PACKAGE_OPENJDK_VERSION_21 if BR2_OPENJDK_VERSION_LATEST # legacy - default BR2_PACKAGE_OPENJDK_VERSION_21 + default BR2_PACKAGE_OPENJDK_VERSION_25 if BR2_OPENJDK_VERSION_LATEST # legacy + default BR2_PACKAGE_OPENJDK_VERSION_25 help Select the version of OpenJDK you wish to use. @@ -64,6 +64,9 @@ config BR2_PACKAGE_OPENJDK_VERSION_17 config BR2_PACKAGE_OPENJDK_VERSION_21 bool "OpenJDK 21" +config BR2_PACKAGE_OPENJDK_VERSION_25 + bool "OpenJDK 25" + endchoice config BR2_PACKAGE_OPENJDK_X11 diff --git a/package/openjdk/openjdk.hash b/package/openjdk/openjdk.hash index 72a6ff2e27..3f83ab48f8 100644 --- a/package/openjdk/openjdk.hash +++ b/package/openjdk/openjdk.hash @@ -1,4 +1,5 @@ # Locally computed +sha256 9b3164cedf78d7a76a59499d7a6833145c7e0269ec7b664bfe5ee03ced2f449e openjdk-25.0.2+10.tar.gz sha256 6500906cb7cc49268ce4ca368db3ddf3541b40afd25eecb378e13d5a72f43214 openjdk-21.0.10+7.tar.gz sha256 7ebfcc2aafd514c23df3fe5280e1a34630b9b1d429c65a80dd5a4b6e7f177bc3 openjdk-17.0.18+8.tar.gz sha256 4b9abebc4338048a7c2dc184e9f800deb349366bdf28eb23c2677a77b4c87726 LICENSE diff --git a/package/openjdk/openjdk.mk b/package/openjdk/openjdk.mk index e5d9d5e630..fbc860019c 100644 --- a/package/openjdk/openjdk.mk +++ b/package/openjdk/openjdk.mk @@ -4,11 +4,14 @@ # ################################################################################ -ifeq ($(BR2_PACKAGE_OPENJDK_VERSION_21),y) +ifeq ($(BR2_PACKAGE_OPENJDK_VERSION_25),y) +OPENJDK_VERSION_MAJOR = 25 +OPENJDK_VERSION_MINOR = 0.2 +OPENJDK_VERSION_BUILD = 10 +else ifeq ($(BR2_PACKAGE_OPENJDK_VERSION_21),y) OPENJDK_VERSION_MAJOR = 21 OPENJDK_VERSION_MINOR = 0.10 OPENJDK_VERSION_BUILD = 7 - else OPENJDK_VERSION_MAJOR = 17 OPENJDK_VERSION_MINOR = 0.18 @@ -80,7 +83,6 @@ OPENJDK_CONF_ENV = \ OPENJDK_CONF_OPTS = \ --disable-full-docs \ - --disable-manpages \ --disable-warnings-as-errors \ --enable-openjdk-only \ --enable-unlimited-crypto \ @@ -90,7 +92,7 @@ OPENJDK_CONF_OPTS = \ --with-debug-level=release \ --with-devkit=$(HOST_DIR) \ --with-extra-cflags="$(TARGET_CFLAGS)" \ - --with-extra-cxxflags="$(TARGET_CXXFLAGS)" \ + --with-extra-cxxflags="$(TARGET_CXXFLAGS) -fpermissive" \ --with-extra-ldflags="-Wl,-rpath,$(OPENJDK_INSTALL_BASE)/lib,-rpath,$(OPENJDK_INSTALL_BASE)/lib/$(OPENJDK_JVM_VARIANT)" \ --with-giflib=system \ --with-jobs=$(PARALLEL_JOBS) \ diff --git a/support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/JniTest.java b/support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/JniTest.java index 21d9679788..97dec8b804 100644 --- a/support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/JniTest.java +++ b/support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/JniTest.java @@ -33,7 +33,7 @@ public class JniTest public static void main(String[] args) { var actualVersion = JniWrapper.get_jni_version(); - var expectedVersion = 0x00150000; + var expectedVersion = 0x00180000; JniTest.Test( "Get JNI Version", actualVersion, -- 2.47.3 _______________________________________________ buildroot mailing list buildroot@buildroot.org https://lists.buildroot.org/mailman/listinfo/buildroot