2025-02-21 11:29:09 +08:00
|
|
|
From 9771982512066b47e42084ac61f714a6d8da5d6d Mon Sep 17 00:00:00 2001
|
|
|
|
|
Date: Sat, 30 Nov 2024 17:25:24 +0800
|
|
|
|
|
Subject: downgrade the glibc symver of memcpy
|
2022-04-26 10:42:28 +08:00
|
|
|
|
|
|
|
|
---
|
2025-02-21 11:29:09 +08:00
|
|
|
make/common/NativeCompilation.gmk | 9 +++++++++
|
|
|
|
|
make/hotspot/lib/CompileJvm.gmk | 15 ++++++++++++++
|
|
|
|
|
src/hotspot/share/runtime/memcpy.cpp | 20 +++++++++++++++++++
|
|
|
|
|
.../linux/native/applauncher/LinuxPackage.c | 3 +++
|
|
|
|
|
4 files changed, 47 insertions(+)
|
2022-04-26 10:42:28 +08:00
|
|
|
create mode 100644 src/hotspot/share/runtime/memcpy.cpp
|
|
|
|
|
|
|
|
|
|
diff --git a/make/common/NativeCompilation.gmk b/make/common/NativeCompilation.gmk
|
2025-02-21 11:29:09 +08:00
|
|
|
index 215d90d17..01c47dbb0 100644
|
2022-04-26 10:42:28 +08:00
|
|
|
--- a/make/common/NativeCompilation.gmk
|
|
|
|
|
+++ b/make/common/NativeCompilation.gmk
|
2025-02-21 11:29:09 +08:00
|
|
|
@@ -1133,6 +1133,15 @@ define SetupNativeCompilationBody
|
2022-04-26 10:42:28 +08:00
|
|
|
endif
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
+ # if ldflags contain --wrap=memcpy, add memcpy.o to OBJS
|
|
|
|
|
+ ifneq ($$(findstring wrap=memcpy, $$($1_LDFLAGS)$$($1_EXTRA_LDFLAGS)),)
|
|
|
|
|
+ ifeq ($$(findstring memcpy$(OBJ_SUFFIX), $$($1_ALL_OBJS)),)
|
|
|
|
|
+ $$($1_BUILD_INFO):
|
|
|
|
|
+ $(ECHO) 'Adding $(SUPPORT_OUTPUTDIR)/memcpy/memcpy$(OBJ_SUFFIX) to $1_ALL_OBJS'
|
|
|
|
|
+ $1_ALL_OBJS += $(SUPPORT_OUTPUTDIR)/memcpy/memcpy$(OBJ_SUFFIX)
|
|
|
|
|
+ endif
|
|
|
|
|
+ endif
|
|
|
|
|
+
|
|
|
|
|
$1_VARDEPS := $$($1_LD) $$($1_SYSROOT_LDFLAGS) $$($1_LDFLAGS) $$($1_EXTRA_LDFLAGS) \
|
|
|
|
|
$$($1_LIBS) $$($1_EXTRA_LIBS) $$($1_MT) \
|
|
|
|
|
$$($1_CREATE_DEBUGINFO_CMDS) $$($1_MANIFEST_VERSION) \
|
|
|
|
|
diff --git a/make/hotspot/lib/CompileJvm.gmk b/make/hotspot/lib/CompileJvm.gmk
|
2025-02-21 11:29:09 +08:00
|
|
|
index 230aa54f7..93af36d93 100644
|
2022-04-26 10:42:28 +08:00
|
|
|
--- a/make/hotspot/lib/CompileJvm.gmk
|
|
|
|
|
+++ b/make/hotspot/lib/CompileJvm.gmk
|
2025-02-21 11:29:09 +08:00
|
|
|
@@ -83,6 +83,13 @@ DISABLED_WARNINGS_gcc := parentheses comment unknown-pragmas address \
|
|
|
|
|
empty-body strict-overflow sequence-point maybe-uninitialized \
|
|
|
|
|
misleading-indentation cast-function-type shift-negative-value
|
|
|
|
|
|
|
|
|
|
+ifeq ($(DEBUG_LEVEL), fastdebug)
|
|
|
|
|
+ ifeq ($(call And, $(call isTargetOs, linux) $(call isTargetCpu, aarch64)), true)
|
|
|
|
|
+ # False positive warnings for atomic_linux_aarch64.hpp on GCC >= 12
|
|
|
|
|
+ DISABLED_WARNINGS_gcc += stringop-overflow
|
|
|
|
|
+ endif
|
|
|
|
|
+endif
|
|
|
|
|
+
|
|
|
|
|
ifeq ($(call check-jvm-feature, zero), true)
|
|
|
|
|
DISABLED_WARNINGS_gcc += return-type switch clobbered
|
|
|
|
|
endif
|
|
|
|
|
@@ -169,6 +176,14 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBJVM, \
|
2022-04-26 10:42:28 +08:00
|
|
|
PRECOMPILED_HEADER_EXCLUDE := $(JVM_PRECOMPILED_HEADER_EXCLUDE), \
|
|
|
|
|
))
|
|
|
|
|
|
|
|
|
|
+MEMCPY_OBJECT_FILE := $(JVM_OUTPUTDIR)/objs/memcpy$(OBJ_SUFFIX)
|
|
|
|
|
+
|
|
|
|
|
+$(eval $(call SetupCopyFiles, COPY_MEMCPY_OBJECT_FILE, \
|
|
|
|
|
+ DEST := $(SUPPORT_OUTPUTDIR)/memcpy, \
|
|
|
|
|
+ FILES :=$(MEMCPY_OBJECT_FILE), \
|
|
|
|
|
+))
|
|
|
|
|
+TARGETS += $(COPY_MEMCPY_OBJECT_FILE)
|
|
|
|
|
+
|
|
|
|
|
# Always recompile abstract_vm_version.cpp if libjvm needs to be relinked. This ensures
|
|
|
|
|
# that the internal vm version is updated as it relies on __DATE__ and __TIME__
|
|
|
|
|
# macros.
|
|
|
|
|
diff --git a/src/hotspot/share/runtime/memcpy.cpp b/src/hotspot/share/runtime/memcpy.cpp
|
|
|
|
|
new file mode 100644
|
2025-02-21 11:29:09 +08:00
|
|
|
index 000000000..6ab4ddb64
|
2022-04-26 10:42:28 +08:00
|
|
|
--- /dev/null
|
|
|
|
|
+++ b/src/hotspot/share/runtime/memcpy.cpp
|
|
|
|
|
@@ -0,0 +1,20 @@
|
|
|
|
|
+/*
|
|
|
|
|
+ * Copyright (c) Huawei Technologies Co., Ltd. 2018-2021. All rights reserved.
|
|
|
|
|
+ */
|
|
|
|
|
+
|
|
|
|
|
+#if defined( __GNUC__ ) && \
|
|
|
|
|
+(__GNUC__ >= 5 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7))
|
|
|
|
|
+#include <string.h>
|
|
|
|
|
+
|
|
|
|
|
+#if (defined AMD64) || (defined amd64)
|
|
|
|
|
+/* some systems do not have newest memcpy@@GLIBC_2.14 - stay with old good one */
|
|
|
|
|
+asm (".symver memcpy, memcpy@GLIBC_2.2.5");
|
|
|
|
|
+
|
|
|
|
|
+extern "C"{
|
|
|
|
|
+ void *__wrap_memcpy(void *dest, const void *src, size_t n)
|
|
|
|
|
+ {
|
|
|
|
|
+ return memcpy(dest, src, n);
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+#endif
|
|
|
|
|
+#endif
|
|
|
|
|
diff --git a/src/jdk.jpackage/linux/native/applauncher/LinuxPackage.c b/src/jdk.jpackage/linux/native/applauncher/LinuxPackage.c
|
2025-02-21 11:29:09 +08:00
|
|
|
index 26d65f806..b7b114ac3 100644
|
2022-04-26 10:42:28 +08:00
|
|
|
--- a/src/jdk.jpackage/linux/native/applauncher/LinuxPackage.c
|
|
|
|
|
+++ b/src/jdk.jpackage/linux/native/applauncher/LinuxPackage.c
|
2025-02-21 11:29:09 +08:00
|
|
|
@@ -34,6 +34,9 @@
|
2022-04-26 10:42:28 +08:00
|
|
|
#include "JvmLauncher.h"
|
|
|
|
|
#include "LinuxPackage.h"
|
|
|
|
|
|
|
|
|
|
+#if (defined AMD64) || (defined amd64)
|
|
|
|
|
+__asm__(".symver memcpy, memcpy@GLIBC_2.2.5");
|
|
|
|
|
+#endif
|
|
|
|
|
|
|
|
|
|
static char* getModulePath(void) {
|
|
|
|
|
char modulePath[PATH_MAX] = { 0 };
|
|
|
|
|
--
|
2025-02-21 11:29:09 +08:00
|
|
|
2.33.0
|
2022-04-26 10:42:28 +08:00
|
|
|
|