From 41bb131531b74c2accc59c3f9c709d3f12b7f27f Mon Sep 17 00:00:00 2001
From: Yudi Zheng <yudi.zheng@oracle.com>
Date: Wed, 7 May 2025 20:54:59 +0200
Subject: [PATCH 1/2] Adapt JDK-8353232: Standardizing and Unifying XML
 Component Configurations

---
 ...xml_internal_JdkXmlConfig_CatalogHolder.java} | 16 +++++-----------
 .../JavaxXmlClassAndResourcesLoaderFeature.java  |  8 ++++----
 2 files changed, 9 insertions(+), 15 deletions(-)
 rename substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/xml/{Target_jdk_xml_internal_JdkCatalog.java => Target_jdk_xml_internal_JdkXmlConfig_CatalogHolder.java} (86%)

diff --git a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/xml/Target_jdk_xml_internal_JdkCatalog.java b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/xml/Target_jdk_xml_internal_JdkXmlConfig_CatalogHolder.java
similarity index 86%
rename from substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/xml/Target_jdk_xml_internal_JdkCatalog.java
rename to substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/xml/Target_jdk_xml_internal_JdkXmlConfig_CatalogHolder.java
index eec7075c8d9d..d025f67ca037 100644
--- a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/xml/Target_jdk_xml_internal_JdkCatalog.java
+++ b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/xml/Target_jdk_xml_internal_JdkXmlConfig_CatalogHolder.java
@@ -45,17 +45,11 @@
  * Ideally, we would initialize all of {@code jdk.xml} at run time, but that is too intrusive at the
  * current point in time (GR-50683).
  */
-@TargetClass(className = "jdk.xml.internal.JdkCatalog", onlyWith = JDKLatest.class)
-public final class Target_jdk_xml_internal_JdkCatalog {
+@TargetClass(className = "jdk.xml.internal.JdkXmlConfig$CatalogHolder", onlyWith = JDKLatest.class)
+public final class Target_jdk_xml_internal_JdkXmlConfig_CatalogHolder {
     @Alias //
     @RecomputeFieldValue(kind = RecomputeFieldValue.Kind.Custom, declClass = JdkCatalogSupplier.class, isFinal = true) //
-    public static Target_javax_xml_catalog_Catalog catalog;
-
-    @Substitute
-    @SuppressWarnings("unused")
-    public static void init(String resolve) {
-        // initialized at build time
-    }
+    public static Target_javax_xml_catalog_Catalog JDKCATALOG;
 }
 
 @TargetClass(className = "javax.xml.catalog.Catalog", onlyWith = JDKLatest.class)
@@ -76,8 +70,8 @@ final class Target_javax_xml_parsers_SAXParser {
 final class JdkCatalogSupplier implements FieldValueTransformer {
 
     /**
-     * Verifies that {@link Target_jdk_xml_internal_JdkCatalog#catalog} is non-null. The
-     * initialization is triggered in
+     * Verifies that {@link Target_jdk_xml_internal_JdkXmlConfig_CatalogHolder#JDKCATALOG} is
+     * non-null. The initialization is triggered in
      * {@code com.oracle.svm.hosted.xml.JavaxXmlClassAndResourcesLoaderFeature#initializeJdkCatalog()}
      */
     @Override
diff --git a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/xml/JavaxXmlClassAndResourcesLoaderFeature.java b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/xml/JavaxXmlClassAndResourcesLoaderFeature.java
index 52e8deeda0b5..ee2718390288 100644
--- a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/xml/JavaxXmlClassAndResourcesLoaderFeature.java
+++ b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/xml/JavaxXmlClassAndResourcesLoaderFeature.java
@@ -76,7 +76,7 @@ public void beforeAnalysis(BeforeAnalysisAccess access) {
     }
 
     /**
-     * Initialize the {@code JdkCatalog#catalog} field. We do this eagerly (instead of e.g. in a
+     * Initialize the {@code CatalogHolder#catalog} field. We do this eagerly (instead of e.g. in a
      * {@link FieldValueTransformer}) to work around a race condition in
      * XMLSecurityManager#prepareCatalog (JDK-8350189).
      */
@@ -85,10 +85,10 @@ private static void initializeJdkCatalog() {
             return;
         }
         if (ModuleLayer.boot().findModule("java.xml").isPresent()) {
-            // Ensure the JdkCatalog#catalog field is initialized.
-            Class<?> xmlSecurityManager = ReflectionUtil.lookupClass(false, "jdk.xml.internal.XMLSecurityManager");
+            // Ensure the JdkXmlConfig$CatalogHolder#catalog field is initialized.
+            Class<?> xmlSecurityManager = ReflectionUtil.lookupClass(false, "jdk.xml.internal.JdkXmlConfig$CatalogHolder");
             // The constructor call prepareCatalog which will call JdkCatalog#init.
-            ReflectionUtil.newInstance(xmlSecurityManager);
+            ReflectionUtil.readStaticField(xmlSecurityManager, "JDKCATALOG");
         }
     }
 }

From aa015d080784e9c310b7ed030fb645cec41aebca Mon Sep 17 00:00:00 2001
From: Yudi Zheng <yudi.zheng@oracle.com>
Date: Wed, 7 May 2025 20:55:22 +0200
Subject: [PATCH 2/2] Update galahad jdk

---
 common.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/common.json b/common.json
index 079e32a05816..2f5d3ed42f34 100644
--- a/common.json
+++ b/common.json
@@ -8,7 +8,7 @@
 
   "COMMENT.jdks": "When adding or removing JDKs keep in sync with JDKs in ci/common.jsonnet",
   "jdks": {
-    "galahad-jdk":        {"name": "jpg-jdk",   "version": "25",      "build_id": "jdk-25+22-2657", "platformspecific": true, "extrabundles": ["static-libs"]},
+    "galahad-jdk":        {"name": "jpg-jdk",   "version": "25",      "build_id": "jdk-25+23-2715", "platformspecific": true, "extrabundles": ["static-libs"]},
 
     "oraclejdk17":        {"name": "jpg-jdk",   "version": "17.0.7",  "build_id": "jdk-17.0.7+8", "platformspecific": true, "extrabundles": ["static-libs"]},
     "labsjdk-ce-17":      {"name": "labsjdk",   "version": "ce-17.0.7+4-jvmci-23.1-b02", "platformspecific": true },