From 1c5a43f4313fec9410e04cf94dcb83660d6d9ae8 Mon Sep 17 00:00:00 2001 From: MBaesken Date: Fri, 14 Nov 2025 12:23:30 +0100 Subject: [PATCH 1/3] JDK-8371893 --- make/autoconf/flags-ldflags.m4 | 3 +++ 1 file changed, 3 insertions(+) diff --git a/make/autoconf/flags-ldflags.m4 b/make/autoconf/flags-ldflags.m4 index 66f8904db8911..3eba9cc4ff384 100644 --- a/make/autoconf/flags-ldflags.m4 +++ b/make/autoconf/flags-ldflags.m4 @@ -98,6 +98,9 @@ AC_DEFUN([FLAGS_SETUP_LDFLAGS_HELPER], # Setup OS-dependent LDFLAGS if test "x$OPENJDK_TARGET_OS" = xmacosx && test "x$TOOLCHAIN_TYPE" = xclang; then + if test "x$OPENJDK_TARGET_CPU" = xaarch64; then + BASIC_LDFLAGS="$BASIC_LDFLAGS -Wl,-dead_strip" + fi # FIXME: We should really generalize SetSharedLibraryOrigin instead. OS_LDFLAGS_JVM_ONLY="-Wl,-rpath,@loader_path/. -Wl,-rpath,@loader_path/.." OS_LDFLAGS="-mmacosx-version-min=$MACOSX_VERSION_MIN -Wl,-reproducible" From 07251ffec51e24061cf35c1dfc14dc59b69ab050 Mon Sep 17 00:00:00 2001 From: MBaesken Date: Thu, 20 Nov 2025 15:53:17 +0100 Subject: [PATCH 2/3] _ZTV8Metadata should not be eliminated --- src/hotspot/share/oops/metadata.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/hotspot/share/oops/metadata.cpp b/src/hotspot/share/oops/metadata.cpp index 8f86be292bd28..41c26901dec69 100644 --- a/src/hotspot/share/oops/metadata.cpp +++ b/src/hotspot/share/oops/metadata.cpp @@ -26,6 +26,16 @@ #include "oops/metadata.hpp" #include "prims/jvmtiRedefineClasses.hpp" +extern void* _ZTV8Metadata[]; + +// avoid code stripping which disturbs the serviceability agent +#if defined(__APPLE__) +__attribute__((used)) +#endif + void* dead_strip_helper() { + return _ZTV8Metadata[0]; +} + void Metadata::set_on_stack(const bool value) { // nothing to set for most metadata // Can't inline because this materializes the vtable on some C++ compilers. From b41966b8d3f1ed3e27271844eeb91b38b61292c2 Mon Sep 17 00:00:00 2001 From: MBaesken Date: Thu, 20 Nov 2025 16:55:18 +0100 Subject: [PATCH 3/3] Fix Windows issues --- src/hotspot/share/oops/metadata.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/hotspot/share/oops/metadata.cpp b/src/hotspot/share/oops/metadata.cpp index 41c26901dec69..3157c33144aaa 100644 --- a/src/hotspot/share/oops/metadata.cpp +++ b/src/hotspot/share/oops/metadata.cpp @@ -26,15 +26,15 @@ #include "oops/metadata.hpp" #include "prims/jvmtiRedefineClasses.hpp" +#if defined(__APPLE__) extern void* _ZTV8Metadata[]; // avoid code stripping which disturbs the serviceability agent -#if defined(__APPLE__) __attribute__((used)) -#endif void* dead_strip_helper() { return _ZTV8Metadata[0]; } +#endif void Metadata::set_on_stack(const bool value) { // nothing to set for most metadata