Fix annocheck optimization issues.
Resolves: RHBZ#1630426
This commit is contained in:
parent
706e00d456
commit
0c4d834e94
57
8210416-rh1630426-strict-math-opt.patch
Normal file
57
8210416-rh1630426-strict-math-opt.patch
Normal file
@ -0,0 +1,57 @@
|
||||
diff --git openjdk.orig/jdk/make/lib/CoreLibraries.gmk openjdk/jdk/make/lib/CoreLibraries.gmk
|
||||
--- openjdk.orig/jdk/make/lib/CoreLibraries.gmk
|
||||
+++ openjdk/jdk/make/lib/CoreLibraries.gmk
|
||||
@@ -37,21 +37,32 @@ ifeq ($(OPENJDK_TARGET_OS), solaris)
|
||||
endif
|
||||
|
||||
ifeq ($(OPENJDK_TARGET_OS), linux)
|
||||
- ifeq ($(OPENJDK_TARGET_CPU), ppc64)
|
||||
- BUILD_LIBFDLIBM_OPTIMIZATION := HIGH
|
||||
- else ifeq ($(OPENJDK_TARGET_CPU), ppc64le)
|
||||
- BUILD_LIBFDLIBM_OPTIMIZATION := HIGH
|
||||
- else ifeq ($(OPENJDK_TARGET_CPU), aarch64)
|
||||
- BUILD_LIBFDLIBM_OPTIMIZATION := HIGH
|
||||
- endif
|
||||
-endif
|
||||
-
|
||||
-ifneq ($(OPENJDK_TARGET_OS), macosx)
|
||||
+ BUILD_LIBFDLIBM_OPTIMIZATION := HIGH
|
||||
+ LIBFDLIBM_CFLAGS_LINUX := -ffp-contract=off
|
||||
# Unfortunately, '-ffp-contract' is only available since gcc 4.6. For ppc64le
|
||||
# that's no problem since ppc64le support only appeared in gcc 4.8.3. But on
|
||||
# ppc64 (big endian) we traditionally compiled with gcc 4.3 which only knows
|
||||
# '-mno-fused-madd'. However, that's still not enough to get the float
|
||||
# computations right - we additionally have to supply '-fno-strict-aliasing'.
|
||||
+ #
|
||||
+ #
|
||||
+ ifeq ($(TOOLCHAIN_TYPE), gcc)
|
||||
+ CC_VER_MAJOR := $(shell $(CC) -dumpversion | cut -d'.' -f1)
|
||||
+ CC_VER_MINOR := $(shell $(CC) -dumpversion | cut -d'.' -f2)
|
||||
+ endif
|
||||
+ # Only GCC 4.6 and better have machine independent -ffp-contract=off.
|
||||
+ # For other versions we need to explicitly set arch specific machine
|
||||
+ # flags or keep optimization off.
|
||||
+ ifeq "$(shell expr \( $(CC_VER_MAJOR) \> 4 \) \| \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) \>= 6 \) \))" "0"
|
||||
+ ifeq ($(OPENJDK_TARGET_CPU), ppc64)
|
||||
+ LIBFDLIBM_CFLAGS_LINUX := -mno-fused-madd -fno-strict-aliasing
|
||||
+ else
|
||||
+ BUILD_LIBFDLIBM_OPTIMIZATION := NONE
|
||||
+ endif
|
||||
+ endif
|
||||
+endif
|
||||
+
|
||||
+ifneq ($(OPENJDK_TARGET_OS), macosx)
|
||||
$(eval $(call SetupNativeCompilation,BUILD_LIBFDLIBM, \
|
||||
STATIC_LIBRARY := fdlibm, \
|
||||
OUTPUT_DIR := $(JDK_OUTPUTDIR)/objs, \
|
||||
@@ -62,9 +73,7 @@ ifneq ($(OPENJDK_TARGET_OS), macosx)
|
||||
-I$(JDK_TOPDIR)/src/share/native/java/lang/fdlibm/include, \
|
||||
CFLAGS_windows_debug := -DLOGGING, \
|
||||
CFLAGS_aix := -qfloat=nomaf, \
|
||||
- CFLAGS_linux_ppc64 := -mno-fused-madd -fno-strict-aliasing, \
|
||||
- CFLAGS_linux_ppc64le := -ffp-contract=off, \
|
||||
- CFLAGS_linux_aarch64 := -ffp-contract=off, \
|
||||
+ CFLAGS_linux := $(LIBFDLIBM_CFLAGS_LINUX), \
|
||||
ARFLAGS := $(ARFLAGS), \
|
||||
OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libfdlibm, \
|
||||
DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES)))
|
83
8210425-01-rh1630426-hotspot-opt-fix.patch
Normal file
83
8210425-01-rh1630426-hotspot-opt-fix.patch
Normal file
@ -0,0 +1,83 @@
|
||||
diff --git openjdk.orig/hotspot/make/linux/makefiles/amd64.make openjdk/hotspot/make/linux/makefiles/amd64.make
|
||||
--- openjdk.orig/hotspot/make/linux/makefiles/amd64.make
|
||||
+++ openjdk/hotspot/make/linux/makefiles/amd64.make
|
||||
@@ -22,10 +22,13 @@
|
||||
#
|
||||
#
|
||||
|
||||
-# The copied fdlibm routines in sharedRuntimeTrig.o must not be optimized
|
||||
-OPT_CFLAGS/sharedRuntimeTrig.o = $(OPT_CFLAGS/NOOPT)
|
||||
-# The copied fdlibm routines in sharedRuntimeTrans.o must not be optimized
|
||||
-OPT_CFLAGS/sharedRuntimeTrans.o = $(OPT_CFLAGS/NOOPT)
|
||||
+ifeq ($(OPT_CFLAGS_NO_FMA),)
|
||||
+ OPT_CFLAGS/sharedRuntimeTrig.o = $(OPT_CFLAGS/NOOPT)
|
||||
+ OPT_CFLAGS/sharedRuntimeTrans.o = $(OPT_CFLAGS/NOOPT)
|
||||
+else
|
||||
+ OPT_CFLAGS/sharedRuntimeTrig.o = $(OPT_CFLAGS/SPEED) $(OPT_CFLAGS_NO_FMA)
|
||||
+ OPT_CFLAGS/sharedRuntimeTrans.o = $(OPT_CFLAGS/SPEED) $(OPT_CFLAGS_NO_FMA)
|
||||
+endif
|
||||
# Must also specify if CPU is little endian
|
||||
CFLAGS += -DVM_LITTLE_ENDIAN
|
||||
|
||||
diff --git openjdk.orig/hotspot/make/linux/makefiles/gcc.make openjdk/hotspot/make/linux/makefiles/gcc.make
|
||||
--- openjdk.orig/hotspot/make/linux/makefiles/gcc.make
|
||||
+++ openjdk/hotspot/make/linux/makefiles/gcc.make
|
||||
@@ -225,6 +225,16 @@
|
||||
OPT_CFLAGS/SIZE=-Os
|
||||
OPT_CFLAGS/SPEED=-O3
|
||||
|
||||
+ifeq ($(USE_CLANG),)
|
||||
+ # Only GCC 4.6 and better have machine independent -ffp-contract=off.
|
||||
+ # For other versions we need to explicitly set arch specific machine
|
||||
+ # flags or keep optimization off for them.
|
||||
+ ifeq "$(shell expr \( $(CC_VER_MAJOR) \> 4 \) \| \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) \>= 6 \) \))" "1"
|
||||
+ OPT_CFLAGS_NO_FMA = -ffp-contract=off
|
||||
+ endif
|
||||
+endif
|
||||
+
|
||||
+
|
||||
# Hotspot uses very unstrict aliasing turn this optimization off
|
||||
# This option is added to CFLAGS rather than OPT_CFLAGS
|
||||
# so that OPT_CFLAGS overrides get this option too.
|
||||
diff --git openjdk.orig/hotspot/make/linux/makefiles/i486.make openjdk/hotspot/make/linux/makefiles/i486.make
|
||||
--- openjdk.orig/hotspot/make/linux/makefiles/i486.make
|
||||
+++ openjdk/hotspot/make/linux/makefiles/i486.make
|
||||
@@ -24,10 +24,13 @@
|
||||
|
||||
# TLS helper, assembled from .s file
|
||||
|
||||
-# The copied fdlibm routines in sharedRuntimeTrig.o must not be optimized
|
||||
-OPT_CFLAGS/sharedRuntimeTrig.o = $(OPT_CFLAGS/NOOPT)
|
||||
-# The copied fdlibm routines in sharedRuntimeTrans.o must not be optimized
|
||||
-OPT_CFLAGS/sharedRuntimeTrans.o = $(OPT_CFLAGS/NOOPT)
|
||||
+ifeq ($(OPT_CFLAGS_NO_FMA),)
|
||||
+ OPT_CFLAGS/sharedRuntimeTrig.o = $(OPT_CFLAGS/NOOPT)
|
||||
+ OPT_CFLAGS/sharedRuntimeTrans.o = $(OPT_CFLAGS/NOOPT)
|
||||
+else
|
||||
+ OPT_CFLAGS/sharedRuntimeTrig.o = $(OPT_CFLAGS/SPEED) $(OPT_CFLAGS_NO_FMA)
|
||||
+ OPT_CFLAGS/sharedRuntimeTrans.o = $(OPT_CFLAGS/SPEED) $(OPT_CFLAGS_NO_FMA)
|
||||
+endif
|
||||
# Must also specify if CPU is little endian
|
||||
CFLAGS += -DVM_LITTLE_ENDIAN
|
||||
|
||||
diff --git openjdk.orig/hotspot/make/linux/makefiles/ppc64.make openjdk/hotspot/make/linux/makefiles/ppc64.make
|
||||
--- openjdk.orig/hotspot/make/linux/makefiles/ppc64.make
|
||||
+++ openjdk/hotspot/make/linux/makefiles/ppc64.make
|
||||
@@ -49,3 +49,17 @@
|
||||
# Use Power8, this is the first CPU to support PPC64 LE with ELFv2 ABI.
|
||||
CFLAGS += -mcpu=power7 -mtune=power8 -minsert-sched-nops=regroup_exact -mno-multiple -mno-string
|
||||
endif
|
||||
+
|
||||
+ifeq ($(OPT_CFLAGS_NO_FMA),)
|
||||
+ ifeq ($(OPENJDK_TARGET_CPU_ENDIAN),big)
|
||||
+ OPT_CFLAGS/sharedRuntimeTrig.o = $(OPT_CFLAGS/SPEED) -mno-fused-madd -fno-strict-aliasing
|
||||
+ OPT_CFLAGS/sharedRuntimeTrans.o = $(OPT_CFLAGS/SPEED) -mno-fused-madd -fno-strict-aliasing
|
||||
+ else
|
||||
+ OPT_CFLAGS/sharedRuntimeTrig.o = $(OPT_CFLAGS/NOOPT)
|
||||
+ OPT_CFLAGS/sharedRuntimeTrans.o = $(OPT_CFLAGS/NOOPT)
|
||||
+ endif
|
||||
+else
|
||||
+ OPT_CFLAGS/sharedRuntimeTrig.o = $(OPT_CFLAGS/SPEED) $(OPT_CFLAGS_NO_FMA)
|
||||
+ OPT_CFLAGS/sharedRuntimeTrans.o = $(OPT_CFLAGS/SPEED) $(OPT_CFLAGS_NO_FMA)
|
||||
+endif
|
||||
+
|
22
8210425-02-rh1630426-hotspot-opt-fix-aarch64.patch
Normal file
22
8210425-02-rh1630426-hotspot-opt-fix-aarch64.patch
Normal file
@ -0,0 +1,22 @@
|
||||
diff --git openjdk.orig/hotspot/make/linux/makefiles/aarch64.make openjdk/hotspot/make/linux/makefiles/aarch64.make
|
||||
index 3d17326..7cdb498 100644
|
||||
--- openjdk.orig/hotspot/make/linux/makefiles/aarch64.make
|
||||
+++ openjdk/hotspot/make/linux/makefiles/aarch64.make
|
||||
@@ -22,10 +22,13 @@
|
||||
#
|
||||
#
|
||||
|
||||
-# The copied fdlibm routines in sharedRuntimeTrig.o must not be optimized
|
||||
-OPT_CFLAGS/sharedRuntimeTrig.o = $(OPT_CFLAGS/NOOPT)
|
||||
-# The copied fdlibm routines in sharedRuntimeTrans.o must not be optimized
|
||||
-OPT_CFLAGS/sharedRuntimeTrans.o = $(OPT_CFLAGS/NOOPT)
|
||||
+ifeq ($(OPT_CFLAGS_NO_FMA),)
|
||||
+ OPT_CFLAGS/sharedRuntimeTrig.o = $(OPT_CFLAGS/NOOPT)
|
||||
+ OPT_CFLAGS/sharedRuntimeTrans.o = $(OPT_CFLAGS/NOOPT)
|
||||
+else
|
||||
+ OPT_CFLAGS/sharedRuntimeTrig.o = $(OPT_CFLAGS/SPEED) $(OPT_CFLAGS_NO_FMA)
|
||||
+ OPT_CFLAGS/sharedRuntimeTrans.o = $(OPT_CFLAGS/SPEED) $(OPT_CFLAGS_NO_FMA)
|
||||
+endif
|
||||
# Must also specify if CPU is little endian
|
||||
CFLAGS += -DVM_LITTLE_ENDIAN
|
||||
|
23
8210647-rh1630426-saproc-opt-fix.patch
Normal file
23
8210647-rh1630426-saproc-opt-fix.patch
Normal file
@ -0,0 +1,23 @@
|
||||
diff --git openjdk.orig/hotspot/make/linux/makefiles/saproc.make openjdk/hotspot/make/linux/makefiles/saproc.make
|
||||
--- openjdk.orig/hotspot/make/linux/makefiles/saproc.make
|
||||
+++ openjdk/hotspot/make/linux/makefiles/saproc.make
|
||||
@@ -59,6 +59,11 @@
|
||||
SA_DEBUG_CFLAGS = -g
|
||||
endif
|
||||
|
||||
+# Optimize saproc lib at level -O3 unless it's a slowdebug build
|
||||
+ifneq ($(DEBUG_LEVEL), slowdebug)
|
||||
+ SA_OPT_FLAGS = $(OPT_CFLAGS)
|
||||
+endif
|
||||
+
|
||||
# if $(AGENT_DIR) does not exist, we don't build SA
|
||||
# also, we don't build SA on Itanium or zero.
|
||||
|
||||
@@ -95,6 +100,7 @@
|
||||
$(SASRCFILES) \
|
||||
$(SA_LFLAGS) \
|
||||
$(SA_DEBUG_CFLAGS) \
|
||||
+ $(SA_OPT_FLAGS) \
|
||||
$(EXTRA_CFLAGS) \
|
||||
-o $@ \
|
||||
-lthread_db
|
20
8210761-rh1630426-jsig-opt-fix.patch
Normal file
20
8210761-rh1630426-jsig-opt-fix.patch
Normal file
@ -0,0 +1,20 @@
|
||||
diff --git openjdk.orig/hotspot/make/linux/makefiles/jsig.make openjdk/hotspot/make/linux/makefiles/jsig.make
|
||||
--- openjdk.orig/hotspot/make/linux/makefiles/jsig.make
|
||||
+++ openjdk/hotspot/make/linux/makefiles/jsig.make
|
||||
@@ -51,10 +51,15 @@ ifeq ($(DEBUG_BINARIES), true)
|
||||
JSIG_DEBUG_CFLAGS = -g
|
||||
endif
|
||||
|
||||
+# Optimize jsig lib at level -O3 unless it's a slowdebug build
|
||||
+ifneq ($(DEBUG_LEVEL), slowdebug)
|
||||
+ JSIG_OPT_FLAGS = $(OPT_CFLAGS)
|
||||
+endif
|
||||
+
|
||||
$(LIBJSIG): $(JSIGSRCDIR)/jsig.c $(LIBJSIG_MAPFILE)
|
||||
@echo Making signal interposition lib...
|
||||
$(QUIETLY) $(CC) $(SYMFLAG) $(ARCHFLAG) $(SHARED_FLAG) $(PICFLAG) \
|
||||
- $(LFLAGS_JSIG) $(JSIG_DEBUG_CFLAGS) $(EXTRA_CFLAGS) -o $@ $< -ldl
|
||||
+ $(LFLAGS_JSIG) $(JSIG_DEBUG_CFLAGS) $(JSIG_OPT_FLAGS) $(EXTRA_CFLAGS) -o $@ $< -ldl
|
||||
ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
|
||||
$(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJSIG_DEBUGINFO)
|
||||
ifeq ($(STRIP_POLICY),all_strip)
|
@ -104,8 +104,8 @@
|
||||
|
||||
|
||||
# Filter out flags from the optflags macro that cause problems with the OpenJDK build
|
||||
# We filter out -O flags so that the optimization of HotSpot is not lowered from O3 to O2
|
||||
# We filter out -Wall which will otherwise cause HotSpot to produce hundreds of thousands of warnings (100+mb logs)
|
||||
# We filter out -O flags so that the optimization of HotSpot is not lowered from O3 to O2
|
||||
# We replace it with -Wformat (required by -Werror=format-security) and -Wno-cpp to avoid FORTIFY_SOURCE warnings
|
||||
# We filter out -fexceptions as the HotSpot build explicitly does -fno-exceptions and it's otherwise the default for C++
|
||||
%global ourflags %(echo %optflags | sed -e 's|-Wall|-Wformat -Wno-cpp|' | sed -r -e 's|-O[0-9]*||')
|
||||
@ -961,7 +961,7 @@ Provides: java-%{javaver}-%{origin}-accessibility = %{epoch}:%{version}-%{releas
|
||||
|
||||
Name: java-%{javaver}-%{origin}
|
||||
Version: %{javaver}.%{updatever}.%{buildver}
|
||||
Release: 3%{?dist}
|
||||
Release: 4%{?dist}
|
||||
# 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
|
||||
@ -1126,6 +1126,18 @@ Patch576: 8064786-pr3599.patch
|
||||
Patch577: 8062808-pr3548.patch
|
||||
# s390: JDK-8203030, Type fixing for s390
|
||||
Patch102: 8203030-size_t-fixes.patch
|
||||
# 8210761: libjsig is being compiled without optimization
|
||||
Patch620: 8210761-rh1630426-jsig-opt-fix.patch
|
||||
# 8210647: libsaproc is being compiled without optimization
|
||||
Patch621: 8210647-rh1630426-saproc-opt-fix.patch
|
||||
# 8210416: [linux] Poor StrictMath performance due to non-optimized compilation
|
||||
Patch622: 8210416-rh1630426-strict-math-opt.patch
|
||||
# 8210425: [x86] sharedRuntimeTrig/sharedRuntimeTrans compiled without optimization
|
||||
# Upstream 8u part.
|
||||
Patch623: 8210425-01-rh1630426-hotspot-opt-fix.patch
|
||||
# 8210425: [x86] sharedRuntimeTrig/sharedRuntimeTrans compiled without optimization
|
||||
# Aarch64-port 8u local part
|
||||
Patch624: 8210425-02-rh1630426-hotspot-opt-fix-aarch64.patch
|
||||
|
||||
#############################################
|
||||
#
|
||||
@ -1613,6 +1625,11 @@ sh %{SOURCE12}
|
||||
%patch579
|
||||
%patch580
|
||||
%patch581
|
||||
%patch620
|
||||
%patch621
|
||||
%patch622
|
||||
%patch623
|
||||
%patch624
|
||||
|
||||
# RPM-only fixes
|
||||
%patch525
|
||||
@ -2268,6 +2285,14 @@ require "copy_jdk_configs.lua"
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
* Thu Sep 27 2018 Severin Gehwolf <sgehwolf@redhat.com> - 1:1.8.0.181.b15-4
|
||||
- Add fixes for optimization gaps (annocheck issues):
|
||||
- 8210761: libjsig is being compiled without optimization
|
||||
- 8210647: libsaproc is being compiled without optimization
|
||||
- 8210416: [linux] Poor StrictMath performance due to non-optimized compilation
|
||||
- 8210425: [x86] sharedRuntimeTrig/sharedRuntimeTrans compiled without optimization
|
||||
8u upstream and aarch64/jdk8u upstream versions.
|
||||
|
||||
* Wed Sep 26 2018 Severin Gehwolf <sgehwolf@redhat.com> - 1:1.8.0.181.b15-3
|
||||
- Renamed more patches for clarity:
|
||||
include-all-srcs.patch => 8044235-include-all-srcs.patch
|
||||
|
Loading…
Reference in New Issue
Block a user