diff --git a/java-latest-openjdk.spec b/java-latest-openjdk.spec index 573d0a2..2fce1e9 100644 --- a/java-latest-openjdk.spec +++ b/java-latest-openjdk.spec @@ -85,6 +85,8 @@ %global jit_arches %{ix86} x86_64 sparcv9 sparc64 %{aarch64} %{power64} %{arm} s390x %global aot_arches x86_64 %{aarch64} %global fastdebug_arches x86_64 ppc64le aarch64 s390x +# Set of architectures for which alt-java has SSB mitigation +%global ssbd_arches x86_64 # By default, we build a debug build during main build on JIT architectures %if %{with slowdebug} @@ -243,7 +245,7 @@ %global top_level_dir_name %{origin} %global minorver 0 %global buildver 9 -%global rpmrelease 4 +%global rpmrelease 5 # priority must be 8 digits in total; up to openjdk 1.8, we were using 18..... so when we moved to 11, we had to add another digit %if %is_system_jdk %global priority %( printf '%02d%02d%02d%02d' %{majorver} %{minorver} %{securityver} %{buildver} ) @@ -1630,6 +1632,16 @@ $JAVA_HOME/bin/java --add-opens java.base/javax.crypto=ALL-UNNAMED TestCryptoLev $JAVA_HOME/bin/javac -d . %{SOURCE14} $JAVA_HOME/bin/java $(echo $(basename %{SOURCE14})|sed "s|\.java||") +# Check java launcher has no SSB mitigation +if ! nm $JAVA_HOME/bin/java | grep set_speculation ; then true ; else false; fi + +# Check alt-java launcher has SSB mitigation on supported architectures +%ifarch %{ssbd_arches} +nm $JAVA_HOME/bin/%{alt_java_name} | grep set_speculation +%else +if ! nm $JAVA_HOME/bin/%{alt_java_name} | grep set_speculation ; then true ; else false; fi +%endif + # Check debug symbols in static libraries (smoke test) export STATIC_LIBS_HOME=$(pwd)/%{buildoutputdir -- $suffix}/images/%{static_libs_image} readelf --debug-dump $STATIC_LIBS_HOME/lib/libfdlibm.a | grep w_remainder.c @@ -2055,6 +2067,11 @@ require "copy_jdk_configs.lua" %endif %changelog +* Thu Dec 17 2020 Andrew Hughes - 1:15.0.1.9-5.rolling +- introduced nm based check to verify alt-java on x86_64 is patched, and no other alt-java or java is patched +- patch600 rh1750419-redhat_alt_java.patch amended to die, if it is used wrongly +- introduced ssbd_arches with currently only valid arch of x86_64 to separate real alt-java architectures + * Wed Dec 7 2020 Jiri Vanek - 1:15.0.1.9-4.rolling - moved wrongly placed icenses to acompany other ones - this bad placement was killng parallel-installability and thus having bad impact to leapp if used diff --git a/rh1750419-redhat_alt_java.patch b/rh1750419-redhat_alt_java.patch index a563a43..70f45d4 100644 --- a/rh1750419-redhat_alt_java.patch +++ b/rh1750419-redhat_alt_java.patch @@ -1,7 +1,7 @@ diff -r 1356affa5e44 make/modules/java.base/Launcher.gmk --- openjdk/make/modules/java.base/Launcher.gmk +++ openjdk/make/modules/java.base/Launcher.gmk -@@ -37,6 +37,13 @@ +@@ -37,6 +37,14 @@ $(eval $(call SetupBuildLauncher, java, \ CFLAGS := -DEXPAND_CLASSPATH_WILDCARDS -DENABLE_ARG_FILES, \ @@ -10,8 +10,9 @@ diff -r 1356affa5e44 make/modules/java.base/Launcher.gmk + OPTIMIZATION := HIGH, \ +)) + ++#Wno-error=cpp is present to allow commented warning in ifdef part of main.c +$(eval $(call SetupBuildLauncher, alt-java, \ -+ CFLAGS := -DEXPAND_CLASSPATH_WILDCARDS -DENABLE_ARG_FILES -DREDHAT_ALT_JAVA, \ ++ CFLAGS := -DEXPAND_CLASSPATH_WILDCARDS -DENABLE_ARG_FILES -DREDHAT_ALT_JAVA -Wno-error=cpp, \ EXTRA_RC_FLAGS := $(JAVA_RC_FLAGS), \ VERSION_INFO_RESOURCE := $(JAVA_VERSION_INFO_RESOURCE), \ OPTIMIZATION := HIGH, \ @@ -96,12 +97,16 @@ diff -r 25e94aa812b2 src/share/bin/alt_main.h diff -r 25e94aa812b2 src/share/bin/main.c --- openjdk/src/java.base/share/native/launcher/main.c Wed Feb 05 12:20:36 2020 -0300 +++ openjdk/src/java.base/share/native/launcher/main.c Tue Jun 02 17:15:28 2020 +0100 -@@ -34,6 +34,10 @@ +@@ -34,6 +34,14 @@ #include "jli_util.h" #include "jni.h" ++#ifdef REDHAT_ALT_JAVA +#if defined(__linux__) && defined(__x86_64__) +#include "alt_main.h" ++#else ++#warning alt-java requested but SSB mitigation not available on this platform. ++#endif +#endif + #ifdef _MSC_VER