I4ZWEI: reconstruct applying of memcpy.o used by lib compilations

This commit is contained in:
eapen 2022-03-29 15:54:18 +08:00
parent 7f093fd081
commit 39b4771193
6 changed files with 89 additions and 977 deletions

View File

@ -14,7 +14,7 @@ Bug url: NA
make/autoconf/spec.gmk.in | 1 +
make/common/Modules.gmk | 13 +
make/copy/Copy-jdk.crypto.kaeprovider.gmk | 46 +
make/lib/Lib-jdk.crypto.kaeprovider.gmk | 51 ++
make/lib/Lib-jdk.crypto.kaeprovider.gmk | 45 ++
make/nb_native/nbproject/configurations.xml | 104 +++
src/java.base/share/classes/module-info.java | 10 +-
.../share/lib/security/default.policy | 5 +
@ -82,7 +82,7 @@ Bug url: NA
.../openssl/RSASignatureBenchmark.java | 90 ++
.../bench/security/openssl/SM3Benchmark.java | 98 +++
.../bench/security/openssl/SM4Benchmark.java | 157 ++++
74 files changed, 10539 insertions(+), 4 deletions(-)
74 files changed, 10533 insertions(+), 4 deletions(-)
create mode 100644 make/copy/Copy-jdk.crypto.kaeprovider.gmk
create mode 100644 make/lib/Lib-jdk.crypto.kaeprovider.gmk
create mode 100644 src/jdk.crypto.kaeprovider/linux/classes/module-info.java
@ -298,7 +298,7 @@ new file mode 100644
index 000000000..516a957d0
--- /dev/null
+++ b/make/lib/Lib-jdk.crypto.kaeprovider.gmk
@@ -0,0 +1,51 @@
@@ -0,0 +1,45 @@
+#
+# Copyright (c) 2021, Huawei Technologies Co., Ltd. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@ -326,11 +326,6 @@ index 000000000..516a957d0
+
+include LibCommon.gmk
+
+LIBMEMCPY_FILES += \
+ $(addprefix $(TOPDIR)/src/hotspot/share/runtime/, \
+ memcpy.cpp \
+ )
+
+################################################################################
+
+ifeq ($(ENABLE_KAE), true)
@ -338,7 +333,6 @@ index 000000000..516a957d0
+ $(eval $(call SetupJdkLibrary, BUILD_LIBJ2KAE, \
+ NAME := j2kae, \
+ OPTIMIZATION := LOW, \
+ EXTRA_FILES := $(LIBMEMCPY_FILES), \
+ CFLAGS := $(CFLAGS_JDKLIB), \
+ LDFLAGS := $(LDFLAGS_JDKLIB) \
+ $(call SET_SHARED_LIBRARY_ORIGIN), \

View File

@ -1,23 +0,0 @@
From ae703c0e86c278359f1bddcf35ccba87b556d901 Mon Sep 17 00:00:00 2001
Date: Thu, 18 Mar 2021 12:37:11 +0000
Subject: [PATCH 4/4] Fix the memcpy symbol issue during JDK11 x64 build
---
make/lib/Awt2dLibraries.gmk | 1 +
1 file changed, 1 insertion(+)
diff --git a/make/lib/Awt2dLibraries.gmk b/make/lib/Awt2dLibraries.gmk
index 207a459ae..7b0441507 100644
--- a/make/lib/Awt2dLibraries.gmk
+++ b/make/lib/Awt2dLibraries.gmk
@@ -597,6 +597,7 @@ else
$(eval $(call SetupJdkLibrary, BUILD_LIBHARFBUZZ, \
NAME := harfbuzz, \
EXCLUDE_FILES := $(LIBHARFBUZZ_EXCLUDE_FILES), \
+ EXTRA_FILES := $(LIBMEMCPY_FILES), \
TOOLCHAIN := TOOLCHAIN_LINK_CXX, \
CFLAGS := $(CFLAGS_JDKLIB) $(LIBHARFBUZZ_CFLAGS), \
CXXFLAGS := $(CXXFLAGS_JDKLIB) $(LIBHARFBUZZ_CFLAGS), \
--
2.19.0

View File

@ -0,0 +1,80 @@
From cb846e5c0f8063054d4188b2aa833e20bce72530 Mon Sep 17 00:00:00 2001
From: zhangyipeng <zhangyipeng7@huawei.com>
Date: Fri, 18 Mar 2022 16:55:46 +0800
Subject: [PATCH] [Huawei]downgrade the symver of memcpy@GLIBC_2.14 on x64
Signed-off-by: Sun Jianye <sunjianye@huawei.com>
---
make/common/NativeCompilation.gmk | 9 +++++++++
make/hotspot/lib/CompileJvm.gmk | 7 +++++++
src/hotspot/share/runtime/memcpy.cpp | 20 ++++++++++++++++++++
3 files changed, 36 insertions(+)
create mode 100644 src/hotspot/share/runtime/memcpy.cpp
diff --git a/make/common/NativeCompilation.gmk b/make/common/NativeCompilation.gmk
index 490a7f4..6a9209d 100644
--- a/make/common/NativeCompilation.gmk
+++ b/make/common/NativeCompilation.gmk
@@ -1132,6 +1132,15 @@ define SetupNativeCompilationBody
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) \
$$(GLOBAL_LIBS) $$($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
index 5942540..0e7f42f 100644
--- a/make/hotspot/lib/CompileJvm.gmk
+++ b/make/hotspot/lib/CompileJvm.gmk
@@ -179,6 +179,13 @@ $(eval $(call SetupNativeCompilation, BUILD_LIBJVM, \
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
index 0000000..0fe4fa3
--- /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
--
1.8.3.1

View File

@ -1,550 +0,0 @@
From 7a3481adb5e52f1fadb6c8a1e16093d9c1082868 Mon Sep 17 00:00:00 2001
From: s00478819 <sunjianye@huawei.com>
Date: Thu, 28 Oct 2021 11:54:21 +0800
Subject: [PATCH 2/3] fix memcpy compile warning when building on linux x86
---
make/hotspot/lib/CompileJvm.gmk | 7 +++++++
make/launcher/Launcher-java.base.gmk | 9 ++-------
make/launcher/Launcher-jdk.pack.gmk | 7 +------
make/lib/Awt2dLibraries.gmk | 17 ++++++++---------
make/lib/CoreLibraries.gmk | 17 ++++++-----------
make/lib/Lib-java.base.gmk | 7 +------
make/lib/Lib-java.desktop.gmk | 7 +------
make/lib/Lib-java.instrument.gmk | 7 +------
make/lib/Lib-jdk.crypto.cryptoki.gmk | 7 +------
make/lib/Lib-jdk.crypto.ec.gmk | 7 +------
make/lib/Lib-jdk.crypto.kaeprovider.gmk | 7 +------
make/lib/Lib-jdk.hotspot.agent.gmk | 7 +------
make/lib/Lib-jdk.jdwp.agent.gmk | 7 +------
make/lib/Lib-jdk.pack.gmk | 7 +------
make/lib/Lib-jdk.sctp.gmk | 7 +------
src/hotspot/share/runtime/memcpy.cpp | 2 +-
16 files changed, 35 insertions(+), 94 deletions(-)
diff --git a/make/hotspot/lib/CompileJvm.gmk b/make/hotspot/lib/CompileJvm.gmk
index 594254014..fdb228c3f 100644
--- a/make/hotspot/lib/CompileJvm.gmk
+++ b/make/hotspot/lib/CompileJvm.gmk
@@ -179,6 +179,13 @@ $(eval $(call SetupNativeCompilation, BUILD_LIBJVM, \
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), \
+ 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/make/launcher/Launcher-java.base.gmk b/make/launcher/Launcher-java.base.gmk
index d511c0be5..e7f6b04d8 100644
--- a/make/launcher/Launcher-java.base.gmk
+++ b/make/launcher/Launcher-java.base.gmk
@@ -30,11 +30,6 @@ $(eval $(call IncludeCustomExtension, launcher/Launcher-java.base.gmk))
JAVA_RC_FLAGS += -I$(TOPDIR)/src/java.base/windows/native/common
JAVA_RC_FLAGS += -I$(TOPDIR)/src/java.base/windows/native/launcher/icons
-LIBMEMCPY_FILES += \
- $(addprefix $(TOPDIR)/src/hotspot/share/runtime/, \
- memcpy.cpp \
- )
-
################################################################################
$(eval $(call SetupBuildLauncher, java, \
@@ -84,10 +79,10 @@ ifneq ($(findstring $(OPENJDK_TARGET_OS), macosx solaris aix linux), )
$(eval $(call SetupJdkExecutable, BUILD_JSPAWNHELPER, \
NAME := jspawnhelper, \
SRC := $(TOPDIR)/src/$(MODULE)/unix/native/jspawnhelper, \
- EXTRA_FILES := $(LIBMEMCPY_FILES), \
OPTIMIZATION := LOW, \
CFLAGS := $(CFLAGS_JDKEXE) -I$(TOPDIR)/src/$(MODULE)/unix/native/libjava, \
- EXTRA_OBJECT_FILES := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjava/childproc.o, \
+ EXTRA_OBJECT_FILES := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjava/childproc.o \
+ $(SUPPORT_OUTPUTDIR)/memcpy$(OBJ_SUFFIX), \
LDFLAGS := $(LDFLAGS_JDKEXE), \
OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/modules_libs/$(MODULE), \
))
diff --git a/make/launcher/Launcher-jdk.pack.gmk b/make/launcher/Launcher-jdk.pack.gmk
index 2e0bc7a5b..0f4b47174 100644
--- a/make/launcher/Launcher-jdk.pack.gmk
+++ b/make/launcher/Launcher-jdk.pack.gmk
@@ -30,11 +30,6 @@ $(eval $(call SetupBuildLauncher, pack200, \
MAIN_CLASS := com.sun.java.util.jar.pack.Driver, \
))
-LIBMEMCPY_FILES += \
- $(addprefix $(TOPDIR)/src/hotspot/share/runtime/, \
- memcpy.cpp \
- )
-
################################################################################
# The order of the object files on the link command line affects the size of the resulting
# binary (at least on linux) which causes the size to differ between old and new build.
@@ -86,7 +81,6 @@ $(eval $(call SetupJdkExecutable, BUILD_UNPACKEXE, \
SRC := $(UNPACKEXE_SRC), \
TOOLCHAIN := TOOLCHAIN_LINK_CXX, \
OPTIMIZATION := LOW, \
- EXTRA_FILES := $(LIBMEMCPY_FILES), \
CFLAGS := $(UNPACKEXE_CFLAGS) $(CXXFLAGS_JDKEXE) -DFULL, \
CFLAGS_release := -DPRODUCT, \
CFLAGS_linux := -fPIC, \
@@ -99,6 +93,7 @@ $(eval $(call SetupJdkExecutable, BUILD_UNPACKEXE, \
MANIFEST := $(TOPDIR)/src/jdk.pack/windows/native/unpack200/unpack200_proto.exe.manifest, \
MANIFEST_VERSION := $(VERSION_NUMBER_FOUR_POSITIONS), \
EXTRA_OBJECT_FILES := $(UNPACKEXE_ZIPOBJS) \
+ $(SUPPORT_OUTPUTDIR)/memcpy$(OBJ_SUFFIX) \
))
TARGETS += $(BUILD_UNPACKEXE)
diff --git a/make/lib/Awt2dLibraries.gmk b/make/lib/Awt2dLibraries.gmk
index ff4dead2a..f66cd6617 100644
--- a/make/lib/Awt2dLibraries.gmk
+++ b/make/lib/Awt2dLibraries.gmk
@@ -35,11 +35,6 @@ LIBAWT_DEFAULT_HEADER_DIRS := \
libawt/java2d/pipe \
#
-LIBMEMCPY_FILES += \
- $(addprefix $(TOPDIR)/src/hotspot/share/runtime/, \
- memcpy.cpp \
- )
-
################################################################################
# We must not include java.desktop/unix/native/libmlib_image, which is only
@@ -55,8 +50,8 @@ endif
$(eval $(call SetupJdkLibrary, BUILD_LIBMLIB_IMAGE, \
NAME := mlib_image, \
EXTRA_SRC := common/awt/medialib, \
- EXTRA_FILES := $(LIBMEMCPY_FILES), \
EXCLUDE_FILES := mlib_c_ImageBlendTable.c, \
+ EXTRA_OBJECT_FILES := $(SUPPORT_OUTPUTDIR)/memcpy$(OBJ_SUFFIX), \
EXCLUDE_SRC_PATTERNS := $(BUILD_LIBMLIB_EXCLUDE_SRC_PATTERNS), \
OPTIMIZATION := HIGHEST, \
CFLAGS := $(CFLAGS_JDKLIB) \
@@ -225,12 +220,12 @@ endif
$(eval $(call SetupJdkLibrary, BUILD_LIBAWT, \
NAME := awt, \
EXTRA_SRC := $(LIBAWT_EXTRA_SRC), \
- EXTRA_FILES := $(LIBMEMCPY_FILES), \
EXCLUDES := $(LIBAWT_EXCLUDES), \
EXCLUDE_FILES := $(LIBAWT_EXFILES), \
OPTIMIZATION := LOW, \
CFLAGS := $(CFLAGS_JDKLIB) $(LIBAWT_CFLAGS), \
EXTRA_HEADER_DIRS := $(LIBAWT_EXTRA_HEADER_DIRS), \
+ EXTRA_OBJECT_FILES := $(SUPPORT_OUTPUTDIR)/memcpy$(OBJ_SUFFIX), \
DISABLED_WARNINGS_gcc := sign-compare unused-result maybe-uninitialized \
format-nonliteral parentheses, \
DISABLED_WARNINGS_clang := logical-op-parentheses extern-initializer, \
@@ -334,6 +329,7 @@ ifeq ($(findstring $(OPENJDK_TARGET_OS), windows macosx), )
EXTRA_SRC := $(LIBAWT_XAWT_EXTRA_SRC), \
EXTRA_HEADER_DIRS := $(LIBAWT_XAWT_EXTRA_HEADER_DIRS), \
EXCLUDES := $(LIBAWT_XAWT_EXCLUDES), \
+ EXTRA_OBJECT_FILES := $(SUPPORT_OUTPUTDIR)/memcpy$(OBJ_SUFFIX), \
OPTIMIZATION := LOW, \
CFLAGS := $(CFLAGS_JDKLIB) $(LIBAWT_XAWT_CFLAGS) \
$(X_CFLAGS), \
@@ -396,6 +392,7 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBLCMS, \
common/awt/debug \
libawt/java2d, \
HEADERS_FROM_SRC := $(LIBLCMS_HEADERS_FROM_SRC), \
+ EXTRA_OBJECT_FILES := $(SUPPORT_OUTPUTDIR)/memcpy$(OBJ_SUFFIX), \
DISABLED_WARNINGS_gcc := format-nonliteral type-limits misleading-indentation stringop-truncation, \
DISABLED_WARNINGS_clang := tautological-compare, \
DISABLED_WARNINGS_solstudio := E_STATEMENT_NOT_REACHED, \
@@ -437,7 +434,7 @@ endif
$(eval $(call SetupJdkLibrary, BUILD_LIBJAVAJPEG, \
NAME := javajpeg, \
INCLUDE_FILES := $(BUILD_LIBJAVAJPEG_INCLUDE_FILES), \
- EXTRA_FILES := $(LIBMEMCPY_FILES), \
+ EXTRA_OBJECT_FILES := $(SUPPORT_OUTPUTDIR)/memcpy$(OBJ_SUFFIX), \
OPTIMIZATION := HIGHEST, \
CFLAGS := $(CFLAGS_JDKLIB), \
HEADERS_FROM_SRC := $(LIBJPEG_HEADERS_FROM_SRC), \
@@ -528,6 +525,7 @@ else
OPTIMIZATION := HIGHEST, \
CFLAGS := $(CFLAGS_JDKLIB) \
$(BUILD_LIBFREETYPE_CFLAGS), \
+ EXTRA_OBJECT_FILES := $(SUPPORT_OUTPUTDIR)/memcpy$(OBJ_SUFFIX), \
EXTRA_HEADER_DIRS := $(BUILD_LIBFREETYPE_HEADER_DIRS), \
DISABLED_WARNINGS_solstudio := \
E_STATEMENT_NOT_REACHED \
@@ -642,6 +640,7 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBFONTMANAGER, \
OPTIMIZATION := $(LIBFONTMANAGER_OPTIMIZATION), \
CFLAGS_windows = -DCC_NOEX, \
EXTRA_HEADER_DIRS := $(LIBFONTMANAGER_EXTRA_HEADER_DIRS), \
+ EXTRA_OBJECT_FILES := $(SUPPORT_OUTPUTDIR)/memcpy$(OBJ_SUFFIX), \
EXTRA_SRC := $(LIBFONTMANAGER_EXTRA_SRC), \
WARNINGS_AS_ERRORS_xlc := false, \
DISABLED_WARNINGS_gcc := sign-compare unused-function int-to-pointer-cast $(HARFBUZZ_DISABLED_WARNINGS_gcc), \
@@ -867,10 +866,10 @@ ifeq ($(ENABLE_HEADLESS_ONLY), false)
NAME := splashscreen, \
EXTRA_SRC := $(LIBSPLASHSCREEN_EXTRA_SRC), \
EXCLUDE_SRC_PATTERNS := $(LIBSPLASHSCREEN_EXCLUDE_SRC_PATTERNS), \
- EXTRA_FILES := $(LIBMEMCPY_FILES), \
EXCLUDE_FILES := imageioJPEG.c jpegdecoder.c pngtest.c, \
EXCLUDES := $(LIBSPLASHSCREEN_EXCLUDES), \
OPTIMIZATION := LOW, \
+ EXTRA_OBJECT_FILES := $(SUPPORT_OUTPUTDIR)/memcpy$(OBJ_SUFFIX), \
CFLAGS := $(CFLAGS_JDKLIB) $(LIBSPLASHSCREEN_CFLAGS) \
$(GIFLIB_CFLAGS) $(LIBJPEG_CFLAGS) $(PNG_CFLAGS) $(LIBZ_CFLAGS), \
EXTRA_HEADER_DIRS := $(LIBSPLASHSCREEN_HEADER_DIRS), \
diff --git a/make/lib/CoreLibraries.gmk b/make/lib/CoreLibraries.gmk
index f180a28c3..2f2f46240 100644
--- a/make/lib/CoreLibraries.gmk
+++ b/make/lib/CoreLibraries.gmk
@@ -28,11 +28,6 @@ WIN_VERIFY_LIB := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libverify/verify.lib
# Hook to include the corresponding custom file, if present.
$(eval $(call IncludeCustomExtension, lib/CoreLibraries.gmk))
-LIBMEMCPY_FILES += \
- $(addprefix $(TOPDIR)/src/hotspot/share/runtime/, \
- memcpy.cpp \
- )
-
##########################################################################################
# libfdlibm is statically linked with libjava below and not delivered into the
@@ -80,8 +75,8 @@ endif
$(eval $(call SetupJdkLibrary, BUILD_LIBVERIFY, \
NAME := verify, \
+ EXTRA_OBJECT_FILES := $(SUPPORT_OUTPUTDIR)/memcpy$(OBJ_SUFFIX), \
OPTIMIZATION := $(LIBVERIFY_OPTIMIZATION), \
- EXTRA_FILES := $(LIBMEMCPY_FILES), \
CFLAGS := $(CFLAGS_JDKLIB), \
DISABLED_WARNINGS_gcc := implicit-fallthrough, \
DISABLED_WARNINGS_microsoft := 4244 4267, \
@@ -102,16 +97,15 @@ ifeq ($(OPENJDK_TARGET_OS), macosx)
BUILD_LIBJAVA_java_props_macosx.c_CFLAGS := -x objective-c
endif
-
$(eval $(call SetupJdkLibrary, BUILD_LIBJAVA, \
NAME := java, \
OPTIMIZATION := HIGH, \
- EXTRA_FILES := $(LIBMEMCPY_FILES), \
CFLAGS := $(CFLAGS_JDKLIB) \
$(LIBJAVA_CFLAGS), \
System.c_CFLAGS := $(VERSION_CFLAGS), \
jdk_util.c_CFLAGS := $(VERSION_CFLAGS), \
EXTRA_HEADER_DIRS := libfdlibm, \
+ EXTRA_OBJECT_FILES := $(SUPPORT_OUTPUTDIR)/memcpy$(OBJ_SUFFIX), \
WARNINGS_AS_ERRORS_xlc := false, \
DISABLED_WARNINGS_gcc := unused-result, \
DISABLED_WARNINGS_solstudio := E_STATEMENT_NOT_REACHED, \
@@ -152,8 +146,8 @@ endif
$(eval $(call SetupJdkLibrary, BUILD_LIBZIP, \
NAME := zip, \
OPTIMIZATION := LOW, \
- EXTRA_FILES := $(LIBMEMCPY_FILES), \
EXCLUDES := $(LIBZIP_EXCLUDES), \
+ EXTRA_OBJECT_FILES := $(SUPPORT_OUTPUTDIR)/memcpy$(OBJ_SUFFIX), \
CFLAGS := $(CFLAGS_JDKLIB) \
$(LIBZ_CFLAGS), \
CFLAGS_unix := $(BUILD_LIBZIP_MMAP) -UDEBUG, \
@@ -173,8 +167,8 @@ TARGETS += $(BUILD_LIBZIP)
$(eval $(call SetupJdkLibrary, BUILD_LIBJIMAGE, \
NAME := jimage, \
TOOLCHAIN := TOOLCHAIN_LINK_CXX, \
+ EXTRA_OBJECT_FILES := $(SUPPORT_OUTPUTDIR)/memcpy$(OBJ_SUFFIX), \
OPTIMIZATION := LOW, \
- EXTRA_FILES := $(LIBMEMCPY_FILES), \
CFLAGS := $(CFLAGS_JDKLIB), \
CXXFLAGS := $(CXXFLAGS_JDKLIB), \
CFLAGS_unix := -UDEBUG, \
@@ -246,7 +240,8 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBJLI, \
NAME := jli, \
OUTPUT_DIR := $(LIBJLI_OUTPUT_DIR), \
EXCLUDE_FILES := $(LIBJLI_EXCLUDE_FILES), \
- EXTRA_FILES := $(LIBJLI_EXTRA_FILES) $(LIBMEMCPY_FILES), \
+ EXTRA_FILES := $(LIBJLI_EXTRA_FILES), \
+ EXTRA_OBJECT_FILES := $(SUPPORT_OUTPUTDIR)/memcpy$(OBJ_SUFFIX), \
OPTIMIZATION := HIGH, \
CFLAGS := $(CFLAGS_JDKLIB) $(LIBJLI_CFLAGS), \
DISABLED_WARNINGS_gcc := unused-function implicit-fallthrough, \
diff --git a/make/lib/Lib-java.base.gmk b/make/lib/Lib-java.base.gmk
index 0c888b65c..6f21969d0 100644
--- a/make/lib/Lib-java.base.gmk
+++ b/make/lib/Lib-java.base.gmk
@@ -36,18 +36,13 @@ $(call FillFindCache, $(wildcard $(TOPDIR)/src/java.base/*/native))
include CoreLibraries.gmk
-LIBMEMCPY_FILES += \
- $(addprefix $(TOPDIR)/src/hotspot/share/runtime/, \
- memcpy.cpp \
- )
-
################################################################################
# Create the network library
$(eval $(call SetupJdkLibrary, BUILD_LIBNET, \
NAME := net, \
OPTIMIZATION := LOW, \
- EXTRA_FILES := $(LIBMEMCPY_FILES), \
+ EXTRA_OBJECT_FILES := $(SUPPORT_OUTPUTDIR)/memcpy$(OBJ_SUFFIX), \
CFLAGS := $(CFLAGS_JDKLIB), \
DISABLED_WARNINGS_gcc := format-nonliteral, \
DISABLED_WARNINGS_clang := parentheses-equality constant-logical-operand, \
diff --git a/make/lib/Lib-java.desktop.gmk b/make/lib/Lib-java.desktop.gmk
index 932e0b3e8..e7f8d9208 100644
--- a/make/lib/Lib-java.desktop.gmk
+++ b/make/lib/Lib-java.desktop.gmk
@@ -36,11 +36,6 @@ $(call FillFindCache, $(wildcard $(TOPDIR)/src/java.desktop/*/native))
include Awt2dLibraries.gmk
-LIBMEMCPY_FILES += \
- $(addprefix $(TOPDIR)/src/hotspot/share/runtime/, \
- memcpy.cpp \
- )
-
################################################################################
# Create the libjsound library
@@ -68,7 +63,7 @@ ifneq ($(OPENJDK_TARGET_OS), aix)
NAME := jsound, \
TOOLCHAIN := $(LIBJSOUND_TOOLCHAIN), \
OPTIMIZATION := LOW, \
- EXTRA_FILES := $(LIBMEMCPY_FILES), \
+ EXTRA_OBJECT_FILES := $(SUPPORT_OUTPUTDIR)/memcpy$(OBJ_SUFFIX), \
CFLAGS := $(CFLAGS_JDKLIB) \
$(LIBJSOUND_CFLAGS), \
CXXFLAGS := $(CXXFLAGS_JDKLIB) $(LIBJSOUND_CFLAGS), \
diff --git a/make/lib/Lib-java.instrument.gmk b/make/lib/Lib-java.instrument.gmk
index 6e679b500..012893a11 100644
--- a/make/lib/Lib-java.instrument.gmk
+++ b/make/lib/Lib-java.instrument.gmk
@@ -36,19 +36,14 @@ ifeq ($(OPENJDK_TARGET_OS), windows)
WINDOWS_JLI_LIB := $(SUPPORT_OUTPUTDIR)/native/java.base/libjli/jli.lib
endif
-LIBMEMCPY_FILES += \
- $(addprefix $(TOPDIR)/src/hotspot/share/runtime/, \
- memcpy.cpp \
- )
-
$(eval $(call SetupJdkLibrary, BUILD_LIBINSTRUMENT, \
NAME := instrument, \
OPTIMIZATION := LOW, \
- EXTRA_FILES := $(LIBMEMCPY_FILES), \
CFLAGS := $(CFLAGS_JDKLIB) $(LIBINSTRUMENT_CFLAGS), \
CFLAGS_debug := -DJPLIS_LOGGING, \
CFLAGS_release := -DNO_JPLIS_LOGGING, \
EXTRA_HEADER_DIRS := java.base:libjli, \
+ EXTRA_OBJECT_FILES := $(SUPPORT_OUTPUTDIR)/memcpy$(OBJ_SUFFIX), \
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN) \
$(LIBINSTRUMENT_LDFLAGS), \
diff --git a/make/lib/Lib-jdk.crypto.cryptoki.gmk b/make/lib/Lib-jdk.crypto.cryptoki.gmk
index 6c23857e1..e37b2632e 100644
--- a/make/lib/Lib-jdk.crypto.cryptoki.gmk
+++ b/make/lib/Lib-jdk.crypto.cryptoki.gmk
@@ -25,17 +25,12 @@
include LibCommon.gmk
-LIBMEMCPY_FILES += \
- $(addprefix $(TOPDIR)/src/hotspot/share/runtime/, \
- memcpy.cpp \
- )
-
################################################################################
$(eval $(call SetupJdkLibrary, BUILD_LIBJ2PKCS11, \
NAME := j2pkcs11, \
OPTIMIZATION := LOW, \
- EXTRA_FILES := $(LIBMEMCPY_FILES), \
+ EXTRA_OBJECT_FILES := $(SUPPORT_OUTPUTDIR)/memcpy$(OBJ_SUFFIX), \
CFLAGS := $(CFLAGS_JDKLIB), \
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
diff --git a/make/lib/Lib-jdk.crypto.ec.gmk b/make/lib/Lib-jdk.crypto.ec.gmk
index 4137a371d..50eede676 100644
--- a/make/lib/Lib-jdk.crypto.ec.gmk
+++ b/make/lib/Lib-jdk.crypto.ec.gmk
@@ -25,11 +25,6 @@
include LibCommon.gmk
-LIBMEMCPY_FILES += \
- $(addprefix $(TOPDIR)/src/hotspot/share/runtime/, \
- memcpy.cpp \
- )
-
################################################################################
ifeq ($(ENABLE_INTREE_EC), true)
@@ -47,7 +42,7 @@ ifeq ($(ENABLE_INTREE_EC), true)
NAME := sunec, \
TOOLCHAIN := TOOLCHAIN_LINK_CXX, \
OPTIMIZATION := LOW, \
- EXTRA_FILES := $(LIBMEMCPY_FILES), \
+ EXTRA_OBJECT_FILES := $(SUPPORT_OUTPUTDIR)/memcpy$(OBJ_SUFFIX), \
CFLAGS := $(BUILD_LIBSUNEC_CFLAGS_JDKLIB) \
-DMP_API_COMPATIBLE -DNSS_ECC_MORE_THAN_SUITE_B, \
CXXFLAGS := $(BUILD_LIBSUNEC_CXXFLAGS_JDKLIB), \
diff --git a/make/lib/Lib-jdk.crypto.kaeprovider.gmk b/make/lib/Lib-jdk.crypto.kaeprovider.gmk
index 516a957d0..627149944 100644
--- a/make/lib/Lib-jdk.crypto.kaeprovider.gmk
+++ b/make/lib/Lib-jdk.crypto.kaeprovider.gmk
@@ -25,11 +25,6 @@
include LibCommon.gmk
-LIBMEMCPY_FILES += \
- $(addprefix $(TOPDIR)/src/hotspot/share/runtime/, \
- memcpy.cpp \
- )
-
################################################################################
ifeq ($(ENABLE_KAE), true)
@@ -37,7 +32,7 @@ ifeq ($(ENABLE_KAE), true)
$(eval $(call SetupJdkLibrary, BUILD_LIBJ2KAE, \
NAME := j2kae, \
OPTIMIZATION := LOW, \
- EXTRA_FILES := $(LIBMEMCPY_FILES), \
+ EXTRA_OBJECT_FILES := $(SUPPORT_OUTPUTDIR)/memcpy$(OBJ_SUFFIX), \
CFLAGS := $(CFLAGS_JDKLIB), \
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
diff --git a/make/lib/Lib-jdk.hotspot.agent.gmk b/make/lib/Lib-jdk.hotspot.agent.gmk
index 64fb999a9..e0b21ec4f 100644
--- a/make/lib/Lib-jdk.hotspot.agent.gmk
+++ b/make/lib/Lib-jdk.hotspot.agent.gmk
@@ -27,11 +27,6 @@ include LibCommon.gmk
$(eval $(call IncludeCustomExtension, hotspot/lib/Lib-jdk.hotspot.agent.gmk))
-LIBMEMCPY_FILES += \
- $(addprefix $(TOPDIR)/src/hotspot/share/runtime/, \
- memcpy.cpp \
- )
-
################################################################################
ifeq ($(OPENJDK_TARGET_OS), linux)
@@ -63,13 +58,13 @@ endif
$(eval $(call SetupJdkLibrary, BUILD_LIBSA, \
NAME := saproc, \
OPTIMIZATION := HIGH, \
- EXTRA_FILES := $(LIBMEMCPY_FILES), \
DISABLED_WARNINGS_microsoft := 4267, \
DISABLED_WARNINGS_gcc := sign-compare, \
DISABLED_WARNINGS_CXX_solstudio := truncwarn unknownpragma, \
CFLAGS := $(CFLAGS_JDKLIB) $(SA_CFLAGS), \
CXXFLAGS := $(CXXFLAGS_JDKLIB) $(SA_CFLAGS) $(SA_CXXFLAGS), \
EXTRA_SRC := $(LIBSA_EXTRA_SRC), \
+ EXTRA_OBJECT_FILES := $(SUPPORT_OUTPUTDIR)/memcpy$(OBJ_SUFFIX), \
LDFLAGS := $(LDFLAGS_JDKLIB) $(SA_LDFLAGS), \
LIBS_linux := $(LIBDL), \
LIBS_solaris := -ldl -ldemangle -lthread -lproc, \
diff --git a/make/lib/Lib-jdk.jdwp.agent.gmk b/make/lib/Lib-jdk.jdwp.agent.gmk
index 1081b1f30..eb5d22142 100644
--- a/make/lib/Lib-jdk.jdwp.agent.gmk
+++ b/make/lib/Lib-jdk.jdwp.agent.gmk
@@ -25,11 +25,6 @@
include LibCommon.gmk
-LIBMEMCPY_FILES += \
- $(addprefix $(TOPDIR)/src/hotspot/share/runtime/, \
- memcpy.cpp \
- )
-
################################################################################
$(eval $(call SetupJdkLibrary, BUILD_LIBDT_SOCKET, \
@@ -58,11 +53,11 @@ TARGETS += $(BUILD_LIBDT_SOCKET)
$(eval $(call SetupJdkLibrary, BUILD_LIBJDWP, \
NAME := jdwp, \
OPTIMIZATION := LOW, \
- EXTRA_FILES := $(LIBMEMCPY_FILES), \
CFLAGS := $(CFLAGS_JDKLIB) -DJDWP_LOGGING, \
EXTRA_HEADER_DIRS := \
include \
libjdwp/export, \
+ EXTRA_OBJECT_FILES := $(SUPPORT_OUTPUTDIR)/memcpy$(OBJ_SUFFIX), \
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
LIBS := $(JDKLIB_LIBS), \
diff --git a/make/lib/Lib-jdk.pack.gmk b/make/lib/Lib-jdk.pack.gmk
index 23c87a07d..bfe362b4a 100644
--- a/make/lib/Lib-jdk.pack.gmk
+++ b/make/lib/Lib-jdk.pack.gmk
@@ -25,11 +25,6 @@
include LibCommon.gmk
-LIBMEMCPY_FILES += \
- $(addprefix $(TOPDIR)/src/hotspot/share/runtime/, \
- memcpy.cpp \
- )
-
################################################################################
$(eval $(call SetupJdkLibrary, BUILD_LIBUNPACK, \
@@ -37,11 +32,11 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBUNPACK, \
EXTRA_SRC := common-unpack, \
TOOLCHAIN := TOOLCHAIN_LINK_CXX, \
OPTIMIZATION := LOW, \
- EXTRA_FILES := $(LIBMEMCPY_FILES), \
CFLAGS := $(CXXFLAGS_JDKLIB) \
-DNO_ZLIB -DUNPACK_JNI -DFULL, \
CFLAGS_release := -DPRODUCT, \
EXTRA_HEADER_DIRS := $(call GetJavaHeaderDir, java.base), \
+ EXTRA_OBJECT_FILES := $(SUPPORT_OUTPUTDIR)/memcpy$(OBJ_SUFFIX), \
DISABLED_WARNINGS_gcc := implicit-fallthrough, \
LDFLAGS := $(LDFLAGS_JDKLIB) $(LDFLAGS_CXX_JDK) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
diff --git a/make/lib/Lib-jdk.sctp.gmk b/make/lib/Lib-jdk.sctp.gmk
index f2c1dc0b9..28ae5c463 100644
--- a/make/lib/Lib-jdk.sctp.gmk
+++ b/make/lib/Lib-jdk.sctp.gmk
@@ -25,11 +25,6 @@
include LibCommon.gmk
-LIBMEMCPY_FILES += \
- $(addprefix $(TOPDIR)/src/hotspot/share/runtime/, \
- memcpy.cpp \
- )
-
################################################################################
ifeq ($(OPENJDK_TARGET_OS_TYPE), unix)
@@ -38,12 +33,12 @@ ifeq ($(OPENJDK_TARGET_OS_TYPE), unix)
$(eval $(call SetupJdkLibrary, BUILD_LIBSCTP, \
NAME := sctp, \
OPTIMIZATION := LOW, \
- EXTRA_FILES := $(LIBMEMCPY_FILES), \
CFLAGS := $(CFLAGS_JDKLIB), \
EXTRA_HEADER_DIRS := \
$(call GetJavaHeaderDir, java.base) \
java.base:libnet \
java.base:libnio/ch, \
+ EXTRA_OBJECT_FILES := $(SUPPORT_OUTPUTDIR)/memcpy$(OBJ_SUFFIX), \
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
LIBS_unix := -lnio -lnet -ljava -ljvm, \
diff --git a/src/hotspot/share/runtime/memcpy.cpp b/src/hotspot/share/runtime/memcpy.cpp
index ed8330679..0fe4fa3f3 100644
--- a/src/hotspot/share/runtime/memcpy.cpp
+++ b/src/hotspot/share/runtime/memcpy.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) Huawei Technologies Co., Ltd. 2018-2019. All rights reserved.
+ * Copyright (c) Huawei Technologies Co., Ltd. 2018-2021. All rights reserved.
*/
#if defined( __GNUC__ ) && \
--
2.22.0

View File

@ -740,7 +740,7 @@ Provides: java-src%{?1} = %{epoch}:%{version}-%{release}
Name: java-%{javaver}-%{origin}
Version: %{newjavaver}.%{buildver}
Release: 2
Release: 3
# 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
# also included the epoch in their virtual provides. This created a
@ -866,12 +866,12 @@ Patch82: PS-introduce-UsePSRelaxedForwardee-to-enable-using-r.patch
# 11.0.13
Patch83: 8273111-Default-timezone-should-return-zone-ID-if-locatiome-is-valid-but-not-canonicalization-on-linux.patch
Patch84: fix-memcpy-compile-warning-when-building-on-linux-x86.patch
Patch85: 8239017-cmp-baseline-fails-because-of-differences-in-TimeZoneNames_kea.patch
# 11.0.14
Patch86: 8252103-support-Jmap-parallel-heap-inspection.patch
Patch87: fix_macroAssembler_missing_matcher_header_file_causing_build_failure.patch
Patch88: fix-error-in-build-core-variants.patch
Patch89: downgrade-the-symver-of-memcpy-GLIBC_2.14-on-x86.patch
BuildRequires: autoconf
BuildRequires: alsa-lib-devel
@ -1155,11 +1155,11 @@ pushd %{top_level_dir_name}
%patch80 -p1
%patch82 -p1
%patch83 -p1
%patch84 -p1
%patch85 -p1
%patch86 -p1
%patch87 -p1
%patch88 -p1
%patch89 -p1
popd # openjdk
# %patch1000
@ -1669,6 +1669,9 @@ cjc.mainProgram(arg)
%changelog
* Sat May 26 2022 eapen <zhangyipeng7@huawei.com> - 1:11.0.14.9-3
- reconstruct applying of memcpy.o used by lib compilations
* Fri May 25 2022 eapen <zhangyipeng7@huawei.com> - 1:11.0.14.9-2
- adapted to newst cjc to fix issue with rpm 4.17

View File

@ -1,369 +1,3 @@
diff --git a/make/launcher/Launcher-java.base.gmk b/make/launcher/Launcher-java.base.gmk
index f6d4aa28f..d511c0be5 100644
--- a/make/launcher/Launcher-java.base.gmk
+++ b/make/launcher/Launcher-java.base.gmk
@@ -30,6 +30,11 @@ $(eval $(call IncludeCustomExtension, launcher/Launcher-java.base.gmk))
JAVA_RC_FLAGS += -I$(TOPDIR)/src/java.base/windows/native/common
JAVA_RC_FLAGS += -I$(TOPDIR)/src/java.base/windows/native/launcher/icons
+LIBMEMCPY_FILES += \
+ $(addprefix $(TOPDIR)/src/hotspot/share/runtime/, \
+ memcpy.cpp \
+ )
+
################################################################################
$(eval $(call SetupBuildLauncher, java, \
@@ -79,6 +84,7 @@ ifneq ($(findstring $(OPENJDK_TARGET_OS), macosx solaris aix linux), )
$(eval $(call SetupJdkExecutable, BUILD_JSPAWNHELPER, \
NAME := jspawnhelper, \
SRC := $(TOPDIR)/src/$(MODULE)/unix/native/jspawnhelper, \
+ EXTRA_FILES := $(LIBMEMCPY_FILES), \
OPTIMIZATION := LOW, \
CFLAGS := $(CFLAGS_JDKEXE) -I$(TOPDIR)/src/$(MODULE)/unix/native/libjava, \
EXTRA_OBJECT_FILES := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjava/childproc.o, \
diff --git a/make/launcher/Launcher-jdk.pack.gmk b/make/launcher/Launcher-jdk.pack.gmk
index a93fd2a90..2e0bc7a5b 100644
--- a/make/launcher/Launcher-jdk.pack.gmk
+++ b/make/launcher/Launcher-jdk.pack.gmk
@@ -30,6 +30,11 @@ $(eval $(call SetupBuildLauncher, pack200, \
MAIN_CLASS := com.sun.java.util.jar.pack.Driver, \
))
+LIBMEMCPY_FILES += \
+ $(addprefix $(TOPDIR)/src/hotspot/share/runtime/, \
+ memcpy.cpp \
+ )
+
################################################################################
# The order of the object files on the link command line affects the size of the resulting
# binary (at least on linux) which causes the size to differ between old and new build.
@@ -81,6 +86,7 @@ $(eval $(call SetupJdkExecutable, BUILD_UNPACKEXE, \
SRC := $(UNPACKEXE_SRC), \
TOOLCHAIN := TOOLCHAIN_LINK_CXX, \
OPTIMIZATION := LOW, \
+ EXTRA_FILES := $(LIBMEMCPY_FILES), \
CFLAGS := $(UNPACKEXE_CFLAGS) $(CXXFLAGS_JDKEXE) -DFULL, \
CFLAGS_release := -DPRODUCT, \
CFLAGS_linux := -fPIC, \
diff --git a/make/lib/Awt2dLibraries.gmk b/make/lib/Awt2dLibraries.gmk
index e8c27e902..9ebb93dcb 100644
--- a/make/lib/Awt2dLibraries.gmk
+++ b/make/lib/Awt2dLibraries.gmk
@@ -35,6 +35,11 @@ LIBAWT_DEFAULT_HEADER_DIRS := \
libawt/java2d/pipe \
#
+LIBMEMCPY_FILES += \
+ $(addprefix $(TOPDIR)/src/hotspot/share/runtime/, \
+ memcpy.cpp \
+ )
+
################################################################################
# We must not include java.desktop/unix/native/libmlib_image, which is only
@@ -50,6 +55,7 @@ endif
$(eval $(call SetupJdkLibrary, BUILD_LIBMLIB_IMAGE, \
NAME := mlib_image, \
EXTRA_SRC := common/awt/medialib, \
+ EXTRA_FILES := $(LIBMEMCPY_FILES), \
EXCLUDE_FILES := mlib_c_ImageBlendTable.c, \
EXCLUDE_SRC_PATTERNS := $(BUILD_LIBMLIB_EXCLUDE_SRC_PATTERNS), \
OPTIMIZATION := HIGHEST, \
@@ -219,6 +225,7 @@ endif
$(eval $(call SetupJdkLibrary, BUILD_LIBAWT, \
NAME := awt, \
EXTRA_SRC := $(LIBAWT_EXTRA_SRC), \
+ EXTRA_FILES := $(LIBMEMCPY_FILES), \
EXCLUDES := $(LIBAWT_EXCLUDES), \
EXCLUDE_FILES := $(LIBAWT_EXFILES), \
OPTIMIZATION := LOW, \
@@ -430,6 +437,7 @@ endif
$(eval $(call SetupJdkLibrary, BUILD_LIBJAVAJPEG, \
NAME := javajpeg, \
INCLUDE_FILES := $(BUILD_LIBJAVAJPEG_INCLUDE_FILES), \
+ EXTRA_FILES := $(LIBMEMCPY_FILES), \
OPTIMIZATION := HIGHEST, \
CFLAGS := $(CFLAGS_JDKLIB), \
HEADERS_FROM_SRC := $(LIBJPEG_HEADERS_FROM_SRC), \
@@ -919,6 +927,7 @@ ifeq ($(ENABLE_HEADLESS_ONLY), false)
NAME := splashscreen, \
EXTRA_SRC := $(LIBSPLASHSCREEN_EXTRA_SRC), \
EXCLUDE_SRC_PATTERNS := $(LIBSPLASHSCREEN_EXCLUDE_SRC_PATTERNS), \
+ EXTRA_FILES := $(LIBMEMCPY_FILES), \
EXCLUDE_FILES := imageioJPEG.c jpegdecoder.c pngtest.c, \
EXCLUDES := $(LIBSPLASHSCREEN_EXCLUDES), \
OPTIMIZATION := LOW, \
diff --git a/make/lib/CoreLibraries.gmk b/make/lib/CoreLibraries.gmk
index 226e20892..f180a28c3 100644
--- a/make/lib/CoreLibraries.gmk
+++ b/make/lib/CoreLibraries.gmk
@@ -28,6 +28,11 @@ WIN_VERIFY_LIB := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libverify/verify.lib
# Hook to include the corresponding custom file, if present.
$(eval $(call IncludeCustomExtension, lib/CoreLibraries.gmk))
+LIBMEMCPY_FILES += \
+ $(addprefix $(TOPDIR)/src/hotspot/share/runtime/, \
+ memcpy.cpp \
+ )
+
##########################################################################################
# libfdlibm is statically linked with libjava below and not delivered into the
@@ -76,6 +81,7 @@ endif
$(eval $(call SetupJdkLibrary, BUILD_LIBVERIFY, \
NAME := verify, \
OPTIMIZATION := $(LIBVERIFY_OPTIMIZATION), \
+ EXTRA_FILES := $(LIBMEMCPY_FILES), \
CFLAGS := $(CFLAGS_JDKLIB), \
DISABLED_WARNINGS_gcc := implicit-fallthrough, \
DISABLED_WARNINGS_microsoft := 4244 4267, \
@@ -96,9 +102,11 @@ ifeq ($(OPENJDK_TARGET_OS), macosx)
BUILD_LIBJAVA_java_props_macosx.c_CFLAGS := -x objective-c
endif
+
$(eval $(call SetupJdkLibrary, BUILD_LIBJAVA, \
NAME := java, \
OPTIMIZATION := HIGH, \
+ EXTRA_FILES := $(LIBMEMCPY_FILES), \
CFLAGS := $(CFLAGS_JDKLIB) \
$(LIBJAVA_CFLAGS), \
System.c_CFLAGS := $(VERSION_CFLAGS), \
@@ -144,6 +152,7 @@ endif
$(eval $(call SetupJdkLibrary, BUILD_LIBZIP, \
NAME := zip, \
OPTIMIZATION := LOW, \
+ EXTRA_FILES := $(LIBMEMCPY_FILES), \
EXCLUDES := $(LIBZIP_EXCLUDES), \
CFLAGS := $(CFLAGS_JDKLIB) \
$(LIBZ_CFLAGS), \
@@ -165,6 +174,7 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBJIMAGE, \
NAME := jimage, \
TOOLCHAIN := TOOLCHAIN_LINK_CXX, \
OPTIMIZATION := LOW, \
+ EXTRA_FILES := $(LIBMEMCPY_FILES), \
CFLAGS := $(CFLAGS_JDKLIB), \
CXXFLAGS := $(CXXFLAGS_JDKLIB), \
CFLAGS_unix := -UDEBUG, \
@@ -236,7 +246,7 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBJLI, \
NAME := jli, \
OUTPUT_DIR := $(LIBJLI_OUTPUT_DIR), \
EXCLUDE_FILES := $(LIBJLI_EXCLUDE_FILES), \
- EXTRA_FILES := $(LIBJLI_EXTRA_FILES), \
+ EXTRA_FILES := $(LIBJLI_EXTRA_FILES) $(LIBMEMCPY_FILES), \
OPTIMIZATION := HIGH, \
CFLAGS := $(CFLAGS_JDKLIB) $(LIBJLI_CFLAGS), \
DISABLED_WARNINGS_gcc := unused-function implicit-fallthrough, \
diff --git a/make/lib/Lib-java.base.gmk b/make/lib/Lib-java.base.gmk
index a529768f3..0c888b65c 100644
--- a/make/lib/Lib-java.base.gmk
+++ b/make/lib/Lib-java.base.gmk
@@ -36,12 +36,18 @@ $(call FillFindCache, $(wildcard $(TOPDIR)/src/java.base/*/native))
include CoreLibraries.gmk
+LIBMEMCPY_FILES += \
+ $(addprefix $(TOPDIR)/src/hotspot/share/runtime/, \
+ memcpy.cpp \
+ )
+
################################################################################
# Create the network library
$(eval $(call SetupJdkLibrary, BUILD_LIBNET, \
NAME := net, \
OPTIMIZATION := LOW, \
+ EXTRA_FILES := $(LIBMEMCPY_FILES), \
CFLAGS := $(CFLAGS_JDKLIB), \
DISABLED_WARNINGS_gcc := format-nonliteral, \
DISABLED_WARNINGS_clang := parentheses-equality constant-logical-operand, \
diff --git a/make/lib/Lib-java.desktop.gmk b/make/lib/Lib-java.desktop.gmk
index 274df2b8e..932e0b3e8 100644
--- a/make/lib/Lib-java.desktop.gmk
+++ b/make/lib/Lib-java.desktop.gmk
@@ -36,6 +36,11 @@ $(call FillFindCache, $(wildcard $(TOPDIR)/src/java.desktop/*/native))
include Awt2dLibraries.gmk
+LIBMEMCPY_FILES += \
+ $(addprefix $(TOPDIR)/src/hotspot/share/runtime/, \
+ memcpy.cpp \
+ )
+
################################################################################
# Create the libjsound library
@@ -63,6 +68,7 @@ ifneq ($(OPENJDK_TARGET_OS), aix)
NAME := jsound, \
TOOLCHAIN := $(LIBJSOUND_TOOLCHAIN), \
OPTIMIZATION := LOW, \
+ EXTRA_FILES := $(LIBMEMCPY_FILES), \
CFLAGS := $(CFLAGS_JDKLIB) \
$(LIBJSOUND_CFLAGS), \
CXXFLAGS := $(CXXFLAGS_JDKLIB) $(LIBJSOUND_CFLAGS), \
diff --git a/make/lib/Lib-java.instrument.gmk b/make/lib/Lib-java.instrument.gmk
index 9acde85ff..6e679b500 100644
--- a/make/lib/Lib-java.instrument.gmk
+++ b/make/lib/Lib-java.instrument.gmk
@@ -36,9 +36,15 @@ ifeq ($(OPENJDK_TARGET_OS), windows)
WINDOWS_JLI_LIB := $(SUPPORT_OUTPUTDIR)/native/java.base/libjli/jli.lib
endif
+LIBMEMCPY_FILES += \
+ $(addprefix $(TOPDIR)/src/hotspot/share/runtime/, \
+ memcpy.cpp \
+ )
+
$(eval $(call SetupJdkLibrary, BUILD_LIBINSTRUMENT, \
NAME := instrument, \
OPTIMIZATION := LOW, \
+ EXTRA_FILES := $(LIBMEMCPY_FILES), \
CFLAGS := $(CFLAGS_JDKLIB) $(LIBINSTRUMENT_CFLAGS), \
CFLAGS_debug := -DJPLIS_LOGGING, \
CFLAGS_release := -DNO_JPLIS_LOGGING, \
diff --git a/make/lib/Lib-jdk.crypto.cryptoki.gmk b/make/lib/Lib-jdk.crypto.cryptoki.gmk
index 3f25d7c04..6c23857e1 100644
--- a/make/lib/Lib-jdk.crypto.cryptoki.gmk
+++ b/make/lib/Lib-jdk.crypto.cryptoki.gmk
@@ -25,11 +25,17 @@
include LibCommon.gmk
+LIBMEMCPY_FILES += \
+ $(addprefix $(TOPDIR)/src/hotspot/share/runtime/, \
+ memcpy.cpp \
+ )
+
################################################################################
$(eval $(call SetupJdkLibrary, BUILD_LIBJ2PKCS11, \
NAME := j2pkcs11, \
OPTIMIZATION := LOW, \
+ EXTRA_FILES := $(LIBMEMCPY_FILES), \
CFLAGS := $(CFLAGS_JDKLIB), \
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
diff --git a/make/lib/Lib-jdk.crypto.ec.gmk b/make/lib/Lib-jdk.crypto.ec.gmk
index dfecc1d3c..4137a371d 100644
--- a/make/lib/Lib-jdk.crypto.ec.gmk
+++ b/make/lib/Lib-jdk.crypto.ec.gmk
@@ -25,6 +25,11 @@
include LibCommon.gmk
+LIBMEMCPY_FILES += \
+ $(addprefix $(TOPDIR)/src/hotspot/share/runtime/, \
+ memcpy.cpp \
+ )
+
################################################################################
ifeq ($(ENABLE_INTREE_EC), true)
@@ -42,6 +47,7 @@ ifeq ($(ENABLE_INTREE_EC), true)
NAME := sunec, \
TOOLCHAIN := TOOLCHAIN_LINK_CXX, \
OPTIMIZATION := LOW, \
+ EXTRA_FILES := $(LIBMEMCPY_FILES), \
CFLAGS := $(BUILD_LIBSUNEC_CFLAGS_JDKLIB) \
-DMP_API_COMPATIBLE -DNSS_ECC_MORE_THAN_SUITE_B, \
CXXFLAGS := $(BUILD_LIBSUNEC_CXXFLAGS_JDKLIB), \
diff --git a/make/lib/Lib-jdk.hotspot.agent.gmk b/make/lib/Lib-jdk.hotspot.agent.gmk
index 2d0c36a47..ad3075f00 100644
--- a/make/lib/Lib-jdk.hotspot.agent.gmk
+++ b/make/lib/Lib-jdk.hotspot.agent.gmk
@@ -27,6 +27,11 @@ include LibCommon.gmk
$(eval $(call IncludeCustomExtension, hotspot/lib/Lib-jdk.hotspot.agent.gmk))
+LIBMEMCPY_FILES += \
+ $(addprefix $(TOPDIR)/src/hotspot/share/runtime/, \
+ memcpy.cpp \
+ )
+
################################################################################
ifeq ($(OPENJDK_TARGET_OS), linux)
@@ -58,6 +63,7 @@ endif
$(eval $(call SetupJdkLibrary, BUILD_LIBSA, \
NAME := saproc, \
OPTIMIZATION := HIGH, \
+ EXTRA_FILES := $(LIBMEMCPY_FILES), \
DISABLED_WARNINGS_microsoft := 4267, \
DISABLED_WARNINGS_gcc := sign-compare, \
DISABLED_WARNINGS_CXX_solstudio := truncwarn unknownpragma, \
diff --git a/make/lib/Lib-jdk.jdwp.agent.gmk b/make/lib/Lib-jdk.jdwp.agent.gmk
index f00f0760f..1081b1f30 100644
--- a/make/lib/Lib-jdk.jdwp.agent.gmk
+++ b/make/lib/Lib-jdk.jdwp.agent.gmk
@@ -25,6 +25,11 @@
include LibCommon.gmk
+LIBMEMCPY_FILES += \
+ $(addprefix $(TOPDIR)/src/hotspot/share/runtime/, \
+ memcpy.cpp \
+ )
+
################################################################################
$(eval $(call SetupJdkLibrary, BUILD_LIBDT_SOCKET, \
@@ -53,6 +58,7 @@ TARGETS += $(BUILD_LIBDT_SOCKET)
$(eval $(call SetupJdkLibrary, BUILD_LIBJDWP, \
NAME := jdwp, \
OPTIMIZATION := LOW, \
+ EXTRA_FILES := $(LIBMEMCPY_FILES), \
CFLAGS := $(CFLAGS_JDKLIB) -DJDWP_LOGGING, \
EXTRA_HEADER_DIRS := \
include \
diff --git a/make/lib/Lib-jdk.pack.gmk b/make/lib/Lib-jdk.pack.gmk
index f401e03e7..23c87a07d 100644
--- a/make/lib/Lib-jdk.pack.gmk
+++ b/make/lib/Lib-jdk.pack.gmk
@@ -25,6 +25,11 @@
include LibCommon.gmk
+LIBMEMCPY_FILES += \
+ $(addprefix $(TOPDIR)/src/hotspot/share/runtime/, \
+ memcpy.cpp \
+ )
+
################################################################################
$(eval $(call SetupJdkLibrary, BUILD_LIBUNPACK, \
@@ -32,6 +37,7 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBUNPACK, \
EXTRA_SRC := common-unpack, \
TOOLCHAIN := TOOLCHAIN_LINK_CXX, \
OPTIMIZATION := LOW, \
+ EXTRA_FILES := $(LIBMEMCPY_FILES), \
CFLAGS := $(CXXFLAGS_JDKLIB) \
-DNO_ZLIB -DUNPACK_JNI -DFULL, \
CFLAGS_release := -DPRODUCT, \
diff --git a/make/lib/Lib-jdk.sctp.gmk b/make/lib/Lib-jdk.sctp.gmk
index 267610202..f2c1dc0b9 100644
--- a/make/lib/Lib-jdk.sctp.gmk
+++ b/make/lib/Lib-jdk.sctp.gmk
@@ -25,6 +25,11 @@
include LibCommon.gmk
+LIBMEMCPY_FILES += \
+ $(addprefix $(TOPDIR)/src/hotspot/share/runtime/, \
+ memcpy.cpp \
+ )
+
################################################################################
ifeq ($(OPENJDK_TARGET_OS_TYPE), unix)
@@ -33,6 +38,7 @@ ifeq ($(OPENJDK_TARGET_OS_TYPE), unix)
$(eval $(call SetupJdkLibrary, BUILD_LIBSCTP, \
NAME := sctp, \
OPTIMIZATION := LOW, \
+ EXTRA_FILES := $(LIBMEMCPY_FILES), \
CFLAGS := $(CFLAGS_JDKLIB), \
EXTRA_HEADER_DIRS := \
$(call GetJavaHeaderDir, java.base) \
diff --git a/src/hotspot/share/c1/c1_GraphBuilder.cpp b/src/hotspot/share/c1/c1_GraphBuilder.cpp
index 211c2acda..86cc0108b 100644
--- a/src/hotspot/share/c1/c1_GraphBuilder.cpp
@ -614,32 +248,6 @@ index 74aab91f9..6cf2d2a6d 100644
}
// Verify that verify_me made the same decisions as a fresh run.
diff --git a/src/hotspot/share/runtime/memcpy.cpp b/src/hotspot/share/runtime/memcpy.cpp
new file mode 100644
index 000000000..ed8330679
--- /dev/null
+++ b/src/hotspot/share/runtime/memcpy.cpp
@@ -0,0 +1,20 @@
+/*
+ * Copyright (c) Huawei Technologies Co., Ltd. 2018-2019. 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/hotspot/share/runtime/stackValue.cpp b/src/hotspot/share/runtime/stackValue.cpp
index cab1de79a..6a67574ad 100644
--- a/src/hotspot/share/runtime/stackValue.cpp