Architecture specific change in rpms/libreoffice.git
by githook-noreply@fedoraproject.org
The package rpms/libreoffice.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/libreoffice.git/commit/?id=d83754....
Change:
-ExcludeArch: s390x
Thanks.
Full change:
============
commit d83754b0d304611270207e7290b9bbe29295b755
Author: Kalev Lember <klember(a)redhat.com>
Date: Mon Jul 31 19:36:28 2017 +0100
Enable the s390x build again
diff --git a/libreoffice.spec b/libreoffice.spec
index 6f4f5c4..b7062f3 100644
--- a/libreoffice.spec
+++ b/libreoffice.spec
@@ -57,12 +57,10 @@ Summary: Free Software Productivity Suite
Name: libreoffice
Epoch: 1
Version: %{libo_version}.3
-Release: 2%{?libo_prerelease}%{?dist}
+Release: 3%{?libo_prerelease}%{?dist}
License: (MPLv1.1 or LGPLv3+) and LGPLv3 and LGPLv2+ and BSD and (MPLv1.1 or GPLv2 or LGPLv2 or Netscape) and Public Domain and ASL 2.0 and MPLv2.0 and CC0
URL: http://www.libreoffice.org/
-ExcludeArch: s390x
-
Source0: %{source_url}/libreoffice-%{version}%{?libo_prerelease}%{?libo_buildfix}.tar.xz
Source1: %{source_url}/libreoffice-help-%{version}%{?libo_prerelease}%{?libo_buildfix}.tar.xz
Source2: %{source_url}/libreoffice-translations-%{version}%{?libo_prerelease}%{?libo_buildfix}.tar.xz
@@ -2197,6 +2195,9 @@ done
%{_includedir}/LibreOfficeKit
%changelog
+* Mon Jul 31 2017 Kalev Lember <klember(a)redhat.com> - 1:5.4.0.3-3
+- Enable the s390x build again
+
* Mon Jul 31 2017 Kalev Lember <klember(a)redhat.com> - 1:5.4.0.3-2
- Temporarily disable the build on s390x
6 years, 2 months
Architecture specific change in rpms/libreoffice.git
by githook-noreply@fedoraproject.org
The package rpms/libreoffice.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/libreoffice.git/commit/?id=60c8a6....
Change:
+ExcludeArch: s390x
Thanks.
Full change:
============
commit 60c8a62cd1d329648fc68b68c80d5787c2bddd38
Author: Kalev Lember <klember(a)redhat.com>
Date: Mon Jul 31 19:01:06 2017 +0100
Temporarily disable the build on s390x
This should let us to get the boost rebuild done on other arches at
least.
diff --git a/libreoffice.spec b/libreoffice.spec
index 364c7cb..6f4f5c4 100644
--- a/libreoffice.spec
+++ b/libreoffice.spec
@@ -57,10 +57,12 @@ Summary: Free Software Productivity Suite
Name: libreoffice
Epoch: 1
Version: %{libo_version}.3
-Release: 1%{?libo_prerelease}%{?dist}
+Release: 2%{?libo_prerelease}%{?dist}
License: (MPLv1.1 or LGPLv3+) and LGPLv3 and LGPLv2+ and BSD and (MPLv1.1 or GPLv2 or LGPLv2 or Netscape) and Public Domain and ASL 2.0 and MPLv2.0 and CC0
URL: http://www.libreoffice.org/
+ExcludeArch: s390x
+
Source0: %{source_url}/libreoffice-%{version}%{?libo_prerelease}%{?libo_buildfix}.tar.xz
Source1: %{source_url}/libreoffice-help-%{version}%{?libo_prerelease}%{?libo_buildfix}.tar.xz
Source2: %{source_url}/libreoffice-translations-%{version}%{?libo_prerelease}%{?libo_buildfix}.tar.xz
@@ -2195,6 +2197,9 @@ done
%{_includedir}/LibreOfficeKit
%changelog
+* Mon Jul 31 2017 Kalev Lember <klember(a)redhat.com> - 1:5.4.0.3-2
+- Temporarily disable the build on s390x
+
* Wed Jul 26 2017 Fedora Release Engineering <releng(a)fedoraproject.org> - 1:5.4.0.3-1
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
6 years, 2 months
Architecture specific change in rpms/suricata.git
by githook-noreply@fedoraproject.org
The package rpms/suricata.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/suricata.git/commit/?id=715e2a780....
Change:
-%ifarch x86_64
Thanks.
Full change:
============
commit 715e2a7802e8da675de3a293ddb448ccdd6df396
Author: jason taylor <jtfas90(a)gmail.com>
Date: Mon Jul 31 13:42:39 2017 -0400
Latest upstream version release
diff --git a/suricata.spec b/suricata.spec
index c1c818a..021c839 100644
--- a/suricata.spec
+++ b/suricata.spec
@@ -1,12 +1,7 @@
Summary: Intrusion Detection System
Name: suricata
-<<<<<<< HEAD
Version: 4.0.0
Release: 1%{?dist}
-=======
-Version: 3.2.3
-Release: 2%{?dist}
->>>>>>> e65ca7a1dda9e1c375d2d16cb8a0e13a6c2309f5
License: GPLv2
Group: Applications/Internet
URL: http://suricata-ids.org/
@@ -16,11 +11,10 @@ Source2: suricata.sysconfig
Source3: suricata.logrotate
Source4: fedora.notes
Source5: suricata-tmpfiles.conf
-# liblua is not named correctly
-Patch1: suricata-2.0.2-lua.patch
+
# Irrelevant docs are getting installed, drop them
-Patch2: suricata-2.0.9-docs.patch
-BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+Patch1: suricata-2.0.9-docs.patch
+
BuildRequires: libyaml-devel
BuildRequires: libnfnetlink-devel libnetfilter_queue-devel libnet-devel
BuildRequires: zlib-devel libpcap-devel pcre-devel libcap-ng-devel
@@ -28,12 +22,13 @@ BuildRequires: nspr-devel nss-devel nss-softokn-devel file-devel
BuildRequires: jansson-devel GeoIP-devel python2-devel lua-devel
BuildRequires: autoconf automake libtool
BuildRequires: systemd
-BuildRequires: rust cargo
+BuildRequires: hiredis-devel
+BuildRequires: libevent-devel
-%if 0%{?fedora}
+%if 0%{?fedora} >= 25
%ifarch x86_64
BuildRequires: hyperscan-devel
-Requires: hyperscan
+Requires: ragel
%endif
%endif
@@ -42,12 +37,6 @@ Requires(post): systemd
Requires(preun): systemd
Requires(postun): systemd
-%if 0%{?fedora}
-%ifarch x86_64
-Requires: ragel
-%endif
-%endif
-
%description
The Suricata Engine is an Open Source Next Generation Intrusion
Detection and Prevention Engine. This engine is not intended to
@@ -61,16 +50,15 @@ Matching, and GeoIP identification.
%setup -q
install -m 644 %{SOURCE4} doc/
%patch1 -p1
-%patch2 -p1
+
autoreconf -fv --install
%build
-%configure --enable-gccprotect --enable-pie --disable-gccmarch-native --disable-coccinelle --enable-nfqueue --enable-af-packet --with-libnspr-includes=/usr/include/nspr4 --with-libnss-includes=/usr/include/nss3 --enable-jansson --enable-geoip --enable-lua --enable-rust
+%configure --enable-gccprotect --enable-pie --disable-gccmarch-native --disable-coccinelle --enable-nfqueue --enable-af-packet --with-libnspr-includes=/usr/include/nspr4 --with-libnss-includes=/usr/include/nss3 --enable-jansson --enable-geoip --enable-lua --enable-hiredis
-make CFLAGS="%{optflags}" %{?_smp_mflags}
+%make_build
%install
-rm -rf %{buildroot}
make DESTDIR="%{buildroot}" "bindir=%{_sbindir}" install
# Setup etc directory
@@ -83,7 +71,7 @@ install -m 0644 %{SOURCE1} %{buildroot}%{_unitdir}/
mkdir -p %{buildroot}%{_sysconfdir}/sysconfig
install -m 0755 %{SOURCE2} %{buildroot}%{_sysconfdir}/sysconfig/%{name}
-#Setup logging
+# Set up logging
mkdir -p %{buildroot}/%{_var}/log/%{name}
mkdir -p %{buildroot}%{_sysconfdir}/logrotate.d
install -m 644 %{SOURCE3} %{buildroot}%{_sysconfdir}/logrotate.d/%{name}
@@ -146,9 +134,9 @@ getent passwd suricata >/dev/null || useradd -r -M -s /sbin/nologin suricata
%{_tmpfilesdir}/%{name}.conf
%changelog
-* Thu Jul 27 2017 Jason Taylor <jtfas90(a)gmail.com> 4.0.0-1
-- Upstream latest major release
-- Build now has hyperscan support
+* Mon Jul 31 2017 Jason Taylor <jtfas90(a)gmail.com> 4.0.0-1
+- Latest upstream major release
+- Build now has hyperscan and redis support
* Thu Jul 27 2017 Fedora Release Engineering <releng(a)fedoraproject.org> - 3.2.3-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
6 years, 2 months
Architecture specific change in rpms/fio.git
by githook-noreply@fedoraproject.org
The package rpms/fio.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/fio.git/commit/?id=eb680872c830b5....
Change:
+%ifnarch ppc64
Thanks.
Full change:
============
commit eb680872c830b58fcf36e1bb2235585eb4c18b9f
Author: Eric Sandeen <sandeen(a)redhat.com>
Date: Mon Jul 31 11:38:27 2017 -0500
Exclude ceph libs on ppc64 until they're building again
diff --git a/fio.spec b/fio.spec
index fc197f3..a373d2a 100644
--- a/fio.spec
+++ b/fio.spec
@@ -1,6 +1,6 @@
Name: fio
Version: 2.99
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: Multithreaded IO generation tool
Group: Applications/System
@@ -11,12 +11,14 @@ Source: http://brick.kernel.dk/snaps/%{name}-%{version}.tar.bz2
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: libaio-devel
-BuildRequires: librbd1-devel
BuildRequires: zlib-devel
BuildRequires: librdmacm-devel
%ifarch x86_64
BuildRequires: libpmem-devel
%endif
+%ifnarch ppc64
+BuildRequires: librbd1-devel
+%endif
%description
fio is an I/O tool that will spawn a number of threads or processes doing
@@ -49,6 +51,9 @@ rm -rf $RPM_BUILD_ROOT
%{_datadir}/%{name}/*
%changelog
+* Mon Jul 10 2017 Eric Sandeen <sandeen(a)redhat.com> 2.99-3
+- Exclude ceph-related deps on ppc64
+
* Wed Jul 26 2017 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.99-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
6 years, 2 months
Architecture specific change in rpms/java-1.8.0-openjdk-aarch32.git
by githook-noreply@fedoraproject.org
The package rpms/java-1.8.0-openjdk-aarch32.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/java-1.8.0-openjdk-aarch32.git/co....
Change:
+%ifarch %{ix86} x86_64
Thanks.
Full change:
============
commit 7bbcf47cfda53d49e4504cc76a75867bd52c0be2
Merge: 80e5390 afb8236
Author: Alex Kashchenko <akashche(a)redhat.com>
Date: Mon Jul 31 16:32:14 2017 +0000
merge branch f24
diff --cc java-1.8.0-openjdk-aarch32.spec
index 316aaad,e9b4e89..6c80e4b
--- a/java-1.8.0-openjdk-aarch32.spec
+++ b/java-1.8.0-openjdk-aarch32.spec
@@@ -222,7 -242,7 +242,6 @@@
%global jredir() %{expand:%{sdkdir %%1}/jre}
%global sdkbindir() %{expand:%{_jvmdir}/%{sdkdir %%1}/bin}
%global jrebindir() %{expand:%{_jvmdir}/%{jredir %%1}/bin}
--%global jvmjardir() %{expand:%{_jvmjardir}/%{uniquesuffix %%1}}
%global rpm_state_dir %{_localstatedir}/lib/rpm-state/
@@@ -271,7 -291,7 +290,6 @@@ ext=.g
alternatives \\
--install %{_bindir}/java java %{jrebindir %%1}/java $PRIORITY --family %{name}.%{_arch} \\
--slave %{_jvmdir}/jre jre %{_jvmdir}/%{jredir %%1} \\
-- --slave %{_jvmjardir}/jre jre_exports %{_jvmjardir}/%{jrelnk %%1} \\
--slave %{_bindir}/jjs jjs %{jrebindir %%1}/jjs \\
--slave %{_bindir}/keytool keytool %{jrebindir %%1}/keytool \\
--slave %{_bindir}/orbd orbd %{jrebindir %%1}/orbd \\
@@@ -306,15 -326,15 +324,11 @@@
%{_mandir}/man1/unpack200-%{uniquesuffix %%1}.1$ext
for X in %{origin} %{javaver} ; do
-- alternatives \\
-- --install %{_jvmdir}/jre-"$X" \\
-- jre_"$X" %{_jvmdir}/%{jredir %%1} $PRIORITY --family %{name}.%{_arch} \\
-- --slave %{_jvmjardir}/jre-"$X" \\
-- jre_"$X"_exports %{_jvmdir}/%{jredir %%1}
++ alternatives --install %{_jvmdir}/jre-"$X" jre_"$X" %{_jvmdir}/%{jredir %%1} $PRIORITY --family %{name}.%{_arch}
done
--update-alternatives --install %{_jvmdir}/jre-%{javaver}-%{origin} jre_%{javaver}_%{origin} %{_jvmdir}/%{jrelnk %%1} $PRIORITY --family %{name}.%{_arch} \\
----slave %{_jvmjardir}/jre-%{javaver} jre_%{javaver}_%{origin}_exports %{jvmjardir %%1}
++update-alternatives --install %{_jvmdir}/jre-%{javaver}-%{origin} jre_%{javaver}_%{origin} %{_jvmdir}/%{jrelnk %%1} $PRIORITY --family %{name}.%{_arch}
++
update-desktop-database %{_datadir}/applications &> /dev/null || :
/bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
@@@ -362,7 -382,7 +376,6 @@@ ext=.g
alternatives \\
--install %{_bindir}/javac javac %{sdkbindir %%1}/javac $PRIORITY --family %{name}.%{_arch} \\
--slave %{_jvmdir}/java java_sdk %{_jvmdir}/%{sdkdir %%1} \\
-- --slave %{_jvmjardir}/java java_sdk_exports %{_jvmjardir}/%{sdkdir %%1} \\
--slave %{_bindir}/appletviewer appletviewer %{sdkbindir %%1}/appletviewer \\
--slave %{_bindir}/extcheck extcheck %{sdkbindir %%1}/extcheck \\
--slave %{_bindir}/idlj idlj %{sdkbindir %%1}/idlj \\
@@@ -451,15 -471,15 +464,11 @@@
%{_mandir}/man1/xjc-%{uniquesuffix %%1}.1$ext
for X in %{origin} %{javaver} ; do
-- alternatives \\
-- --install %{_jvmdir}/java-"$X" \\
-- java_sdk_"$X" %{_jvmdir}/%{sdkdir %%1} $PRIORITY --family %{name}.%{_arch} \\
-- --slave %{_jvmjardir}/java-"$X" \\
-- java_sdk_"$X"_exports %{_jvmjardir}/%{sdkdir %%1}
++alternatives \\
++ --install %{_jvmdir}/java-"$X" java_sdk_"$X" %{_jvmdir}/%{sdkdir %%1} $PRIORITY --family %{name}.%{_arch}
done
update-alternatives --install %{_jvmdir}/java-%{javaver}-%{origin} java_sdk_%{javaver}_%{origin} %{_jvmdir}/%{sdkdir %%1} $PRIORITY --family %{name}.%{_arch} \\
----slave %{_jvmjardir}/java-%{javaver}-%{origin} java_sdk_%{javaver}_%{origin}_exports %{_jvmjardir}/%{sdkdir %%1}
update-desktop-database %{_datadir}/applications &> /dev/null || :
/bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
@@@ -535,10 -555,11 +544,9 @@@ exit
%license %{buildoutputdir %%1}/images/%{j2sdkimage}/jre/THIRD_PARTY_README
%dir %{_jvmdir}/%{sdkdir %%1}
%{_jvmdir}/%{jrelnk %%1}
--%{_jvmjardir}/%{jrelnk %%1}
%{_jvmprivdir}/*
--%{jvmjardir %%1}
%dir %{_jvmdir}/%{jredir %%1}/lib/security
+ %{_jvmdir}/%{jredir %%1}/lib/security/cacerts
%config(noreplace) %{_jvmdir}/%{jredir %%1}/lib/security/US_export_policy.jar
%config(noreplace) %{_jvmdir}/%{jredir %%1}/lib/security/local_policy.jar
%config(noreplace) %{_jvmdir}/%{jredir %%1}/lib/security/java.policy
@@@ -580,7 -601,7 +588,6 @@@
%{_jvmdir}/%{sdkdir %%1}/bin/*
%{_jvmdir}/%{sdkdir %%1}/include/*
%{_jvmdir}/%{sdkdir %%1}/lib/*
--%{_jvmjardir}/%{sdkdir %%1}
%{_datadir}/applications/*jconsole%1.desktop
%{_mandir}/man1/appletviewer-%{uniquesuffix %%1}.1*
%{_mandir}/man1/extcheck-%{uniquesuffix %%1}.1*
@@@ -954,6 -984,6 +970,7 @@@ Patch554: 8175887-pr3415.patc
Patch201: system-libjpeg.patch
# custom securities
Patch207: PR3183.patch
++#Patch208: aarch64BuildFailure.patch
# Local fixes
# PR1834, RH1022017: Reduce curves reported by SSL to those in NSS
@@@ -994,7 -1025,13 +1012,13 @@@ BuildRequires: nss-deve
BuildRequires: pkgconfig
BuildRequires: xorg-x11-proto-devel
BuildRequires: zip
+ # Use OpenJDK 7 where available (on RHEL) to avoid
+ # having to use the rhel-7.x-java-unsafe-candidate hack
+ %if 0%{?rhel}
+ BuildRequires: java-1.7.0-openjdk-devel
+ %else
-BuildRequires: java-1.8.0-openjdk-aarch32-devel
+BuildRequires: java-1.8.0-openjdk-devel
+ %endif
# Zero-assembler build requirement.
%ifnarch %{jit_arches}
BuildRequires: libffi-devel
@@@ -1264,6 -1336,6 +1323,7 @@@ sh %{SOURCE12
%patch205
%patch206
%patch207
++#%patch208
%patch1
%patch3
@@@ -1644,31 -1718,37 +1706,13 @@@ pop
# Remove empty cacerts database.
rm -f $RPM_BUILD_ROOT%{_jvmdir}/%{jredir $suffix}/lib/security/cacerts
-
- # Install extension symlinks.
- install -d -m 755 $RPM_BUILD_ROOT%{jvmjardir $suffix}
- pushd $RPM_BUILD_ROOT%{jvmjardir $suffix}
- RELATIVE=$(%{abs2rel} %{_jvmdir}/%{jredir $suffix}/lib %{jvmjardir $suffix})
- ln -sf $RELATIVE/jsse.jar jsse-%{version}.jar
- ln -sf $RELATIVE/jce.jar jce-%{version}.jar
- ln -sf $RELATIVE/rt.jar jndi-%{version}.jar
- ln -sf $RELATIVE/rt.jar jndi-ldap-%{version}.jar
- ln -sf $RELATIVE/rt.jar jndi-cos-%{version}.jar
- ln -sf $RELATIVE/rt.jar jndi-rmi-%{version}.jar
- ln -sf $RELATIVE/rt.jar jaas-%{version}.jar
- ln -sf $RELATIVE/rt.jar jdbc-stdext-%{version}.jar
- ln -sf jdbc-stdext-%{version}.jar jdbc-stdext-3.0.jar
- ln -sf $RELATIVE/rt.jar sasl-%{version}.jar
- for jar in *-%{version}.jar
- do
- if [ x%{version} != x%{javaver} ]
- then
- ln -sf $jar $(echo $jar | sed "s|-%{version}.jar|-%{javaver}.jar|g")
- fi
- ln -sf $jar $(echo $jar | sed "s|-%{version}.jar|.jar|g")
- done
+ # Install cacerts symlink needed by some apps which hardcode the path.
+ pushd $RPM_BUILD_ROOT%{_jvmdir}/%{jredir $suffix}/lib/security
+ RELATIVE=$(%{abs2rel} %{_sysconfdir}/pki/java \
+ %{_jvmdir}/%{jredir $suffix}/lib/security)
+ ln -sf $RELATIVE/cacerts .
popd
- # Install extension symlinks.
- install -d -m 755 $RPM_BUILD_ROOT%{jvmjardir $suffix}
- pushd $RPM_BUILD_ROOT%{jvmjardir $suffix}
- RELATIVE=$(%{abs2rel} %{_jvmdir}/%{jredir $suffix}/lib %{jvmjardir $suffix})
- ln -sf $RELATIVE/jsse.jar jsse-%{version}.jar
- ln -sf $RELATIVE/jce.jar jce-%{version}.jar
- ln -sf $RELATIVE/rt.jar jndi-%{version}.jar
- ln -sf $RELATIVE/rt.jar jndi-ldap-%{version}.jar
- ln -sf $RELATIVE/rt.jar jndi-cos-%{version}.jar
- ln -sf $RELATIVE/rt.jar jndi-rmi-%{version}.jar
- ln -sf $RELATIVE/rt.jar jaas-%{version}.jar
- ln -sf $RELATIVE/rt.jar jdbc-stdext-%{version}.jar
- ln -sf jdbc-stdext-%{version}.jar jdbc-stdext-3.0.jar
- ln -sf $RELATIVE/rt.jar sasl-%{version}.jar
- for jar in *-%{version}.jar
- do
- if [ x%{version} != x%{javaver} ]
- then
- ln -sf $jar $(echo $jar | sed "s|-%{version}.jar|-%{javaver}.jar|g")
- fi
- ln -sf $jar $(echo $jar | sed "s|-%{version}.jar|.jar|g")
- done
- popd
-
# Install JCE policy symlinks.
install -d -m 755 $RPM_BUILD_ROOT%{_jvmprivdir}/%{uniquesuffix $suffix}/jce/vanilla
@@@ -1677,10 -1757,10 +1721,6 @@@
ln -sf %{jredir $suffix} %{jrelnk $suffix}
popd
-- pushd $RPM_BUILD_ROOT%{_jvmjardir}
-- ln -sf %{sdkdir $suffix} %{jrelnk $suffix}
-- popd
--
# Remove javaws man page
rm -f man/man1/javaws*
@@@ -1995,12 -2126,10 +2086,16 @@@ require "copy_jdk_configs.lua
%endif
%changelog
+* Wed Jul 26 2017 Fedora Release Engineering <releng(a)fedoraproject.org> - 1:1.8.0.131-3.170420
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
+
+ * Mon Jul 24 2017 Alex Kashchenko <akashche(a)redhat.com> - 1:1.8.0.141-1.170721
+ - update sources to 8u141
+ - sync with mainline package
+
+* Sun Apr 30 2017 Alex Kashchenko <akashche(a)redhat.com> - 1:1.8.0.131-2.170420
+- revert boot jdk to zero due to koschei arch-specific dep problem persists
+
* Sat Apr 29 2017 Alex Kashchenko <akashche(a)redhat.com> - 1:1.8.0.131-1.170420
- update sources to 8u131
- sync with mainline package
commit afb82366611da1fa7a40b878c2e8d162e6eaeb29
Author: Alex Kashchenko <akashche(a)redhat.com>
Date: Tue Jul 25 20:07:34 2017 +0000
sources file update
diff --git a/.gitignore b/.gitignore
index 70f7217..5d0305e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,3 +6,4 @@
/aarch32-port-jdk8u-jdk8u121-b13-aarch32-170210.tar.xz
/aarch32-port-jdk8u-jdk8u131-b12-aarch32-170420.tar.xz
/systemtap-tapset-3.4.0pre01.tar.xz
+/aarch32-port-jdk8u-jdk8u141-b15-aarch32-170721.tar.xz
diff --git a/sources b/sources
index 92a8fc8..3ab8e1c 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
SHA512 (systemtap-tapset-3.4.0pre01.tar.xz) = 4446fa20f88bbce53b583484bf06cb2b476c9372beb898dc2b7739eaa5c98b9979fbd72e12474fb344833d831a19366b82216ee03b452411745e6cd3527faa4e
-SHA512 (aarch32-port-jdk8u-jdk8u131-b12-aarch32-170420.tar.xz) = 8cfca4b5f9d58fc22ea9011182dbb58f5614e23281d781c335ed9ae069e0e6587fb82f3b733e3f38e258e802342e679a6177ea59ec45f7bb9253c2b88bfe73e7
+SHA512 (aarch32-port-jdk8u-jdk8u141-b15-aarch32-170721.tar.xz) = 81a3963eb51e33134d10fcd197530ea6589e16a807132cedc563c5a13ccc5ce2d08f0c8510008a7474792ed226d88ef8e29313cd6532e24cc7ec785c4ae4af70
commit 9bc047fab7203b54d1ee71c21ee89edc5b3258a7
Author: Alex Kashchenko <akashche(a)redhat.com>
Date: Tue Jul 25 16:59:22 2017 +0000
update ecc patches
diff --git a/pr1983-jdk.patch b/pr1983-jdk.patch
index a0b4e1a..673b8a9 100644
--- a/pr1983-jdk.patch
+++ b/pr1983-jdk.patch
@@ -6,10 +6,11 @@
# Parent afd392dfaed501ac674a7cc3e37353ce300969c7
PR1983: Support using the system installation of NSS with the SunEC provider
Summary: Apply code changes from PR1699 & PR1742 & forward-port Makefile changes to the new build.
+Updated 2017/07/04 to accomodate 8175110
-diff -r afd392dfaed5 -r 48c15869ecd5 make/lib/SecurityLibraries.gmk
---- openjdk/jdk/make/lib/SecurityLibraries.gmk Tue Jan 26 22:26:26 2016 +0000
-+++ openjdk/jdk/make/lib/SecurityLibraries.gmk Wed Jan 27 02:54:06 2016 +0000
+diff -r 984a4af2ed4e make/lib/SecurityLibraries.gmk
+--- openjdk/jdk/make/lib/SecurityLibraries.gmk
++++ openjdk/jdk/make/lib/SecurityLibraries.gmk
@@ -218,8 +218,17 @@
ifeq ($(ENABLE_INTREE_EC), yes)
@@ -51,9 +52,9 @@ diff -r afd392dfaed5 -r 48c15869ecd5 make/lib/SecurityLibraries.gmk
VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \
RC_FLAGS := $(RC_FLAGS) \
-D "JDK_FNAME=sunec.dll" \
-diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/ECC_JNI.cpp
---- openjdk/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp Tue Jan 26 22:26:26 2016 +0000
-+++ openjdk/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp Wed Jan 27 02:54:06 2016 +0000
+diff -r 984a4af2ed4e src/share/native/sun/security/ec/ECC_JNI.cpp
+--- openjdk/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp
++++ openjdk/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp
@@ -24,7 +24,7 @@
*/
@@ -76,8 +77,8 @@ diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/ECC_JNI.cp
*/
JNIEXPORT jbyteArray
JNICALL Java_sun_security_ec_ECDSASignature_signDigest
-- (JNIEnv *env, jclass clazz, jbyteArray digest, jbyteArray privateKey, jbyteArray encodedParams, jbyteArray seed)
-+ (JNIEnv *env, jclass UNUSED(clazz), jbyteArray digest, jbyteArray privateKey, jbyteArray encodedParams, jbyteArray seed)
+- (JNIEnv *env, jclass clazz, jbyteArray digest, jbyteArray privateKey, jbyteArray encodedParams, jbyteArray seed, jint timing)
++ (JNIEnv *env, jclass UNUSED(clazz), jbyteArray digest, jbyteArray privateKey, jbyteArray encodedParams, jbyteArray seed, jint timing)
{
jbyte* pDigestBuffer = NULL;
jint jDigestLength = env->GetArrayLength(digest);
@@ -99,12 +100,12 @@ diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/ECC_JNI.cp
{
jbyteArray jSecret = NULL;
ECParams *ecparams = NULL;
-diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/ecc_impl.h
---- /dev/null Thu Jan 01 00:00:00 1970 +0000
-+++ openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h Wed Jan 27 02:54:06 2016 +0000
+diff -r 984a4af2ed4e src/share/native/sun/security/ec/ecc_impl.h
+--- /dev/null
++++ openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h
@@ -0,0 +1,298 @@
+/*
-+ * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2007, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Use is subject to license terms.
+ *
+ * This library is free software; you can redistribute it and/or
@@ -139,7 +140,7 @@ diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/ecc_impl.h
+ * Dr Vipul Gupta <vipul.gupta(a)sun.com> and
+ * Douglas Stebila <douglas(a)stebila.ca>, Sun Microsystems Laboratories
+ *
-+ * Last Modified Date from the Original Code: November 2013
++ * Last Modified Date from the Original Code: May 2017
+ *********************************************************************** */
+
+#ifndef _ECC_IMPL_H
@@ -373,7 +374,7 @@ diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/ecc_impl.h
+#ifdef SYSTEM_NSS
+#define EC_DecodeParams(a,b,c) EC_DecodeParams(a,b)
+#define EC_NewKey(a,b,c,d,e) EC_NewKeyFromSeed(a,b,c,d)
-+#define ECDSA_SignDigest(a,b,c,d,e,f) ECDSA_SignDigestWithSeed(a,b,c,d,e)
++#define ECDSA_SignDigest(a,b,c,d,e,f,g) ECDSA_SignDigestWithSeed(a,b,c,d,e)
+#define ECDSA_VerifyDigest(a,b,c,d) ECDSA_VerifyDigest(a,b,c)
+#define ECDH_Derive(a,b,c,d,e,f) ECDH_Derive(a,b,c,d,e)
+#else
@@ -389,7 +390,7 @@ diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/ecc_impl.h
+ const unsigned char* random, int randomlen, int);
+/* This function has been modified to accept an array of random bytes */
+extern SECStatus ECDSA_SignDigest(ECPrivateKey *, SECItem *, const SECItem *,
-+ const unsigned char* random, int randomlen, int);
++ const unsigned char* random, int randomlen, int, int timing);
+extern SECStatus ECDSA_VerifyDigest(ECPublicKey *, const SECItem *,
+ const SECItem *, int);
+extern SECStatus ECDH_Derive(SECItem *, ECParams *, SECItem *, boolean_t,
@@ -401,12 +402,12 @@ diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/ecc_impl.h
+#endif
+
+#endif /* _ECC_IMPL_H */
-diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/impl/ecc_impl.h
---- openjdk/jdk/src/share/native/sun/security/ec/impl/ecc_impl.h Tue Jan 26 22:26:26 2016 +0000
-+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
+diff -r 984a4af2ed4e src/share/native/sun/security/ec/impl/ecc_impl.h
+--- openjdk/jdk/src/share/native/sun/security/ec/impl/ecc_impl.h
++++ /dev/null
@@ -1,271 +0,0 @@
-/*
-- * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
+- * Copyright (c) 2007, 2017, Oracle and/or its affiliates. All rights reserved.
- * Use is subject to license terms.
- *
- * This library is free software; you can redistribute it and/or
@@ -441,7 +442,7 @@ diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/impl/ecc_i
- * Dr Vipul Gupta <vipul.gupta(a)sun.com> and
- * Douglas Stebila <douglas(a)stebila.ca>, Sun Microsystems Laboratories
- *
-- * Last Modified Date from the Original Code: November 2013
+- * Last Modified Date from the Original Code: May 2017
- *********************************************************************** */
-
-#ifndef _ECC_IMPL_H
@@ -665,7 +666,7 @@ diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/impl/ecc_i
- const unsigned char* random, int randomlen, int);
-/* This function has been modified to accept an array of random bytes */
-extern SECStatus ECDSA_SignDigest(ECPrivateKey *, SECItem *, const SECItem *,
-- const unsigned char* random, int randomlen, int);
+- const unsigned char* random, int randomlen, int, int timing);
-extern SECStatus ECDSA_VerifyDigest(ECPublicKey *, const SECItem *,
- const SECItem *, int);
-extern SECStatus ECDH_Derive(SECItem *, ECParams *, SECItem *, boolean_t,
@@ -676,9 +677,9 @@ diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/impl/ecc_i
-#endif
-
-#endif /* _ECC_IMPL_H */
-diff -r afd392dfaed5 -r 48c15869ecd5 src/solaris/javavm/export/jni_md.h
---- openjdk/jdk/src/solaris/javavm/export/jni_md.h Tue Jan 26 22:26:26 2016 +0000
-+++ openjdk/jdk/src/solaris/javavm/export/jni_md.h Wed Jan 27 02:54:06 2016 +0000
+diff -r 984a4af2ed4e src/solaris/javavm/export/jni_md.h
+--- openjdk/jdk/src/solaris/javavm/export/jni_md.h
++++ openjdk/jdk/src/solaris/javavm/export/jni_md.h
@@ -36,6 +36,11 @@
#define JNIEXPORT
#define JNIIMPORT
diff --git a/pr2899.patch b/pr2899.patch
index 58fb3c8..ffdefb0 100644
--- a/pr2899.patch
+++ b/pr2899.patch
@@ -6,18 +6,19 @@
# Parent 8957aff589013e671f02d38023d5ff245ef27e87
PR2899: Don't use WithSeed versions of NSS functions as they don't fully process the seed
Contributed-by: Alex Kashchenko <akashche(a)redhat.com>
+Updated 2017/07/04 to accomodate 8175110 by Andrew Hughes <gnu.andrew(a)redhat.com>
-diff -r 8957aff58901 -r 9dc0eca5fa89 src/share/native/sun/security/ec/ecc_impl.h
---- openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h Wed Mar 30 04:48:56 2016 +0100
-+++ openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h Wed Mar 30 05:54:40 2016 +0100
+diff -r e5fdbb82bd49 src/share/native/sun/security/ec/ecc_impl.h
+--- openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h
++++ openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h
@@ -267,8 +267,8 @@
#ifdef SYSTEM_NSS
#define EC_DecodeParams(a,b,c) EC_DecodeParams(a,b)
-#define EC_NewKey(a,b,c,d,e) EC_NewKeyFromSeed(a,b,c,d)
--#define ECDSA_SignDigest(a,b,c,d,e,f) ECDSA_SignDigestWithSeed(a,b,c,d,e)
+-#define ECDSA_SignDigest(a,b,c,d,e,f,g) ECDSA_SignDigestWithSeed(a,b,c,d,e)
+#define EC_NewKey(a,b,c,d,e) EC_NewKey(a,b)
-+#define ECDSA_SignDigest(a,b,c,d,e,f) ECDSA_SignDigest(a,b,c)
++#define ECDSA_SignDigest(a,b,c,d,e,f,g) ECDSA_SignDigest(a,b,c)
#define ECDSA_VerifyDigest(a,b,c,d) ECDSA_VerifyDigest(a,b,c)
#define ECDH_Derive(a,b,c,d,e,f) ECDH_Derive(a,b,c,d,e)
#else
diff --git a/pr2934.patch b/pr2934.patch
index 21e769d..83385da 100644
--- a/pr2934.patch
+++ b/pr2934.patch
@@ -6,10 +6,11 @@
# Parent 3fa42705acab6d69b6141f47ebba4f85739a338c
PR2934: SunEC provider throwing KeyException with current NSS
Summary: Initialise the random number generator and feed the seed to it.
+Updated 2017/07/04 to accomodate 8175110
-diff -r 3fa42705acab -r dab76de2f91c src/share/native/sun/security/ec/ECC_JNI.cpp
---- openjdk/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp Wed Apr 20 03:39:11 2016 +0100
-+++ openjdk/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp Fri Apr 22 19:17:13 2016 +0100
+diff -r 8aed1e903a4c src/share/native/sun/security/ec/ECC_JNI.cpp
+--- openjdk/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp
++++ openjdk/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp
@@ -134,8 +134,17 @@
env->GetByteArrayRegion(seed, 0, jSeedLength, pSeedBuffer);
@@ -42,7 +43,7 @@ diff -r 3fa42705acab -r dab76de2f91c src/share/native/sun/security/ec/ECC_JNI.cp
+ != SECSuccess) {
+#else
if (ECDSA_SignDigest(&privKey, &signature_item, &digest_item,
- (unsigned char *) pSeedBuffer, jSeedLength, 0) != SECSuccess) {
+ (unsigned char *) pSeedBuffer, jSeedLength, 0, timing) != SECSuccess) {
+#endif
ThrowException(env, KEY_EXCEPTION);
goto cleanup;
@@ -65,9 +66,9 @@ diff -r 3fa42705acab -r dab76de2f91c src/share/native/sun/security/ec/ECC_JNI.cp
if (SECOID_Shutdown() != SECSuccess) {
ThrowException(env, INTERNAL_ERROR);
}
-diff -r 3fa42705acab -r dab76de2f91c src/share/native/sun/security/ec/ecc_impl.h
---- openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h Wed Apr 20 03:39:11 2016 +0100
-+++ openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h Fri Apr 22 19:17:13 2016 +0100
+diff -r 8aed1e903a4c src/share/native/sun/security/ec/ecc_impl.h
+--- openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h
++++ openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h
@@ -254,8 +254,10 @@
This function is no longer required because the random bytes are now
supplied by the caller. Force a failure.
@@ -84,7 +85,7 @@ diff -r 3fa42705acab -r dab76de2f91c src/share/native/sun/security/ec/ecc_impl.h
#ifdef SYSTEM_NSS
#define EC_DecodeParams(a,b,c) EC_DecodeParams(a,b)
-#define EC_NewKey(a,b,c,d,e) EC_NewKey(a,b)
--#define ECDSA_SignDigest(a,b,c,d,e,f) ECDSA_SignDigest(a,b,c)
+-#define ECDSA_SignDigest(a,b,c,d,e,f,g) ECDSA_SignDigest(a,b,c)
#define ECDSA_VerifyDigest(a,b,c,d) ECDSA_VerifyDigest(a,b,c)
#define ECDH_Derive(a,b,c,d,e,f) ECDH_Derive(a,b,c,d,e)
#else
commit 3bf53797edbee4e08a8a8139692e79052f14e431
Author: Alex Kashchenko <akashche(a)redhat.com>
Date: Mon Jul 24 11:14:16 2017 +0000
8u141 update, mainline merge
diff --git a/8144566-pr3352.patch b/8144566-pr3352.patch
deleted file mode 100644
index 9a2a294..0000000
--- a/8144566-pr3352.patch
+++ /dev/null
@@ -1,911 +0,0 @@
-# HG changeset patch
-# User rpatil
-# Date 1474623897 -19800
-# Fri Sep 23 15:14:57 2016 +0530
-# Node ID fb617df8fbac42e962219e45cbd29b15b5ecdc63
-# Parent d41592af9af3790fe5eee30ce686d85cff09c942
-8144566, PR3352: Custom HostnameVerifier disables SNI extension
-Reviewed-by: coffeys
-
-diff --git a/src/share/classes/sun/security/ssl/SSLSocketImpl.java b/src/share/classes/sun/security/ssl/SSLSocketImpl.java
---- openjdk/jdk/src/share/classes/sun/security/ssl/SSLSocketImpl.java
-+++ openjdk/jdk/src/share/classes/sun/security/ssl/SSLSocketImpl.java
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
-@@ -220,6 +220,11 @@
- Collections.<SNIServerName>emptyList();
- Collection<SNIMatcher> sniMatchers =
- Collections.<SNIMatcher>emptyList();
-+ // Is the serverNames set to empty with SSLParameters.setServerNames()?
-+ private boolean noSniExtension = false;
-+
-+ // Is the sniMatchers set to empty with SSLParameters.setSNIMatchers()?
-+ private boolean noSniMatcher = false;
-
- /*
- * READ ME * READ ME * READ ME * READ ME * READ ME * READ ME *
-@@ -666,6 +671,11 @@
- }
-
- super.connect(endpoint, timeout);
-+
-+ if (host == null || host.length() == 0) {
-+ useImplicitHost(false);
-+ }
-+
- doneConnect();
- }
-
-@@ -2158,41 +2168,61 @@
- output.r.setVersion(protocolVersion);
- }
-
-+ //
-+ // ONLY used by ClientHandshaker for the server hostname during handshaking
-+ //
- synchronized String getHost() {
- // Note that the host may be null or empty for localhost.
- if (host == null || host.length() == 0) {
-- if (!trustNameService) {
-- // If the local name service is not trustworthy, reverse host
-- // name resolution should not be performed for endpoint
-- // identification. Use the application original specified
-- // hostname or IP address instead.
-- host = getOriginalHostname(getInetAddress());
-- } else {
-- host = getInetAddress().getHostName();
-- }
-+ useImplicitHost(true);
- }
-
- return host;
- }
-
- /*
-- * Get the original application specified hostname.
-+ * Try to set and use the implicit specified hostname
- */
-- private static String getOriginalHostname(InetAddress inetAddress) {
-- /*
-- * Get the original hostname via sun.misc.SharedSecrets.
-- */
-+ private synchronized void useImplicitHost(boolean noSniUpdate) {
-+
-+ // Note: If the local name service is not trustworthy, reverse
-+ // host name resolution should not be performed for endpoint
-+ // identification. Use the application original specified
-+ // hostname or IP address instead.
-+
-+ // Get the original hostname via jdk.internal.misc.SharedSecrets
-+ InetAddress inetAddress = getInetAddress();
-+ if (inetAddress == null) { // not connected
-+ return;
-+ }
-+
- JavaNetAccess jna = SharedSecrets.getJavaNetAccess();
- String originalHostname = jna.getOriginalHostName(inetAddress);
-+ if ((originalHostname != null) &&
-+ (originalHostname.length() != 0)) {
-
-- /*
-- * If no application specified hostname, use the IP address.
-- */
-- if (originalHostname == null || originalHostname.length() == 0) {
-- originalHostname = inetAddress.getHostAddress();
-+ host = originalHostname;
-+ if (!noSniUpdate && serverNames.isEmpty() && !noSniExtension) {
-+ serverNames =
-+ Utilities.addToSNIServerNameList(serverNames, host);
-+
-+ if (!roleIsServer &&
-+ (handshaker != null) && !handshaker.started()) {
-+ handshaker.setSNIServerNames(serverNames);
-+ }
-+ }
-+
-+ return;
- }
-
-- return originalHostname;
-+ // No explicitly specified hostname, no server name indication.
-+ if (!trustNameService) {
-+ // The local name service is not trustworthy, use IP address.
-+ host = inetAddress.getHostAddress();
-+ } else {
-+ // Use the underlying reverse host name resolution service.
-+ host = getInetAddress().getHostName();
-+ }
- }
-
-
-@@ -2205,6 +2235,10 @@
- this.host = host;
- this.serverNames =
- Utilities.addToSNIServerNameList(this.serverNames, this.host);
-+
-+ if (!roleIsServer && (handshaker != null) && !handshaker.started()) {
-+ handshaker.setSNIServerNames(serverNames);
-+ }
- }
-
- /**
-@@ -2571,8 +2605,21 @@
- // the super implementation does not handle the following parameters
- params.setEndpointIdentificationAlgorithm(identificationProtocol);
- params.setAlgorithmConstraints(algorithmConstraints);
-- params.setSNIMatchers(sniMatchers);
-- params.setServerNames(serverNames);
-+
-+ if (sniMatchers.isEmpty() && !noSniMatcher) {
-+ // 'null' indicates none has been set
-+ params.setSNIMatchers(null);
-+ } else {
-+ params.setSNIMatchers(sniMatchers);
-+ }
-+
-+ if (serverNames.isEmpty() && !noSniExtension) {
-+ // 'null' indicates none has been set
-+ params.setServerNames(null);
-+ } else {
-+ params.setServerNames(serverNames);
-+ }
-+
- params.setUseCipherSuitesOrder(preferLocalCipherSuites);
-
- return params;
-@@ -2592,11 +2639,13 @@
-
- List<SNIServerName> sniNames = params.getServerNames();
- if (sniNames != null) {
-+ noSniExtension = sniNames.isEmpty();
- serverNames = sniNames;
- }
-
- Collection<SNIMatcher> matchers = params.getSNIMatchers();
- if (matchers != null) {
-+ noSniMatcher = matchers.isEmpty();
- sniMatchers = matchers;
- }
-
-diff --git a/test/javax/net/ssl/ServerName/BestEffortOnLazyConnected.java b/test/javax/net/ssl/ServerName/BestEffortOnLazyConnected.java
-new file mode 100644
---- /dev/null
-+++ openjdk/jdk/test/javax/net/ssl/ServerName/BestEffortOnLazyConnected.java
-@@ -0,0 +1,337 @@
-+/*
-+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * This code is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 only, as
-+ * published by the Free Software Foundation.
-+ *
-+ * This code is distributed in the hope that it will be useful, but WITHOUT
-+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-+ * version 2 for more details (a copy is included in the LICENSE file that
-+ * accompanied this code).
-+ *
-+ * You should have received a copy of the GNU General Public License version
-+ * 2 along with this work; if not, write to the Free Software Foundation,
-+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-+ *
-+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-+ * or visit www.oracle.com if you need additional information or have any
-+ * questions.
-+ */
-+
-+//
-+// SunJSSE does not support dynamic system properties, no way to re-use
-+// system properties in samevm/agentvm mode.
-+//
-+
-+/**
-+ * @test
-+ * @bug 8144566
-+ * @summary Custom HostnameVerifier disables SNI extension
-+ * @run main/othervm BestEffortOnLazyConnected
-+ */
-+
-+import java.io.*;
-+import java.nio.*;
-+import java.nio.channels.*;
-+import java.util.*;
-+import java.net.*;
-+import javax.net.ssl.*;
-+
-+public class BestEffortOnLazyConnected {
-+
-+ /*
-+ * =============================================================
-+ * Set the various variables needed for the tests, then
-+ * specify what tests to run on each side.
-+ */
-+
-+ /*
-+ * Should we run the client or server in a separate thread?
-+ * Both sides can throw exceptions, but do you have a preference
-+ * as to which side should be the main thread.
-+ */
-+ private static final boolean separateServerThread = true;
-+
-+ /*
-+ * Where do we find the keystores?
-+ */
-+ private static final String pathToStores = "../../../../sun/security/ssl/etc";
-+ private static final String keyStoreFile = "keystore";
-+ private static final String trustStoreFile = "truststore";
-+ private static final String passwd = "passphrase";
-+
-+ /*
-+ * Is the server ready to serve?
-+ */
-+ private static volatile boolean serverReady = false;
-+
-+ /*
-+ * Turn on SSL debugging?
-+ */
-+ private static final boolean debug = false;
-+
-+ /*
-+ * the fully qualified domain name of localhost
-+ */
-+ private static String hostname = null;
-+
-+ /*
-+ * If the client or server is doing some kind of object creation
-+ * that the other side depends on, and that thread prematurely
-+ * exits, you may experience a hang. The test harness will
-+ * terminate all hung threads after its timeout has expired,
-+ * currently 3 minutes by default, but you might try to be
-+ * smart about it....
-+ */
-+
-+ /*
-+ * Define the server side of the test.
-+ *
-+ * If the server prematurely exits, serverReady will be set to true
-+ * to avoid infinite hangs.
-+ */
-+ private void doServerSide() throws Exception {
-+ SSLServerSocketFactory sslssf =
-+ (SSLServerSocketFactory) SSLServerSocketFactory.getDefault();
-+ try (SSLServerSocket sslServerSocket =
-+ (SSLServerSocket) sslssf.createServerSocket(serverPort)) {
-+
-+ serverPort = sslServerSocket.getLocalPort();
-+
-+ /*
-+ * Signal Client, we're ready for his connect.
-+ */
-+ serverReady = true;
-+
-+ try (SSLSocket sslSocket = (SSLSocket)sslServerSocket.accept()) {
-+ InputStream sslIS = sslSocket.getInputStream();
-+ OutputStream sslOS = sslSocket.getOutputStream();
-+
-+ sslIS.read();
-+ sslOS.write(85);
-+ sslOS.flush();
-+
-+ ExtendedSSLSession session =
-+ (ExtendedSSLSession)sslSocket.getSession();
-+ if (session.getRequestedServerNames().isEmpty()) {
-+ throw new Exception("No expected Server Name Indication");
-+ }
-+ }
-+ }
-+ }
-+
-+ /*
-+ * Define the client side of the test.
-+ *
-+ * If the server prematurely exits, serverReady will be set to true
-+ * to avoid infinite hangs.
-+ */
-+ private void doClientSide() throws Exception {
-+
-+ /*
-+ * Wait for server to get started.
-+ */
-+ while (!serverReady) {
-+ Thread.sleep(50);
-+ }
-+
-+ SSLSocketFactory sslsf =
-+ (SSLSocketFactory) SSLSocketFactory.getDefault();
-+
-+ try (SSLSocket sslSocket = (SSLSocket)sslsf.createSocket()) {
-+
-+ sslSocket.connect(new InetSocketAddress(hostname, serverPort), 0);
-+
-+ InputStream sslIS = sslSocket.getInputStream();
-+ OutputStream sslOS = sslSocket.getOutputStream();
-+
-+ sslOS.write(280);
-+ sslOS.flush();
-+ sslIS.read();
-+ }
-+ }
-+
-+
-+ /*
-+ * =============================================================
-+ * The remainder is just support stuff
-+ */
-+
-+ // use any free port by default
-+ private volatile int serverPort = 0;
-+
-+ private volatile Exception serverException = null;
-+ private volatile Exception clientException = null;
-+
-+ public static void main(String[] args) throws Exception {
-+ String keyFilename =
-+ System.getProperty("test.src", ".") + "/" + pathToStores +
-+ "/" + keyStoreFile;
-+ String trustFilename =
-+ System.getProperty("test.src", ".") + "/" + pathToStores +
-+ "/" + trustStoreFile;
-+
-+ System.setProperty("javax.net.ssl.keyStore", keyFilename);
-+ System.setProperty("javax.net.ssl.keyStorePassword", passwd);
-+ System.setProperty("javax.net.ssl.trustStore", trustFilename);
-+ System.setProperty("javax.net.ssl.trustStorePassword", passwd);
-+
-+ if (debug) {
-+ System.setProperty("javax.net.debug", "all");
-+ }
-+
-+ try {
-+ hostname = InetAddress.getLocalHost().getCanonicalHostName();
-+ } catch (UnknownHostException uhe) {
-+ System.out.println(
-+ "Ignore the test as the local hostname cannot be determined");
-+
-+ return;
-+ }
-+
-+ System.out.println(
-+ "The fully qualified domain name of the local host is " +
-+ hostname);
-+ // Ignore the test if the hostname does not sound like a domain name.
-+ if ((hostname == null) || hostname.isEmpty() ||
-+ hostname.startsWith("localhost") ||
-+ Character.isDigit(hostname.charAt(hostname.length() - 1))) {
-+
-+ System.out.println("Ignore the test as the local hostname " +
-+ "cannot be determined as fully qualified domain name");
-+
-+ return;
-+ }
-+
-+ /*
-+ * Start the tests.
-+ */
-+ new BestEffortOnLazyConnected();
-+ }
-+
-+ private Thread clientThread = null;
-+ private Thread serverThread = null;
-+
-+ /*
-+ * Primary constructor, used to drive remainder of the test.
-+ *
-+ * Fork off the other side, then do your work.
-+ */
-+ BestEffortOnLazyConnected() throws Exception {
-+ try {
-+ if (separateServerThread) {
-+ startServer(true);
-+ startClient(false);
-+ } else {
-+ startClient(true);
-+ startServer(false);
-+ }
-+ } catch (Exception e) {
-+ // swallow for now. Show later
-+ }
-+
-+ /*
-+ * Wait for other side to close down.
-+ */
-+ if (separateServerThread) {
-+ serverThread.join();
-+ } else {
-+ clientThread.join();
-+ }
-+
-+ /*
-+ * When we get here, the test is pretty much over.
-+ * Which side threw the error?
-+ */
-+ Exception local;
-+ Exception remote;
-+ String whichRemote;
-+
-+ if (separateServerThread) {
-+ remote = serverException;
-+ local = clientException;
-+ whichRemote = "server";
-+ } else {
-+ remote = clientException;
-+ local = serverException;
-+ whichRemote = "client";
-+ }
-+
-+ /*
-+ * If both failed, return the curthread's exception, but also
-+ * print the remote side Exception
-+ */
-+ if ((local != null) && (remote != null)) {
-+ System.out.println(whichRemote + " also threw:");
-+ remote.printStackTrace();
-+ System.out.println();
-+ throw local;
-+ }
-+
-+ if (remote != null) {
-+ throw remote;
-+ }
-+
-+ if (local != null) {
-+ throw local;
-+ }
-+ }
-+
-+ private void startServer(boolean newThread) throws Exception {
-+ if (newThread) {
-+ serverThread = new Thread() {
-+ public void run() {
-+ try {
-+ doServerSide();
-+ } catch (Exception e) {
-+ /*
-+ * Our server thread just died.
-+ *
-+ * Release the client, if not active already...
-+ */
-+ System.err.println("Server died...");
-+ serverReady = true;
-+ serverException = e;
-+ }
-+ }
-+ };
-+ serverThread.start();
-+ } else {
-+ try {
-+ doServerSide();
-+ } catch (Exception e) {
-+ serverException = e;
-+ } finally {
-+ serverReady = true;
-+ }
-+ }
-+ }
-+
-+ private void startClient(boolean newThread) throws Exception {
-+ if (newThread) {
-+ clientThread = new Thread() {
-+ public void run() {
-+ try {
-+ doClientSide();
-+ } catch (Exception e) {
-+ /*
-+ * Our client thread just died.
-+ */
-+ System.err.println("Client died...");
-+ clientException = e;
-+ }
-+ }
-+ };
-+ clientThread.start();
-+ } else {
-+ try {
-+ doClientSide();
-+ } catch (Exception e) {
-+ clientException = e;
-+ }
-+ }
-+ }
-+}
-diff --git a/test/sun/net/www/protocol/https/HttpsURLConnection/ImpactOnSNI.java b/test/sun/net/www/protocol/https/HttpsURLConnection/ImpactOnSNI.java
-new file mode 100644
---- /dev/null
-+++ openjdk/jdk/test/sun/net/www/protocol/https/HttpsURLConnection/ImpactOnSNI.java
-@@ -0,0 +1,390 @@
-+/*
-+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * This code is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 only, as
-+ * published by the Free Software Foundation.
-+ *
-+ * This code is distributed in the hope that it will be useful, but WITHOUT
-+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-+ * version 2 for more details (a copy is included in the LICENSE file that
-+ * accompanied this code).
-+ *
-+ * You should have received a copy of the GNU General Public License version
-+ * 2 along with this work; if not, write to the Free Software Foundation,
-+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-+ *
-+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-+ * or visit www.oracle.com if you need additional information or have any
-+ * questions.
-+ */
-+
-+//
-+// SunJSSE does not support dynamic system properties, no way to re-use
-+// system properties in samevm/agentvm mode.
-+//
-+
-+/*
-+ * @test
-+ * @bug 8144566
-+ * @summary Custom HostnameVerifier disables SNI extension
-+ * @run main/othervm ImpactOnSNI
-+ */
-+
-+import java.io.*;
-+import java.net.*;
-+import javax.net.ssl.*;
-+
-+public class ImpactOnSNI {
-+
-+ /*
-+ * =============================================================
-+ * Set the various variables needed for the tests, then
-+ * specify what tests to run on each side.
-+ */
-+
-+ /*
-+ * Should we run the client or server in a separate thread?
-+ * Both sides can throw exceptions, but do you have a preference
-+ * as to which side should be the main thread.
-+ */
-+ private static final boolean separateServerThread = true;
-+
-+ /*
-+ * Where do we find the keystores?
-+ */
-+ private static final String pathToStores =
-+ "../../../../../../sun/security/ssl/etc";
-+ private static final String keyStoreFile = "keystore";
-+ private static final String trustStoreFile = "truststore";
-+ private static final String passwd = "passphrase";
-+
-+ /*
-+ * Is the server ready to serve?
-+ */
-+ private static volatile boolean serverReady = false;
-+
-+ /*
-+ * Is the connection ready to close?
-+ */
-+ private static volatile boolean closeReady = false;
-+
-+ /*
-+ * Turn on SSL debugging?
-+ */
-+ private static final boolean debug = false;
-+
-+ /*
-+ * Message posted
-+ */
-+ private static final String postMsg = "HTTP post on a https server";
-+
-+ /*
-+ * the fully qualified domain name of localhost
-+ */
-+ private static String hostname = null;
-+
-+ /*
-+ * If the client or server is doing some kind of object creation
-+ * that the other side depends on, and that thread prematurely
-+ * exits, you may experience a hang. The test harness will
-+ * terminate all hung threads after its timeout has expired,
-+ * currently 3 minutes by default, but you might try to be
-+ * smart about it....
-+ */
-+
-+ /*
-+ * Define the server side of the test.
-+ *
-+ * If the server prematurely exits, serverReady will be set to true
-+ * to avoid infinite hangs.
-+ */
-+ private void doServerSide() throws Exception {
-+ SSLServerSocketFactory sslssf =
-+ (SSLServerSocketFactory)SSLServerSocketFactory.getDefault();
-+ try (SSLServerSocket sslServerSocket =
-+ (SSLServerSocket)sslssf.createServerSocket(serverPort)) {
-+
-+ serverPort = sslServerSocket.getLocalPort();
-+
-+ /*
-+ * Signal Client, we're ready for his connect.
-+ */
-+ serverReady = true;
-+
-+ /*
-+ * Accept connections
-+ */
-+ try (SSLSocket sslSocket = (SSLSocket)sslServerSocket.accept()) {
-+ InputStream sslIS = sslSocket.getInputStream();
-+ OutputStream sslOS = sslSocket.getOutputStream();
-+ BufferedReader br =
-+ new BufferedReader(new InputStreamReader(sslIS));
-+ PrintStream ps = new PrintStream(sslOS);
-+
-+ // process HTTP POST request from client
-+ System.out.println("status line: " + br.readLine());
-+ String msg = null;
-+ while ((msg = br.readLine()) != null && msg.length() > 0);
-+
-+ msg = br.readLine();
-+ if (msg.equals(postMsg)) {
-+ ps.println("HTTP/1.1 200 OK\n\n");
-+ } else {
-+ ps.println("HTTP/1.1 500 Not OK\n\n");
-+ }
-+ ps.flush();
-+
-+ ExtendedSSLSession session =
-+ (ExtendedSSLSession)sslSocket.getSession();
-+ if (session.getRequestedServerNames().isEmpty()) {
-+ throw new Exception("No expected Server Name Indication");
-+ }
-+
-+ // close the socket
-+ while (!closeReady) {
-+ Thread.sleep(50);
-+ }
-+ }
-+ }
-+ }
-+
-+ /*
-+ * Define the client side of the test.
-+ *
-+ * If the server prematurely exits, serverReady will be set to true
-+ * to avoid infinite hangs.
-+ */
-+ private void doClientSide() throws Exception {
-+ /*
-+ * Wait for server to get started.
-+ */
-+ while (!serverReady) {
-+ Thread.sleep(50);
-+ }
-+
-+ // Send HTTP POST request to server
-+ URL url = new URL("https://" + hostname + ":" + serverPort);
-+
-+ HttpsURLConnection.setDefaultHostnameVerifier(new NameVerifier());
-+ HttpsURLConnection http = (HttpsURLConnection)url.openConnection();
-+ http.setDoOutput(true);
-+
-+ http.setRequestMethod("POST");
-+ PrintStream ps = new PrintStream(http.getOutputStream());
-+ try {
-+ ps.println(postMsg);
-+ ps.flush();
-+ if (http.getResponseCode() != 200) {
-+ throw new RuntimeException("test Failed");
-+ }
-+ } finally {
-+ ps.close();
-+ http.disconnect();
-+ closeReady = true;
-+ }
-+ }
-+
-+ private static class NameVerifier implements HostnameVerifier {
-+ public boolean verify(String hostname, SSLSession session) {
-+ return true;
-+ }
-+ }
-+
-+ /*
-+ * =============================================================
-+ * The remainder is just support stuff
-+ */
-+
-+ // use any free port by default
-+ private volatile int serverPort = 0;
-+
-+ private volatile Exception serverException = null;
-+ private volatile Exception clientException = null;
-+
-+ public static void main(String[] args) throws Exception {
-+ String keyFilename =
-+ System.getProperty("test.src", "./") + "/" + pathToStores +
-+ "/" + keyStoreFile;
-+ String trustFilename =
-+ System.getProperty("test.src", "./") + "/" + pathToStores +
-+ "/" + trustStoreFile;
-+
-+ System.setProperty("javax.net.ssl.keyStore", keyFilename);
-+ System.setProperty("javax.net.ssl.keyStorePassword", passwd);
-+ System.setProperty("javax.net.ssl.trustStore", trustFilename);
-+ System.setProperty("javax.net.ssl.trustStorePassword", passwd);
-+
-+ if (debug) {
-+ System.setProperty("javax.net.debug", "all");
-+ }
-+
-+ try {
-+ hostname = InetAddress.getLocalHost().getCanonicalHostName();
-+ } catch (UnknownHostException uhe) {
-+ System.out.println(
-+ "Ignore the test as the local hostname cannot be determined");
-+
-+ return;
-+ }
-+
-+ System.out.println(
-+ "The fully qualified domain name of the local host is " +
-+ hostname);
-+ // Ignore the test if the hostname does not sound like a domain name.
-+ if ((hostname == null) || hostname.isEmpty() ||
-+ hostname.startsWith("localhost") ||
-+ Character.isDigit(hostname.charAt(hostname.length() - 1))) {
-+
-+ System.out.println("Ignore the test as the local hostname " +
-+ "cannot be determined as fully qualified domain name");
-+
-+ return;
-+ }
-+
-+ /*
-+ * Start the tests.
-+ */
-+ new ImpactOnSNI();
-+ }
-+
-+ private Thread clientThread = null;
-+ private Thread serverThread = null;
-+
-+ /*
-+ * Primary constructor, used to drive remainder of the test.
-+ *
-+ * Fork off the other side, then do your work.
-+ */
-+ ImpactOnSNI() throws Exception {
-+ Exception startException = null;
-+ try {
-+ if (separateServerThread) {
-+ startServer(true);
-+ startClient(false);
-+ } else {
-+ startClient(true);
-+ startServer(false);
-+ }
-+ } catch (Exception e) {
-+ startException = e;
-+ }
-+
-+ /*
-+ * Wait for other side to close down.
-+ */
-+ if (separateServerThread) {
-+ if (serverThread != null) {
-+ serverThread.join();
-+ }
-+ } else {
-+ if (clientThread != null) {
-+ clientThread.join();
-+ }
-+ }
-+
-+ /*
-+ * When we get here, the test is pretty much over.
-+ * Which side threw the error?
-+ */
-+ Exception local;
-+ Exception remote;
-+
-+ if (separateServerThread) {
-+ remote = serverException;
-+ local = clientException;
-+ } else {
-+ remote = clientException;
-+ local = serverException;
-+ }
-+
-+ Exception exception = null;
-+
-+ /*
-+ * Check various exception conditions.
-+ */
-+ if ((local != null) && (remote != null)) {
-+ // If both failed, return the curthread's exception.
-+ local.initCause(remote);
-+ exception = local;
-+ } else if (local != null) {
-+ exception = local;
-+ } else if (remote != null) {
-+ exception = remote;
-+ } else if (startException != null) {
-+ exception = startException;
-+ }
-+
-+ /*
-+ * If there was an exception *AND* a startException,
-+ * output it.
-+ */
-+ if (exception != null) {
-+ if (exception != startException && startException != null) {
-+ exception.addSuppressed(startException);
-+ }
-+ throw exception;
-+ }
-+
-+ // Fall-through: no exception to throw!
-+ }
-+
-+ private void startServer(boolean newThread) throws Exception {
-+ if (newThread) {
-+ serverThread = new Thread() {
-+ @Override
-+ public void run() {
-+ try {
-+ doServerSide();
-+ } catch (Exception e) {
-+ /*
-+ * Our server thread just died.
-+ *
-+ * Release the client, if not active already...
-+ */
-+ System.err.println("Server died...");
-+ serverReady = true;
-+ serverException = e;
-+ }
-+ }
-+ };
-+ serverThread.start();
-+ } else {
-+ try {
-+ doServerSide();
-+ } catch (Exception e) {
-+ serverException = e;
-+ } finally {
-+ serverReady = true;
-+ }
-+ }
-+ }
-+
-+ private void startClient(boolean newThread) throws Exception {
-+ if (newThread) {
-+ clientThread = new Thread() {
-+ @Override
-+ public void run() {
-+ try {
-+ doClientSide();
-+ } catch (Exception e) {
-+ /*
-+ * Our client thread just died.
-+ */
-+ System.err.println("Client died...");
-+ clientException = e;
-+ }
-+ }
-+ };
-+ clientThread.start();
-+ } else {
-+ try {
-+ doClientSide();
-+ } catch (Exception e) {
-+ clientException = e;
-+ }
-+ }
-+ }
-+}
diff --git a/8155049-pr3352.patch b/8155049-pr3352.patch
deleted file mode 100644
index 68cf02f..0000000
--- a/8155049-pr3352.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-# HG changeset patch
-# User rhalade
-# Date 1463420211 25200
-# Mon May 16 10:36:51 2016 -0700
-# Node ID c0e856f2dacdf5eb5cdea380da32ba210aee9579
-# Parent fb617df8fbac42e962219e45cbd29b15b5ecdc63
-8155049, PR3352: New tests from 8144566 fail with "No expected Server Name Indication"
-Reviewed-by: xuelei
-
-diff --git a/test/javax/net/ssl/ServerName/BestEffortOnLazyConnected.java b/test/javax/net/ssl/ServerName/BestEffortOnLazyConnected.java
---- openjdk/jdk/test/javax/net/ssl/ServerName/BestEffortOnLazyConnected.java
-+++ openjdk/jdk/test/javax/net/ssl/ServerName/BestEffortOnLazyConnected.java
-@@ -34,9 +34,6 @@
- */
-
- import java.io.*;
--import java.nio.*;
--import java.nio.channels.*;
--import java.util.*;
- import java.net.*;
- import javax.net.ssl.*;
-
-@@ -197,6 +194,7 @@
- hostname);
- // Ignore the test if the hostname does not sound like a domain name.
- if ((hostname == null) || hostname.isEmpty() ||
-+ !hostname.contains(".") || hostname.endsWith(".") ||
- hostname.startsWith("localhost") ||
- Character.isDigit(hostname.charAt(hostname.length() - 1))) {
-
-diff --git a/test/sun/net/www/protocol/https/HttpsURLConnection/ImpactOnSNI.java b/test/sun/net/www/protocol/https/HttpsURLConnection/ImpactOnSNI.java
---- openjdk/jdk/test/sun/net/www/protocol/https/HttpsURLConnection/ImpactOnSNI.java
-+++ openjdk/jdk/test/sun/net/www/protocol/https/HttpsURLConnection/ImpactOnSNI.java
-@@ -235,6 +235,7 @@
- hostname);
- // Ignore the test if the hostname does not sound like a domain name.
- if ((hostname == null) || hostname.isEmpty() ||
-+ !hostname.contains(".") || hostname.endsWith(".") ||
- hostname.startsWith("localhost") ||
- Character.isDigit(hostname.charAt(hostname.length() - 1))) {
-
diff --git a/8165231-rh1437545.patch b/8165231-rh1437545.patch
deleted file mode 100644
index e0d5be7..0000000
--- a/8165231-rh1437545.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-# HG changeset patch
-# User horii
-# Date 1473905514 14400
-# Wed Sep 14 22:11:54 2016 -0400
-# Node ID 8d16f74380a78eb76cb33183a64440316393903e
-# Parent be698ac288484ab140715ee29ed9335e6ea8a33b
-8165231: java.nio.Bits.unaligned() doesn't return true on ppc
-Reviewed-by: simonis, coffeys
-
-diff --git a/src/share/classes/java/nio/Bits.java b/src/share/classes/java/nio/Bits.java
---- openjdk/jdk/src/share/classes/java/nio/Bits.java
-+++ openjdk/jdk/src/share/classes/java/nio/Bits.java
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
-@@ -614,7 +614,8 @@
- String arch = AccessController.doPrivileged(
- new sun.security.action.GetPropertyAction("os.arch"));
- unaligned = arch.equals("i386") || arch.equals("x86")
-- || arch.equals("amd64") || arch.equals("x86_64");
-+ || arch.equals("amd64") || arch.equals("x86_64")
-+ || arch.equals("ppc64") || arch.equals("ppc64le");
- unalignedKnown = true;
- return unaligned;
- }
-diff --git a/src/share/classes/sun/security/provider/ByteArrayAccess.java b/src/share/classes/sun/security/provider/ByteArrayAccess.java
---- openjdk/jdk/src/share/classes/sun/security/provider/ByteArrayAccess.java
-+++ openjdk/jdk/src/share/classes/sun/security/provider/ByteArrayAccess.java
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
-@@ -94,7 +94,7 @@
- String arch = java.security.AccessController.doPrivileged
- (new sun.security.action.GetPropertyAction("os.arch", ""));
- return arch.equals("i386") || arch.equals("x86") || arch.equals("amd64")
-- || arch.equals("x86_64");
-+ || arch.equals("x86_64") || arch.equals("ppc64") || arch.equals("ppc64le");
- }
-
- /**
diff --git a/8174164-pr3334-rh1417266.patch b/8174164-pr3334-rh1417266.patch
deleted file mode 100644
index 494883f..0000000
--- a/8174164-pr3334-rh1417266.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-# HG changeset patch
-# User roland
-# Date 1487208397 28800
-# Wed Feb 15 17:26:37 2017 -0800
-# Node ID a9cbaff50d3d7e3a1d2dbdc0121c470142b87270
-# Parent 15922b2f31db4857ec84efdf533c41b19e68030b
-8174164, PR3334, RH1417266: SafePointNode::_replaced_nodes breaks with irreducible loops
-Reviewed-by: kvn
-
-diff --git a/src/share/vm/opto/callnode.hpp b/src/share/vm/opto/callnode.hpp
---- openjdk/hotspot/src/share/vm/opto/callnode.hpp
-+++ openjdk/hotspot/src/share/vm/opto/callnode.hpp
-@@ -449,8 +449,8 @@
- void delete_replaced_nodes() {
- _replaced_nodes.reset();
- }
-- void apply_replaced_nodes() {
-- _replaced_nodes.apply(this);
-+ void apply_replaced_nodes(uint idx) {
-+ _replaced_nodes.apply(this, idx);
- }
- void merge_replaced_nodes_with(SafePointNode* sfpt) {
- _replaced_nodes.merge_with(sfpt->_replaced_nodes);
-diff --git a/src/share/vm/opto/parse1.cpp b/src/share/vm/opto/parse1.cpp
---- openjdk/hotspot/src/share/vm/opto/parse1.cpp
-+++ openjdk/hotspot/src/share/vm/opto/parse1.cpp
-@@ -1048,7 +1048,7 @@
- kit.make_dtrace_method_exit(method());
- }
- if (_replaced_nodes_for_exceptions) {
-- kit.map()->apply_replaced_nodes();
-+ kit.map()->apply_replaced_nodes(_new_idx);
- }
- // Done with exception-path processing.
- ex_map = kit.make_exception_state(ex_oop);
-@@ -1069,7 +1069,7 @@
- _exits.add_exception_state(ex_map);
- }
- }
-- _exits.map()->apply_replaced_nodes();
-+ _exits.map()->apply_replaced_nodes(_new_idx);
- }
-
- //-----------------------------create_entry_map-------------------------------
-diff --git a/src/share/vm/opto/replacednodes.cpp b/src/share/vm/opto/replacednodes.cpp
---- openjdk/hotspot/src/share/vm/opto/replacednodes.cpp
-+++ openjdk/hotspot/src/share/vm/opto/replacednodes.cpp
-@@ -91,13 +91,17 @@
- }
-
- // Perfom node replacement (used when returning to caller)
--void ReplacedNodes::apply(Node* n) {
-+void ReplacedNodes::apply(Node* n, uint idx) {
- if (is_empty()) {
- return;
- }
- for (int i = 0; i < _replaced_nodes->length(); i++) {
- ReplacedNode replaced = _replaced_nodes->at(i);
-- n->replace_edge(replaced.initial(), replaced.improved());
-+ // Only apply if improved node was created in a callee to avoid
-+ // issues with irreducible loops in the caller
-+ if (replaced.improved()->_idx >= idx) {
-+ n->replace_edge(replaced.initial(), replaced.improved());
-+ }
- }
- }
-
-diff --git a/src/share/vm/opto/replacednodes.hpp b/src/share/vm/opto/replacednodes.hpp
---- openjdk/hotspot/src/share/vm/opto/replacednodes.hpp
-+++ openjdk/hotspot/src/share/vm/opto/replacednodes.hpp
-@@ -71,7 +71,7 @@
- void record(Node* initial, Node* improved);
- void transfer_from(const ReplacedNodes& other, uint idx);
- void reset();
-- void apply(Node* n);
-+ void apply(Node* n, uint idx);
- void merge_with(const ReplacedNodes& other);
- bool is_empty() const;
- void dump(outputStream *st) const;
diff --git a/8174729-pr3336-rh1420518.patch b/8174729-pr3336-rh1420518.patch
deleted file mode 100644
index 3d67850..0000000
--- a/8174729-pr3336-rh1420518.patch
+++ /dev/null
@@ -1,122 +0,0 @@
-# HG changeset patch
-# User adinn
-# Date 1487931564 0
-# Fri Feb 24 10:19:24 2017 +0000
-# Node ID d41592af9af3790fe5eee30ce686d85cff09c942
-# Parent 1ac9b0f1bf17fc5935bfa8250550eabc2ffb6785
-8174729, PR3336, RH1420518: Race Condition in java.lang.reflect.WeakCache
-Summary: Race can occur between Proxy.getProxyClass and Proxy.isProxyClass
-Reviewed-by: mchung
-
-diff --git a/src/share/classes/java/lang/reflect/WeakCache.java b/src/share/classes/java/lang/reflect/WeakCache.java
---- openjdk/jdk/src/share/classes/java/lang/reflect/WeakCache.java
-+++ openjdk/jdk/src/share/classes/java/lang/reflect/WeakCache.java
-@@ -239,11 +239,11 @@
- // wrap value with CacheValue (WeakReference)
- CacheValue<V> cacheValue = new CacheValue<>(value);
-
-+ // put into reverseMap
-+ reverseMap.put(cacheValue, Boolean.TRUE);
-+
- // try replacing us with CacheValue (this should always succeed)
-- if (valuesMap.replace(subKey, this, cacheValue)) {
-- // put also in reverseMap
-- reverseMap.put(cacheValue, Boolean.TRUE);
-- } else {
-+ if (!valuesMap.replace(subKey, this, cacheValue)) {
- throw new AssertionError("Should not reach here");
- }
-
-diff --git a/test/java/lang/reflect/Proxy/ProxyRace.java b/test/java/lang/reflect/Proxy/ProxyRace.java
-new file mode 100644
---- /dev/null
-+++ openjdk/jdk/test/java/lang/reflect/Proxy/ProxyRace.java
-@@ -0,0 +1,88 @@
-+/*
-+ * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * This code is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 only, as
-+ * published by the Free Software Foundation.
-+ *
-+ * This code is distributed in the hope that it will be useful, but WITHOUT
-+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-+ * version 2 for more details (a copy is included in the LICENSE file that
-+ * accompanied this code).
-+ *
-+ * You should have received a copy of the GNU General Public License version
-+ * 2 along with this work; if not, write to the Free Software Foundation,
-+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-+ *
-+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-+ * or visit www.oracle.com if you need additional information or have any
-+ * questions.
-+ */
-+
-+import java.lang.reflect.Proxy;
-+import java.util.concurrent.ExecutorService;
-+import java.util.concurrent.Executors;
-+import java.util.concurrent.Phaser;
-+import java.util.concurrent.TimeUnit;
-+import java.util.concurrent.atomic.AtomicInteger;
-+
-+/**
-+ * @test
-+ * @bug 8174729
-+ * @summary Proxy.getProxyClass() / Proxy.isProxyClass() race detector
-+ * @run main ProxyRace
-+ * @author plevart
-+ */
-+
-+public class ProxyRace {
-+
-+ static final int threads = 8;
-+
-+ static volatile ClassLoader classLoader;
-+ static volatile boolean terminate;
-+ static final AtomicInteger racesDetected = new AtomicInteger();
-+
-+ public static void main(String[] args) throws Exception {
-+
-+ Phaser phaser = new Phaser(threads) {
-+ @Override
-+ protected boolean onAdvance(int phase, int registeredParties) {
-+ // install new ClassLoader on each advance
-+ classLoader = new CL();
-+ return terminate;
-+ }
-+ };
-+
-+ ExecutorService exe = Executors.newFixedThreadPool(threads);
-+
-+ for (int i = 0; i < threads; i++) {
-+ exe.execute(() -> {
-+ while (phaser.arriveAndAwaitAdvance() >= 0) {
-+ Class<?> proxyClass = Proxy.getProxyClass(classLoader, Runnable.class);
-+ if (!Proxy.isProxyClass(proxyClass)) {
-+ racesDetected.incrementAndGet();
-+ }
-+ }
-+ });
-+ }
-+
-+ Thread.sleep(5000L);
-+
-+ terminate = true;
-+ exe.shutdown();
-+ exe.awaitTermination(5L, TimeUnit.SECONDS);
-+
-+ System.out.println(racesDetected.get() + " races detected");
-+ if (racesDetected.get() != 0) {
-+ throw new RuntimeException(racesDetected.get() + " races detected");
-+ }
-+ }
-+
-+ static class CL extends ClassLoader {
-+ public CL() {
-+ super(ClassLoader.getSystemClassLoader());
-+ }
-+ }
-+}
diff --git a/8175097-pr3334-rh1417266.patch b/8175097-pr3334-rh1417266.patch
deleted file mode 100644
index e80dd11..0000000
--- a/8175097-pr3334-rh1417266.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-# HG changeset patch
-# User roland
-# Date 1487286884 28800
-# Thu Feb 16 15:14:44 2017 -0800
-# Node ID 1b4eb44fbfcd0fceb485d89d91eb893d99f5864b
-# Parent a9cbaff50d3d7e3a1d2dbdc0121c470142b87270
-8175097, PR3334, RH1417266: [TESTBUG] 8174164 fix missed the test
-Reviewed-by: kvn
-
-diff --git a/test/compiler/c2/TestReplacedNodesOSR.java b/test/compiler/c2/TestReplacedNodesOSR.java
-new file mode 100644
---- /dev/null
-+++ openjdk/hotspot/test/compiler/c2/TestReplacedNodesOSR.java
-@@ -0,0 +1,86 @@
-+/*
-+ * Copyright (c) 2017, Red Hat, Inc. All rights reserved.
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * This code is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 only, as
-+ * published by the Free Software Foundation.
-+ *
-+ * This code is distributed in the hope that it will be useful, but WITHOUT
-+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-+ * version 2 for more details (a copy is included in the LICENSE file that
-+ * accompanied this code).
-+ *
-+ * You should have received a copy of the GNU General Public License version
-+ * 2 along with this work; if not, write to the Free Software Foundation,
-+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-+ *
-+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-+ * or visit www.oracle.com if you need additional information or have any
-+ * questions.
-+ */
-+
-+/**
-+ * @test
-+ * @bug 8174164
-+ * @summary SafePointNode::_replaced_nodes breaks with irreducible loops
-+ * @run main/othervm -XX:-BackgroundCompilation TestReplacedNodesOSR
-+ *
-+ */
-+
-+public class TestReplacedNodesOSR {
-+
-+ static Object dummy;
-+
-+ static interface I {
-+ }
-+
-+ static class A implements I {
-+ }
-+
-+ static final class MyException extends Exception {
-+ }
-+
-+ static final A obj = new A();
-+ static I static_field() { return obj; }
-+
-+ // When OSR compiled, this method has an irreducible loop
-+ static void test(int v, MyException e) {
-+ int i = 0;
-+ for (;;) {
-+ if (i == 1000) {
-+ break;
-+ }
-+ try {
-+ if ((i%2) == 0) {
-+ int j = 0;
-+ for (;;) {
-+ j++;
-+ if (i+j != v) {
-+ if (j == 1000) {
-+ break;
-+ }
-+ } else {
-+ A a = (A)static_field();
-+ // replaced node recorded here
-+ throw e;
-+ }
-+ }
-+ }
-+ } catch(MyException ex) {
-+ }
-+ i++;
-+ // replaced node applied on return of the method
-+ // replaced node used here
-+ dummy = static_field();
-+ }
-+ }
-+
-+
-+ static public void main(String[] args) {
-+ for (int i = 0; i < 1000; i++) {
-+ test(1100, new MyException());
-+ }
-+ }
-+}
diff --git a/8175887-pr3415.patch b/8175887-pr3415.patch
new file mode 100644
index 0000000..6460f60
--- /dev/null
+++ b/8175887-pr3415.patch
@@ -0,0 +1,168 @@
+# HG changeset patch
+# User shade
+# Date 1488979372 -3600
+# Wed Mar 08 14:22:52 2017 +0100
+# Node ID 654b7fcb4932d48063f5f1fba0c8994db5e02976
+# Parent 1faf7c17089922f6f72b580253725f2ecb6ba2f8
+8175887, PR3415: C1 value numbering handling of Unsafe.get*Volatile is incorrect
+Reviewed-by: vlivanov
+
+diff --git a/src/share/vm/c1/c1_ValueMap.hpp b/src/share/vm/c1/c1_ValueMap.hpp
+--- openjdk/hotspot/src/share/vm/c1/c1_ValueMap.hpp
++++ openjdk/hotspot/src/share/vm/c1/c1_ValueMap.hpp
+@@ -158,6 +158,12 @@
+ void do_UnsafePutRaw (UnsafePutRaw* x) { kill_memory(); }
+ void do_UnsafePutObject(UnsafePutObject* x) { kill_memory(); }
+ void do_UnsafeGetAndSetObject(UnsafeGetAndSetObject* x) { kill_memory(); }
++ void do_UnsafeGetRaw (UnsafeGetRaw* x) { /* nothing to do */ }
++ void do_UnsafeGetObject(UnsafeGetObject* x) {
++ if (x->is_volatile()) { // the JMM requires this
++ kill_memory();
++ }
++ }
+ void do_Intrinsic (Intrinsic* x) { if (!x->preserves_state()) kill_memory(); }
+
+ void do_Phi (Phi* x) { /* nothing to do */ }
+@@ -198,8 +204,6 @@
+ void do_OsrEntry (OsrEntry* x) { /* nothing to do */ }
+ void do_ExceptionObject(ExceptionObject* x) { /* nothing to do */ }
+ void do_RoundFP (RoundFP* x) { /* nothing to do */ }
+- void do_UnsafeGetRaw (UnsafeGetRaw* x) { /* nothing to do */ }
+- void do_UnsafeGetObject(UnsafeGetObject* x) { /* nothing to do */ }
+ void do_UnsafePrefetchRead (UnsafePrefetchRead* x) { /* nothing to do */ }
+ void do_UnsafePrefetchWrite(UnsafePrefetchWrite* x) { /* nothing to do */ }
+ void do_ProfileCall (ProfileCall* x) { /* nothing to do */ }
+diff --git a/test/compiler/c1/UnsafeVolatileGuardTest.java b/test/compiler/c1/UnsafeVolatileGuardTest.java
+new file mode 100644
+--- /dev/null
++++ openjdk/hotspot/test/compiler/c1/UnsafeVolatileGuardTest.java
+@@ -0,0 +1,72 @@
++/*
++ * Copyright (c) 2017, Red Hat Inc. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++import java.lang.reflect.Field;
++
++/**
++ * @test
++ * @bug 8175887
++ * @summary C1 value numbering handling of Unsafe.get*Volatile is incorrect
++ * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:TieredStopAtLevel=1 UnsafeVolatileGuardTest
++ */
++public class UnsafeVolatileGuardTest {
++ volatile static private int a;
++ static private int b;
++
++ static final sun.misc.Unsafe UNSAFE;
++
++ static final Object BASE;
++ static final long OFFSET;
++
++ static {
++ try {
++ Field uf = sun.misc.Unsafe.class.getDeclaredField("theUnsafe");
++ uf.setAccessible(true);
++ UNSAFE = (sun.misc.Unsafe)uf.get(null);
++
++ Field f = UnsafeVolatileGuardTest.class.getDeclaredField("a");
++ BASE = UNSAFE.staticFieldBase(f);
++ OFFSET = UNSAFE.staticFieldOffset(f);
++ } catch (Exception e) {
++ throw new RuntimeException(e);
++ }
++ }
++
++ static void test() {
++ int tt = b; // makes the JVM CSE the value of b
++
++ while (UNSAFE.getIntVolatile(BASE, OFFSET) == 0) {} // burn
++ if (b == 0) {
++ System.err.println("wrong value of b");
++ System.exit(1); // fail hard to report the error
++ }
++ }
++
++ public static void main(String [] args) throws Exception {
++ for (int i = 0; i < 10; i++) {
++ new Thread(UnsafeVolatileGuardTest::test).start();
++ }
++ b = 1;
++ a = 1;
++ }
++}
+diff --git a/test/compiler/c1/VolatileGuardTest.java b/test/compiler/c1/VolatileGuardTest.java
+new file mode 100644
+--- /dev/null
++++ openjdk/hotspot/test/compiler/c1/VolatileGuardTest.java
+@@ -0,0 +1,52 @@
++/*
++ * Copyright (c) 2017, Red Hat Inc. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++/**
++ * @test
++ * @bug 8175887
++ * @summary C1 doesn't respect the JMM with volatile field loads
++ *
++ * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:TieredStopAtLevel=1 VolatileGuardTest
++ */
++public class VolatileGuardTest {
++ volatile static private int a;
++ static private int b;
++
++ static void test() {
++ int tt = b; // makes the JVM CSE the value of b
++
++ while (a == 0) {} // burn
++ if (b == 0) {
++ System.err.println("wrong value of b");
++ System.exit(1); // fail hard to report the error
++ }
++ }
++
++ public static void main(String [] args) throws Exception {
++ for (int i = 0; i < 10; i++) {
++ new Thread(VolatileGuardTest::test).start();
++ }
++ b = 1;
++ a = 1;
++ }
++}
diff --git a/8179084-pr3409-rh1455694.patch b/8179084-pr3409-rh1455694.patch
new file mode 100644
index 0000000..dbc2120
--- /dev/null
+++ b/8179084-pr3409-rh1455694.patch
@@ -0,0 +1,135 @@
+# HG changeset patch
+# User dholmes
+# Date 1493428477 14400
+# Fri Apr 28 21:14:37 2017 -0400
+# Node ID 2fee74c5547889d9698a2636e0a5170f9e66fb9c
+# Parent 13a04e8df5a3af73794146b930b32556c7cbc5b0
+8179084, PR3409, RH1455694: HotSpot VM fails to start when AggressiveHeap is set
+Reviewed-by: kbarrett, stefank
+
+diff --git a/src/share/vm/runtime/arguments.cpp b/src/share/vm/runtime/arguments.cpp
+--- openjdk/hotspot/src/share/vm/runtime/arguments.cpp
++++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp
+@@ -3193,8 +3193,6 @@
+
+ // Enable parallel GC and adaptive generation sizing
+ FLAG_SET_CMDLINE(bool, UseParallelGC, true);
+- FLAG_SET_DEFAULT(ParallelGCThreads,
+- Abstract_VM_Version::parallel_worker_threads());
+
+ // Encourage steady state memory management
+ FLAG_SET_CMDLINE(uintx, ThresholdTolerance, 100);
+diff --git a/test/TEST.groups b/test/TEST.groups
+--- openjdk/hotspot/test/TEST.groups
++++ openjdk/hotspot/test/TEST.groups
+@@ -1,5 +1,5 @@
+ #
+-# Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
++# Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
+ # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ #
+ # This code is free software; you can redistribute it and/or modify it
+@@ -164,6 +164,7 @@
+ gc/TestGCLogRotationViaJcmd.java \
+ gc/g1/TestHumongousAllocInitialMark.java \
+ gc/g1/TestHumongousShrinkHeap.java \
++ gc/arguments/TestAggressiveHeap.java \
+ gc/arguments/TestG1HeapRegionSize.java \
+ gc/metaspace/TestMetaspaceMemoryPool.java \
+ gc/arguments/TestDynMinHeapFreeRatio.java \
+diff --git a/test/gc/arguments/TestAggressiveHeap.java b/test/gc/arguments/TestAggressiveHeap.java
+new file mode 100644
+--- /dev/null
++++ openjdk/hotspot/test/gc/arguments/TestAggressiveHeap.java
+@@ -0,0 +1,91 @@
++/*
++ * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++/*
++ * @test TestAggressiveHeap
++ * @key gc
++ * @bug 8179084
++ * @summary Test argument processing for -XX:+AggressiveHeap.
++ * @library /testlibrary
++ * @run driver TestAggressiveHeap
++ */
++
++import java.lang.management.ManagementFactory;
++import javax.management.MBeanServer;
++import javax.management.ObjectName;
++
++import com.oracle.java.testlibrary.OutputAnalyzer;
++import com.oracle.java.testlibrary.ProcessTools;
++
++public class TestAggressiveHeap {
++
++ public static void main(String args[]) throws Exception {
++ if (canUseAggressiveHeapOption()) {
++ testFlag();
++ }
++ }
++
++ // Note: Not a normal boolean flag; -XX:-AggressiveHeap is invalid.
++ private static final String option = "-XX:+AggressiveHeap";
++
++ // Option requires at least 256M, else error during option processing.
++ private static final long minMemory = 256 * 1024 * 1024;
++
++ // bool UseParallelGC := true {product}
++ private static final String parallelGCPattern =
++ " *bool +UseParallelGC *:= *true +\\{product\\}";
++
++ private static void testFlag() throws Exception {
++ ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
++ option, "-XX:+PrintFlagsFinal", "-version");
++
++ OutputAnalyzer output = new OutputAnalyzer(pb.start());
++
++ output.shouldHaveExitValue(0);
++
++ String value = output.firstMatch(parallelGCPattern);
++ if (value == null) {
++ throw new RuntimeException(
++ option + " didn't set UseParallelGC");
++ }
++ }
++
++ private static boolean haveRequiredMemory() throws Exception {
++ MBeanServer server = ManagementFactory.getPlatformMBeanServer();
++ ObjectName os = new ObjectName("java.lang", "type", "OperatingSystem");
++ Object attr = server.getAttribute(os, "TotalPhysicalMemorySize");
++ String value = attr.toString();
++ long memory = Long.parseLong(value);
++ return memory >= minMemory;
++ }
++
++ private static boolean canUseAggressiveHeapOption() throws Exception {
++ if (!haveRequiredMemory()) {
++ System.out.println(
++ "Skipping test of " + option + " : insufficient memory");
++ return false;
++ }
++ return true;
++ }
++}
++
diff --git a/8181419-pr3413-rh1463144.patch b/8181419-pr3413-rh1463144.patch
new file mode 100644
index 0000000..c2c7fc6
--- /dev/null
+++ b/8181419-pr3413-rh1463144.patch
@@ -0,0 +1,92 @@
+# HG changeset patch
+# User stuefe
+# Date 1497865921 -7200
+# Mon Jun 19 11:52:01 2017 +0200
+# Node ID ca0c7b2783e0102468218589a062e7ac4736aae2
+# Parent 148a7d6c463ad1726bad8a9e8d5df191314d704b
+8181419, PR3413, RH1463144: Race in jdwp invoker handling may lead to crashes or invalid results
+Reviewed-by: sspitsyn, sgehwolf, clanger
+
+diff --git a/src/share/back/invoker.c b/src/share/back/invoker.c
+--- openjdk/jdk/src/share/back/invoker.c
++++ openjdk/jdk/src/share/back/invoker.c
+@@ -212,30 +212,6 @@
+ }
+
+ /*
+- * Delete saved global references - if any - for:
+- * - a potentially thrown Exception
+- * - a returned refernce/array value
+- * See invoker_doInvoke() and invoke* methods where global references
+- * are being saved.
+- */
+-static void
+-deletePotentiallySavedGlobalRefs(JNIEnv *env, InvokeRequest *request)
+-{
+- /* Delete potentially saved return value */
+- if ((request->invokeType == INVOKE_CONSTRUCTOR) ||
+- (returnTypeTag(request->methodSignature) == JDWP_TAG(OBJECT)) ||
+- (returnTypeTag(request->methodSignature) == JDWP_TAG(ARRAY))) {
+- if (request->returnValue.l != NULL) {
+- tossGlobalRef(env, &(request->returnValue.l));
+- }
+- }
+- /* Delete potentially saved exception */
+- if (request->exception != NULL) {
+- tossGlobalRef(env, &(request->exception));
+- }
+-}
+-
+-/*
+ * Delete global argument references from the request which got put there before a
+ * invoke request was carried out. See fillInvokeRequest().
+ */
+@@ -744,6 +720,7 @@
+ jint id;
+ InvokeRequest *request;
+ jboolean detached;
++ jboolean mustReleaseReturnValue = JNI_FALSE;
+
+ JDI_ASSERT(thread);
+
+@@ -787,6 +764,13 @@
+ id = request->id;
+ exc = request->exception;
+ returnValue = request->returnValue;
++
++ /* Release return value and exception references, but delay the release
++ * until after the return packet was sent. */
++ mustReleaseReturnValue = request->invokeType == INVOKE_CONSTRUCTOR ||
++ returnTypeTag(request->methodSignature) == JDWP_TAG(OBJECT) ||
++ returnTypeTag(request->methodSignature) == JDWP_TAG(ARRAY);
++
+ }
+
+ /*
+@@ -801,6 +785,12 @@
+ */
+ deleteGlobalArgumentRefs(env, request);
+
++ /* From now on, do not access the request structure anymore
++ * for this request id, because once we give up the invokerLock it may
++ * be immediately reused by a new invoke request.
++ */
++ request = NULL;
++
+ /*
+ * Give up the lock before I/O operation
+ */
+@@ -821,7 +811,12 @@
+ */
+ eventHandler_lock(); // for proper lock order
+ debugMonitorEnter(invokerLock);
+- deletePotentiallySavedGlobalRefs(env, request);
++ if (mustReleaseReturnValue && returnValue.l != NULL) {
++ tossGlobalRef(env, &returnValue.l);
++ }
++ if (exc != NULL) {
++ tossGlobalRef(env, &exc);
++ }
+ debugMonitorExit(invokerLock);
+ eventHandler_unlock();
+ }
diff --git a/enableCommentedOutSystemNss.patch b/enableCommentedOutSystemNss.patch
new file mode 100644
index 0000000..febd87e
--- /dev/null
+++ b/enableCommentedOutSystemNss.patch
@@ -0,0 +1,11 @@
+diff -r 5b86f66575b7 src/share/lib/security/java.security-linux
+--- openjdk/jdk/src/share/lib/security/java.security-linux Tue May 16 13:29:05 2017 -0700
++++ openjdk/jdk/src/share/lib/security/java.security-linux Tue Jun 06 14:05:12 2017 +0200
+@@ -74,6 +74,7 @@
+ security.provider.7=com.sun.security.sasl.Provider
+ security.provider.8=org.jcp.xml.dsig.internal.dom.XMLDSigRI
+ security.provider.9=sun.security.smartcardio.SunPCSC
++#security.provider.10=sun.security.pkcs11.SunPKCS11 ${java.home}/lib/security/nss.cfg
+
+ #
+ # Sun Provider SecureRandom seed source.
diff --git a/java-1.8.0-openjdk-aarch32.spec b/java-1.8.0-openjdk-aarch32.spec
index 0dc47f5..e9b4e89 100644
--- a/java-1.8.0-openjdk-aarch32.spec
+++ b/java-1.8.0-openjdk-aarch32.spec
@@ -173,13 +173,33 @@
%global archinstall %{_arch}
%endif
-
%ifarch %{jit_arches}
%global with_systemtap 0
%else
%global with_systemtap 0
%endif
+%ifarch %{ix86} x86_64
+#no fx on f24
+%global with_openjfx_binding 0
+%global openjfx_path %{_jvmdir}/openjfx
+# links src directories
+%global jfx_jre_libs_dir %{openjfx_path}/rt/lib
+%global jfx_jre_native_dir %{jfx_jre_libs_dir}/%{archinstall}
+%global jfx_sdk_libs_dir %{openjfx_path}/lib
+%global jfx_sdk_bins_dir %{openjfx_path}/bin
+%global jfx_jre_exts_dir %{jfx_jre_libs_dir}/ext
+# links src files
+# maybe depend on jfx and generate the lists in build time? Yes, bad idea to inlcude cyclic depndenci, but this list is aweful
+%global jfx_jre_libs jfxswt.jar javafx.properties
+%global jfx_jre_native libprism_es2.so libprism_common.so libjavafx_font.so libdecora_sse.so libjavafx_font_freetype.so libprism_sw.so libjavafx_font_pango.so libglass.so libjavafx_iio.so
+%global jfx_sdk_libs javafx-mx.jar packager.jar ant-javafx.jar
+%global jfx_sdk_bins javafxpackager javapackager
+%global jfx_jre_exts jfxrt.jar
+%else
+%global with_openjfx_binding 0
+%endif
+
# Convert an absolute path to a relative path. Each symbolic link is
# specified relative to the directory in which it is installed so that
# it will resolve properly within chrooted installations.
@@ -192,7 +212,7 @@
# note, following three variables are sedded from update_sources if used correctly. Hardcode them rather there.
%global project aarch32-port
%global repo jdk8u
-%global revision jdk8u131-b12-aarch32-170420
+%global revision jdk8u141-b15-aarch32-170721
# eg # jdk8u60-b27 -> jdk8u60 or # aarch64-jdk8u60-b27 -> aarch64-jdk8u60 (dont forget spec escape % by %%)
%global whole_update %(VERSION=%{revision}; echo ${VERSION%%-*})
# eg jdk8u60 -> 60 or aarch64-jdk8u60 -> 60
@@ -539,6 +559,7 @@ exit 0
%{_jvmprivdir}/*
%{jvmjardir %%1}
%dir %{_jvmdir}/%{jredir %%1}/lib/security
+%{_jvmdir}/%{jredir %%1}/lib/security/cacerts
%config(noreplace) %{_jvmdir}/%{jredir %%1}/lib/security/US_export_policy.jar
%config(noreplace) %{_jvmdir}/%{jredir %%1}/lib/security/local_policy.jar
%config(noreplace) %{_jvmdir}/%{jredir %%1}/lib/security/java.policy
@@ -756,6 +777,8 @@ Obsoletes: java-1.5.0-gcj-devel%1
Requires: %{name}%1%{?_isa} = %{epoch}:%{version}-%{release}
OrderWithRequires: %{name}-headless%1%{?_isa} = %{epoch}:%{version}-%{release}
+#Provides: java-%{javaver}-%{origin}-demo = %{epoch}:%{version}-%{release}
+
Obsoletes: java-1.7.0-openjdk-demo%1
}
@@ -773,6 +796,7 @@ Requires(postun): chkconfig >= 1.7
# Standard JPackage javadoc provides.
#Provides: java-javadoc%1 = %{epoch}:%{version}-%{release}
#Provides: java-%{javaver}-javadoc%1 = %{epoch}:%{version}-%{release}
+#Provides: java-%{javaver}-%{origin}-javadoc = %{epoch}:%{version}-%{release}
Obsoletes: java-1.7.0-openjdk-javadoc%1
@@ -781,6 +805,10 @@ Obsoletes: java-1.7.0-openjdk-javadoc%1
%global java_src_rpo() %{expand:
Requires: %{name}-headless%1%{?_isa} = %{epoch}:%{version}-%{release}
+# Standard JPackage javadoc provides.
+#Provides: java-src%1 = %{epoch}:%{version}-%{release}
+#Provides: java-%{javaver}-src%1 = %{epoch}:%{version}-%{release}
+#Provides: java-%{javaver}-%{origin}-src = %{epoch}:%{version}-%{release}
Obsoletes: java-1.7.0-openjdk-src%1
}
@@ -789,6 +817,8 @@ Requires: java-atk-wrapper%{?_isa}
Requires: %{name}%1%{?_isa} = %{epoch}:%{version}-%{release}
OrderWithRequires: %{name}-headless%1%{?_isa} = %{epoch}:%{version}-%{release}
+#Provides: java-%{javaver}-%{origin}-accessiblity = %{epoch}:%{version}-%{release}
+
Obsoletes: java-1.7.0-openjdk-accessibility%1
}
@@ -812,13 +842,19 @@ Epoch: 1
Summary: OpenJDK Runtime Environment in a preview of the OpenJDK AArch32 project
Group: Development/Languages
-License: ASL 1.1 and ASL 2.0 and GPL+ and GPLv2 and GPLv2 with exceptions and LGPLv2 and MPLv1.0 and MPLv1.1 and Public Domain and W3C
+License: ASL 1.1 and ASL 2.0 and GPL+ and GPLv2 and GPLv2 with exceptions and LGPL+ and LGPLv2 and MPLv1.0 and MPLv1.1 and Public Domain and W3C
URL: http://openjdk.java.net/
-
-# generated by update_package.sh
+# aarch64-port now contains integration forest of both aarch64 and normal jdk
+# Source from upstream OpenJDK8 project. To regenerate, use
+# VERSION=%%{revision} FILE_NAME_ROOT=%%{project}-%%{repo}-${VERSION}
+# REPO_ROOT=<path to checked-out repository> generate_source_tarball.sh
+# where the source is obtained from http://hg.openjdk.java.net/%%{project}/%%{repo}
Source0: %{project}-%{repo}-%{revision}.tar.xz
+# Shenandoah HotSpot
+#Source1: aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u141-b16.tar.xz
+
# Custom README for -src subpackage
Source2: README.src
@@ -924,30 +960,24 @@ Patch400: 8154313.patch
Patch526: 6260348-pr3066.patch
# 8061305, PR3335, RH1423421: Javadoc crashes when method name ends with "Property"
Patch538: 8061305-pr3335-rh1423421.patch
-
-# Patches upstream and appearing in 8u131
-# 6515172, PR3346: Runtime.availableProcessors() ignores Linux taskset command
-#Patch542: 6515172-pr3346.patch
+# 8181055, PR3394, RH1448880: PPC64: "mbind: Invalid argument" still seen after 8175813
+#Patch551: 8181055-pr3394-rh1448880.patch
+# 8181419, PR3413, RH1463144: Race in jdwp invoker handling may lead to crashes or invalid results
+Patch553: 8181419-pr3413-rh1463144.patch
# Patches upstream and appearing in 8u152
# 8153711, PR3313, RH1284948: [REDO] JDWP: Memory Leak: GlobalRefs never deleted when processing invokeMethod command
Patch535: 8153711-pr3313-rh1284948.patch
-# 8144566, PR3352: Custom HostnameVerifier disables SNI extension
-Patch544: 8144566-pr3352.patch
-# 8155049, PR3352: New tests from 8144566 fail with "No expected Server Name Indication"
-Patch545: 8155049-pr3352.patch
# 8162384, PR3122, RH1358661: Performance regression: bimorphic inlining may be bypassed by type speculation
Patch532: 8162384-pr3122-rh1358661.patch
-# 8165231, RH1437545: java.nio.Bits.unaligned() doesn't return true on ppc
-Patch546: 8165231-rh1437545.patch
# 8173941, PR3326: SA does not work if executable is DSO
Patch547: 8173941-pr3326.patch
-# 8174164, PR3334, RH1417266: SafePointNode::_replaced_nodes breaks with irreducible loops"
-Patch537: 8174164-pr3334-rh1417266.patch
-# 8174729, PR3336, RH1420518: Race Condition in java.lang.reflect.WeakCache
-Patch548: 8174729-pr3336-rh1420518.patch
-# 8175097, PR3334, RH1417266: [TESTBUG] 8174164 fix missed the test
-Patch549: 8175097-pr3334-rh1417266.patch
+# 8175813, PR3394, RH1448880: PPC64: "mbind: Invalid argument" when -XX:+UseNUMA is used
+#Patch550: 8175813-pr3394-rh1448880.patch
+# 8179084, PR3409, RH1455694: HotSpot VM fails to start when AggressiveHeap is set
+Patch552: 8179084-pr3409-rh1455694.patch
+# 8175887, PR3415: C1 value numbering handling of Unsafe.get*Volatile is incorrect
+Patch554: 8175887-pr3415.patch
# Patches ineligible for 8u
# 8043805: Allow using a system-installed libjpeg
@@ -966,6 +996,7 @@ Patch533: rh1367357.patch
Patch539: pr2888.patch
# Non-OpenJDK fixes
+Patch1000: enableCommentedOutSystemNss.patch
BuildRequires: autoconf
BuildRequires: automake
@@ -994,7 +1025,13 @@ BuildRequires: nss-devel
BuildRequires: pkgconfig
BuildRequires: xorg-x11-proto-devel
BuildRequires: zip
+# Use OpenJDK 7 where available (on RHEL) to avoid
+# having to use the rhel-7.x-java-unsafe-candidate hack
+%if 0%{?rhel}
+BuildRequires: java-1.7.0-openjdk-devel
+%else
BuildRequires: java-1.8.0-openjdk-aarch32-devel
+%endif
# Zero-assembler build requirement.
%ifnarch %{jit_arches}
BuildRequires: libffi-devel
@@ -1016,9 +1053,7 @@ BuildRequires: systemtap-sdt-devel
ExclusiveArch: %{arm}
%description
-A preview release of the upstream OpenJDK AArch32 porting project. In
-due time it will be merged with the main java-1.8.0-openjdk package.
-This release may get security fixes late. Use carefully.
+A preview release of the upstream OpenJDK AArch32 porting project.
The OpenJDK runtime environment.
%if %{include_debug_build}
@@ -1203,6 +1238,43 @@ Summary: OpenJDK accessibility connector %{for_debug}
See normal java-%{version}-openjdk-accessibility description.
%endif
+
+%if %{with_openjfx_binding}
+%package openjfx
+Summary: OpenJDK x OpenJFX connector. This package adds symliks finishing Java FX integration to %{name}
+Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: openjfx%{?_isa}
+Provides: javafx = %{epoch}:%{version}-%{release}
+%description openjfx
+Set of links from OpenJDK (jre) to OpenJFX
+
+%package openjfx-devel
+Summary: OpenJDK x OpenJFX connector for FX developers. This package adds symliks finishing Java FX integration to %{name}-devel
+Requires: %{name}-devel%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: openjfx-devel%{?_isa}
+Provides: javafx-devel = %{epoch}:%{version}-%{release}
+%description openjfx-devel
+Set of links from OpenJDK (sdk) to OpenJFX
+
+%if %{include_debug_build}
+%package openjfx-debug
+Summary: OpenJDK x OpenJFX connector %{for_debug}. his package adds symliks finishing Java FX integration to %{name}-debug
+Requires: %{name}-debug%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: openjfx%{?_isa}
+Provides: javafx-debug = %{epoch}:%{version}-%{release}
+%description openjfx-debug
+Set of links from OpenJDK-debug (jre) to normal OpenJFX. OpenJFX do not support debug buuilds of itself
+
+%package openjfx-devel-debug
+Summary: OpenJDK x OpenJFX connector for FX developers %{for_debug}. This package adds symliks finishing Java FX integration to %{name}-devel-debug
+Requires: %{name}-devel-debug%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: openjfx-devel%{?_isa}
+Provides: javafx-devel-debug = %{epoch}:%{version}-%{release}
+%description openjfx-devel-debug
+Set of links from OpenJDK-debug (sdk) to normal OpenJFX. OpenJFX do not support debug buuilds of itself
+%endif
+%endif
+
%prep
if [ %{include_normal_build} -eq 0 -o %{include_normal_build} -eq 1 ] ; then
echo "include_normal_build is %{include_normal_build}"
@@ -1233,7 +1305,7 @@ ln -s openjdk jdk8
# On Shenandoah-supported architectures, replace HotSpot with
# the Shenandoah version
pushd openjdk
-tar -xf %{SOURCE999}
+tar -xf %{SOURCE1}
rm -rf hotspot
mv openjdk/hotspot .
rm -rf openjdk
@@ -1304,15 +1376,13 @@ sh %{SOURCE12}
%patch528
%patch532
%patch535
-%patch537
%patch538
-#%patch542
-%patch544
-%patch545
-%patch546
%patch547
-%patch548
-%patch549
+#%patch550
+#%patch551
+%patch552
+%patch553
+%patch554
# RPM-only fixes
%patch525
@@ -1324,6 +1394,8 @@ sh %{SOURCE12}
%patch534
%endif
+%patch1000
+
# Extract systemtap tapsets
%if %{with_systemtap}
tar -x -I xz -f %{SOURCE8}
@@ -1561,6 +1633,8 @@ $JAVA_HOME/bin/javap -l java.lang.Object | grep LocalVariableTable
$JAVA_HOME/bin/javap -l java.nio.ByteBuffer | grep "Compiled from"
$JAVA_HOME/bin/javap -l java.nio.ByteBuffer | grep LineNumberTable
$JAVA_HOME/bin/javap -l java.nio.ByteBuffer | grep LocalVariableTable
+
+#build cycles check
done
%install
@@ -1568,7 +1642,7 @@ STRIP_KEEP_SYMTAB=libjvm*
for suffix in %{build_loop} ; do
-pushd %{buildoutputdir $suffix}/images/%{j2sdkimage}
+pushd %{buildoutputdir $suffix}/images/%{j2sdkimage}
#install jsa directories so we can owe them
mkdir -p $RPM_BUILD_ROOT%{_jvmdir}/%{jredir $suffix}/lib/%{archinstall}/server/
@@ -1644,6 +1718,12 @@ popd
# Remove empty cacerts database.
rm -f $RPM_BUILD_ROOT%{_jvmdir}/%{jredir $suffix}/lib/security/cacerts
+ # Install cacerts symlink needed by some apps which hardcode the path.
+ pushd $RPM_BUILD_ROOT%{_jvmdir}/%{jredir $suffix}/lib/security
+ RELATIVE=$(%{abs2rel} %{_sysconfdir}/pki/java \
+ %{_jvmdir}/%{jredir $suffix}/lib/security)
+ ln -sf $RELATIVE/cacerts .
+ popd
# Install extension symlinks.
install -d -m 755 $RPM_BUILD_ROOT%{jvmjardir $suffix}
@@ -1808,6 +1888,44 @@ find $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir $suffix}/demo \
echo "" >> accessibility.properties
popd
+# intentionally after all else, fx links with redirections on its own
+%if %{with_openjfx_binding}
+ FXSDK_FILES=%{name}-openjfx-devel.files"$suffix"
+ FXJRE_FILES=%{name}-openjfx.files"$suffix"
+ echo -n "" > $FXJRE_FILES
+ echo -n "" > $FXSDK_FILES
+ for file in %{jfx_jre_libs} ; do
+ srcfile=%{jfx_jre_libs_dir}/$file
+ targetfile=%{_jvmdir}/%{jredir $suffix}/lib/$file
+ ln -s $srcfile $RPM_BUILD_ROOT/$targetfile
+ echo $targetfile >> $FXJRE_FILES
+ done
+ for file in %{jfx_jre_native} ; do
+ srcfile=%{jfx_jre_native_dir}/$file
+ targetfile=%{_jvmdir}/%{jredir $suffix}/lib/%{archinstall}/$file
+ ln -s $srcfile $RPM_BUILD_ROOT/$targetfile
+ echo $targetfile >> $FXJRE_FILES
+ done
+ for file in %{jfx_jre_exts} ; do
+ srcfile=%{jfx_jre_exts_dir}/$file
+ targetfile=%{_jvmdir}/%{jredir $suffix}/lib/ext/$file
+ ln -s $srcfile $RPM_BUILD_ROOT/$targetfile
+ echo $targetfile >> $FXJRE_FILES
+ done
+ for file in %{jfx_sdk_libs} ; do
+ srcfile=%{jfx_sdk_libs_dir}/$file
+ targetfile=%{_jvmdir}/%{sdkdir $suffix}/lib/$file
+ ln -s $srcfile $RPM_BUILD_ROOT/$targetfile
+ echo $targetfile >> $FXSDK_FILES
+ done
+ for file in %{jfx_sdk_bins} ; do
+ srcfile=%{jfx_sdk_bins_dir}/$file
+ targetfile=%{_jvmdir}/%{sdkdir $suffix}/bin/$file
+ ln -s $srcfile $RPM_BUILD_ROOT/$targetfile
+ echo $targetfile >> $FXSDK_FILES
+ done
+%endif
+
bash %{SOURCE20} $RPM_BUILD_ROOT/%{_jvmdir}/%{jredir $suffix} %{javaver}
# https://bugzilla.redhat.com/show_bug.cgi?id=1183793
touch -t 201401010000 $RPM_BUILD_ROOT/%{_jvmdir}/%{jredir $suffix}/lib/security/java.security
@@ -1966,6 +2084,12 @@ require "copy_jdk_configs.lua"
%files accessibility
%{files_accessibility %{nil}}
+
+%if %{with_openjfx_binding}
+%files openjfx -f %{name}-openjfx.files
+
+%files openjfx-devel -f %{name}-openjfx-devel.files
+%endif
%endif
%if %{include_debug_build}
@@ -1992,9 +2116,20 @@ require "copy_jdk_configs.lua"
%files accessibility-debug
%{files_accessibility %{debug_suffix_unquoted}}
+
+%if %{with_openjfx_binding}
+%files openjfx-debug -f %{name}-openjfx.files-debug
+
+%files openjfx-devel-debug -f %{name}-openjfx-devel.files-debug
+%endif
+
%endif
%changelog
+* Mon Jul 24 2017 Alex Kashchenko <akashche(a)redhat.com> - 1:1.8.0.141-1.170721
+- update sources to 8u141
+- sync with mainline package
+
* Sat Apr 29 2017 Alex Kashchenko <akashche(a)redhat.com> - 1:1.8.0.131-1.170420
- update sources to 8u131
- sync with mainline package
6 years, 2 months
Architecture specific change in rpms/java-1.8.0-openjdk-aarch32.git
by githook-noreply@fedoraproject.org
The package rpms/java-1.8.0-openjdk-aarch32.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/java-1.8.0-openjdk-aarch32.git/co....
Change:
+%ifarch %{ix86} x86_64
Thanks.
Full change:
============
commit 2f7823811879a18c24aa2cf13446a8aca36c0308
Author: Alex Kashchenko <akashche(a)redhat.com>
Date: Mon Jul 31 11:36:13 2017 +0000
switch boot jdk to aarch32
diff --git a/java-1.8.0-openjdk-aarch32.spec b/java-1.8.0-openjdk-aarch32.spec
index 2cab3dd..77638c3 100644
--- a/java-1.8.0-openjdk-aarch32.spec
+++ b/java-1.8.0-openjdk-aarch32.spec
@@ -1488,7 +1488,7 @@ bash ../../configure \
--with-milestone="fcs" \
--with-update-version=%{updatever} \
--with-build-number=%{buildver} \
- --with-boot-jdk=/usr/lib/jvm/java-openjdk \
+ --with-boot-jdk=$(echo /usr/lib/jvm/java-1.8.0-openjdk-aarch32-*) \
--with-debug-level=$debugbuild \
--enable-unlimited-crypto \
--enable-system-nss \
@@ -2125,6 +2125,9 @@ require "copy_jdk_configs.lua"
%endif
%changelog
+* Mon Jul 31 2017 Alex Kashchenko <akashche(a)redhat.com> - 1:1.8.0.141-2.170721
+- switch boot jdk to aarch32
+
* Mon Jul 24 2017 Alex Kashchenko <akashche(a)redhat.com> - 1:1.8.0.141-1.170721
- update sources to 8u141
- sync with mainline package
commit 252d05db0c21a5362beca7310bca973848cc2795
Merge: ccf2eb2 afb8236
Author: Alex Kashchenko <akashche(a)redhat.com>
Date: Mon Jul 31 11:27:22 2017 +0000
merge branch f24
diff --cc java-1.8.0-openjdk-aarch32.spec
index 5179c92,e9b4e89..2cab3dd
--- a/java-1.8.0-openjdk-aarch32.spec
+++ b/java-1.8.0-openjdk-aarch32.spec
@@@ -180,6 -179,27 +179,26 @@@
%global with_systemtap 0
%endif
+ %ifarch %{ix86} x86_64
-#no fx on f24
+ %global with_openjfx_binding 0
+ %global openjfx_path %{_jvmdir}/openjfx
+ # links src directories
+ %global jfx_jre_libs_dir %{openjfx_path}/rt/lib
+ %global jfx_jre_native_dir %{jfx_jre_libs_dir}/%{archinstall}
+ %global jfx_sdk_libs_dir %{openjfx_path}/lib
+ %global jfx_sdk_bins_dir %{openjfx_path}/bin
+ %global jfx_jre_exts_dir %{jfx_jre_libs_dir}/ext
+ # links src files
+ # maybe depend on jfx and generate the lists in build time? Yes, bad idea to inlcude cyclic depndenci, but this list is aweful
+ %global jfx_jre_libs jfxswt.jar javafx.properties
+ %global jfx_jre_native libprism_es2.so libprism_common.so libjavafx_font.so libdecora_sse.so libjavafx_font_freetype.so libprism_sw.so libjavafx_font_pango.so libglass.so libjavafx_iio.so
+ %global jfx_sdk_libs javafx-mx.jar packager.jar ant-javafx.jar
+ %global jfx_sdk_bins javafxpackager javapackager
+ %global jfx_jre_exts jfxrt.jar
+ %else
+ %global with_openjfx_binding 0
+ %endif
+
# Convert an absolute path to a relative path. Each symbolic link is
# specified relative to the directory in which it is installed so that
# it will resolve properly within chrooted installations.
@@@ -1995,9 -2126,10 +2125,13 @@@ require "copy_jdk_configs.lua
%endif
%changelog
+ * Mon Jul 24 2017 Alex Kashchenko <akashche(a)redhat.com> - 1:1.8.0.141-1.170721
+ - update sources to 8u141
+ - sync with mainline package
+
+* Sun Apr 30 2017 Alex Kashchenko <akashche(a)redhat.com> - 1:1.8.0.131-2.170420
+- revert boot jdk to zero due to koschei arch-specific dep problem persists
+
* Sat Apr 29 2017 Alex Kashchenko <akashche(a)redhat.com> - 1:1.8.0.131-1.170420
- update sources to 8u131
- sync with mainline package
commit afb82366611da1fa7a40b878c2e8d162e6eaeb29
Author: Alex Kashchenko <akashche(a)redhat.com>
Date: Tue Jul 25 20:07:34 2017 +0000
sources file update
diff --git a/.gitignore b/.gitignore
index 70f7217..5d0305e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,3 +6,4 @@
/aarch32-port-jdk8u-jdk8u121-b13-aarch32-170210.tar.xz
/aarch32-port-jdk8u-jdk8u131-b12-aarch32-170420.tar.xz
/systemtap-tapset-3.4.0pre01.tar.xz
+/aarch32-port-jdk8u-jdk8u141-b15-aarch32-170721.tar.xz
diff --git a/sources b/sources
index 92a8fc8..3ab8e1c 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
SHA512 (systemtap-tapset-3.4.0pre01.tar.xz) = 4446fa20f88bbce53b583484bf06cb2b476c9372beb898dc2b7739eaa5c98b9979fbd72e12474fb344833d831a19366b82216ee03b452411745e6cd3527faa4e
-SHA512 (aarch32-port-jdk8u-jdk8u131-b12-aarch32-170420.tar.xz) = 8cfca4b5f9d58fc22ea9011182dbb58f5614e23281d781c335ed9ae069e0e6587fb82f3b733e3f38e258e802342e679a6177ea59ec45f7bb9253c2b88bfe73e7
+SHA512 (aarch32-port-jdk8u-jdk8u141-b15-aarch32-170721.tar.xz) = 81a3963eb51e33134d10fcd197530ea6589e16a807132cedc563c5a13ccc5ce2d08f0c8510008a7474792ed226d88ef8e29313cd6532e24cc7ec785c4ae4af70
commit 9bc047fab7203b54d1ee71c21ee89edc5b3258a7
Author: Alex Kashchenko <akashche(a)redhat.com>
Date: Tue Jul 25 16:59:22 2017 +0000
update ecc patches
diff --git a/pr1983-jdk.patch b/pr1983-jdk.patch
index a0b4e1a..673b8a9 100644
--- a/pr1983-jdk.patch
+++ b/pr1983-jdk.patch
@@ -6,10 +6,11 @@
# Parent afd392dfaed501ac674a7cc3e37353ce300969c7
PR1983: Support using the system installation of NSS with the SunEC provider
Summary: Apply code changes from PR1699 & PR1742 & forward-port Makefile changes to the new build.
+Updated 2017/07/04 to accomodate 8175110
-diff -r afd392dfaed5 -r 48c15869ecd5 make/lib/SecurityLibraries.gmk
---- openjdk/jdk/make/lib/SecurityLibraries.gmk Tue Jan 26 22:26:26 2016 +0000
-+++ openjdk/jdk/make/lib/SecurityLibraries.gmk Wed Jan 27 02:54:06 2016 +0000
+diff -r 984a4af2ed4e make/lib/SecurityLibraries.gmk
+--- openjdk/jdk/make/lib/SecurityLibraries.gmk
++++ openjdk/jdk/make/lib/SecurityLibraries.gmk
@@ -218,8 +218,17 @@
ifeq ($(ENABLE_INTREE_EC), yes)
@@ -51,9 +52,9 @@ diff -r afd392dfaed5 -r 48c15869ecd5 make/lib/SecurityLibraries.gmk
VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \
RC_FLAGS := $(RC_FLAGS) \
-D "JDK_FNAME=sunec.dll" \
-diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/ECC_JNI.cpp
---- openjdk/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp Tue Jan 26 22:26:26 2016 +0000
-+++ openjdk/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp Wed Jan 27 02:54:06 2016 +0000
+diff -r 984a4af2ed4e src/share/native/sun/security/ec/ECC_JNI.cpp
+--- openjdk/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp
++++ openjdk/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp
@@ -24,7 +24,7 @@
*/
@@ -76,8 +77,8 @@ diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/ECC_JNI.cp
*/
JNIEXPORT jbyteArray
JNICALL Java_sun_security_ec_ECDSASignature_signDigest
-- (JNIEnv *env, jclass clazz, jbyteArray digest, jbyteArray privateKey, jbyteArray encodedParams, jbyteArray seed)
-+ (JNIEnv *env, jclass UNUSED(clazz), jbyteArray digest, jbyteArray privateKey, jbyteArray encodedParams, jbyteArray seed)
+- (JNIEnv *env, jclass clazz, jbyteArray digest, jbyteArray privateKey, jbyteArray encodedParams, jbyteArray seed, jint timing)
++ (JNIEnv *env, jclass UNUSED(clazz), jbyteArray digest, jbyteArray privateKey, jbyteArray encodedParams, jbyteArray seed, jint timing)
{
jbyte* pDigestBuffer = NULL;
jint jDigestLength = env->GetArrayLength(digest);
@@ -99,12 +100,12 @@ diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/ECC_JNI.cp
{
jbyteArray jSecret = NULL;
ECParams *ecparams = NULL;
-diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/ecc_impl.h
---- /dev/null Thu Jan 01 00:00:00 1970 +0000
-+++ openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h Wed Jan 27 02:54:06 2016 +0000
+diff -r 984a4af2ed4e src/share/native/sun/security/ec/ecc_impl.h
+--- /dev/null
++++ openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h
@@ -0,0 +1,298 @@
+/*
-+ * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2007, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Use is subject to license terms.
+ *
+ * This library is free software; you can redistribute it and/or
@@ -139,7 +140,7 @@ diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/ecc_impl.h
+ * Dr Vipul Gupta <vipul.gupta(a)sun.com> and
+ * Douglas Stebila <douglas(a)stebila.ca>, Sun Microsystems Laboratories
+ *
-+ * Last Modified Date from the Original Code: November 2013
++ * Last Modified Date from the Original Code: May 2017
+ *********************************************************************** */
+
+#ifndef _ECC_IMPL_H
@@ -373,7 +374,7 @@ diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/ecc_impl.h
+#ifdef SYSTEM_NSS
+#define EC_DecodeParams(a,b,c) EC_DecodeParams(a,b)
+#define EC_NewKey(a,b,c,d,e) EC_NewKeyFromSeed(a,b,c,d)
-+#define ECDSA_SignDigest(a,b,c,d,e,f) ECDSA_SignDigestWithSeed(a,b,c,d,e)
++#define ECDSA_SignDigest(a,b,c,d,e,f,g) ECDSA_SignDigestWithSeed(a,b,c,d,e)
+#define ECDSA_VerifyDigest(a,b,c,d) ECDSA_VerifyDigest(a,b,c)
+#define ECDH_Derive(a,b,c,d,e,f) ECDH_Derive(a,b,c,d,e)
+#else
@@ -389,7 +390,7 @@ diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/ecc_impl.h
+ const unsigned char* random, int randomlen, int);
+/* This function has been modified to accept an array of random bytes */
+extern SECStatus ECDSA_SignDigest(ECPrivateKey *, SECItem *, const SECItem *,
-+ const unsigned char* random, int randomlen, int);
++ const unsigned char* random, int randomlen, int, int timing);
+extern SECStatus ECDSA_VerifyDigest(ECPublicKey *, const SECItem *,
+ const SECItem *, int);
+extern SECStatus ECDH_Derive(SECItem *, ECParams *, SECItem *, boolean_t,
@@ -401,12 +402,12 @@ diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/ecc_impl.h
+#endif
+
+#endif /* _ECC_IMPL_H */
-diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/impl/ecc_impl.h
---- openjdk/jdk/src/share/native/sun/security/ec/impl/ecc_impl.h Tue Jan 26 22:26:26 2016 +0000
-+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
+diff -r 984a4af2ed4e src/share/native/sun/security/ec/impl/ecc_impl.h
+--- openjdk/jdk/src/share/native/sun/security/ec/impl/ecc_impl.h
++++ /dev/null
@@ -1,271 +0,0 @@
-/*
-- * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
+- * Copyright (c) 2007, 2017, Oracle and/or its affiliates. All rights reserved.
- * Use is subject to license terms.
- *
- * This library is free software; you can redistribute it and/or
@@ -441,7 +442,7 @@ diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/impl/ecc_i
- * Dr Vipul Gupta <vipul.gupta(a)sun.com> and
- * Douglas Stebila <douglas(a)stebila.ca>, Sun Microsystems Laboratories
- *
-- * Last Modified Date from the Original Code: November 2013
+- * Last Modified Date from the Original Code: May 2017
- *********************************************************************** */
-
-#ifndef _ECC_IMPL_H
@@ -665,7 +666,7 @@ diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/impl/ecc_i
- const unsigned char* random, int randomlen, int);
-/* This function has been modified to accept an array of random bytes */
-extern SECStatus ECDSA_SignDigest(ECPrivateKey *, SECItem *, const SECItem *,
-- const unsigned char* random, int randomlen, int);
+- const unsigned char* random, int randomlen, int, int timing);
-extern SECStatus ECDSA_VerifyDigest(ECPublicKey *, const SECItem *,
- const SECItem *, int);
-extern SECStatus ECDH_Derive(SECItem *, ECParams *, SECItem *, boolean_t,
@@ -676,9 +677,9 @@ diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/impl/ecc_i
-#endif
-
-#endif /* _ECC_IMPL_H */
-diff -r afd392dfaed5 -r 48c15869ecd5 src/solaris/javavm/export/jni_md.h
---- openjdk/jdk/src/solaris/javavm/export/jni_md.h Tue Jan 26 22:26:26 2016 +0000
-+++ openjdk/jdk/src/solaris/javavm/export/jni_md.h Wed Jan 27 02:54:06 2016 +0000
+diff -r 984a4af2ed4e src/solaris/javavm/export/jni_md.h
+--- openjdk/jdk/src/solaris/javavm/export/jni_md.h
++++ openjdk/jdk/src/solaris/javavm/export/jni_md.h
@@ -36,6 +36,11 @@
#define JNIEXPORT
#define JNIIMPORT
diff --git a/pr2899.patch b/pr2899.patch
index 58fb3c8..ffdefb0 100644
--- a/pr2899.patch
+++ b/pr2899.patch
@@ -6,18 +6,19 @@
# Parent 8957aff589013e671f02d38023d5ff245ef27e87
PR2899: Don't use WithSeed versions of NSS functions as they don't fully process the seed
Contributed-by: Alex Kashchenko <akashche(a)redhat.com>
+Updated 2017/07/04 to accomodate 8175110 by Andrew Hughes <gnu.andrew(a)redhat.com>
-diff -r 8957aff58901 -r 9dc0eca5fa89 src/share/native/sun/security/ec/ecc_impl.h
---- openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h Wed Mar 30 04:48:56 2016 +0100
-+++ openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h Wed Mar 30 05:54:40 2016 +0100
+diff -r e5fdbb82bd49 src/share/native/sun/security/ec/ecc_impl.h
+--- openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h
++++ openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h
@@ -267,8 +267,8 @@
#ifdef SYSTEM_NSS
#define EC_DecodeParams(a,b,c) EC_DecodeParams(a,b)
-#define EC_NewKey(a,b,c,d,e) EC_NewKeyFromSeed(a,b,c,d)
--#define ECDSA_SignDigest(a,b,c,d,e,f) ECDSA_SignDigestWithSeed(a,b,c,d,e)
+-#define ECDSA_SignDigest(a,b,c,d,e,f,g) ECDSA_SignDigestWithSeed(a,b,c,d,e)
+#define EC_NewKey(a,b,c,d,e) EC_NewKey(a,b)
-+#define ECDSA_SignDigest(a,b,c,d,e,f) ECDSA_SignDigest(a,b,c)
++#define ECDSA_SignDigest(a,b,c,d,e,f,g) ECDSA_SignDigest(a,b,c)
#define ECDSA_VerifyDigest(a,b,c,d) ECDSA_VerifyDigest(a,b,c)
#define ECDH_Derive(a,b,c,d,e,f) ECDH_Derive(a,b,c,d,e)
#else
diff --git a/pr2934.patch b/pr2934.patch
index 21e769d..83385da 100644
--- a/pr2934.patch
+++ b/pr2934.patch
@@ -6,10 +6,11 @@
# Parent 3fa42705acab6d69b6141f47ebba4f85739a338c
PR2934: SunEC provider throwing KeyException with current NSS
Summary: Initialise the random number generator and feed the seed to it.
+Updated 2017/07/04 to accomodate 8175110
-diff -r 3fa42705acab -r dab76de2f91c src/share/native/sun/security/ec/ECC_JNI.cpp
---- openjdk/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp Wed Apr 20 03:39:11 2016 +0100
-+++ openjdk/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp Fri Apr 22 19:17:13 2016 +0100
+diff -r 8aed1e903a4c src/share/native/sun/security/ec/ECC_JNI.cpp
+--- openjdk/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp
++++ openjdk/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp
@@ -134,8 +134,17 @@
env->GetByteArrayRegion(seed, 0, jSeedLength, pSeedBuffer);
@@ -42,7 +43,7 @@ diff -r 3fa42705acab -r dab76de2f91c src/share/native/sun/security/ec/ECC_JNI.cp
+ != SECSuccess) {
+#else
if (ECDSA_SignDigest(&privKey, &signature_item, &digest_item,
- (unsigned char *) pSeedBuffer, jSeedLength, 0) != SECSuccess) {
+ (unsigned char *) pSeedBuffer, jSeedLength, 0, timing) != SECSuccess) {
+#endif
ThrowException(env, KEY_EXCEPTION);
goto cleanup;
@@ -65,9 +66,9 @@ diff -r 3fa42705acab -r dab76de2f91c src/share/native/sun/security/ec/ECC_JNI.cp
if (SECOID_Shutdown() != SECSuccess) {
ThrowException(env, INTERNAL_ERROR);
}
-diff -r 3fa42705acab -r dab76de2f91c src/share/native/sun/security/ec/ecc_impl.h
---- openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h Wed Apr 20 03:39:11 2016 +0100
-+++ openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h Fri Apr 22 19:17:13 2016 +0100
+diff -r 8aed1e903a4c src/share/native/sun/security/ec/ecc_impl.h
+--- openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h
++++ openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h
@@ -254,8 +254,10 @@
This function is no longer required because the random bytes are now
supplied by the caller. Force a failure.
@@ -84,7 +85,7 @@ diff -r 3fa42705acab -r dab76de2f91c src/share/native/sun/security/ec/ecc_impl.h
#ifdef SYSTEM_NSS
#define EC_DecodeParams(a,b,c) EC_DecodeParams(a,b)
-#define EC_NewKey(a,b,c,d,e) EC_NewKey(a,b)
--#define ECDSA_SignDigest(a,b,c,d,e,f) ECDSA_SignDigest(a,b,c)
+-#define ECDSA_SignDigest(a,b,c,d,e,f,g) ECDSA_SignDigest(a,b,c)
#define ECDSA_VerifyDigest(a,b,c,d) ECDSA_VerifyDigest(a,b,c)
#define ECDH_Derive(a,b,c,d,e,f) ECDH_Derive(a,b,c,d,e)
#else
commit 3bf53797edbee4e08a8a8139692e79052f14e431
Author: Alex Kashchenko <akashche(a)redhat.com>
Date: Mon Jul 24 11:14:16 2017 +0000
8u141 update, mainline merge
diff --git a/8144566-pr3352.patch b/8144566-pr3352.patch
deleted file mode 100644
index 9a2a294..0000000
--- a/8144566-pr3352.patch
+++ /dev/null
@@ -1,911 +0,0 @@
-# HG changeset patch
-# User rpatil
-# Date 1474623897 -19800
-# Fri Sep 23 15:14:57 2016 +0530
-# Node ID fb617df8fbac42e962219e45cbd29b15b5ecdc63
-# Parent d41592af9af3790fe5eee30ce686d85cff09c942
-8144566, PR3352: Custom HostnameVerifier disables SNI extension
-Reviewed-by: coffeys
-
-diff --git a/src/share/classes/sun/security/ssl/SSLSocketImpl.java b/src/share/classes/sun/security/ssl/SSLSocketImpl.java
---- openjdk/jdk/src/share/classes/sun/security/ssl/SSLSocketImpl.java
-+++ openjdk/jdk/src/share/classes/sun/security/ssl/SSLSocketImpl.java
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
-@@ -220,6 +220,11 @@
- Collections.<SNIServerName>emptyList();
- Collection<SNIMatcher> sniMatchers =
- Collections.<SNIMatcher>emptyList();
-+ // Is the serverNames set to empty with SSLParameters.setServerNames()?
-+ private boolean noSniExtension = false;
-+
-+ // Is the sniMatchers set to empty with SSLParameters.setSNIMatchers()?
-+ private boolean noSniMatcher = false;
-
- /*
- * READ ME * READ ME * READ ME * READ ME * READ ME * READ ME *
-@@ -666,6 +671,11 @@
- }
-
- super.connect(endpoint, timeout);
-+
-+ if (host == null || host.length() == 0) {
-+ useImplicitHost(false);
-+ }
-+
- doneConnect();
- }
-
-@@ -2158,41 +2168,61 @@
- output.r.setVersion(protocolVersion);
- }
-
-+ //
-+ // ONLY used by ClientHandshaker for the server hostname during handshaking
-+ //
- synchronized String getHost() {
- // Note that the host may be null or empty for localhost.
- if (host == null || host.length() == 0) {
-- if (!trustNameService) {
-- // If the local name service is not trustworthy, reverse host
-- // name resolution should not be performed for endpoint
-- // identification. Use the application original specified
-- // hostname or IP address instead.
-- host = getOriginalHostname(getInetAddress());
-- } else {
-- host = getInetAddress().getHostName();
-- }
-+ useImplicitHost(true);
- }
-
- return host;
- }
-
- /*
-- * Get the original application specified hostname.
-+ * Try to set and use the implicit specified hostname
- */
-- private static String getOriginalHostname(InetAddress inetAddress) {
-- /*
-- * Get the original hostname via sun.misc.SharedSecrets.
-- */
-+ private synchronized void useImplicitHost(boolean noSniUpdate) {
-+
-+ // Note: If the local name service is not trustworthy, reverse
-+ // host name resolution should not be performed for endpoint
-+ // identification. Use the application original specified
-+ // hostname or IP address instead.
-+
-+ // Get the original hostname via jdk.internal.misc.SharedSecrets
-+ InetAddress inetAddress = getInetAddress();
-+ if (inetAddress == null) { // not connected
-+ return;
-+ }
-+
- JavaNetAccess jna = SharedSecrets.getJavaNetAccess();
- String originalHostname = jna.getOriginalHostName(inetAddress);
-+ if ((originalHostname != null) &&
-+ (originalHostname.length() != 0)) {
-
-- /*
-- * If no application specified hostname, use the IP address.
-- */
-- if (originalHostname == null || originalHostname.length() == 0) {
-- originalHostname = inetAddress.getHostAddress();
-+ host = originalHostname;
-+ if (!noSniUpdate && serverNames.isEmpty() && !noSniExtension) {
-+ serverNames =
-+ Utilities.addToSNIServerNameList(serverNames, host);
-+
-+ if (!roleIsServer &&
-+ (handshaker != null) && !handshaker.started()) {
-+ handshaker.setSNIServerNames(serverNames);
-+ }
-+ }
-+
-+ return;
- }
-
-- return originalHostname;
-+ // No explicitly specified hostname, no server name indication.
-+ if (!trustNameService) {
-+ // The local name service is not trustworthy, use IP address.
-+ host = inetAddress.getHostAddress();
-+ } else {
-+ // Use the underlying reverse host name resolution service.
-+ host = getInetAddress().getHostName();
-+ }
- }
-
-
-@@ -2205,6 +2235,10 @@
- this.host = host;
- this.serverNames =
- Utilities.addToSNIServerNameList(this.serverNames, this.host);
-+
-+ if (!roleIsServer && (handshaker != null) && !handshaker.started()) {
-+ handshaker.setSNIServerNames(serverNames);
-+ }
- }
-
- /**
-@@ -2571,8 +2605,21 @@
- // the super implementation does not handle the following parameters
- params.setEndpointIdentificationAlgorithm(identificationProtocol);
- params.setAlgorithmConstraints(algorithmConstraints);
-- params.setSNIMatchers(sniMatchers);
-- params.setServerNames(serverNames);
-+
-+ if (sniMatchers.isEmpty() && !noSniMatcher) {
-+ // 'null' indicates none has been set
-+ params.setSNIMatchers(null);
-+ } else {
-+ params.setSNIMatchers(sniMatchers);
-+ }
-+
-+ if (serverNames.isEmpty() && !noSniExtension) {
-+ // 'null' indicates none has been set
-+ params.setServerNames(null);
-+ } else {
-+ params.setServerNames(serverNames);
-+ }
-+
- params.setUseCipherSuitesOrder(preferLocalCipherSuites);
-
- return params;
-@@ -2592,11 +2639,13 @@
-
- List<SNIServerName> sniNames = params.getServerNames();
- if (sniNames != null) {
-+ noSniExtension = sniNames.isEmpty();
- serverNames = sniNames;
- }
-
- Collection<SNIMatcher> matchers = params.getSNIMatchers();
- if (matchers != null) {
-+ noSniMatcher = matchers.isEmpty();
- sniMatchers = matchers;
- }
-
-diff --git a/test/javax/net/ssl/ServerName/BestEffortOnLazyConnected.java b/test/javax/net/ssl/ServerName/BestEffortOnLazyConnected.java
-new file mode 100644
---- /dev/null
-+++ openjdk/jdk/test/javax/net/ssl/ServerName/BestEffortOnLazyConnected.java
-@@ -0,0 +1,337 @@
-+/*
-+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * This code is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 only, as
-+ * published by the Free Software Foundation.
-+ *
-+ * This code is distributed in the hope that it will be useful, but WITHOUT
-+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-+ * version 2 for more details (a copy is included in the LICENSE file that
-+ * accompanied this code).
-+ *
-+ * You should have received a copy of the GNU General Public License version
-+ * 2 along with this work; if not, write to the Free Software Foundation,
-+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-+ *
-+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-+ * or visit www.oracle.com if you need additional information or have any
-+ * questions.
-+ */
-+
-+//
-+// SunJSSE does not support dynamic system properties, no way to re-use
-+// system properties in samevm/agentvm mode.
-+//
-+
-+/**
-+ * @test
-+ * @bug 8144566
-+ * @summary Custom HostnameVerifier disables SNI extension
-+ * @run main/othervm BestEffortOnLazyConnected
-+ */
-+
-+import java.io.*;
-+import java.nio.*;
-+import java.nio.channels.*;
-+import java.util.*;
-+import java.net.*;
-+import javax.net.ssl.*;
-+
-+public class BestEffortOnLazyConnected {
-+
-+ /*
-+ * =============================================================
-+ * Set the various variables needed for the tests, then
-+ * specify what tests to run on each side.
-+ */
-+
-+ /*
-+ * Should we run the client or server in a separate thread?
-+ * Both sides can throw exceptions, but do you have a preference
-+ * as to which side should be the main thread.
-+ */
-+ private static final boolean separateServerThread = true;
-+
-+ /*
-+ * Where do we find the keystores?
-+ */
-+ private static final String pathToStores = "../../../../sun/security/ssl/etc";
-+ private static final String keyStoreFile = "keystore";
-+ private static final String trustStoreFile = "truststore";
-+ private static final String passwd = "passphrase";
-+
-+ /*
-+ * Is the server ready to serve?
-+ */
-+ private static volatile boolean serverReady = false;
-+
-+ /*
-+ * Turn on SSL debugging?
-+ */
-+ private static final boolean debug = false;
-+
-+ /*
-+ * the fully qualified domain name of localhost
-+ */
-+ private static String hostname = null;
-+
-+ /*
-+ * If the client or server is doing some kind of object creation
-+ * that the other side depends on, and that thread prematurely
-+ * exits, you may experience a hang. The test harness will
-+ * terminate all hung threads after its timeout has expired,
-+ * currently 3 minutes by default, but you might try to be
-+ * smart about it....
-+ */
-+
-+ /*
-+ * Define the server side of the test.
-+ *
-+ * If the server prematurely exits, serverReady will be set to true
-+ * to avoid infinite hangs.
-+ */
-+ private void doServerSide() throws Exception {
-+ SSLServerSocketFactory sslssf =
-+ (SSLServerSocketFactory) SSLServerSocketFactory.getDefault();
-+ try (SSLServerSocket sslServerSocket =
-+ (SSLServerSocket) sslssf.createServerSocket(serverPort)) {
-+
-+ serverPort = sslServerSocket.getLocalPort();
-+
-+ /*
-+ * Signal Client, we're ready for his connect.
-+ */
-+ serverReady = true;
-+
-+ try (SSLSocket sslSocket = (SSLSocket)sslServerSocket.accept()) {
-+ InputStream sslIS = sslSocket.getInputStream();
-+ OutputStream sslOS = sslSocket.getOutputStream();
-+
-+ sslIS.read();
-+ sslOS.write(85);
-+ sslOS.flush();
-+
-+ ExtendedSSLSession session =
-+ (ExtendedSSLSession)sslSocket.getSession();
-+ if (session.getRequestedServerNames().isEmpty()) {
-+ throw new Exception("No expected Server Name Indication");
-+ }
-+ }
-+ }
-+ }
-+
-+ /*
-+ * Define the client side of the test.
-+ *
-+ * If the server prematurely exits, serverReady will be set to true
-+ * to avoid infinite hangs.
-+ */
-+ private void doClientSide() throws Exception {
-+
-+ /*
-+ * Wait for server to get started.
-+ */
-+ while (!serverReady) {
-+ Thread.sleep(50);
-+ }
-+
-+ SSLSocketFactory sslsf =
-+ (SSLSocketFactory) SSLSocketFactory.getDefault();
-+
-+ try (SSLSocket sslSocket = (SSLSocket)sslsf.createSocket()) {
-+
-+ sslSocket.connect(new InetSocketAddress(hostname, serverPort), 0);
-+
-+ InputStream sslIS = sslSocket.getInputStream();
-+ OutputStream sslOS = sslSocket.getOutputStream();
-+
-+ sslOS.write(280);
-+ sslOS.flush();
-+ sslIS.read();
-+ }
-+ }
-+
-+
-+ /*
-+ * =============================================================
-+ * The remainder is just support stuff
-+ */
-+
-+ // use any free port by default
-+ private volatile int serverPort = 0;
-+
-+ private volatile Exception serverException = null;
-+ private volatile Exception clientException = null;
-+
-+ public static void main(String[] args) throws Exception {
-+ String keyFilename =
-+ System.getProperty("test.src", ".") + "/" + pathToStores +
-+ "/" + keyStoreFile;
-+ String trustFilename =
-+ System.getProperty("test.src", ".") + "/" + pathToStores +
-+ "/" + trustStoreFile;
-+
-+ System.setProperty("javax.net.ssl.keyStore", keyFilename);
-+ System.setProperty("javax.net.ssl.keyStorePassword", passwd);
-+ System.setProperty("javax.net.ssl.trustStore", trustFilename);
-+ System.setProperty("javax.net.ssl.trustStorePassword", passwd);
-+
-+ if (debug) {
-+ System.setProperty("javax.net.debug", "all");
-+ }
-+
-+ try {
-+ hostname = InetAddress.getLocalHost().getCanonicalHostName();
-+ } catch (UnknownHostException uhe) {
-+ System.out.println(
-+ "Ignore the test as the local hostname cannot be determined");
-+
-+ return;
-+ }
-+
-+ System.out.println(
-+ "The fully qualified domain name of the local host is " +
-+ hostname);
-+ // Ignore the test if the hostname does not sound like a domain name.
-+ if ((hostname == null) || hostname.isEmpty() ||
-+ hostname.startsWith("localhost") ||
-+ Character.isDigit(hostname.charAt(hostname.length() - 1))) {
-+
-+ System.out.println("Ignore the test as the local hostname " +
-+ "cannot be determined as fully qualified domain name");
-+
-+ return;
-+ }
-+
-+ /*
-+ * Start the tests.
-+ */
-+ new BestEffortOnLazyConnected();
-+ }
-+
-+ private Thread clientThread = null;
-+ private Thread serverThread = null;
-+
-+ /*
-+ * Primary constructor, used to drive remainder of the test.
-+ *
-+ * Fork off the other side, then do your work.
-+ */
-+ BestEffortOnLazyConnected() throws Exception {
-+ try {
-+ if (separateServerThread) {
-+ startServer(true);
-+ startClient(false);
-+ } else {
-+ startClient(true);
-+ startServer(false);
-+ }
-+ } catch (Exception e) {
-+ // swallow for now. Show later
-+ }
-+
-+ /*
-+ * Wait for other side to close down.
-+ */
-+ if (separateServerThread) {
-+ serverThread.join();
-+ } else {
-+ clientThread.join();
-+ }
-+
-+ /*
-+ * When we get here, the test is pretty much over.
-+ * Which side threw the error?
-+ */
-+ Exception local;
-+ Exception remote;
-+ String whichRemote;
-+
-+ if (separateServerThread) {
-+ remote = serverException;
-+ local = clientException;
-+ whichRemote = "server";
-+ } else {
-+ remote = clientException;
-+ local = serverException;
-+ whichRemote = "client";
-+ }
-+
-+ /*
-+ * If both failed, return the curthread's exception, but also
-+ * print the remote side Exception
-+ */
-+ if ((local != null) && (remote != null)) {
-+ System.out.println(whichRemote + " also threw:");
-+ remote.printStackTrace();
-+ System.out.println();
-+ throw local;
-+ }
-+
-+ if (remote != null) {
-+ throw remote;
-+ }
-+
-+ if (local != null) {
-+ throw local;
-+ }
-+ }
-+
-+ private void startServer(boolean newThread) throws Exception {
-+ if (newThread) {
-+ serverThread = new Thread() {
-+ public void run() {
-+ try {
-+ doServerSide();
-+ } catch (Exception e) {
-+ /*
-+ * Our server thread just died.
-+ *
-+ * Release the client, if not active already...
-+ */
-+ System.err.println("Server died...");
-+ serverReady = true;
-+ serverException = e;
-+ }
-+ }
-+ };
-+ serverThread.start();
-+ } else {
-+ try {
-+ doServerSide();
-+ } catch (Exception e) {
-+ serverException = e;
-+ } finally {
-+ serverReady = true;
-+ }
-+ }
-+ }
-+
-+ private void startClient(boolean newThread) throws Exception {
-+ if (newThread) {
-+ clientThread = new Thread() {
-+ public void run() {
-+ try {
-+ doClientSide();
-+ } catch (Exception e) {
-+ /*
-+ * Our client thread just died.
-+ */
-+ System.err.println("Client died...");
-+ clientException = e;
-+ }
-+ }
-+ };
-+ clientThread.start();
-+ } else {
-+ try {
-+ doClientSide();
-+ } catch (Exception e) {
-+ clientException = e;
-+ }
-+ }
-+ }
-+}
-diff --git a/test/sun/net/www/protocol/https/HttpsURLConnection/ImpactOnSNI.java b/test/sun/net/www/protocol/https/HttpsURLConnection/ImpactOnSNI.java
-new file mode 100644
---- /dev/null
-+++ openjdk/jdk/test/sun/net/www/protocol/https/HttpsURLConnection/ImpactOnSNI.java
-@@ -0,0 +1,390 @@
-+/*
-+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * This code is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 only, as
-+ * published by the Free Software Foundation.
-+ *
-+ * This code is distributed in the hope that it will be useful, but WITHOUT
-+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-+ * version 2 for more details (a copy is included in the LICENSE file that
-+ * accompanied this code).
-+ *
-+ * You should have received a copy of the GNU General Public License version
-+ * 2 along with this work; if not, write to the Free Software Foundation,
-+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-+ *
-+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-+ * or visit www.oracle.com if you need additional information or have any
-+ * questions.
-+ */
-+
-+//
-+// SunJSSE does not support dynamic system properties, no way to re-use
-+// system properties in samevm/agentvm mode.
-+//
-+
-+/*
-+ * @test
-+ * @bug 8144566
-+ * @summary Custom HostnameVerifier disables SNI extension
-+ * @run main/othervm ImpactOnSNI
-+ */
-+
-+import java.io.*;
-+import java.net.*;
-+import javax.net.ssl.*;
-+
-+public class ImpactOnSNI {
-+
-+ /*
-+ * =============================================================
-+ * Set the various variables needed for the tests, then
-+ * specify what tests to run on each side.
-+ */
-+
-+ /*
-+ * Should we run the client or server in a separate thread?
-+ * Both sides can throw exceptions, but do you have a preference
-+ * as to which side should be the main thread.
-+ */
-+ private static final boolean separateServerThread = true;
-+
-+ /*
-+ * Where do we find the keystores?
-+ */
-+ private static final String pathToStores =
-+ "../../../../../../sun/security/ssl/etc";
-+ private static final String keyStoreFile = "keystore";
-+ private static final String trustStoreFile = "truststore";
-+ private static final String passwd = "passphrase";
-+
-+ /*
-+ * Is the server ready to serve?
-+ */
-+ private static volatile boolean serverReady = false;
-+
-+ /*
-+ * Is the connection ready to close?
-+ */
-+ private static volatile boolean closeReady = false;
-+
-+ /*
-+ * Turn on SSL debugging?
-+ */
-+ private static final boolean debug = false;
-+
-+ /*
-+ * Message posted
-+ */
-+ private static final String postMsg = "HTTP post on a https server";
-+
-+ /*
-+ * the fully qualified domain name of localhost
-+ */
-+ private static String hostname = null;
-+
-+ /*
-+ * If the client or server is doing some kind of object creation
-+ * that the other side depends on, and that thread prematurely
-+ * exits, you may experience a hang. The test harness will
-+ * terminate all hung threads after its timeout has expired,
-+ * currently 3 minutes by default, but you might try to be
-+ * smart about it....
-+ */
-+
-+ /*
-+ * Define the server side of the test.
-+ *
-+ * If the server prematurely exits, serverReady will be set to true
-+ * to avoid infinite hangs.
-+ */
-+ private void doServerSide() throws Exception {
-+ SSLServerSocketFactory sslssf =
-+ (SSLServerSocketFactory)SSLServerSocketFactory.getDefault();
-+ try (SSLServerSocket sslServerSocket =
-+ (SSLServerSocket)sslssf.createServerSocket(serverPort)) {
-+
-+ serverPort = sslServerSocket.getLocalPort();
-+
-+ /*
-+ * Signal Client, we're ready for his connect.
-+ */
-+ serverReady = true;
-+
-+ /*
-+ * Accept connections
-+ */
-+ try (SSLSocket sslSocket = (SSLSocket)sslServerSocket.accept()) {
-+ InputStream sslIS = sslSocket.getInputStream();
-+ OutputStream sslOS = sslSocket.getOutputStream();
-+ BufferedReader br =
-+ new BufferedReader(new InputStreamReader(sslIS));
-+ PrintStream ps = new PrintStream(sslOS);
-+
-+ // process HTTP POST request from client
-+ System.out.println("status line: " + br.readLine());
-+ String msg = null;
-+ while ((msg = br.readLine()) != null && msg.length() > 0);
-+
-+ msg = br.readLine();
-+ if (msg.equals(postMsg)) {
-+ ps.println("HTTP/1.1 200 OK\n\n");
-+ } else {
-+ ps.println("HTTP/1.1 500 Not OK\n\n");
-+ }
-+ ps.flush();
-+
-+ ExtendedSSLSession session =
-+ (ExtendedSSLSession)sslSocket.getSession();
-+ if (session.getRequestedServerNames().isEmpty()) {
-+ throw new Exception("No expected Server Name Indication");
-+ }
-+
-+ // close the socket
-+ while (!closeReady) {
-+ Thread.sleep(50);
-+ }
-+ }
-+ }
-+ }
-+
-+ /*
-+ * Define the client side of the test.
-+ *
-+ * If the server prematurely exits, serverReady will be set to true
-+ * to avoid infinite hangs.
-+ */
-+ private void doClientSide() throws Exception {
-+ /*
-+ * Wait for server to get started.
-+ */
-+ while (!serverReady) {
-+ Thread.sleep(50);
-+ }
-+
-+ // Send HTTP POST request to server
-+ URL url = new URL("https://" + hostname + ":" + serverPort);
-+
-+ HttpsURLConnection.setDefaultHostnameVerifier(new NameVerifier());
-+ HttpsURLConnection http = (HttpsURLConnection)url.openConnection();
-+ http.setDoOutput(true);
-+
-+ http.setRequestMethod("POST");
-+ PrintStream ps = new PrintStream(http.getOutputStream());
-+ try {
-+ ps.println(postMsg);
-+ ps.flush();
-+ if (http.getResponseCode() != 200) {
-+ throw new RuntimeException("test Failed");
-+ }
-+ } finally {
-+ ps.close();
-+ http.disconnect();
-+ closeReady = true;
-+ }
-+ }
-+
-+ private static class NameVerifier implements HostnameVerifier {
-+ public boolean verify(String hostname, SSLSession session) {
-+ return true;
-+ }
-+ }
-+
-+ /*
-+ * =============================================================
-+ * The remainder is just support stuff
-+ */
-+
-+ // use any free port by default
-+ private volatile int serverPort = 0;
-+
-+ private volatile Exception serverException = null;
-+ private volatile Exception clientException = null;
-+
-+ public static void main(String[] args) throws Exception {
-+ String keyFilename =
-+ System.getProperty("test.src", "./") + "/" + pathToStores +
-+ "/" + keyStoreFile;
-+ String trustFilename =
-+ System.getProperty("test.src", "./") + "/" + pathToStores +
-+ "/" + trustStoreFile;
-+
-+ System.setProperty("javax.net.ssl.keyStore", keyFilename);
-+ System.setProperty("javax.net.ssl.keyStorePassword", passwd);
-+ System.setProperty("javax.net.ssl.trustStore", trustFilename);
-+ System.setProperty("javax.net.ssl.trustStorePassword", passwd);
-+
-+ if (debug) {
-+ System.setProperty("javax.net.debug", "all");
-+ }
-+
-+ try {
-+ hostname = InetAddress.getLocalHost().getCanonicalHostName();
-+ } catch (UnknownHostException uhe) {
-+ System.out.println(
-+ "Ignore the test as the local hostname cannot be determined");
-+
-+ return;
-+ }
-+
-+ System.out.println(
-+ "The fully qualified domain name of the local host is " +
-+ hostname);
-+ // Ignore the test if the hostname does not sound like a domain name.
-+ if ((hostname == null) || hostname.isEmpty() ||
-+ hostname.startsWith("localhost") ||
-+ Character.isDigit(hostname.charAt(hostname.length() - 1))) {
-+
-+ System.out.println("Ignore the test as the local hostname " +
-+ "cannot be determined as fully qualified domain name");
-+
-+ return;
-+ }
-+
-+ /*
-+ * Start the tests.
-+ */
-+ new ImpactOnSNI();
-+ }
-+
-+ private Thread clientThread = null;
-+ private Thread serverThread = null;
-+
-+ /*
-+ * Primary constructor, used to drive remainder of the test.
-+ *
-+ * Fork off the other side, then do your work.
-+ */
-+ ImpactOnSNI() throws Exception {
-+ Exception startException = null;
-+ try {
-+ if (separateServerThread) {
-+ startServer(true);
-+ startClient(false);
-+ } else {
-+ startClient(true);
-+ startServer(false);
-+ }
-+ } catch (Exception e) {
-+ startException = e;
-+ }
-+
-+ /*
-+ * Wait for other side to close down.
-+ */
-+ if (separateServerThread) {
-+ if (serverThread != null) {
-+ serverThread.join();
-+ }
-+ } else {
-+ if (clientThread != null) {
-+ clientThread.join();
-+ }
-+ }
-+
-+ /*
-+ * When we get here, the test is pretty much over.
-+ * Which side threw the error?
-+ */
-+ Exception local;
-+ Exception remote;
-+
-+ if (separateServerThread) {
-+ remote = serverException;
-+ local = clientException;
-+ } else {
-+ remote = clientException;
-+ local = serverException;
-+ }
-+
-+ Exception exception = null;
-+
-+ /*
-+ * Check various exception conditions.
-+ */
-+ if ((local != null) && (remote != null)) {
-+ // If both failed, return the curthread's exception.
-+ local.initCause(remote);
-+ exception = local;
-+ } else if (local != null) {
-+ exception = local;
-+ } else if (remote != null) {
-+ exception = remote;
-+ } else if (startException != null) {
-+ exception = startException;
-+ }
-+
-+ /*
-+ * If there was an exception *AND* a startException,
-+ * output it.
-+ */
-+ if (exception != null) {
-+ if (exception != startException && startException != null) {
-+ exception.addSuppressed(startException);
-+ }
-+ throw exception;
-+ }
-+
-+ // Fall-through: no exception to throw!
-+ }
-+
-+ private void startServer(boolean newThread) throws Exception {
-+ if (newThread) {
-+ serverThread = new Thread() {
-+ @Override
-+ public void run() {
-+ try {
-+ doServerSide();
-+ } catch (Exception e) {
-+ /*
-+ * Our server thread just died.
-+ *
-+ * Release the client, if not active already...
-+ */
-+ System.err.println("Server died...");
-+ serverReady = true;
-+ serverException = e;
-+ }
-+ }
-+ };
-+ serverThread.start();
-+ } else {
-+ try {
-+ doServerSide();
-+ } catch (Exception e) {
-+ serverException = e;
-+ } finally {
-+ serverReady = true;
-+ }
-+ }
-+ }
-+
-+ private void startClient(boolean newThread) throws Exception {
-+ if (newThread) {
-+ clientThread = new Thread() {
-+ @Override
-+ public void run() {
-+ try {
-+ doClientSide();
-+ } catch (Exception e) {
-+ /*
-+ * Our client thread just died.
-+ */
-+ System.err.println("Client died...");
-+ clientException = e;
-+ }
-+ }
-+ };
-+ clientThread.start();
-+ } else {
-+ try {
-+ doClientSide();
-+ } catch (Exception e) {
-+ clientException = e;
-+ }
-+ }
-+ }
-+}
diff --git a/8155049-pr3352.patch b/8155049-pr3352.patch
deleted file mode 100644
index 68cf02f..0000000
--- a/8155049-pr3352.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-# HG changeset patch
-# User rhalade
-# Date 1463420211 25200
-# Mon May 16 10:36:51 2016 -0700
-# Node ID c0e856f2dacdf5eb5cdea380da32ba210aee9579
-# Parent fb617df8fbac42e962219e45cbd29b15b5ecdc63
-8155049, PR3352: New tests from 8144566 fail with "No expected Server Name Indication"
-Reviewed-by: xuelei
-
-diff --git a/test/javax/net/ssl/ServerName/BestEffortOnLazyConnected.java b/test/javax/net/ssl/ServerName/BestEffortOnLazyConnected.java
---- openjdk/jdk/test/javax/net/ssl/ServerName/BestEffortOnLazyConnected.java
-+++ openjdk/jdk/test/javax/net/ssl/ServerName/BestEffortOnLazyConnected.java
-@@ -34,9 +34,6 @@
- */
-
- import java.io.*;
--import java.nio.*;
--import java.nio.channels.*;
--import java.util.*;
- import java.net.*;
- import javax.net.ssl.*;
-
-@@ -197,6 +194,7 @@
- hostname);
- // Ignore the test if the hostname does not sound like a domain name.
- if ((hostname == null) || hostname.isEmpty() ||
-+ !hostname.contains(".") || hostname.endsWith(".") ||
- hostname.startsWith("localhost") ||
- Character.isDigit(hostname.charAt(hostname.length() - 1))) {
-
-diff --git a/test/sun/net/www/protocol/https/HttpsURLConnection/ImpactOnSNI.java b/test/sun/net/www/protocol/https/HttpsURLConnection/ImpactOnSNI.java
---- openjdk/jdk/test/sun/net/www/protocol/https/HttpsURLConnection/ImpactOnSNI.java
-+++ openjdk/jdk/test/sun/net/www/protocol/https/HttpsURLConnection/ImpactOnSNI.java
-@@ -235,6 +235,7 @@
- hostname);
- // Ignore the test if the hostname does not sound like a domain name.
- if ((hostname == null) || hostname.isEmpty() ||
-+ !hostname.contains(".") || hostname.endsWith(".") ||
- hostname.startsWith("localhost") ||
- Character.isDigit(hostname.charAt(hostname.length() - 1))) {
-
diff --git a/8165231-rh1437545.patch b/8165231-rh1437545.patch
deleted file mode 100644
index e0d5be7..0000000
--- a/8165231-rh1437545.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-# HG changeset patch
-# User horii
-# Date 1473905514 14400
-# Wed Sep 14 22:11:54 2016 -0400
-# Node ID 8d16f74380a78eb76cb33183a64440316393903e
-# Parent be698ac288484ab140715ee29ed9335e6ea8a33b
-8165231: java.nio.Bits.unaligned() doesn't return true on ppc
-Reviewed-by: simonis, coffeys
-
-diff --git a/src/share/classes/java/nio/Bits.java b/src/share/classes/java/nio/Bits.java
---- openjdk/jdk/src/share/classes/java/nio/Bits.java
-+++ openjdk/jdk/src/share/classes/java/nio/Bits.java
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
-@@ -614,7 +614,8 @@
- String arch = AccessController.doPrivileged(
- new sun.security.action.GetPropertyAction("os.arch"));
- unaligned = arch.equals("i386") || arch.equals("x86")
-- || arch.equals("amd64") || arch.equals("x86_64");
-+ || arch.equals("amd64") || arch.equals("x86_64")
-+ || arch.equals("ppc64") || arch.equals("ppc64le");
- unalignedKnown = true;
- return unaligned;
- }
-diff --git a/src/share/classes/sun/security/provider/ByteArrayAccess.java b/src/share/classes/sun/security/provider/ByteArrayAccess.java
---- openjdk/jdk/src/share/classes/sun/security/provider/ByteArrayAccess.java
-+++ openjdk/jdk/src/share/classes/sun/security/provider/ByteArrayAccess.java
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
-@@ -94,7 +94,7 @@
- String arch = java.security.AccessController.doPrivileged
- (new sun.security.action.GetPropertyAction("os.arch", ""));
- return arch.equals("i386") || arch.equals("x86") || arch.equals("amd64")
-- || arch.equals("x86_64");
-+ || arch.equals("x86_64") || arch.equals("ppc64") || arch.equals("ppc64le");
- }
-
- /**
diff --git a/8174164-pr3334-rh1417266.patch b/8174164-pr3334-rh1417266.patch
deleted file mode 100644
index 494883f..0000000
--- a/8174164-pr3334-rh1417266.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-# HG changeset patch
-# User roland
-# Date 1487208397 28800
-# Wed Feb 15 17:26:37 2017 -0800
-# Node ID a9cbaff50d3d7e3a1d2dbdc0121c470142b87270
-# Parent 15922b2f31db4857ec84efdf533c41b19e68030b
-8174164, PR3334, RH1417266: SafePointNode::_replaced_nodes breaks with irreducible loops
-Reviewed-by: kvn
-
-diff --git a/src/share/vm/opto/callnode.hpp b/src/share/vm/opto/callnode.hpp
---- openjdk/hotspot/src/share/vm/opto/callnode.hpp
-+++ openjdk/hotspot/src/share/vm/opto/callnode.hpp
-@@ -449,8 +449,8 @@
- void delete_replaced_nodes() {
- _replaced_nodes.reset();
- }
-- void apply_replaced_nodes() {
-- _replaced_nodes.apply(this);
-+ void apply_replaced_nodes(uint idx) {
-+ _replaced_nodes.apply(this, idx);
- }
- void merge_replaced_nodes_with(SafePointNode* sfpt) {
- _replaced_nodes.merge_with(sfpt->_replaced_nodes);
-diff --git a/src/share/vm/opto/parse1.cpp b/src/share/vm/opto/parse1.cpp
---- openjdk/hotspot/src/share/vm/opto/parse1.cpp
-+++ openjdk/hotspot/src/share/vm/opto/parse1.cpp
-@@ -1048,7 +1048,7 @@
- kit.make_dtrace_method_exit(method());
- }
- if (_replaced_nodes_for_exceptions) {
-- kit.map()->apply_replaced_nodes();
-+ kit.map()->apply_replaced_nodes(_new_idx);
- }
- // Done with exception-path processing.
- ex_map = kit.make_exception_state(ex_oop);
-@@ -1069,7 +1069,7 @@
- _exits.add_exception_state(ex_map);
- }
- }
-- _exits.map()->apply_replaced_nodes();
-+ _exits.map()->apply_replaced_nodes(_new_idx);
- }
-
- //-----------------------------create_entry_map-------------------------------
-diff --git a/src/share/vm/opto/replacednodes.cpp b/src/share/vm/opto/replacednodes.cpp
---- openjdk/hotspot/src/share/vm/opto/replacednodes.cpp
-+++ openjdk/hotspot/src/share/vm/opto/replacednodes.cpp
-@@ -91,13 +91,17 @@
- }
-
- // Perfom node replacement (used when returning to caller)
--void ReplacedNodes::apply(Node* n) {
-+void ReplacedNodes::apply(Node* n, uint idx) {
- if (is_empty()) {
- return;
- }
- for (int i = 0; i < _replaced_nodes->length(); i++) {
- ReplacedNode replaced = _replaced_nodes->at(i);
-- n->replace_edge(replaced.initial(), replaced.improved());
-+ // Only apply if improved node was created in a callee to avoid
-+ // issues with irreducible loops in the caller
-+ if (replaced.improved()->_idx >= idx) {
-+ n->replace_edge(replaced.initial(), replaced.improved());
-+ }
- }
- }
-
-diff --git a/src/share/vm/opto/replacednodes.hpp b/src/share/vm/opto/replacednodes.hpp
---- openjdk/hotspot/src/share/vm/opto/replacednodes.hpp
-+++ openjdk/hotspot/src/share/vm/opto/replacednodes.hpp
-@@ -71,7 +71,7 @@
- void record(Node* initial, Node* improved);
- void transfer_from(const ReplacedNodes& other, uint idx);
- void reset();
-- void apply(Node* n);
-+ void apply(Node* n, uint idx);
- void merge_with(const ReplacedNodes& other);
- bool is_empty() const;
- void dump(outputStream *st) const;
diff --git a/8174729-pr3336-rh1420518.patch b/8174729-pr3336-rh1420518.patch
deleted file mode 100644
index 3d67850..0000000
--- a/8174729-pr3336-rh1420518.patch
+++ /dev/null
@@ -1,122 +0,0 @@
-# HG changeset patch
-# User adinn
-# Date 1487931564 0
-# Fri Feb 24 10:19:24 2017 +0000
-# Node ID d41592af9af3790fe5eee30ce686d85cff09c942
-# Parent 1ac9b0f1bf17fc5935bfa8250550eabc2ffb6785
-8174729, PR3336, RH1420518: Race Condition in java.lang.reflect.WeakCache
-Summary: Race can occur between Proxy.getProxyClass and Proxy.isProxyClass
-Reviewed-by: mchung
-
-diff --git a/src/share/classes/java/lang/reflect/WeakCache.java b/src/share/classes/java/lang/reflect/WeakCache.java
---- openjdk/jdk/src/share/classes/java/lang/reflect/WeakCache.java
-+++ openjdk/jdk/src/share/classes/java/lang/reflect/WeakCache.java
-@@ -239,11 +239,11 @@
- // wrap value with CacheValue (WeakReference)
- CacheValue<V> cacheValue = new CacheValue<>(value);
-
-+ // put into reverseMap
-+ reverseMap.put(cacheValue, Boolean.TRUE);
-+
- // try replacing us with CacheValue (this should always succeed)
-- if (valuesMap.replace(subKey, this, cacheValue)) {
-- // put also in reverseMap
-- reverseMap.put(cacheValue, Boolean.TRUE);
-- } else {
-+ if (!valuesMap.replace(subKey, this, cacheValue)) {
- throw new AssertionError("Should not reach here");
- }
-
-diff --git a/test/java/lang/reflect/Proxy/ProxyRace.java b/test/java/lang/reflect/Proxy/ProxyRace.java
-new file mode 100644
---- /dev/null
-+++ openjdk/jdk/test/java/lang/reflect/Proxy/ProxyRace.java
-@@ -0,0 +1,88 @@
-+/*
-+ * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * This code is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 only, as
-+ * published by the Free Software Foundation.
-+ *
-+ * This code is distributed in the hope that it will be useful, but WITHOUT
-+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-+ * version 2 for more details (a copy is included in the LICENSE file that
-+ * accompanied this code).
-+ *
-+ * You should have received a copy of the GNU General Public License version
-+ * 2 along with this work; if not, write to the Free Software Foundation,
-+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-+ *
-+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-+ * or visit www.oracle.com if you need additional information or have any
-+ * questions.
-+ */
-+
-+import java.lang.reflect.Proxy;
-+import java.util.concurrent.ExecutorService;
-+import java.util.concurrent.Executors;
-+import java.util.concurrent.Phaser;
-+import java.util.concurrent.TimeUnit;
-+import java.util.concurrent.atomic.AtomicInteger;
-+
-+/**
-+ * @test
-+ * @bug 8174729
-+ * @summary Proxy.getProxyClass() / Proxy.isProxyClass() race detector
-+ * @run main ProxyRace
-+ * @author plevart
-+ */
-+
-+public class ProxyRace {
-+
-+ static final int threads = 8;
-+
-+ static volatile ClassLoader classLoader;
-+ static volatile boolean terminate;
-+ static final AtomicInteger racesDetected = new AtomicInteger();
-+
-+ public static void main(String[] args) throws Exception {
-+
-+ Phaser phaser = new Phaser(threads) {
-+ @Override
-+ protected boolean onAdvance(int phase, int registeredParties) {
-+ // install new ClassLoader on each advance
-+ classLoader = new CL();
-+ return terminate;
-+ }
-+ };
-+
-+ ExecutorService exe = Executors.newFixedThreadPool(threads);
-+
-+ for (int i = 0; i < threads; i++) {
-+ exe.execute(() -> {
-+ while (phaser.arriveAndAwaitAdvance() >= 0) {
-+ Class<?> proxyClass = Proxy.getProxyClass(classLoader, Runnable.class);
-+ if (!Proxy.isProxyClass(proxyClass)) {
-+ racesDetected.incrementAndGet();
-+ }
-+ }
-+ });
-+ }
-+
-+ Thread.sleep(5000L);
-+
-+ terminate = true;
-+ exe.shutdown();
-+ exe.awaitTermination(5L, TimeUnit.SECONDS);
-+
-+ System.out.println(racesDetected.get() + " races detected");
-+ if (racesDetected.get() != 0) {
-+ throw new RuntimeException(racesDetected.get() + " races detected");
-+ }
-+ }
-+
-+ static class CL extends ClassLoader {
-+ public CL() {
-+ super(ClassLoader.getSystemClassLoader());
-+ }
-+ }
-+}
diff --git a/8175097-pr3334-rh1417266.patch b/8175097-pr3334-rh1417266.patch
deleted file mode 100644
index e80dd11..0000000
--- a/8175097-pr3334-rh1417266.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-# HG changeset patch
-# User roland
-# Date 1487286884 28800
-# Thu Feb 16 15:14:44 2017 -0800
-# Node ID 1b4eb44fbfcd0fceb485d89d91eb893d99f5864b
-# Parent a9cbaff50d3d7e3a1d2dbdc0121c470142b87270
-8175097, PR3334, RH1417266: [TESTBUG] 8174164 fix missed the test
-Reviewed-by: kvn
-
-diff --git a/test/compiler/c2/TestReplacedNodesOSR.java b/test/compiler/c2/TestReplacedNodesOSR.java
-new file mode 100644
---- /dev/null
-+++ openjdk/hotspot/test/compiler/c2/TestReplacedNodesOSR.java
-@@ -0,0 +1,86 @@
-+/*
-+ * Copyright (c) 2017, Red Hat, Inc. All rights reserved.
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * This code is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 only, as
-+ * published by the Free Software Foundation.
-+ *
-+ * This code is distributed in the hope that it will be useful, but WITHOUT
-+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-+ * version 2 for more details (a copy is included in the LICENSE file that
-+ * accompanied this code).
-+ *
-+ * You should have received a copy of the GNU General Public License version
-+ * 2 along with this work; if not, write to the Free Software Foundation,
-+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-+ *
-+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-+ * or visit www.oracle.com if you need additional information or have any
-+ * questions.
-+ */
-+
-+/**
-+ * @test
-+ * @bug 8174164
-+ * @summary SafePointNode::_replaced_nodes breaks with irreducible loops
-+ * @run main/othervm -XX:-BackgroundCompilation TestReplacedNodesOSR
-+ *
-+ */
-+
-+public class TestReplacedNodesOSR {
-+
-+ static Object dummy;
-+
-+ static interface I {
-+ }
-+
-+ static class A implements I {
-+ }
-+
-+ static final class MyException extends Exception {
-+ }
-+
-+ static final A obj = new A();
-+ static I static_field() { return obj; }
-+
-+ // When OSR compiled, this method has an irreducible loop
-+ static void test(int v, MyException e) {
-+ int i = 0;
-+ for (;;) {
-+ if (i == 1000) {
-+ break;
-+ }
-+ try {
-+ if ((i%2) == 0) {
-+ int j = 0;
-+ for (;;) {
-+ j++;
-+ if (i+j != v) {
-+ if (j == 1000) {
-+ break;
-+ }
-+ } else {
-+ A a = (A)static_field();
-+ // replaced node recorded here
-+ throw e;
-+ }
-+ }
-+ }
-+ } catch(MyException ex) {
-+ }
-+ i++;
-+ // replaced node applied on return of the method
-+ // replaced node used here
-+ dummy = static_field();
-+ }
-+ }
-+
-+
-+ static public void main(String[] args) {
-+ for (int i = 0; i < 1000; i++) {
-+ test(1100, new MyException());
-+ }
-+ }
-+}
diff --git a/8175887-pr3415.patch b/8175887-pr3415.patch
new file mode 100644
index 0000000..6460f60
--- /dev/null
+++ b/8175887-pr3415.patch
@@ -0,0 +1,168 @@
+# HG changeset patch
+# User shade
+# Date 1488979372 -3600
+# Wed Mar 08 14:22:52 2017 +0100
+# Node ID 654b7fcb4932d48063f5f1fba0c8994db5e02976
+# Parent 1faf7c17089922f6f72b580253725f2ecb6ba2f8
+8175887, PR3415: C1 value numbering handling of Unsafe.get*Volatile is incorrect
+Reviewed-by: vlivanov
+
+diff --git a/src/share/vm/c1/c1_ValueMap.hpp b/src/share/vm/c1/c1_ValueMap.hpp
+--- openjdk/hotspot/src/share/vm/c1/c1_ValueMap.hpp
++++ openjdk/hotspot/src/share/vm/c1/c1_ValueMap.hpp
+@@ -158,6 +158,12 @@
+ void do_UnsafePutRaw (UnsafePutRaw* x) { kill_memory(); }
+ void do_UnsafePutObject(UnsafePutObject* x) { kill_memory(); }
+ void do_UnsafeGetAndSetObject(UnsafeGetAndSetObject* x) { kill_memory(); }
++ void do_UnsafeGetRaw (UnsafeGetRaw* x) { /* nothing to do */ }
++ void do_UnsafeGetObject(UnsafeGetObject* x) {
++ if (x->is_volatile()) { // the JMM requires this
++ kill_memory();
++ }
++ }
+ void do_Intrinsic (Intrinsic* x) { if (!x->preserves_state()) kill_memory(); }
+
+ void do_Phi (Phi* x) { /* nothing to do */ }
+@@ -198,8 +204,6 @@
+ void do_OsrEntry (OsrEntry* x) { /* nothing to do */ }
+ void do_ExceptionObject(ExceptionObject* x) { /* nothing to do */ }
+ void do_RoundFP (RoundFP* x) { /* nothing to do */ }
+- void do_UnsafeGetRaw (UnsafeGetRaw* x) { /* nothing to do */ }
+- void do_UnsafeGetObject(UnsafeGetObject* x) { /* nothing to do */ }
+ void do_UnsafePrefetchRead (UnsafePrefetchRead* x) { /* nothing to do */ }
+ void do_UnsafePrefetchWrite(UnsafePrefetchWrite* x) { /* nothing to do */ }
+ void do_ProfileCall (ProfileCall* x) { /* nothing to do */ }
+diff --git a/test/compiler/c1/UnsafeVolatileGuardTest.java b/test/compiler/c1/UnsafeVolatileGuardTest.java
+new file mode 100644
+--- /dev/null
++++ openjdk/hotspot/test/compiler/c1/UnsafeVolatileGuardTest.java
+@@ -0,0 +1,72 @@
++/*
++ * Copyright (c) 2017, Red Hat Inc. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++import java.lang.reflect.Field;
++
++/**
++ * @test
++ * @bug 8175887
++ * @summary C1 value numbering handling of Unsafe.get*Volatile is incorrect
++ * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:TieredStopAtLevel=1 UnsafeVolatileGuardTest
++ */
++public class UnsafeVolatileGuardTest {
++ volatile static private int a;
++ static private int b;
++
++ static final sun.misc.Unsafe UNSAFE;
++
++ static final Object BASE;
++ static final long OFFSET;
++
++ static {
++ try {
++ Field uf = sun.misc.Unsafe.class.getDeclaredField("theUnsafe");
++ uf.setAccessible(true);
++ UNSAFE = (sun.misc.Unsafe)uf.get(null);
++
++ Field f = UnsafeVolatileGuardTest.class.getDeclaredField("a");
++ BASE = UNSAFE.staticFieldBase(f);
++ OFFSET = UNSAFE.staticFieldOffset(f);
++ } catch (Exception e) {
++ throw new RuntimeException(e);
++ }
++ }
++
++ static void test() {
++ int tt = b; // makes the JVM CSE the value of b
++
++ while (UNSAFE.getIntVolatile(BASE, OFFSET) == 0) {} // burn
++ if (b == 0) {
++ System.err.println("wrong value of b");
++ System.exit(1); // fail hard to report the error
++ }
++ }
++
++ public static void main(String [] args) throws Exception {
++ for (int i = 0; i < 10; i++) {
++ new Thread(UnsafeVolatileGuardTest::test).start();
++ }
++ b = 1;
++ a = 1;
++ }
++}
+diff --git a/test/compiler/c1/VolatileGuardTest.java b/test/compiler/c1/VolatileGuardTest.java
+new file mode 100644
+--- /dev/null
++++ openjdk/hotspot/test/compiler/c1/VolatileGuardTest.java
+@@ -0,0 +1,52 @@
++/*
++ * Copyright (c) 2017, Red Hat Inc. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++/**
++ * @test
++ * @bug 8175887
++ * @summary C1 doesn't respect the JMM with volatile field loads
++ *
++ * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:TieredStopAtLevel=1 VolatileGuardTest
++ */
++public class VolatileGuardTest {
++ volatile static private int a;
++ static private int b;
++
++ static void test() {
++ int tt = b; // makes the JVM CSE the value of b
++
++ while (a == 0) {} // burn
++ if (b == 0) {
++ System.err.println("wrong value of b");
++ System.exit(1); // fail hard to report the error
++ }
++ }
++
++ public static void main(String [] args) throws Exception {
++ for (int i = 0; i < 10; i++) {
++ new Thread(VolatileGuardTest::test).start();
++ }
++ b = 1;
++ a = 1;
++ }
++}
diff --git a/8179084-pr3409-rh1455694.patch b/8179084-pr3409-rh1455694.patch
new file mode 100644
index 0000000..dbc2120
--- /dev/null
+++ b/8179084-pr3409-rh1455694.patch
@@ -0,0 +1,135 @@
+# HG changeset patch
+# User dholmes
+# Date 1493428477 14400
+# Fri Apr 28 21:14:37 2017 -0400
+# Node ID 2fee74c5547889d9698a2636e0a5170f9e66fb9c
+# Parent 13a04e8df5a3af73794146b930b32556c7cbc5b0
+8179084, PR3409, RH1455694: HotSpot VM fails to start when AggressiveHeap is set
+Reviewed-by: kbarrett, stefank
+
+diff --git a/src/share/vm/runtime/arguments.cpp b/src/share/vm/runtime/arguments.cpp
+--- openjdk/hotspot/src/share/vm/runtime/arguments.cpp
++++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp
+@@ -3193,8 +3193,6 @@
+
+ // Enable parallel GC and adaptive generation sizing
+ FLAG_SET_CMDLINE(bool, UseParallelGC, true);
+- FLAG_SET_DEFAULT(ParallelGCThreads,
+- Abstract_VM_Version::parallel_worker_threads());
+
+ // Encourage steady state memory management
+ FLAG_SET_CMDLINE(uintx, ThresholdTolerance, 100);
+diff --git a/test/TEST.groups b/test/TEST.groups
+--- openjdk/hotspot/test/TEST.groups
++++ openjdk/hotspot/test/TEST.groups
+@@ -1,5 +1,5 @@
+ #
+-# Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
++# Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
+ # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ #
+ # This code is free software; you can redistribute it and/or modify it
+@@ -164,6 +164,7 @@
+ gc/TestGCLogRotationViaJcmd.java \
+ gc/g1/TestHumongousAllocInitialMark.java \
+ gc/g1/TestHumongousShrinkHeap.java \
++ gc/arguments/TestAggressiveHeap.java \
+ gc/arguments/TestG1HeapRegionSize.java \
+ gc/metaspace/TestMetaspaceMemoryPool.java \
+ gc/arguments/TestDynMinHeapFreeRatio.java \
+diff --git a/test/gc/arguments/TestAggressiveHeap.java b/test/gc/arguments/TestAggressiveHeap.java
+new file mode 100644
+--- /dev/null
++++ openjdk/hotspot/test/gc/arguments/TestAggressiveHeap.java
+@@ -0,0 +1,91 @@
++/*
++ * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++/*
++ * @test TestAggressiveHeap
++ * @key gc
++ * @bug 8179084
++ * @summary Test argument processing for -XX:+AggressiveHeap.
++ * @library /testlibrary
++ * @run driver TestAggressiveHeap
++ */
++
++import java.lang.management.ManagementFactory;
++import javax.management.MBeanServer;
++import javax.management.ObjectName;
++
++import com.oracle.java.testlibrary.OutputAnalyzer;
++import com.oracle.java.testlibrary.ProcessTools;
++
++public class TestAggressiveHeap {
++
++ public static void main(String args[]) throws Exception {
++ if (canUseAggressiveHeapOption()) {
++ testFlag();
++ }
++ }
++
++ // Note: Not a normal boolean flag; -XX:-AggressiveHeap is invalid.
++ private static final String option = "-XX:+AggressiveHeap";
++
++ // Option requires at least 256M, else error during option processing.
++ private static final long minMemory = 256 * 1024 * 1024;
++
++ // bool UseParallelGC := true {product}
++ private static final String parallelGCPattern =
++ " *bool +UseParallelGC *:= *true +\\{product\\}";
++
++ private static void testFlag() throws Exception {
++ ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
++ option, "-XX:+PrintFlagsFinal", "-version");
++
++ OutputAnalyzer output = new OutputAnalyzer(pb.start());
++
++ output.shouldHaveExitValue(0);
++
++ String value = output.firstMatch(parallelGCPattern);
++ if (value == null) {
++ throw new RuntimeException(
++ option + " didn't set UseParallelGC");
++ }
++ }
++
++ private static boolean haveRequiredMemory() throws Exception {
++ MBeanServer server = ManagementFactory.getPlatformMBeanServer();
++ ObjectName os = new ObjectName("java.lang", "type", "OperatingSystem");
++ Object attr = server.getAttribute(os, "TotalPhysicalMemorySize");
++ String value = attr.toString();
++ long memory = Long.parseLong(value);
++ return memory >= minMemory;
++ }
++
++ private static boolean canUseAggressiveHeapOption() throws Exception {
++ if (!haveRequiredMemory()) {
++ System.out.println(
++ "Skipping test of " + option + " : insufficient memory");
++ return false;
++ }
++ return true;
++ }
++}
++
diff --git a/8181419-pr3413-rh1463144.patch b/8181419-pr3413-rh1463144.patch
new file mode 100644
index 0000000..c2c7fc6
--- /dev/null
+++ b/8181419-pr3413-rh1463144.patch
@@ -0,0 +1,92 @@
+# HG changeset patch
+# User stuefe
+# Date 1497865921 -7200
+# Mon Jun 19 11:52:01 2017 +0200
+# Node ID ca0c7b2783e0102468218589a062e7ac4736aae2
+# Parent 148a7d6c463ad1726bad8a9e8d5df191314d704b
+8181419, PR3413, RH1463144: Race in jdwp invoker handling may lead to crashes or invalid results
+Reviewed-by: sspitsyn, sgehwolf, clanger
+
+diff --git a/src/share/back/invoker.c b/src/share/back/invoker.c
+--- openjdk/jdk/src/share/back/invoker.c
++++ openjdk/jdk/src/share/back/invoker.c
+@@ -212,30 +212,6 @@
+ }
+
+ /*
+- * Delete saved global references - if any - for:
+- * - a potentially thrown Exception
+- * - a returned refernce/array value
+- * See invoker_doInvoke() and invoke* methods where global references
+- * are being saved.
+- */
+-static void
+-deletePotentiallySavedGlobalRefs(JNIEnv *env, InvokeRequest *request)
+-{
+- /* Delete potentially saved return value */
+- if ((request->invokeType == INVOKE_CONSTRUCTOR) ||
+- (returnTypeTag(request->methodSignature) == JDWP_TAG(OBJECT)) ||
+- (returnTypeTag(request->methodSignature) == JDWP_TAG(ARRAY))) {
+- if (request->returnValue.l != NULL) {
+- tossGlobalRef(env, &(request->returnValue.l));
+- }
+- }
+- /* Delete potentially saved exception */
+- if (request->exception != NULL) {
+- tossGlobalRef(env, &(request->exception));
+- }
+-}
+-
+-/*
+ * Delete global argument references from the request which got put there before a
+ * invoke request was carried out. See fillInvokeRequest().
+ */
+@@ -744,6 +720,7 @@
+ jint id;
+ InvokeRequest *request;
+ jboolean detached;
++ jboolean mustReleaseReturnValue = JNI_FALSE;
+
+ JDI_ASSERT(thread);
+
+@@ -787,6 +764,13 @@
+ id = request->id;
+ exc = request->exception;
+ returnValue = request->returnValue;
++
++ /* Release return value and exception references, but delay the release
++ * until after the return packet was sent. */
++ mustReleaseReturnValue = request->invokeType == INVOKE_CONSTRUCTOR ||
++ returnTypeTag(request->methodSignature) == JDWP_TAG(OBJECT) ||
++ returnTypeTag(request->methodSignature) == JDWP_TAG(ARRAY);
++
+ }
+
+ /*
+@@ -801,6 +785,12 @@
+ */
+ deleteGlobalArgumentRefs(env, request);
+
++ /* From now on, do not access the request structure anymore
++ * for this request id, because once we give up the invokerLock it may
++ * be immediately reused by a new invoke request.
++ */
++ request = NULL;
++
+ /*
+ * Give up the lock before I/O operation
+ */
+@@ -821,7 +811,12 @@
+ */
+ eventHandler_lock(); // for proper lock order
+ debugMonitorEnter(invokerLock);
+- deletePotentiallySavedGlobalRefs(env, request);
++ if (mustReleaseReturnValue && returnValue.l != NULL) {
++ tossGlobalRef(env, &returnValue.l);
++ }
++ if (exc != NULL) {
++ tossGlobalRef(env, &exc);
++ }
+ debugMonitorExit(invokerLock);
+ eventHandler_unlock();
+ }
diff --git a/enableCommentedOutSystemNss.patch b/enableCommentedOutSystemNss.patch
new file mode 100644
index 0000000..febd87e
--- /dev/null
+++ b/enableCommentedOutSystemNss.patch
@@ -0,0 +1,11 @@
+diff -r 5b86f66575b7 src/share/lib/security/java.security-linux
+--- openjdk/jdk/src/share/lib/security/java.security-linux Tue May 16 13:29:05 2017 -0700
++++ openjdk/jdk/src/share/lib/security/java.security-linux Tue Jun 06 14:05:12 2017 +0200
+@@ -74,6 +74,7 @@
+ security.provider.7=com.sun.security.sasl.Provider
+ security.provider.8=org.jcp.xml.dsig.internal.dom.XMLDSigRI
+ security.provider.9=sun.security.smartcardio.SunPCSC
++#security.provider.10=sun.security.pkcs11.SunPKCS11 ${java.home}/lib/security/nss.cfg
+
+ #
+ # Sun Provider SecureRandom seed source.
diff --git a/java-1.8.0-openjdk-aarch32.spec b/java-1.8.0-openjdk-aarch32.spec
index 0dc47f5..e9b4e89 100644
--- a/java-1.8.0-openjdk-aarch32.spec
+++ b/java-1.8.0-openjdk-aarch32.spec
@@ -173,13 +173,33 @@
%global archinstall %{_arch}
%endif
-
%ifarch %{jit_arches}
%global with_systemtap 0
%else
%global with_systemtap 0
%endif
+%ifarch %{ix86} x86_64
+#no fx on f24
+%global with_openjfx_binding 0
+%global openjfx_path %{_jvmdir}/openjfx
+# links src directories
+%global jfx_jre_libs_dir %{openjfx_path}/rt/lib
+%global jfx_jre_native_dir %{jfx_jre_libs_dir}/%{archinstall}
+%global jfx_sdk_libs_dir %{openjfx_path}/lib
+%global jfx_sdk_bins_dir %{openjfx_path}/bin
+%global jfx_jre_exts_dir %{jfx_jre_libs_dir}/ext
+# links src files
+# maybe depend on jfx and generate the lists in build time? Yes, bad idea to inlcude cyclic depndenci, but this list is aweful
+%global jfx_jre_libs jfxswt.jar javafx.properties
+%global jfx_jre_native libprism_es2.so libprism_common.so libjavafx_font.so libdecora_sse.so libjavafx_font_freetype.so libprism_sw.so libjavafx_font_pango.so libglass.so libjavafx_iio.so
+%global jfx_sdk_libs javafx-mx.jar packager.jar ant-javafx.jar
+%global jfx_sdk_bins javafxpackager javapackager
+%global jfx_jre_exts jfxrt.jar
+%else
+%global with_openjfx_binding 0
+%endif
+
# Convert an absolute path to a relative path. Each symbolic link is
# specified relative to the directory in which it is installed so that
# it will resolve properly within chrooted installations.
@@ -192,7 +212,7 @@
# note, following three variables are sedded from update_sources if used correctly. Hardcode them rather there.
%global project aarch32-port
%global repo jdk8u
-%global revision jdk8u131-b12-aarch32-170420
+%global revision jdk8u141-b15-aarch32-170721
# eg # jdk8u60-b27 -> jdk8u60 or # aarch64-jdk8u60-b27 -> aarch64-jdk8u60 (dont forget spec escape % by %%)
%global whole_update %(VERSION=%{revision}; echo ${VERSION%%-*})
# eg jdk8u60 -> 60 or aarch64-jdk8u60 -> 60
@@ -539,6 +559,7 @@ exit 0
%{_jvmprivdir}/*
%{jvmjardir %%1}
%dir %{_jvmdir}/%{jredir %%1}/lib/security
+%{_jvmdir}/%{jredir %%1}/lib/security/cacerts
%config(noreplace) %{_jvmdir}/%{jredir %%1}/lib/security/US_export_policy.jar
%config(noreplace) %{_jvmdir}/%{jredir %%1}/lib/security/local_policy.jar
%config(noreplace) %{_jvmdir}/%{jredir %%1}/lib/security/java.policy
@@ -756,6 +777,8 @@ Obsoletes: java-1.5.0-gcj-devel%1
Requires: %{name}%1%{?_isa} = %{epoch}:%{version}-%{release}
OrderWithRequires: %{name}-headless%1%{?_isa} = %{epoch}:%{version}-%{release}
+#Provides: java-%{javaver}-%{origin}-demo = %{epoch}:%{version}-%{release}
+
Obsoletes: java-1.7.0-openjdk-demo%1
}
@@ -773,6 +796,7 @@ Requires(postun): chkconfig >= 1.7
# Standard JPackage javadoc provides.
#Provides: java-javadoc%1 = %{epoch}:%{version}-%{release}
#Provides: java-%{javaver}-javadoc%1 = %{epoch}:%{version}-%{release}
+#Provides: java-%{javaver}-%{origin}-javadoc = %{epoch}:%{version}-%{release}
Obsoletes: java-1.7.0-openjdk-javadoc%1
@@ -781,6 +805,10 @@ Obsoletes: java-1.7.0-openjdk-javadoc%1
%global java_src_rpo() %{expand:
Requires: %{name}-headless%1%{?_isa} = %{epoch}:%{version}-%{release}
+# Standard JPackage javadoc provides.
+#Provides: java-src%1 = %{epoch}:%{version}-%{release}
+#Provides: java-%{javaver}-src%1 = %{epoch}:%{version}-%{release}
+#Provides: java-%{javaver}-%{origin}-src = %{epoch}:%{version}-%{release}
Obsoletes: java-1.7.0-openjdk-src%1
}
@@ -789,6 +817,8 @@ Requires: java-atk-wrapper%{?_isa}
Requires: %{name}%1%{?_isa} = %{epoch}:%{version}-%{release}
OrderWithRequires: %{name}-headless%1%{?_isa} = %{epoch}:%{version}-%{release}
+#Provides: java-%{javaver}-%{origin}-accessiblity = %{epoch}:%{version}-%{release}
+
Obsoletes: java-1.7.0-openjdk-accessibility%1
}
@@ -812,13 +842,19 @@ Epoch: 1
Summary: OpenJDK Runtime Environment in a preview of the OpenJDK AArch32 project
Group: Development/Languages
-License: ASL 1.1 and ASL 2.0 and GPL+ and GPLv2 and GPLv2 with exceptions and LGPLv2 and MPLv1.0 and MPLv1.1 and Public Domain and W3C
+License: ASL 1.1 and ASL 2.0 and GPL+ and GPLv2 and GPLv2 with exceptions and LGPL+ and LGPLv2 and MPLv1.0 and MPLv1.1 and Public Domain and W3C
URL: http://openjdk.java.net/
-
-# generated by update_package.sh
+# aarch64-port now contains integration forest of both aarch64 and normal jdk
+# Source from upstream OpenJDK8 project. To regenerate, use
+# VERSION=%%{revision} FILE_NAME_ROOT=%%{project}-%%{repo}-${VERSION}
+# REPO_ROOT=<path to checked-out repository> generate_source_tarball.sh
+# where the source is obtained from http://hg.openjdk.java.net/%%{project}/%%{repo}
Source0: %{project}-%{repo}-%{revision}.tar.xz
+# Shenandoah HotSpot
+#Source1: aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u141-b16.tar.xz
+
# Custom README for -src subpackage
Source2: README.src
@@ -924,30 +960,24 @@ Patch400: 8154313.patch
Patch526: 6260348-pr3066.patch
# 8061305, PR3335, RH1423421: Javadoc crashes when method name ends with "Property"
Patch538: 8061305-pr3335-rh1423421.patch
-
-# Patches upstream and appearing in 8u131
-# 6515172, PR3346: Runtime.availableProcessors() ignores Linux taskset command
-#Patch542: 6515172-pr3346.patch
+# 8181055, PR3394, RH1448880: PPC64: "mbind: Invalid argument" still seen after 8175813
+#Patch551: 8181055-pr3394-rh1448880.patch
+# 8181419, PR3413, RH1463144: Race in jdwp invoker handling may lead to crashes or invalid results
+Patch553: 8181419-pr3413-rh1463144.patch
# Patches upstream and appearing in 8u152
# 8153711, PR3313, RH1284948: [REDO] JDWP: Memory Leak: GlobalRefs never deleted when processing invokeMethod command
Patch535: 8153711-pr3313-rh1284948.patch
-# 8144566, PR3352: Custom HostnameVerifier disables SNI extension
-Patch544: 8144566-pr3352.patch
-# 8155049, PR3352: New tests from 8144566 fail with "No expected Server Name Indication"
-Patch545: 8155049-pr3352.patch
# 8162384, PR3122, RH1358661: Performance regression: bimorphic inlining may be bypassed by type speculation
Patch532: 8162384-pr3122-rh1358661.patch
-# 8165231, RH1437545: java.nio.Bits.unaligned() doesn't return true on ppc
-Patch546: 8165231-rh1437545.patch
# 8173941, PR3326: SA does not work if executable is DSO
Patch547: 8173941-pr3326.patch
-# 8174164, PR3334, RH1417266: SafePointNode::_replaced_nodes breaks with irreducible loops"
-Patch537: 8174164-pr3334-rh1417266.patch
-# 8174729, PR3336, RH1420518: Race Condition in java.lang.reflect.WeakCache
-Patch548: 8174729-pr3336-rh1420518.patch
-# 8175097, PR3334, RH1417266: [TESTBUG] 8174164 fix missed the test
-Patch549: 8175097-pr3334-rh1417266.patch
+# 8175813, PR3394, RH1448880: PPC64: "mbind: Invalid argument" when -XX:+UseNUMA is used
+#Patch550: 8175813-pr3394-rh1448880.patch
+# 8179084, PR3409, RH1455694: HotSpot VM fails to start when AggressiveHeap is set
+Patch552: 8179084-pr3409-rh1455694.patch
+# 8175887, PR3415: C1 value numbering handling of Unsafe.get*Volatile is incorrect
+Patch554: 8175887-pr3415.patch
# Patches ineligible for 8u
# 8043805: Allow using a system-installed libjpeg
@@ -966,6 +996,7 @@ Patch533: rh1367357.patch
Patch539: pr2888.patch
# Non-OpenJDK fixes
+Patch1000: enableCommentedOutSystemNss.patch
BuildRequires: autoconf
BuildRequires: automake
@@ -994,7 +1025,13 @@ BuildRequires: nss-devel
BuildRequires: pkgconfig
BuildRequires: xorg-x11-proto-devel
BuildRequires: zip
+# Use OpenJDK 7 where available (on RHEL) to avoid
+# having to use the rhel-7.x-java-unsafe-candidate hack
+%if 0%{?rhel}
+BuildRequires: java-1.7.0-openjdk-devel
+%else
BuildRequires: java-1.8.0-openjdk-aarch32-devel
+%endif
# Zero-assembler build requirement.
%ifnarch %{jit_arches}
BuildRequires: libffi-devel
@@ -1016,9 +1053,7 @@ BuildRequires: systemtap-sdt-devel
ExclusiveArch: %{arm}
%description
-A preview release of the upstream OpenJDK AArch32 porting project. In
-due time it will be merged with the main java-1.8.0-openjdk package.
-This release may get security fixes late. Use carefully.
+A preview release of the upstream OpenJDK AArch32 porting project.
The OpenJDK runtime environment.
%if %{include_debug_build}
@@ -1203,6 +1238,43 @@ Summary: OpenJDK accessibility connector %{for_debug}
See normal java-%{version}-openjdk-accessibility description.
%endif
+
+%if %{with_openjfx_binding}
+%package openjfx
+Summary: OpenJDK x OpenJFX connector. This package adds symliks finishing Java FX integration to %{name}
+Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: openjfx%{?_isa}
+Provides: javafx = %{epoch}:%{version}-%{release}
+%description openjfx
+Set of links from OpenJDK (jre) to OpenJFX
+
+%package openjfx-devel
+Summary: OpenJDK x OpenJFX connector for FX developers. This package adds symliks finishing Java FX integration to %{name}-devel
+Requires: %{name}-devel%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: openjfx-devel%{?_isa}
+Provides: javafx-devel = %{epoch}:%{version}-%{release}
+%description openjfx-devel
+Set of links from OpenJDK (sdk) to OpenJFX
+
+%if %{include_debug_build}
+%package openjfx-debug
+Summary: OpenJDK x OpenJFX connector %{for_debug}. his package adds symliks finishing Java FX integration to %{name}-debug
+Requires: %{name}-debug%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: openjfx%{?_isa}
+Provides: javafx-debug = %{epoch}:%{version}-%{release}
+%description openjfx-debug
+Set of links from OpenJDK-debug (jre) to normal OpenJFX. OpenJFX do not support debug buuilds of itself
+
+%package openjfx-devel-debug
+Summary: OpenJDK x OpenJFX connector for FX developers %{for_debug}. This package adds symliks finishing Java FX integration to %{name}-devel-debug
+Requires: %{name}-devel-debug%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: openjfx-devel%{?_isa}
+Provides: javafx-devel-debug = %{epoch}:%{version}-%{release}
+%description openjfx-devel-debug
+Set of links from OpenJDK-debug (sdk) to normal OpenJFX. OpenJFX do not support debug buuilds of itself
+%endif
+%endif
+
%prep
if [ %{include_normal_build} -eq 0 -o %{include_normal_build} -eq 1 ] ; then
echo "include_normal_build is %{include_normal_build}"
@@ -1233,7 +1305,7 @@ ln -s openjdk jdk8
# On Shenandoah-supported architectures, replace HotSpot with
# the Shenandoah version
pushd openjdk
-tar -xf %{SOURCE999}
+tar -xf %{SOURCE1}
rm -rf hotspot
mv openjdk/hotspot .
rm -rf openjdk
@@ -1304,15 +1376,13 @@ sh %{SOURCE12}
%patch528
%patch532
%patch535
-%patch537
%patch538
-#%patch542
-%patch544
-%patch545
-%patch546
%patch547
-%patch548
-%patch549
+#%patch550
+#%patch551
+%patch552
+%patch553
+%patch554
# RPM-only fixes
%patch525
@@ -1324,6 +1394,8 @@ sh %{SOURCE12}
%patch534
%endif
+%patch1000
+
# Extract systemtap tapsets
%if %{with_systemtap}
tar -x -I xz -f %{SOURCE8}
@@ -1561,6 +1633,8 @@ $JAVA_HOME/bin/javap -l java.lang.Object | grep LocalVariableTable
$JAVA_HOME/bin/javap -l java.nio.ByteBuffer | grep "Compiled from"
$JAVA_HOME/bin/javap -l java.nio.ByteBuffer | grep LineNumberTable
$JAVA_HOME/bin/javap -l java.nio.ByteBuffer | grep LocalVariableTable
+
+#build cycles check
done
%install
@@ -1568,7 +1642,7 @@ STRIP_KEEP_SYMTAB=libjvm*
for suffix in %{build_loop} ; do
-pushd %{buildoutputdir $suffix}/images/%{j2sdkimage}
+pushd %{buildoutputdir $suffix}/images/%{j2sdkimage}
#install jsa directories so we can owe them
mkdir -p $RPM_BUILD_ROOT%{_jvmdir}/%{jredir $suffix}/lib/%{archinstall}/server/
@@ -1644,6 +1718,12 @@ popd
# Remove empty cacerts database.
rm -f $RPM_BUILD_ROOT%{_jvmdir}/%{jredir $suffix}/lib/security/cacerts
+ # Install cacerts symlink needed by some apps which hardcode the path.
+ pushd $RPM_BUILD_ROOT%{_jvmdir}/%{jredir $suffix}/lib/security
+ RELATIVE=$(%{abs2rel} %{_sysconfdir}/pki/java \
+ %{_jvmdir}/%{jredir $suffix}/lib/security)
+ ln -sf $RELATIVE/cacerts .
+ popd
# Install extension symlinks.
install -d -m 755 $RPM_BUILD_ROOT%{jvmjardir $suffix}
@@ -1808,6 +1888,44 @@ find $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir $suffix}/demo \
echo "" >> accessibility.properties
popd
+# intentionally after all else, fx links with redirections on its own
+%if %{with_openjfx_binding}
+ FXSDK_FILES=%{name}-openjfx-devel.files"$suffix"
+ FXJRE_FILES=%{name}-openjfx.files"$suffix"
+ echo -n "" > $FXJRE_FILES
+ echo -n "" > $FXSDK_FILES
+ for file in %{jfx_jre_libs} ; do
+ srcfile=%{jfx_jre_libs_dir}/$file
+ targetfile=%{_jvmdir}/%{jredir $suffix}/lib/$file
+ ln -s $srcfile $RPM_BUILD_ROOT/$targetfile
+ echo $targetfile >> $FXJRE_FILES
+ done
+ for file in %{jfx_jre_native} ; do
+ srcfile=%{jfx_jre_native_dir}/$file
+ targetfile=%{_jvmdir}/%{jredir $suffix}/lib/%{archinstall}/$file
+ ln -s $srcfile $RPM_BUILD_ROOT/$targetfile
+ echo $targetfile >> $FXJRE_FILES
+ done
+ for file in %{jfx_jre_exts} ; do
+ srcfile=%{jfx_jre_exts_dir}/$file
+ targetfile=%{_jvmdir}/%{jredir $suffix}/lib/ext/$file
+ ln -s $srcfile $RPM_BUILD_ROOT/$targetfile
+ echo $targetfile >> $FXJRE_FILES
+ done
+ for file in %{jfx_sdk_libs} ; do
+ srcfile=%{jfx_sdk_libs_dir}/$file
+ targetfile=%{_jvmdir}/%{sdkdir $suffix}/lib/$file
+ ln -s $srcfile $RPM_BUILD_ROOT/$targetfile
+ echo $targetfile >> $FXSDK_FILES
+ done
+ for file in %{jfx_sdk_bins} ; do
+ srcfile=%{jfx_sdk_bins_dir}/$file
+ targetfile=%{_jvmdir}/%{sdkdir $suffix}/bin/$file
+ ln -s $srcfile $RPM_BUILD_ROOT/$targetfile
+ echo $targetfile >> $FXSDK_FILES
+ done
+%endif
+
bash %{SOURCE20} $RPM_BUILD_ROOT/%{_jvmdir}/%{jredir $suffix} %{javaver}
# https://bugzilla.redhat.com/show_bug.cgi?id=1183793
touch -t 201401010000 $RPM_BUILD_ROOT/%{_jvmdir}/%{jredir $suffix}/lib/security/java.security
@@ -1966,6 +2084,12 @@ require "copy_jdk_configs.lua"
%files accessibility
%{files_accessibility %{nil}}
+
+%if %{with_openjfx_binding}
+%files openjfx -f %{name}-openjfx.files
+
+%files openjfx-devel -f %{name}-openjfx-devel.files
+%endif
%endif
%if %{include_debug_build}
@@ -1992,9 +2116,20 @@ require "copy_jdk_configs.lua"
%files accessibility-debug
%{files_accessibility %{debug_suffix_unquoted}}
+
+%if %{with_openjfx_binding}
+%files openjfx-debug -f %{name}-openjfx.files-debug
+
+%files openjfx-devel-debug -f %{name}-openjfx-devel.files-debug
+%endif
+
%endif
%changelog
+* Mon Jul 24 2017 Alex Kashchenko <akashche(a)redhat.com> - 1:1.8.0.141-1.170721
+- update sources to 8u141
+- sync with mainline package
+
* Sat Apr 29 2017 Alex Kashchenko <akashche(a)redhat.com> - 1:1.8.0.131-1.170420
- update sources to 8u131
- sync with mainline package
6 years, 2 months
Architecture specific change in rpms/java-1.8.0-openjdk-aarch32.git
by githook-noreply@fedoraproject.org
The package rpms/java-1.8.0-openjdk-aarch32.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/java-1.8.0-openjdk-aarch32.git/co....
Change:
+%ifarch %{ix86} x86_64
Thanks.
Full change:
============
commit 5fe768db7a72aca142a53f253ef4355f6ce9e4cb
Merge: bb7cc3c afb8236
Author: Alex Kashchenko <akashche(a)redhat.com>
Date: Mon Jul 31 11:03:19 2017 +0000
merge branch f24
commit afb82366611da1fa7a40b878c2e8d162e6eaeb29
Author: Alex Kashchenko <akashche(a)redhat.com>
Date: Tue Jul 25 20:07:34 2017 +0000
sources file update
diff --git a/.gitignore b/.gitignore
index 70f7217..5d0305e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,3 +6,4 @@
/aarch32-port-jdk8u-jdk8u121-b13-aarch32-170210.tar.xz
/aarch32-port-jdk8u-jdk8u131-b12-aarch32-170420.tar.xz
/systemtap-tapset-3.4.0pre01.tar.xz
+/aarch32-port-jdk8u-jdk8u141-b15-aarch32-170721.tar.xz
diff --git a/sources b/sources
index 92a8fc8..3ab8e1c 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
SHA512 (systemtap-tapset-3.4.0pre01.tar.xz) = 4446fa20f88bbce53b583484bf06cb2b476c9372beb898dc2b7739eaa5c98b9979fbd72e12474fb344833d831a19366b82216ee03b452411745e6cd3527faa4e
-SHA512 (aarch32-port-jdk8u-jdk8u131-b12-aarch32-170420.tar.xz) = 8cfca4b5f9d58fc22ea9011182dbb58f5614e23281d781c335ed9ae069e0e6587fb82f3b733e3f38e258e802342e679a6177ea59ec45f7bb9253c2b88bfe73e7
+SHA512 (aarch32-port-jdk8u-jdk8u141-b15-aarch32-170721.tar.xz) = 81a3963eb51e33134d10fcd197530ea6589e16a807132cedc563c5a13ccc5ce2d08f0c8510008a7474792ed226d88ef8e29313cd6532e24cc7ec785c4ae4af70
commit 9bc047fab7203b54d1ee71c21ee89edc5b3258a7
Author: Alex Kashchenko <akashche(a)redhat.com>
Date: Tue Jul 25 16:59:22 2017 +0000
update ecc patches
diff --git a/pr1983-jdk.patch b/pr1983-jdk.patch
index a0b4e1a..673b8a9 100644
--- a/pr1983-jdk.patch
+++ b/pr1983-jdk.patch
@@ -6,10 +6,11 @@
# Parent afd392dfaed501ac674a7cc3e37353ce300969c7
PR1983: Support using the system installation of NSS with the SunEC provider
Summary: Apply code changes from PR1699 & PR1742 & forward-port Makefile changes to the new build.
+Updated 2017/07/04 to accomodate 8175110
-diff -r afd392dfaed5 -r 48c15869ecd5 make/lib/SecurityLibraries.gmk
---- openjdk/jdk/make/lib/SecurityLibraries.gmk Tue Jan 26 22:26:26 2016 +0000
-+++ openjdk/jdk/make/lib/SecurityLibraries.gmk Wed Jan 27 02:54:06 2016 +0000
+diff -r 984a4af2ed4e make/lib/SecurityLibraries.gmk
+--- openjdk/jdk/make/lib/SecurityLibraries.gmk
++++ openjdk/jdk/make/lib/SecurityLibraries.gmk
@@ -218,8 +218,17 @@
ifeq ($(ENABLE_INTREE_EC), yes)
@@ -51,9 +52,9 @@ diff -r afd392dfaed5 -r 48c15869ecd5 make/lib/SecurityLibraries.gmk
VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \
RC_FLAGS := $(RC_FLAGS) \
-D "JDK_FNAME=sunec.dll" \
-diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/ECC_JNI.cpp
---- openjdk/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp Tue Jan 26 22:26:26 2016 +0000
-+++ openjdk/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp Wed Jan 27 02:54:06 2016 +0000
+diff -r 984a4af2ed4e src/share/native/sun/security/ec/ECC_JNI.cpp
+--- openjdk/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp
++++ openjdk/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp
@@ -24,7 +24,7 @@
*/
@@ -76,8 +77,8 @@ diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/ECC_JNI.cp
*/
JNIEXPORT jbyteArray
JNICALL Java_sun_security_ec_ECDSASignature_signDigest
-- (JNIEnv *env, jclass clazz, jbyteArray digest, jbyteArray privateKey, jbyteArray encodedParams, jbyteArray seed)
-+ (JNIEnv *env, jclass UNUSED(clazz), jbyteArray digest, jbyteArray privateKey, jbyteArray encodedParams, jbyteArray seed)
+- (JNIEnv *env, jclass clazz, jbyteArray digest, jbyteArray privateKey, jbyteArray encodedParams, jbyteArray seed, jint timing)
++ (JNIEnv *env, jclass UNUSED(clazz), jbyteArray digest, jbyteArray privateKey, jbyteArray encodedParams, jbyteArray seed, jint timing)
{
jbyte* pDigestBuffer = NULL;
jint jDigestLength = env->GetArrayLength(digest);
@@ -99,12 +100,12 @@ diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/ECC_JNI.cp
{
jbyteArray jSecret = NULL;
ECParams *ecparams = NULL;
-diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/ecc_impl.h
---- /dev/null Thu Jan 01 00:00:00 1970 +0000
-+++ openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h Wed Jan 27 02:54:06 2016 +0000
+diff -r 984a4af2ed4e src/share/native/sun/security/ec/ecc_impl.h
+--- /dev/null
++++ openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h
@@ -0,0 +1,298 @@
+/*
-+ * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2007, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Use is subject to license terms.
+ *
+ * This library is free software; you can redistribute it and/or
@@ -139,7 +140,7 @@ diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/ecc_impl.h
+ * Dr Vipul Gupta <vipul.gupta(a)sun.com> and
+ * Douglas Stebila <douglas(a)stebila.ca>, Sun Microsystems Laboratories
+ *
-+ * Last Modified Date from the Original Code: November 2013
++ * Last Modified Date from the Original Code: May 2017
+ *********************************************************************** */
+
+#ifndef _ECC_IMPL_H
@@ -373,7 +374,7 @@ diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/ecc_impl.h
+#ifdef SYSTEM_NSS
+#define EC_DecodeParams(a,b,c) EC_DecodeParams(a,b)
+#define EC_NewKey(a,b,c,d,e) EC_NewKeyFromSeed(a,b,c,d)
-+#define ECDSA_SignDigest(a,b,c,d,e,f) ECDSA_SignDigestWithSeed(a,b,c,d,e)
++#define ECDSA_SignDigest(a,b,c,d,e,f,g) ECDSA_SignDigestWithSeed(a,b,c,d,e)
+#define ECDSA_VerifyDigest(a,b,c,d) ECDSA_VerifyDigest(a,b,c)
+#define ECDH_Derive(a,b,c,d,e,f) ECDH_Derive(a,b,c,d,e)
+#else
@@ -389,7 +390,7 @@ diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/ecc_impl.h
+ const unsigned char* random, int randomlen, int);
+/* This function has been modified to accept an array of random bytes */
+extern SECStatus ECDSA_SignDigest(ECPrivateKey *, SECItem *, const SECItem *,
-+ const unsigned char* random, int randomlen, int);
++ const unsigned char* random, int randomlen, int, int timing);
+extern SECStatus ECDSA_VerifyDigest(ECPublicKey *, const SECItem *,
+ const SECItem *, int);
+extern SECStatus ECDH_Derive(SECItem *, ECParams *, SECItem *, boolean_t,
@@ -401,12 +402,12 @@ diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/ecc_impl.h
+#endif
+
+#endif /* _ECC_IMPL_H */
-diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/impl/ecc_impl.h
---- openjdk/jdk/src/share/native/sun/security/ec/impl/ecc_impl.h Tue Jan 26 22:26:26 2016 +0000
-+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
+diff -r 984a4af2ed4e src/share/native/sun/security/ec/impl/ecc_impl.h
+--- openjdk/jdk/src/share/native/sun/security/ec/impl/ecc_impl.h
++++ /dev/null
@@ -1,271 +0,0 @@
-/*
-- * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
+- * Copyright (c) 2007, 2017, Oracle and/or its affiliates. All rights reserved.
- * Use is subject to license terms.
- *
- * This library is free software; you can redistribute it and/or
@@ -441,7 +442,7 @@ diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/impl/ecc_i
- * Dr Vipul Gupta <vipul.gupta(a)sun.com> and
- * Douglas Stebila <douglas(a)stebila.ca>, Sun Microsystems Laboratories
- *
-- * Last Modified Date from the Original Code: November 2013
+- * Last Modified Date from the Original Code: May 2017
- *********************************************************************** */
-
-#ifndef _ECC_IMPL_H
@@ -665,7 +666,7 @@ diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/impl/ecc_i
- const unsigned char* random, int randomlen, int);
-/* This function has been modified to accept an array of random bytes */
-extern SECStatus ECDSA_SignDigest(ECPrivateKey *, SECItem *, const SECItem *,
-- const unsigned char* random, int randomlen, int);
+- const unsigned char* random, int randomlen, int, int timing);
-extern SECStatus ECDSA_VerifyDigest(ECPublicKey *, const SECItem *,
- const SECItem *, int);
-extern SECStatus ECDH_Derive(SECItem *, ECParams *, SECItem *, boolean_t,
@@ -676,9 +677,9 @@ diff -r afd392dfaed5 -r 48c15869ecd5 src/share/native/sun/security/ec/impl/ecc_i
-#endif
-
-#endif /* _ECC_IMPL_H */
-diff -r afd392dfaed5 -r 48c15869ecd5 src/solaris/javavm/export/jni_md.h
---- openjdk/jdk/src/solaris/javavm/export/jni_md.h Tue Jan 26 22:26:26 2016 +0000
-+++ openjdk/jdk/src/solaris/javavm/export/jni_md.h Wed Jan 27 02:54:06 2016 +0000
+diff -r 984a4af2ed4e src/solaris/javavm/export/jni_md.h
+--- openjdk/jdk/src/solaris/javavm/export/jni_md.h
++++ openjdk/jdk/src/solaris/javavm/export/jni_md.h
@@ -36,6 +36,11 @@
#define JNIEXPORT
#define JNIIMPORT
diff --git a/pr2899.patch b/pr2899.patch
index 58fb3c8..ffdefb0 100644
--- a/pr2899.patch
+++ b/pr2899.patch
@@ -6,18 +6,19 @@
# Parent 8957aff589013e671f02d38023d5ff245ef27e87
PR2899: Don't use WithSeed versions of NSS functions as they don't fully process the seed
Contributed-by: Alex Kashchenko <akashche(a)redhat.com>
+Updated 2017/07/04 to accomodate 8175110 by Andrew Hughes <gnu.andrew(a)redhat.com>
-diff -r 8957aff58901 -r 9dc0eca5fa89 src/share/native/sun/security/ec/ecc_impl.h
---- openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h Wed Mar 30 04:48:56 2016 +0100
-+++ openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h Wed Mar 30 05:54:40 2016 +0100
+diff -r e5fdbb82bd49 src/share/native/sun/security/ec/ecc_impl.h
+--- openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h
++++ openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h
@@ -267,8 +267,8 @@
#ifdef SYSTEM_NSS
#define EC_DecodeParams(a,b,c) EC_DecodeParams(a,b)
-#define EC_NewKey(a,b,c,d,e) EC_NewKeyFromSeed(a,b,c,d)
--#define ECDSA_SignDigest(a,b,c,d,e,f) ECDSA_SignDigestWithSeed(a,b,c,d,e)
+-#define ECDSA_SignDigest(a,b,c,d,e,f,g) ECDSA_SignDigestWithSeed(a,b,c,d,e)
+#define EC_NewKey(a,b,c,d,e) EC_NewKey(a,b)
-+#define ECDSA_SignDigest(a,b,c,d,e,f) ECDSA_SignDigest(a,b,c)
++#define ECDSA_SignDigest(a,b,c,d,e,f,g) ECDSA_SignDigest(a,b,c)
#define ECDSA_VerifyDigest(a,b,c,d) ECDSA_VerifyDigest(a,b,c)
#define ECDH_Derive(a,b,c,d,e,f) ECDH_Derive(a,b,c,d,e)
#else
diff --git a/pr2934.patch b/pr2934.patch
index 21e769d..83385da 100644
--- a/pr2934.patch
+++ b/pr2934.patch
@@ -6,10 +6,11 @@
# Parent 3fa42705acab6d69b6141f47ebba4f85739a338c
PR2934: SunEC provider throwing KeyException with current NSS
Summary: Initialise the random number generator and feed the seed to it.
+Updated 2017/07/04 to accomodate 8175110
-diff -r 3fa42705acab -r dab76de2f91c src/share/native/sun/security/ec/ECC_JNI.cpp
---- openjdk/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp Wed Apr 20 03:39:11 2016 +0100
-+++ openjdk/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp Fri Apr 22 19:17:13 2016 +0100
+diff -r 8aed1e903a4c src/share/native/sun/security/ec/ECC_JNI.cpp
+--- openjdk/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp
++++ openjdk/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp
@@ -134,8 +134,17 @@
env->GetByteArrayRegion(seed, 0, jSeedLength, pSeedBuffer);
@@ -42,7 +43,7 @@ diff -r 3fa42705acab -r dab76de2f91c src/share/native/sun/security/ec/ECC_JNI.cp
+ != SECSuccess) {
+#else
if (ECDSA_SignDigest(&privKey, &signature_item, &digest_item,
- (unsigned char *) pSeedBuffer, jSeedLength, 0) != SECSuccess) {
+ (unsigned char *) pSeedBuffer, jSeedLength, 0, timing) != SECSuccess) {
+#endif
ThrowException(env, KEY_EXCEPTION);
goto cleanup;
@@ -65,9 +66,9 @@ diff -r 3fa42705acab -r dab76de2f91c src/share/native/sun/security/ec/ECC_JNI.cp
if (SECOID_Shutdown() != SECSuccess) {
ThrowException(env, INTERNAL_ERROR);
}
-diff -r 3fa42705acab -r dab76de2f91c src/share/native/sun/security/ec/ecc_impl.h
---- openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h Wed Apr 20 03:39:11 2016 +0100
-+++ openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h Fri Apr 22 19:17:13 2016 +0100
+diff -r 8aed1e903a4c src/share/native/sun/security/ec/ecc_impl.h
+--- openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h
++++ openjdk/jdk/src/share/native/sun/security/ec/ecc_impl.h
@@ -254,8 +254,10 @@
This function is no longer required because the random bytes are now
supplied by the caller. Force a failure.
@@ -84,7 +85,7 @@ diff -r 3fa42705acab -r dab76de2f91c src/share/native/sun/security/ec/ecc_impl.h
#ifdef SYSTEM_NSS
#define EC_DecodeParams(a,b,c) EC_DecodeParams(a,b)
-#define EC_NewKey(a,b,c,d,e) EC_NewKey(a,b)
--#define ECDSA_SignDigest(a,b,c,d,e,f) ECDSA_SignDigest(a,b,c)
+-#define ECDSA_SignDigest(a,b,c,d,e,f,g) ECDSA_SignDigest(a,b,c)
#define ECDSA_VerifyDigest(a,b,c,d) ECDSA_VerifyDigest(a,b,c)
#define ECDH_Derive(a,b,c,d,e,f) ECDH_Derive(a,b,c,d,e)
#else
commit 3bf53797edbee4e08a8a8139692e79052f14e431
Author: Alex Kashchenko <akashche(a)redhat.com>
Date: Mon Jul 24 11:14:16 2017 +0000
8u141 update, mainline merge
diff --git a/8144566-pr3352.patch b/8144566-pr3352.patch
deleted file mode 100644
index 9a2a294..0000000
--- a/8144566-pr3352.patch
+++ /dev/null
@@ -1,911 +0,0 @@
-# HG changeset patch
-# User rpatil
-# Date 1474623897 -19800
-# Fri Sep 23 15:14:57 2016 +0530
-# Node ID fb617df8fbac42e962219e45cbd29b15b5ecdc63
-# Parent d41592af9af3790fe5eee30ce686d85cff09c942
-8144566, PR3352: Custom HostnameVerifier disables SNI extension
-Reviewed-by: coffeys
-
-diff --git a/src/share/classes/sun/security/ssl/SSLSocketImpl.java b/src/share/classes/sun/security/ssl/SSLSocketImpl.java
---- openjdk/jdk/src/share/classes/sun/security/ssl/SSLSocketImpl.java
-+++ openjdk/jdk/src/share/classes/sun/security/ssl/SSLSocketImpl.java
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
-@@ -220,6 +220,11 @@
- Collections.<SNIServerName>emptyList();
- Collection<SNIMatcher> sniMatchers =
- Collections.<SNIMatcher>emptyList();
-+ // Is the serverNames set to empty with SSLParameters.setServerNames()?
-+ private boolean noSniExtension = false;
-+
-+ // Is the sniMatchers set to empty with SSLParameters.setSNIMatchers()?
-+ private boolean noSniMatcher = false;
-
- /*
- * READ ME * READ ME * READ ME * READ ME * READ ME * READ ME *
-@@ -666,6 +671,11 @@
- }
-
- super.connect(endpoint, timeout);
-+
-+ if (host == null || host.length() == 0) {
-+ useImplicitHost(false);
-+ }
-+
- doneConnect();
- }
-
-@@ -2158,41 +2168,61 @@
- output.r.setVersion(protocolVersion);
- }
-
-+ //
-+ // ONLY used by ClientHandshaker for the server hostname during handshaking
-+ //
- synchronized String getHost() {
- // Note that the host may be null or empty for localhost.
- if (host == null || host.length() == 0) {
-- if (!trustNameService) {
-- // If the local name service is not trustworthy, reverse host
-- // name resolution should not be performed for endpoint
-- // identification. Use the application original specified
-- // hostname or IP address instead.
-- host = getOriginalHostname(getInetAddress());
-- } else {
-- host = getInetAddress().getHostName();
-- }
-+ useImplicitHost(true);
- }
-
- return host;
- }
-
- /*
-- * Get the original application specified hostname.
-+ * Try to set and use the implicit specified hostname
- */
-- private static String getOriginalHostname(InetAddress inetAddress) {
-- /*
-- * Get the original hostname via sun.misc.SharedSecrets.
-- */
-+ private synchronized void useImplicitHost(boolean noSniUpdate) {
-+
-+ // Note: If the local name service is not trustworthy, reverse
-+ // host name resolution should not be performed for endpoint
-+ // identification. Use the application original specified
-+ // hostname or IP address instead.
-+
-+ // Get the original hostname via jdk.internal.misc.SharedSecrets
-+ InetAddress inetAddress = getInetAddress();
-+ if (inetAddress == null) { // not connected
-+ return;
-+ }
-+
- JavaNetAccess jna = SharedSecrets.getJavaNetAccess();
- String originalHostname = jna.getOriginalHostName(inetAddress);
-+ if ((originalHostname != null) &&
-+ (originalHostname.length() != 0)) {
-
-- /*
-- * If no application specified hostname, use the IP address.
-- */
-- if (originalHostname == null || originalHostname.length() == 0) {
-- originalHostname = inetAddress.getHostAddress();
-+ host = originalHostname;
-+ if (!noSniUpdate && serverNames.isEmpty() && !noSniExtension) {
-+ serverNames =
-+ Utilities.addToSNIServerNameList(serverNames, host);
-+
-+ if (!roleIsServer &&
-+ (handshaker != null) && !handshaker.started()) {
-+ handshaker.setSNIServerNames(serverNames);
-+ }
-+ }
-+
-+ return;
- }
-
-- return originalHostname;
-+ // No explicitly specified hostname, no server name indication.
-+ if (!trustNameService) {
-+ // The local name service is not trustworthy, use IP address.
-+ host = inetAddress.getHostAddress();
-+ } else {
-+ // Use the underlying reverse host name resolution service.
-+ host = getInetAddress().getHostName();
-+ }
- }
-
-
-@@ -2205,6 +2235,10 @@
- this.host = host;
- this.serverNames =
- Utilities.addToSNIServerNameList(this.serverNames, this.host);
-+
-+ if (!roleIsServer && (handshaker != null) && !handshaker.started()) {
-+ handshaker.setSNIServerNames(serverNames);
-+ }
- }
-
- /**
-@@ -2571,8 +2605,21 @@
- // the super implementation does not handle the following parameters
- params.setEndpointIdentificationAlgorithm(identificationProtocol);
- params.setAlgorithmConstraints(algorithmConstraints);
-- params.setSNIMatchers(sniMatchers);
-- params.setServerNames(serverNames);
-+
-+ if (sniMatchers.isEmpty() && !noSniMatcher) {
-+ // 'null' indicates none has been set
-+ params.setSNIMatchers(null);
-+ } else {
-+ params.setSNIMatchers(sniMatchers);
-+ }
-+
-+ if (serverNames.isEmpty() && !noSniExtension) {
-+ // 'null' indicates none has been set
-+ params.setServerNames(null);
-+ } else {
-+ params.setServerNames(serverNames);
-+ }
-+
- params.setUseCipherSuitesOrder(preferLocalCipherSuites);
-
- return params;
-@@ -2592,11 +2639,13 @@
-
- List<SNIServerName> sniNames = params.getServerNames();
- if (sniNames != null) {
-+ noSniExtension = sniNames.isEmpty();
- serverNames = sniNames;
- }
-
- Collection<SNIMatcher> matchers = params.getSNIMatchers();
- if (matchers != null) {
-+ noSniMatcher = matchers.isEmpty();
- sniMatchers = matchers;
- }
-
-diff --git a/test/javax/net/ssl/ServerName/BestEffortOnLazyConnected.java b/test/javax/net/ssl/ServerName/BestEffortOnLazyConnected.java
-new file mode 100644
---- /dev/null
-+++ openjdk/jdk/test/javax/net/ssl/ServerName/BestEffortOnLazyConnected.java
-@@ -0,0 +1,337 @@
-+/*
-+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * This code is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 only, as
-+ * published by the Free Software Foundation.
-+ *
-+ * This code is distributed in the hope that it will be useful, but WITHOUT
-+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-+ * version 2 for more details (a copy is included in the LICENSE file that
-+ * accompanied this code).
-+ *
-+ * You should have received a copy of the GNU General Public License version
-+ * 2 along with this work; if not, write to the Free Software Foundation,
-+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-+ *
-+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-+ * or visit www.oracle.com if you need additional information or have any
-+ * questions.
-+ */
-+
-+//
-+// SunJSSE does not support dynamic system properties, no way to re-use
-+// system properties in samevm/agentvm mode.
-+//
-+
-+/**
-+ * @test
-+ * @bug 8144566
-+ * @summary Custom HostnameVerifier disables SNI extension
-+ * @run main/othervm BestEffortOnLazyConnected
-+ */
-+
-+import java.io.*;
-+import java.nio.*;
-+import java.nio.channels.*;
-+import java.util.*;
-+import java.net.*;
-+import javax.net.ssl.*;
-+
-+public class BestEffortOnLazyConnected {
-+
-+ /*
-+ * =============================================================
-+ * Set the various variables needed for the tests, then
-+ * specify what tests to run on each side.
-+ */
-+
-+ /*
-+ * Should we run the client or server in a separate thread?
-+ * Both sides can throw exceptions, but do you have a preference
-+ * as to which side should be the main thread.
-+ */
-+ private static final boolean separateServerThread = true;
-+
-+ /*
-+ * Where do we find the keystores?
-+ */
-+ private static final String pathToStores = "../../../../sun/security/ssl/etc";
-+ private static final String keyStoreFile = "keystore";
-+ private static final String trustStoreFile = "truststore";
-+ private static final String passwd = "passphrase";
-+
-+ /*
-+ * Is the server ready to serve?
-+ */
-+ private static volatile boolean serverReady = false;
-+
-+ /*
-+ * Turn on SSL debugging?
-+ */
-+ private static final boolean debug = false;
-+
-+ /*
-+ * the fully qualified domain name of localhost
-+ */
-+ private static String hostname = null;
-+
-+ /*
-+ * If the client or server is doing some kind of object creation
-+ * that the other side depends on, and that thread prematurely
-+ * exits, you may experience a hang. The test harness will
-+ * terminate all hung threads after its timeout has expired,
-+ * currently 3 minutes by default, but you might try to be
-+ * smart about it....
-+ */
-+
-+ /*
-+ * Define the server side of the test.
-+ *
-+ * If the server prematurely exits, serverReady will be set to true
-+ * to avoid infinite hangs.
-+ */
-+ private void doServerSide() throws Exception {
-+ SSLServerSocketFactory sslssf =
-+ (SSLServerSocketFactory) SSLServerSocketFactory.getDefault();
-+ try (SSLServerSocket sslServerSocket =
-+ (SSLServerSocket) sslssf.createServerSocket(serverPort)) {
-+
-+ serverPort = sslServerSocket.getLocalPort();
-+
-+ /*
-+ * Signal Client, we're ready for his connect.
-+ */
-+ serverReady = true;
-+
-+ try (SSLSocket sslSocket = (SSLSocket)sslServerSocket.accept()) {
-+ InputStream sslIS = sslSocket.getInputStream();
-+ OutputStream sslOS = sslSocket.getOutputStream();
-+
-+ sslIS.read();
-+ sslOS.write(85);
-+ sslOS.flush();
-+
-+ ExtendedSSLSession session =
-+ (ExtendedSSLSession)sslSocket.getSession();
-+ if (session.getRequestedServerNames().isEmpty()) {
-+ throw new Exception("No expected Server Name Indication");
-+ }
-+ }
-+ }
-+ }
-+
-+ /*
-+ * Define the client side of the test.
-+ *
-+ * If the server prematurely exits, serverReady will be set to true
-+ * to avoid infinite hangs.
-+ */
-+ private void doClientSide() throws Exception {
-+
-+ /*
-+ * Wait for server to get started.
-+ */
-+ while (!serverReady) {
-+ Thread.sleep(50);
-+ }
-+
-+ SSLSocketFactory sslsf =
-+ (SSLSocketFactory) SSLSocketFactory.getDefault();
-+
-+ try (SSLSocket sslSocket = (SSLSocket)sslsf.createSocket()) {
-+
-+ sslSocket.connect(new InetSocketAddress(hostname, serverPort), 0);
-+
-+ InputStream sslIS = sslSocket.getInputStream();
-+ OutputStream sslOS = sslSocket.getOutputStream();
-+
-+ sslOS.write(280);
-+ sslOS.flush();
-+ sslIS.read();
-+ }
-+ }
-+
-+
-+ /*
-+ * =============================================================
-+ * The remainder is just support stuff
-+ */
-+
-+ // use any free port by default
-+ private volatile int serverPort = 0;
-+
-+ private volatile Exception serverException = null;
-+ private volatile Exception clientException = null;
-+
-+ public static void main(String[] args) throws Exception {
-+ String keyFilename =
-+ System.getProperty("test.src", ".") + "/" + pathToStores +
-+ "/" + keyStoreFile;
-+ String trustFilename =
-+ System.getProperty("test.src", ".") + "/" + pathToStores +
-+ "/" + trustStoreFile;
-+
-+ System.setProperty("javax.net.ssl.keyStore", keyFilename);
-+ System.setProperty("javax.net.ssl.keyStorePassword", passwd);
-+ System.setProperty("javax.net.ssl.trustStore", trustFilename);
-+ System.setProperty("javax.net.ssl.trustStorePassword", passwd);
-+
-+ if (debug) {
-+ System.setProperty("javax.net.debug", "all");
-+ }
-+
-+ try {
-+ hostname = InetAddress.getLocalHost().getCanonicalHostName();
-+ } catch (UnknownHostException uhe) {
-+ System.out.println(
-+ "Ignore the test as the local hostname cannot be determined");
-+
-+ return;
-+ }
-+
-+ System.out.println(
-+ "The fully qualified domain name of the local host is " +
-+ hostname);
-+ // Ignore the test if the hostname does not sound like a domain name.
-+ if ((hostname == null) || hostname.isEmpty() ||
-+ hostname.startsWith("localhost") ||
-+ Character.isDigit(hostname.charAt(hostname.length() - 1))) {
-+
-+ System.out.println("Ignore the test as the local hostname " +
-+ "cannot be determined as fully qualified domain name");
-+
-+ return;
-+ }
-+
-+ /*
-+ * Start the tests.
-+ */
-+ new BestEffortOnLazyConnected();
-+ }
-+
-+ private Thread clientThread = null;
-+ private Thread serverThread = null;
-+
-+ /*
-+ * Primary constructor, used to drive remainder of the test.
-+ *
-+ * Fork off the other side, then do your work.
-+ */
-+ BestEffortOnLazyConnected() throws Exception {
-+ try {
-+ if (separateServerThread) {
-+ startServer(true);
-+ startClient(false);
-+ } else {
-+ startClient(true);
-+ startServer(false);
-+ }
-+ } catch (Exception e) {
-+ // swallow for now. Show later
-+ }
-+
-+ /*
-+ * Wait for other side to close down.
-+ */
-+ if (separateServerThread) {
-+ serverThread.join();
-+ } else {
-+ clientThread.join();
-+ }
-+
-+ /*
-+ * When we get here, the test is pretty much over.
-+ * Which side threw the error?
-+ */
-+ Exception local;
-+ Exception remote;
-+ String whichRemote;
-+
-+ if (separateServerThread) {
-+ remote = serverException;
-+ local = clientException;
-+ whichRemote = "server";
-+ } else {
-+ remote = clientException;
-+ local = serverException;
-+ whichRemote = "client";
-+ }
-+
-+ /*
-+ * If both failed, return the curthread's exception, but also
-+ * print the remote side Exception
-+ */
-+ if ((local != null) && (remote != null)) {
-+ System.out.println(whichRemote + " also threw:");
-+ remote.printStackTrace();
-+ System.out.println();
-+ throw local;
-+ }
-+
-+ if (remote != null) {
-+ throw remote;
-+ }
-+
-+ if (local != null) {
-+ throw local;
-+ }
-+ }
-+
-+ private void startServer(boolean newThread) throws Exception {
-+ if (newThread) {
-+ serverThread = new Thread() {
-+ public void run() {
-+ try {
-+ doServerSide();
-+ } catch (Exception e) {
-+ /*
-+ * Our server thread just died.
-+ *
-+ * Release the client, if not active already...
-+ */
-+ System.err.println("Server died...");
-+ serverReady = true;
-+ serverException = e;
-+ }
-+ }
-+ };
-+ serverThread.start();
-+ } else {
-+ try {
-+ doServerSide();
-+ } catch (Exception e) {
-+ serverException = e;
-+ } finally {
-+ serverReady = true;
-+ }
-+ }
-+ }
-+
-+ private void startClient(boolean newThread) throws Exception {
-+ if (newThread) {
-+ clientThread = new Thread() {
-+ public void run() {
-+ try {
-+ doClientSide();
-+ } catch (Exception e) {
-+ /*
-+ * Our client thread just died.
-+ */
-+ System.err.println("Client died...");
-+ clientException = e;
-+ }
-+ }
-+ };
-+ clientThread.start();
-+ } else {
-+ try {
-+ doClientSide();
-+ } catch (Exception e) {
-+ clientException = e;
-+ }
-+ }
-+ }
-+}
-diff --git a/test/sun/net/www/protocol/https/HttpsURLConnection/ImpactOnSNI.java b/test/sun/net/www/protocol/https/HttpsURLConnection/ImpactOnSNI.java
-new file mode 100644
---- /dev/null
-+++ openjdk/jdk/test/sun/net/www/protocol/https/HttpsURLConnection/ImpactOnSNI.java
-@@ -0,0 +1,390 @@
-+/*
-+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * This code is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 only, as
-+ * published by the Free Software Foundation.
-+ *
-+ * This code is distributed in the hope that it will be useful, but WITHOUT
-+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-+ * version 2 for more details (a copy is included in the LICENSE file that
-+ * accompanied this code).
-+ *
-+ * You should have received a copy of the GNU General Public License version
-+ * 2 along with this work; if not, write to the Free Software Foundation,
-+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-+ *
-+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-+ * or visit www.oracle.com if you need additional information or have any
-+ * questions.
-+ */
-+
-+//
-+// SunJSSE does not support dynamic system properties, no way to re-use
-+// system properties in samevm/agentvm mode.
-+//
-+
-+/*
-+ * @test
-+ * @bug 8144566
-+ * @summary Custom HostnameVerifier disables SNI extension
-+ * @run main/othervm ImpactOnSNI
-+ */
-+
-+import java.io.*;
-+import java.net.*;
-+import javax.net.ssl.*;
-+
-+public class ImpactOnSNI {
-+
-+ /*
-+ * =============================================================
-+ * Set the various variables needed for the tests, then
-+ * specify what tests to run on each side.
-+ */
-+
-+ /*
-+ * Should we run the client or server in a separate thread?
-+ * Both sides can throw exceptions, but do you have a preference
-+ * as to which side should be the main thread.
-+ */
-+ private static final boolean separateServerThread = true;
-+
-+ /*
-+ * Where do we find the keystores?
-+ */
-+ private static final String pathToStores =
-+ "../../../../../../sun/security/ssl/etc";
-+ private static final String keyStoreFile = "keystore";
-+ private static final String trustStoreFile = "truststore";
-+ private static final String passwd = "passphrase";
-+
-+ /*
-+ * Is the server ready to serve?
-+ */
-+ private static volatile boolean serverReady = false;
-+
-+ /*
-+ * Is the connection ready to close?
-+ */
-+ private static volatile boolean closeReady = false;
-+
-+ /*
-+ * Turn on SSL debugging?
-+ */
-+ private static final boolean debug = false;
-+
-+ /*
-+ * Message posted
-+ */
-+ private static final String postMsg = "HTTP post on a https server";
-+
-+ /*
-+ * the fully qualified domain name of localhost
-+ */
-+ private static String hostname = null;
-+
-+ /*
-+ * If the client or server is doing some kind of object creation
-+ * that the other side depends on, and that thread prematurely
-+ * exits, you may experience a hang. The test harness will
-+ * terminate all hung threads after its timeout has expired,
-+ * currently 3 minutes by default, but you might try to be
-+ * smart about it....
-+ */
-+
-+ /*
-+ * Define the server side of the test.
-+ *
-+ * If the server prematurely exits, serverReady will be set to true
-+ * to avoid infinite hangs.
-+ */
-+ private void doServerSide() throws Exception {
-+ SSLServerSocketFactory sslssf =
-+ (SSLServerSocketFactory)SSLServerSocketFactory.getDefault();
-+ try (SSLServerSocket sslServerSocket =
-+ (SSLServerSocket)sslssf.createServerSocket(serverPort)) {
-+
-+ serverPort = sslServerSocket.getLocalPort();
-+
-+ /*
-+ * Signal Client, we're ready for his connect.
-+ */
-+ serverReady = true;
-+
-+ /*
-+ * Accept connections
-+ */
-+ try (SSLSocket sslSocket = (SSLSocket)sslServerSocket.accept()) {
-+ InputStream sslIS = sslSocket.getInputStream();
-+ OutputStream sslOS = sslSocket.getOutputStream();
-+ BufferedReader br =
-+ new BufferedReader(new InputStreamReader(sslIS));
-+ PrintStream ps = new PrintStream(sslOS);
-+
-+ // process HTTP POST request from client
-+ System.out.println("status line: " + br.readLine());
-+ String msg = null;
-+ while ((msg = br.readLine()) != null && msg.length() > 0);
-+
-+ msg = br.readLine();
-+ if (msg.equals(postMsg)) {
-+ ps.println("HTTP/1.1 200 OK\n\n");
-+ } else {
-+ ps.println("HTTP/1.1 500 Not OK\n\n");
-+ }
-+ ps.flush();
-+
-+ ExtendedSSLSession session =
-+ (ExtendedSSLSession)sslSocket.getSession();
-+ if (session.getRequestedServerNames().isEmpty()) {
-+ throw new Exception("No expected Server Name Indication");
-+ }
-+
-+ // close the socket
-+ while (!closeReady) {
-+ Thread.sleep(50);
-+ }
-+ }
-+ }
-+ }
-+
-+ /*
-+ * Define the client side of the test.
-+ *
-+ * If the server prematurely exits, serverReady will be set to true
-+ * to avoid infinite hangs.
-+ */
-+ private void doClientSide() throws Exception {
-+ /*
-+ * Wait for server to get started.
-+ */
-+ while (!serverReady) {
-+ Thread.sleep(50);
-+ }
-+
-+ // Send HTTP POST request to server
-+ URL url = new URL("https://" + hostname + ":" + serverPort);
-+
-+ HttpsURLConnection.setDefaultHostnameVerifier(new NameVerifier());
-+ HttpsURLConnection http = (HttpsURLConnection)url.openConnection();
-+ http.setDoOutput(true);
-+
-+ http.setRequestMethod("POST");
-+ PrintStream ps = new PrintStream(http.getOutputStream());
-+ try {
-+ ps.println(postMsg);
-+ ps.flush();
-+ if (http.getResponseCode() != 200) {
-+ throw new RuntimeException("test Failed");
-+ }
-+ } finally {
-+ ps.close();
-+ http.disconnect();
-+ closeReady = true;
-+ }
-+ }
-+
-+ private static class NameVerifier implements HostnameVerifier {
-+ public boolean verify(String hostname, SSLSession session) {
-+ return true;
-+ }
-+ }
-+
-+ /*
-+ * =============================================================
-+ * The remainder is just support stuff
-+ */
-+
-+ // use any free port by default
-+ private volatile int serverPort = 0;
-+
-+ private volatile Exception serverException = null;
-+ private volatile Exception clientException = null;
-+
-+ public static void main(String[] args) throws Exception {
-+ String keyFilename =
-+ System.getProperty("test.src", "./") + "/" + pathToStores +
-+ "/" + keyStoreFile;
-+ String trustFilename =
-+ System.getProperty("test.src", "./") + "/" + pathToStores +
-+ "/" + trustStoreFile;
-+
-+ System.setProperty("javax.net.ssl.keyStore", keyFilename);
-+ System.setProperty("javax.net.ssl.keyStorePassword", passwd);
-+ System.setProperty("javax.net.ssl.trustStore", trustFilename);
-+ System.setProperty("javax.net.ssl.trustStorePassword", passwd);
-+
-+ if (debug) {
-+ System.setProperty("javax.net.debug", "all");
-+ }
-+
-+ try {
-+ hostname = InetAddress.getLocalHost().getCanonicalHostName();
-+ } catch (UnknownHostException uhe) {
-+ System.out.println(
-+ "Ignore the test as the local hostname cannot be determined");
-+
-+ return;
-+ }
-+
-+ System.out.println(
-+ "The fully qualified domain name of the local host is " +
-+ hostname);
-+ // Ignore the test if the hostname does not sound like a domain name.
-+ if ((hostname == null) || hostname.isEmpty() ||
-+ hostname.startsWith("localhost") ||
-+ Character.isDigit(hostname.charAt(hostname.length() - 1))) {
-+
-+ System.out.println("Ignore the test as the local hostname " +
-+ "cannot be determined as fully qualified domain name");
-+
-+ return;
-+ }
-+
-+ /*
-+ * Start the tests.
-+ */
-+ new ImpactOnSNI();
-+ }
-+
-+ private Thread clientThread = null;
-+ private Thread serverThread = null;
-+
-+ /*
-+ * Primary constructor, used to drive remainder of the test.
-+ *
-+ * Fork off the other side, then do your work.
-+ */
-+ ImpactOnSNI() throws Exception {
-+ Exception startException = null;
-+ try {
-+ if (separateServerThread) {
-+ startServer(true);
-+ startClient(false);
-+ } else {
-+ startClient(true);
-+ startServer(false);
-+ }
-+ } catch (Exception e) {
-+ startException = e;
-+ }
-+
-+ /*
-+ * Wait for other side to close down.
-+ */
-+ if (separateServerThread) {
-+ if (serverThread != null) {
-+ serverThread.join();
-+ }
-+ } else {
-+ if (clientThread != null) {
-+ clientThread.join();
-+ }
-+ }
-+
-+ /*
-+ * When we get here, the test is pretty much over.
-+ * Which side threw the error?
-+ */
-+ Exception local;
-+ Exception remote;
-+
-+ if (separateServerThread) {
-+ remote = serverException;
-+ local = clientException;
-+ } else {
-+ remote = clientException;
-+ local = serverException;
-+ }
-+
-+ Exception exception = null;
-+
-+ /*
-+ * Check various exception conditions.
-+ */
-+ if ((local != null) && (remote != null)) {
-+ // If both failed, return the curthread's exception.
-+ local.initCause(remote);
-+ exception = local;
-+ } else if (local != null) {
-+ exception = local;
-+ } else if (remote != null) {
-+ exception = remote;
-+ } else if (startException != null) {
-+ exception = startException;
-+ }
-+
-+ /*
-+ * If there was an exception *AND* a startException,
-+ * output it.
-+ */
-+ if (exception != null) {
-+ if (exception != startException && startException != null) {
-+ exception.addSuppressed(startException);
-+ }
-+ throw exception;
-+ }
-+
-+ // Fall-through: no exception to throw!
-+ }
-+
-+ private void startServer(boolean newThread) throws Exception {
-+ if (newThread) {
-+ serverThread = new Thread() {
-+ @Override
-+ public void run() {
-+ try {
-+ doServerSide();
-+ } catch (Exception e) {
-+ /*
-+ * Our server thread just died.
-+ *
-+ * Release the client, if not active already...
-+ */
-+ System.err.println("Server died...");
-+ serverReady = true;
-+ serverException = e;
-+ }
-+ }
-+ };
-+ serverThread.start();
-+ } else {
-+ try {
-+ doServerSide();
-+ } catch (Exception e) {
-+ serverException = e;
-+ } finally {
-+ serverReady = true;
-+ }
-+ }
-+ }
-+
-+ private void startClient(boolean newThread) throws Exception {
-+ if (newThread) {
-+ clientThread = new Thread() {
-+ @Override
-+ public void run() {
-+ try {
-+ doClientSide();
-+ } catch (Exception e) {
-+ /*
-+ * Our client thread just died.
-+ */
-+ System.err.println("Client died...");
-+ clientException = e;
-+ }
-+ }
-+ };
-+ clientThread.start();
-+ } else {
-+ try {
-+ doClientSide();
-+ } catch (Exception e) {
-+ clientException = e;
-+ }
-+ }
-+ }
-+}
diff --git a/8155049-pr3352.patch b/8155049-pr3352.patch
deleted file mode 100644
index 68cf02f..0000000
--- a/8155049-pr3352.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-# HG changeset patch
-# User rhalade
-# Date 1463420211 25200
-# Mon May 16 10:36:51 2016 -0700
-# Node ID c0e856f2dacdf5eb5cdea380da32ba210aee9579
-# Parent fb617df8fbac42e962219e45cbd29b15b5ecdc63
-8155049, PR3352: New tests from 8144566 fail with "No expected Server Name Indication"
-Reviewed-by: xuelei
-
-diff --git a/test/javax/net/ssl/ServerName/BestEffortOnLazyConnected.java b/test/javax/net/ssl/ServerName/BestEffortOnLazyConnected.java
---- openjdk/jdk/test/javax/net/ssl/ServerName/BestEffortOnLazyConnected.java
-+++ openjdk/jdk/test/javax/net/ssl/ServerName/BestEffortOnLazyConnected.java
-@@ -34,9 +34,6 @@
- */
-
- import java.io.*;
--import java.nio.*;
--import java.nio.channels.*;
--import java.util.*;
- import java.net.*;
- import javax.net.ssl.*;
-
-@@ -197,6 +194,7 @@
- hostname);
- // Ignore the test if the hostname does not sound like a domain name.
- if ((hostname == null) || hostname.isEmpty() ||
-+ !hostname.contains(".") || hostname.endsWith(".") ||
- hostname.startsWith("localhost") ||
- Character.isDigit(hostname.charAt(hostname.length() - 1))) {
-
-diff --git a/test/sun/net/www/protocol/https/HttpsURLConnection/ImpactOnSNI.java b/test/sun/net/www/protocol/https/HttpsURLConnection/ImpactOnSNI.java
---- openjdk/jdk/test/sun/net/www/protocol/https/HttpsURLConnection/ImpactOnSNI.java
-+++ openjdk/jdk/test/sun/net/www/protocol/https/HttpsURLConnection/ImpactOnSNI.java
-@@ -235,6 +235,7 @@
- hostname);
- // Ignore the test if the hostname does not sound like a domain name.
- if ((hostname == null) || hostname.isEmpty() ||
-+ !hostname.contains(".") || hostname.endsWith(".") ||
- hostname.startsWith("localhost") ||
- Character.isDigit(hostname.charAt(hostname.length() - 1))) {
-
diff --git a/8165231-rh1437545.patch b/8165231-rh1437545.patch
deleted file mode 100644
index e0d5be7..0000000
--- a/8165231-rh1437545.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-# HG changeset patch
-# User horii
-# Date 1473905514 14400
-# Wed Sep 14 22:11:54 2016 -0400
-# Node ID 8d16f74380a78eb76cb33183a64440316393903e
-# Parent be698ac288484ab140715ee29ed9335e6ea8a33b
-8165231: java.nio.Bits.unaligned() doesn't return true on ppc
-Reviewed-by: simonis, coffeys
-
-diff --git a/src/share/classes/java/nio/Bits.java b/src/share/classes/java/nio/Bits.java
---- openjdk/jdk/src/share/classes/java/nio/Bits.java
-+++ openjdk/jdk/src/share/classes/java/nio/Bits.java
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
-@@ -614,7 +614,8 @@
- String arch = AccessController.doPrivileged(
- new sun.security.action.GetPropertyAction("os.arch"));
- unaligned = arch.equals("i386") || arch.equals("x86")
-- || arch.equals("amd64") || arch.equals("x86_64");
-+ || arch.equals("amd64") || arch.equals("x86_64")
-+ || arch.equals("ppc64") || arch.equals("ppc64le");
- unalignedKnown = true;
- return unaligned;
- }
-diff --git a/src/share/classes/sun/security/provider/ByteArrayAccess.java b/src/share/classes/sun/security/provider/ByteArrayAccess.java
---- openjdk/jdk/src/share/classes/sun/security/provider/ByteArrayAccess.java
-+++ openjdk/jdk/src/share/classes/sun/security/provider/ByteArrayAccess.java
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
-@@ -94,7 +94,7 @@
- String arch = java.security.AccessController.doPrivileged
- (new sun.security.action.GetPropertyAction("os.arch", ""));
- return arch.equals("i386") || arch.equals("x86") || arch.equals("amd64")
-- || arch.equals("x86_64");
-+ || arch.equals("x86_64") || arch.equals("ppc64") || arch.equals("ppc64le");
- }
-
- /**
diff --git a/8174164-pr3334-rh1417266.patch b/8174164-pr3334-rh1417266.patch
deleted file mode 100644
index 494883f..0000000
--- a/8174164-pr3334-rh1417266.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-# HG changeset patch
-# User roland
-# Date 1487208397 28800
-# Wed Feb 15 17:26:37 2017 -0800
-# Node ID a9cbaff50d3d7e3a1d2dbdc0121c470142b87270
-# Parent 15922b2f31db4857ec84efdf533c41b19e68030b
-8174164, PR3334, RH1417266: SafePointNode::_replaced_nodes breaks with irreducible loops
-Reviewed-by: kvn
-
-diff --git a/src/share/vm/opto/callnode.hpp b/src/share/vm/opto/callnode.hpp
---- openjdk/hotspot/src/share/vm/opto/callnode.hpp
-+++ openjdk/hotspot/src/share/vm/opto/callnode.hpp
-@@ -449,8 +449,8 @@
- void delete_replaced_nodes() {
- _replaced_nodes.reset();
- }
-- void apply_replaced_nodes() {
-- _replaced_nodes.apply(this);
-+ void apply_replaced_nodes(uint idx) {
-+ _replaced_nodes.apply(this, idx);
- }
- void merge_replaced_nodes_with(SafePointNode* sfpt) {
- _replaced_nodes.merge_with(sfpt->_replaced_nodes);
-diff --git a/src/share/vm/opto/parse1.cpp b/src/share/vm/opto/parse1.cpp
---- openjdk/hotspot/src/share/vm/opto/parse1.cpp
-+++ openjdk/hotspot/src/share/vm/opto/parse1.cpp
-@@ -1048,7 +1048,7 @@
- kit.make_dtrace_method_exit(method());
- }
- if (_replaced_nodes_for_exceptions) {
-- kit.map()->apply_replaced_nodes();
-+ kit.map()->apply_replaced_nodes(_new_idx);
- }
- // Done with exception-path processing.
- ex_map = kit.make_exception_state(ex_oop);
-@@ -1069,7 +1069,7 @@
- _exits.add_exception_state(ex_map);
- }
- }
-- _exits.map()->apply_replaced_nodes();
-+ _exits.map()->apply_replaced_nodes(_new_idx);
- }
-
- //-----------------------------create_entry_map-------------------------------
-diff --git a/src/share/vm/opto/replacednodes.cpp b/src/share/vm/opto/replacednodes.cpp
---- openjdk/hotspot/src/share/vm/opto/replacednodes.cpp
-+++ openjdk/hotspot/src/share/vm/opto/replacednodes.cpp
-@@ -91,13 +91,17 @@
- }
-
- // Perfom node replacement (used when returning to caller)
--void ReplacedNodes::apply(Node* n) {
-+void ReplacedNodes::apply(Node* n, uint idx) {
- if (is_empty()) {
- return;
- }
- for (int i = 0; i < _replaced_nodes->length(); i++) {
- ReplacedNode replaced = _replaced_nodes->at(i);
-- n->replace_edge(replaced.initial(), replaced.improved());
-+ // Only apply if improved node was created in a callee to avoid
-+ // issues with irreducible loops in the caller
-+ if (replaced.improved()->_idx >= idx) {
-+ n->replace_edge(replaced.initial(), replaced.improved());
-+ }
- }
- }
-
-diff --git a/src/share/vm/opto/replacednodes.hpp b/src/share/vm/opto/replacednodes.hpp
---- openjdk/hotspot/src/share/vm/opto/replacednodes.hpp
-+++ openjdk/hotspot/src/share/vm/opto/replacednodes.hpp
-@@ -71,7 +71,7 @@
- void record(Node* initial, Node* improved);
- void transfer_from(const ReplacedNodes& other, uint idx);
- void reset();
-- void apply(Node* n);
-+ void apply(Node* n, uint idx);
- void merge_with(const ReplacedNodes& other);
- bool is_empty() const;
- void dump(outputStream *st) const;
diff --git a/8174729-pr3336-rh1420518.patch b/8174729-pr3336-rh1420518.patch
deleted file mode 100644
index 3d67850..0000000
--- a/8174729-pr3336-rh1420518.patch
+++ /dev/null
@@ -1,122 +0,0 @@
-# HG changeset patch
-# User adinn
-# Date 1487931564 0
-# Fri Feb 24 10:19:24 2017 +0000
-# Node ID d41592af9af3790fe5eee30ce686d85cff09c942
-# Parent 1ac9b0f1bf17fc5935bfa8250550eabc2ffb6785
-8174729, PR3336, RH1420518: Race Condition in java.lang.reflect.WeakCache
-Summary: Race can occur between Proxy.getProxyClass and Proxy.isProxyClass
-Reviewed-by: mchung
-
-diff --git a/src/share/classes/java/lang/reflect/WeakCache.java b/src/share/classes/java/lang/reflect/WeakCache.java
---- openjdk/jdk/src/share/classes/java/lang/reflect/WeakCache.java
-+++ openjdk/jdk/src/share/classes/java/lang/reflect/WeakCache.java
-@@ -239,11 +239,11 @@
- // wrap value with CacheValue (WeakReference)
- CacheValue<V> cacheValue = new CacheValue<>(value);
-
-+ // put into reverseMap
-+ reverseMap.put(cacheValue, Boolean.TRUE);
-+
- // try replacing us with CacheValue (this should always succeed)
-- if (valuesMap.replace(subKey, this, cacheValue)) {
-- // put also in reverseMap
-- reverseMap.put(cacheValue, Boolean.TRUE);
-- } else {
-+ if (!valuesMap.replace(subKey, this, cacheValue)) {
- throw new AssertionError("Should not reach here");
- }
-
-diff --git a/test/java/lang/reflect/Proxy/ProxyRace.java b/test/java/lang/reflect/Proxy/ProxyRace.java
-new file mode 100644
---- /dev/null
-+++ openjdk/jdk/test/java/lang/reflect/Proxy/ProxyRace.java
-@@ -0,0 +1,88 @@
-+/*
-+ * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * This code is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 only, as
-+ * published by the Free Software Foundation.
-+ *
-+ * This code is distributed in the hope that it will be useful, but WITHOUT
-+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-+ * version 2 for more details (a copy is included in the LICENSE file that
-+ * accompanied this code).
-+ *
-+ * You should have received a copy of the GNU General Public License version
-+ * 2 along with this work; if not, write to the Free Software Foundation,
-+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-+ *
-+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-+ * or visit www.oracle.com if you need additional information or have any
-+ * questions.
-+ */
-+
-+import java.lang.reflect.Proxy;
-+import java.util.concurrent.ExecutorService;
-+import java.util.concurrent.Executors;
-+import java.util.concurrent.Phaser;
-+import java.util.concurrent.TimeUnit;
-+import java.util.concurrent.atomic.AtomicInteger;
-+
-+/**
-+ * @test
-+ * @bug 8174729
-+ * @summary Proxy.getProxyClass() / Proxy.isProxyClass() race detector
-+ * @run main ProxyRace
-+ * @author plevart
-+ */
-+
-+public class ProxyRace {
-+
-+ static final int threads = 8;
-+
-+ static volatile ClassLoader classLoader;
-+ static volatile boolean terminate;
-+ static final AtomicInteger racesDetected = new AtomicInteger();
-+
-+ public static void main(String[] args) throws Exception {
-+
-+ Phaser phaser = new Phaser(threads) {
-+ @Override
-+ protected boolean onAdvance(int phase, int registeredParties) {
-+ // install new ClassLoader on each advance
-+ classLoader = new CL();
-+ return terminate;
-+ }
-+ };
-+
-+ ExecutorService exe = Executors.newFixedThreadPool(threads);
-+
-+ for (int i = 0; i < threads; i++) {
-+ exe.execute(() -> {
-+ while (phaser.arriveAndAwaitAdvance() >= 0) {
-+ Class<?> proxyClass = Proxy.getProxyClass(classLoader, Runnable.class);
-+ if (!Proxy.isProxyClass(proxyClass)) {
-+ racesDetected.incrementAndGet();
-+ }
-+ }
-+ });
-+ }
-+
-+ Thread.sleep(5000L);
-+
-+ terminate = true;
-+ exe.shutdown();
-+ exe.awaitTermination(5L, TimeUnit.SECONDS);
-+
-+ System.out.println(racesDetected.get() + " races detected");
-+ if (racesDetected.get() != 0) {
-+ throw new RuntimeException(racesDetected.get() + " races detected");
-+ }
-+ }
-+
-+ static class CL extends ClassLoader {
-+ public CL() {
-+ super(ClassLoader.getSystemClassLoader());
-+ }
-+ }
-+}
diff --git a/8175097-pr3334-rh1417266.patch b/8175097-pr3334-rh1417266.patch
deleted file mode 100644
index e80dd11..0000000
--- a/8175097-pr3334-rh1417266.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-# HG changeset patch
-# User roland
-# Date 1487286884 28800
-# Thu Feb 16 15:14:44 2017 -0800
-# Node ID 1b4eb44fbfcd0fceb485d89d91eb893d99f5864b
-# Parent a9cbaff50d3d7e3a1d2dbdc0121c470142b87270
-8175097, PR3334, RH1417266: [TESTBUG] 8174164 fix missed the test
-Reviewed-by: kvn
-
-diff --git a/test/compiler/c2/TestReplacedNodesOSR.java b/test/compiler/c2/TestReplacedNodesOSR.java
-new file mode 100644
---- /dev/null
-+++ openjdk/hotspot/test/compiler/c2/TestReplacedNodesOSR.java
-@@ -0,0 +1,86 @@
-+/*
-+ * Copyright (c) 2017, Red Hat, Inc. All rights reserved.
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * This code is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 only, as
-+ * published by the Free Software Foundation.
-+ *
-+ * This code is distributed in the hope that it will be useful, but WITHOUT
-+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-+ * version 2 for more details (a copy is included in the LICENSE file that
-+ * accompanied this code).
-+ *
-+ * You should have received a copy of the GNU General Public License version
-+ * 2 along with this work; if not, write to the Free Software Foundation,
-+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-+ *
-+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-+ * or visit www.oracle.com if you need additional information or have any
-+ * questions.
-+ */
-+
-+/**
-+ * @test
-+ * @bug 8174164
-+ * @summary SafePointNode::_replaced_nodes breaks with irreducible loops
-+ * @run main/othervm -XX:-BackgroundCompilation TestReplacedNodesOSR
-+ *
-+ */
-+
-+public class TestReplacedNodesOSR {
-+
-+ static Object dummy;
-+
-+ static interface I {
-+ }
-+
-+ static class A implements I {
-+ }
-+
-+ static final class MyException extends Exception {
-+ }
-+
-+ static final A obj = new A();
-+ static I static_field() { return obj; }
-+
-+ // When OSR compiled, this method has an irreducible loop
-+ static void test(int v, MyException e) {
-+ int i = 0;
-+ for (;;) {
-+ if (i == 1000) {
-+ break;
-+ }
-+ try {
-+ if ((i%2) == 0) {
-+ int j = 0;
-+ for (;;) {
-+ j++;
-+ if (i+j != v) {
-+ if (j == 1000) {
-+ break;
-+ }
-+ } else {
-+ A a = (A)static_field();
-+ // replaced node recorded here
-+ throw e;
-+ }
-+ }
-+ }
-+ } catch(MyException ex) {
-+ }
-+ i++;
-+ // replaced node applied on return of the method
-+ // replaced node used here
-+ dummy = static_field();
-+ }
-+ }
-+
-+
-+ static public void main(String[] args) {
-+ for (int i = 0; i < 1000; i++) {
-+ test(1100, new MyException());
-+ }
-+ }
-+}
diff --git a/8175887-pr3415.patch b/8175887-pr3415.patch
new file mode 100644
index 0000000..6460f60
--- /dev/null
+++ b/8175887-pr3415.patch
@@ -0,0 +1,168 @@
+# HG changeset patch
+# User shade
+# Date 1488979372 -3600
+# Wed Mar 08 14:22:52 2017 +0100
+# Node ID 654b7fcb4932d48063f5f1fba0c8994db5e02976
+# Parent 1faf7c17089922f6f72b580253725f2ecb6ba2f8
+8175887, PR3415: C1 value numbering handling of Unsafe.get*Volatile is incorrect
+Reviewed-by: vlivanov
+
+diff --git a/src/share/vm/c1/c1_ValueMap.hpp b/src/share/vm/c1/c1_ValueMap.hpp
+--- openjdk/hotspot/src/share/vm/c1/c1_ValueMap.hpp
++++ openjdk/hotspot/src/share/vm/c1/c1_ValueMap.hpp
+@@ -158,6 +158,12 @@
+ void do_UnsafePutRaw (UnsafePutRaw* x) { kill_memory(); }
+ void do_UnsafePutObject(UnsafePutObject* x) { kill_memory(); }
+ void do_UnsafeGetAndSetObject(UnsafeGetAndSetObject* x) { kill_memory(); }
++ void do_UnsafeGetRaw (UnsafeGetRaw* x) { /* nothing to do */ }
++ void do_UnsafeGetObject(UnsafeGetObject* x) {
++ if (x->is_volatile()) { // the JMM requires this
++ kill_memory();
++ }
++ }
+ void do_Intrinsic (Intrinsic* x) { if (!x->preserves_state()) kill_memory(); }
+
+ void do_Phi (Phi* x) { /* nothing to do */ }
+@@ -198,8 +204,6 @@
+ void do_OsrEntry (OsrEntry* x) { /* nothing to do */ }
+ void do_ExceptionObject(ExceptionObject* x) { /* nothing to do */ }
+ void do_RoundFP (RoundFP* x) { /* nothing to do */ }
+- void do_UnsafeGetRaw (UnsafeGetRaw* x) { /* nothing to do */ }
+- void do_UnsafeGetObject(UnsafeGetObject* x) { /* nothing to do */ }
+ void do_UnsafePrefetchRead (UnsafePrefetchRead* x) { /* nothing to do */ }
+ void do_UnsafePrefetchWrite(UnsafePrefetchWrite* x) { /* nothing to do */ }
+ void do_ProfileCall (ProfileCall* x) { /* nothing to do */ }
+diff --git a/test/compiler/c1/UnsafeVolatileGuardTest.java b/test/compiler/c1/UnsafeVolatileGuardTest.java
+new file mode 100644
+--- /dev/null
++++ openjdk/hotspot/test/compiler/c1/UnsafeVolatileGuardTest.java
+@@ -0,0 +1,72 @@
++/*
++ * Copyright (c) 2017, Red Hat Inc. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++import java.lang.reflect.Field;
++
++/**
++ * @test
++ * @bug 8175887
++ * @summary C1 value numbering handling of Unsafe.get*Volatile is incorrect
++ * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:TieredStopAtLevel=1 UnsafeVolatileGuardTest
++ */
++public class UnsafeVolatileGuardTest {
++ volatile static private int a;
++ static private int b;
++
++ static final sun.misc.Unsafe UNSAFE;
++
++ static final Object BASE;
++ static final long OFFSET;
++
++ static {
++ try {
++ Field uf = sun.misc.Unsafe.class.getDeclaredField("theUnsafe");
++ uf.setAccessible(true);
++ UNSAFE = (sun.misc.Unsafe)uf.get(null);
++
++ Field f = UnsafeVolatileGuardTest.class.getDeclaredField("a");
++ BASE = UNSAFE.staticFieldBase(f);
++ OFFSET = UNSAFE.staticFieldOffset(f);
++ } catch (Exception e) {
++ throw new RuntimeException(e);
++ }
++ }
++
++ static void test() {
++ int tt = b; // makes the JVM CSE the value of b
++
++ while (UNSAFE.getIntVolatile(BASE, OFFSET) == 0) {} // burn
++ if (b == 0) {
++ System.err.println("wrong value of b");
++ System.exit(1); // fail hard to report the error
++ }
++ }
++
++ public static void main(String [] args) throws Exception {
++ for (int i = 0; i < 10; i++) {
++ new Thread(UnsafeVolatileGuardTest::test).start();
++ }
++ b = 1;
++ a = 1;
++ }
++}
+diff --git a/test/compiler/c1/VolatileGuardTest.java b/test/compiler/c1/VolatileGuardTest.java
+new file mode 100644
+--- /dev/null
++++ openjdk/hotspot/test/compiler/c1/VolatileGuardTest.java
+@@ -0,0 +1,52 @@
++/*
++ * Copyright (c) 2017, Red Hat Inc. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++/**
++ * @test
++ * @bug 8175887
++ * @summary C1 doesn't respect the JMM with volatile field loads
++ *
++ * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:TieredStopAtLevel=1 VolatileGuardTest
++ */
++public class VolatileGuardTest {
++ volatile static private int a;
++ static private int b;
++
++ static void test() {
++ int tt = b; // makes the JVM CSE the value of b
++
++ while (a == 0) {} // burn
++ if (b == 0) {
++ System.err.println("wrong value of b");
++ System.exit(1); // fail hard to report the error
++ }
++ }
++
++ public static void main(String [] args) throws Exception {
++ for (int i = 0; i < 10; i++) {
++ new Thread(VolatileGuardTest::test).start();
++ }
++ b = 1;
++ a = 1;
++ }
++}
diff --git a/8179084-pr3409-rh1455694.patch b/8179084-pr3409-rh1455694.patch
new file mode 100644
index 0000000..dbc2120
--- /dev/null
+++ b/8179084-pr3409-rh1455694.patch
@@ -0,0 +1,135 @@
+# HG changeset patch
+# User dholmes
+# Date 1493428477 14400
+# Fri Apr 28 21:14:37 2017 -0400
+# Node ID 2fee74c5547889d9698a2636e0a5170f9e66fb9c
+# Parent 13a04e8df5a3af73794146b930b32556c7cbc5b0
+8179084, PR3409, RH1455694: HotSpot VM fails to start when AggressiveHeap is set
+Reviewed-by: kbarrett, stefank
+
+diff --git a/src/share/vm/runtime/arguments.cpp b/src/share/vm/runtime/arguments.cpp
+--- openjdk/hotspot/src/share/vm/runtime/arguments.cpp
++++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp
+@@ -3193,8 +3193,6 @@
+
+ // Enable parallel GC and adaptive generation sizing
+ FLAG_SET_CMDLINE(bool, UseParallelGC, true);
+- FLAG_SET_DEFAULT(ParallelGCThreads,
+- Abstract_VM_Version::parallel_worker_threads());
+
+ // Encourage steady state memory management
+ FLAG_SET_CMDLINE(uintx, ThresholdTolerance, 100);
+diff --git a/test/TEST.groups b/test/TEST.groups
+--- openjdk/hotspot/test/TEST.groups
++++ openjdk/hotspot/test/TEST.groups
+@@ -1,5 +1,5 @@
+ #
+-# Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
++# Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
+ # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ #
+ # This code is free software; you can redistribute it and/or modify it
+@@ -164,6 +164,7 @@
+ gc/TestGCLogRotationViaJcmd.java \
+ gc/g1/TestHumongousAllocInitialMark.java \
+ gc/g1/TestHumongousShrinkHeap.java \
++ gc/arguments/TestAggressiveHeap.java \
+ gc/arguments/TestG1HeapRegionSize.java \
+ gc/metaspace/TestMetaspaceMemoryPool.java \
+ gc/arguments/TestDynMinHeapFreeRatio.java \
+diff --git a/test/gc/arguments/TestAggressiveHeap.java b/test/gc/arguments/TestAggressiveHeap.java
+new file mode 100644
+--- /dev/null
++++ openjdk/hotspot/test/gc/arguments/TestAggressiveHeap.java
+@@ -0,0 +1,91 @@
++/*
++ * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++/*
++ * @test TestAggressiveHeap
++ * @key gc
++ * @bug 8179084
++ * @summary Test argument processing for -XX:+AggressiveHeap.
++ * @library /testlibrary
++ * @run driver TestAggressiveHeap
++ */
++
++import java.lang.management.ManagementFactory;
++import javax.management.MBeanServer;
++import javax.management.ObjectName;
++
++import com.oracle.java.testlibrary.OutputAnalyzer;
++import com.oracle.java.testlibrary.ProcessTools;
++
++public class TestAggressiveHeap {
++
++ public static void main(String args[]) throws Exception {
++ if (canUseAggressiveHeapOption()) {
++ testFlag();
++ }
++ }
++
++ // Note: Not a normal boolean flag; -XX:-AggressiveHeap is invalid.
++ private static final String option = "-XX:+AggressiveHeap";
++
++ // Option requires at least 256M, else error during option processing.
++ private static final long minMemory = 256 * 1024 * 1024;
++
++ // bool UseParallelGC := true {product}
++ private static final String parallelGCPattern =
++ " *bool +UseParallelGC *:= *true +\\{product\\}";
++
++ private static void testFlag() throws Exception {
++ ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
++ option, "-XX:+PrintFlagsFinal", "-version");
++
++ OutputAnalyzer output = new OutputAnalyzer(pb.start());
++
++ output.shouldHaveExitValue(0);
++
++ String value = output.firstMatch(parallelGCPattern);
++ if (value == null) {
++ throw new RuntimeException(
++ option + " didn't set UseParallelGC");
++ }
++ }
++
++ private static boolean haveRequiredMemory() throws Exception {
++ MBeanServer server = ManagementFactory.getPlatformMBeanServer();
++ ObjectName os = new ObjectName("java.lang", "type", "OperatingSystem");
++ Object attr = server.getAttribute(os, "TotalPhysicalMemorySize");
++ String value = attr.toString();
++ long memory = Long.parseLong(value);
++ return memory >= minMemory;
++ }
++
++ private static boolean canUseAggressiveHeapOption() throws Exception {
++ if (!haveRequiredMemory()) {
++ System.out.println(
++ "Skipping test of " + option + " : insufficient memory");
++ return false;
++ }
++ return true;
++ }
++}
++
diff --git a/8181419-pr3413-rh1463144.patch b/8181419-pr3413-rh1463144.patch
new file mode 100644
index 0000000..c2c7fc6
--- /dev/null
+++ b/8181419-pr3413-rh1463144.patch
@@ -0,0 +1,92 @@
+# HG changeset patch
+# User stuefe
+# Date 1497865921 -7200
+# Mon Jun 19 11:52:01 2017 +0200
+# Node ID ca0c7b2783e0102468218589a062e7ac4736aae2
+# Parent 148a7d6c463ad1726bad8a9e8d5df191314d704b
+8181419, PR3413, RH1463144: Race in jdwp invoker handling may lead to crashes or invalid results
+Reviewed-by: sspitsyn, sgehwolf, clanger
+
+diff --git a/src/share/back/invoker.c b/src/share/back/invoker.c
+--- openjdk/jdk/src/share/back/invoker.c
++++ openjdk/jdk/src/share/back/invoker.c
+@@ -212,30 +212,6 @@
+ }
+
+ /*
+- * Delete saved global references - if any - for:
+- * - a potentially thrown Exception
+- * - a returned refernce/array value
+- * See invoker_doInvoke() and invoke* methods where global references
+- * are being saved.
+- */
+-static void
+-deletePotentiallySavedGlobalRefs(JNIEnv *env, InvokeRequest *request)
+-{
+- /* Delete potentially saved return value */
+- if ((request->invokeType == INVOKE_CONSTRUCTOR) ||
+- (returnTypeTag(request->methodSignature) == JDWP_TAG(OBJECT)) ||
+- (returnTypeTag(request->methodSignature) == JDWP_TAG(ARRAY))) {
+- if (request->returnValue.l != NULL) {
+- tossGlobalRef(env, &(request->returnValue.l));
+- }
+- }
+- /* Delete potentially saved exception */
+- if (request->exception != NULL) {
+- tossGlobalRef(env, &(request->exception));
+- }
+-}
+-
+-/*
+ * Delete global argument references from the request which got put there before a
+ * invoke request was carried out. See fillInvokeRequest().
+ */
+@@ -744,6 +720,7 @@
+ jint id;
+ InvokeRequest *request;
+ jboolean detached;
++ jboolean mustReleaseReturnValue = JNI_FALSE;
+
+ JDI_ASSERT(thread);
+
+@@ -787,6 +764,13 @@
+ id = request->id;
+ exc = request->exception;
+ returnValue = request->returnValue;
++
++ /* Release return value and exception references, but delay the release
++ * until after the return packet was sent. */
++ mustReleaseReturnValue = request->invokeType == INVOKE_CONSTRUCTOR ||
++ returnTypeTag(request->methodSignature) == JDWP_TAG(OBJECT) ||
++ returnTypeTag(request->methodSignature) == JDWP_TAG(ARRAY);
++
+ }
+
+ /*
+@@ -801,6 +785,12 @@
+ */
+ deleteGlobalArgumentRefs(env, request);
+
++ /* From now on, do not access the request structure anymore
++ * for this request id, because once we give up the invokerLock it may
++ * be immediately reused by a new invoke request.
++ */
++ request = NULL;
++
+ /*
+ * Give up the lock before I/O operation
+ */
+@@ -821,7 +811,12 @@
+ */
+ eventHandler_lock(); // for proper lock order
+ debugMonitorEnter(invokerLock);
+- deletePotentiallySavedGlobalRefs(env, request);
++ if (mustReleaseReturnValue && returnValue.l != NULL) {
++ tossGlobalRef(env, &returnValue.l);
++ }
++ if (exc != NULL) {
++ tossGlobalRef(env, &exc);
++ }
+ debugMonitorExit(invokerLock);
+ eventHandler_unlock();
+ }
diff --git a/enableCommentedOutSystemNss.patch b/enableCommentedOutSystemNss.patch
new file mode 100644
index 0000000..febd87e
--- /dev/null
+++ b/enableCommentedOutSystemNss.patch
@@ -0,0 +1,11 @@
+diff -r 5b86f66575b7 src/share/lib/security/java.security-linux
+--- openjdk/jdk/src/share/lib/security/java.security-linux Tue May 16 13:29:05 2017 -0700
++++ openjdk/jdk/src/share/lib/security/java.security-linux Tue Jun 06 14:05:12 2017 +0200
+@@ -74,6 +74,7 @@
+ security.provider.7=com.sun.security.sasl.Provider
+ security.provider.8=org.jcp.xml.dsig.internal.dom.XMLDSigRI
+ security.provider.9=sun.security.smartcardio.SunPCSC
++#security.provider.10=sun.security.pkcs11.SunPKCS11 ${java.home}/lib/security/nss.cfg
+
+ #
+ # Sun Provider SecureRandom seed source.
diff --git a/java-1.8.0-openjdk-aarch32.spec b/java-1.8.0-openjdk-aarch32.spec
index 0dc47f5..e9b4e89 100644
--- a/java-1.8.0-openjdk-aarch32.spec
+++ b/java-1.8.0-openjdk-aarch32.spec
@@ -173,13 +173,33 @@
%global archinstall %{_arch}
%endif
-
%ifarch %{jit_arches}
%global with_systemtap 0
%else
%global with_systemtap 0
%endif
+%ifarch %{ix86} x86_64
+#no fx on f24
+%global with_openjfx_binding 0
+%global openjfx_path %{_jvmdir}/openjfx
+# links src directories
+%global jfx_jre_libs_dir %{openjfx_path}/rt/lib
+%global jfx_jre_native_dir %{jfx_jre_libs_dir}/%{archinstall}
+%global jfx_sdk_libs_dir %{openjfx_path}/lib
+%global jfx_sdk_bins_dir %{openjfx_path}/bin
+%global jfx_jre_exts_dir %{jfx_jre_libs_dir}/ext
+# links src files
+# maybe depend on jfx and generate the lists in build time? Yes, bad idea to inlcude cyclic depndenci, but this list is aweful
+%global jfx_jre_libs jfxswt.jar javafx.properties
+%global jfx_jre_native libprism_es2.so libprism_common.so libjavafx_font.so libdecora_sse.so libjavafx_font_freetype.so libprism_sw.so libjavafx_font_pango.so libglass.so libjavafx_iio.so
+%global jfx_sdk_libs javafx-mx.jar packager.jar ant-javafx.jar
+%global jfx_sdk_bins javafxpackager javapackager
+%global jfx_jre_exts jfxrt.jar
+%else
+%global with_openjfx_binding 0
+%endif
+
# Convert an absolute path to a relative path. Each symbolic link is
# specified relative to the directory in which it is installed so that
# it will resolve properly within chrooted installations.
@@ -192,7 +212,7 @@
# note, following three variables are sedded from update_sources if used correctly. Hardcode them rather there.
%global project aarch32-port
%global repo jdk8u
-%global revision jdk8u131-b12-aarch32-170420
+%global revision jdk8u141-b15-aarch32-170721
# eg # jdk8u60-b27 -> jdk8u60 or # aarch64-jdk8u60-b27 -> aarch64-jdk8u60 (dont forget spec escape % by %%)
%global whole_update %(VERSION=%{revision}; echo ${VERSION%%-*})
# eg jdk8u60 -> 60 or aarch64-jdk8u60 -> 60
@@ -539,6 +559,7 @@ exit 0
%{_jvmprivdir}/*
%{jvmjardir %%1}
%dir %{_jvmdir}/%{jredir %%1}/lib/security
+%{_jvmdir}/%{jredir %%1}/lib/security/cacerts
%config(noreplace) %{_jvmdir}/%{jredir %%1}/lib/security/US_export_policy.jar
%config(noreplace) %{_jvmdir}/%{jredir %%1}/lib/security/local_policy.jar
%config(noreplace) %{_jvmdir}/%{jredir %%1}/lib/security/java.policy
@@ -756,6 +777,8 @@ Obsoletes: java-1.5.0-gcj-devel%1
Requires: %{name}%1%{?_isa} = %{epoch}:%{version}-%{release}
OrderWithRequires: %{name}-headless%1%{?_isa} = %{epoch}:%{version}-%{release}
+#Provides: java-%{javaver}-%{origin}-demo = %{epoch}:%{version}-%{release}
+
Obsoletes: java-1.7.0-openjdk-demo%1
}
@@ -773,6 +796,7 @@ Requires(postun): chkconfig >= 1.7
# Standard JPackage javadoc provides.
#Provides: java-javadoc%1 = %{epoch}:%{version}-%{release}
#Provides: java-%{javaver}-javadoc%1 = %{epoch}:%{version}-%{release}
+#Provides: java-%{javaver}-%{origin}-javadoc = %{epoch}:%{version}-%{release}
Obsoletes: java-1.7.0-openjdk-javadoc%1
@@ -781,6 +805,10 @@ Obsoletes: java-1.7.0-openjdk-javadoc%1
%global java_src_rpo() %{expand:
Requires: %{name}-headless%1%{?_isa} = %{epoch}:%{version}-%{release}
+# Standard JPackage javadoc provides.
+#Provides: java-src%1 = %{epoch}:%{version}-%{release}
+#Provides: java-%{javaver}-src%1 = %{epoch}:%{version}-%{release}
+#Provides: java-%{javaver}-%{origin}-src = %{epoch}:%{version}-%{release}
Obsoletes: java-1.7.0-openjdk-src%1
}
@@ -789,6 +817,8 @@ Requires: java-atk-wrapper%{?_isa}
Requires: %{name}%1%{?_isa} = %{epoch}:%{version}-%{release}
OrderWithRequires: %{name}-headless%1%{?_isa} = %{epoch}:%{version}-%{release}
+#Provides: java-%{javaver}-%{origin}-accessiblity = %{epoch}:%{version}-%{release}
+
Obsoletes: java-1.7.0-openjdk-accessibility%1
}
@@ -812,13 +842,19 @@ Epoch: 1
Summary: OpenJDK Runtime Environment in a preview of the OpenJDK AArch32 project
Group: Development/Languages
-License: ASL 1.1 and ASL 2.0 and GPL+ and GPLv2 and GPLv2 with exceptions and LGPLv2 and MPLv1.0 and MPLv1.1 and Public Domain and W3C
+License: ASL 1.1 and ASL 2.0 and GPL+ and GPLv2 and GPLv2 with exceptions and LGPL+ and LGPLv2 and MPLv1.0 and MPLv1.1 and Public Domain and W3C
URL: http://openjdk.java.net/
-
-# generated by update_package.sh
+# aarch64-port now contains integration forest of both aarch64 and normal jdk
+# Source from upstream OpenJDK8 project. To regenerate, use
+# VERSION=%%{revision} FILE_NAME_ROOT=%%{project}-%%{repo}-${VERSION}
+# REPO_ROOT=<path to checked-out repository> generate_source_tarball.sh
+# where the source is obtained from http://hg.openjdk.java.net/%%{project}/%%{repo}
Source0: %{project}-%{repo}-%{revision}.tar.xz
+# Shenandoah HotSpot
+#Source1: aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u141-b16.tar.xz
+
# Custom README for -src subpackage
Source2: README.src
@@ -924,30 +960,24 @@ Patch400: 8154313.patch
Patch526: 6260348-pr3066.patch
# 8061305, PR3335, RH1423421: Javadoc crashes when method name ends with "Property"
Patch538: 8061305-pr3335-rh1423421.patch
-
-# Patches upstream and appearing in 8u131
-# 6515172, PR3346: Runtime.availableProcessors() ignores Linux taskset command
-#Patch542: 6515172-pr3346.patch
+# 8181055, PR3394, RH1448880: PPC64: "mbind: Invalid argument" still seen after 8175813
+#Patch551: 8181055-pr3394-rh1448880.patch
+# 8181419, PR3413, RH1463144: Race in jdwp invoker handling may lead to crashes or invalid results
+Patch553: 8181419-pr3413-rh1463144.patch
# Patches upstream and appearing in 8u152
# 8153711, PR3313, RH1284948: [REDO] JDWP: Memory Leak: GlobalRefs never deleted when processing invokeMethod command
Patch535: 8153711-pr3313-rh1284948.patch
-# 8144566, PR3352: Custom HostnameVerifier disables SNI extension
-Patch544: 8144566-pr3352.patch
-# 8155049, PR3352: New tests from 8144566 fail with "No expected Server Name Indication"
-Patch545: 8155049-pr3352.patch
# 8162384, PR3122, RH1358661: Performance regression: bimorphic inlining may be bypassed by type speculation
Patch532: 8162384-pr3122-rh1358661.patch
-# 8165231, RH1437545: java.nio.Bits.unaligned() doesn't return true on ppc
-Patch546: 8165231-rh1437545.patch
# 8173941, PR3326: SA does not work if executable is DSO
Patch547: 8173941-pr3326.patch
-# 8174164, PR3334, RH1417266: SafePointNode::_replaced_nodes breaks with irreducible loops"
-Patch537: 8174164-pr3334-rh1417266.patch
-# 8174729, PR3336, RH1420518: Race Condition in java.lang.reflect.WeakCache
-Patch548: 8174729-pr3336-rh1420518.patch
-# 8175097, PR3334, RH1417266: [TESTBUG] 8174164 fix missed the test
-Patch549: 8175097-pr3334-rh1417266.patch
+# 8175813, PR3394, RH1448880: PPC64: "mbind: Invalid argument" when -XX:+UseNUMA is used
+#Patch550: 8175813-pr3394-rh1448880.patch
+# 8179084, PR3409, RH1455694: HotSpot VM fails to start when AggressiveHeap is set
+Patch552: 8179084-pr3409-rh1455694.patch
+# 8175887, PR3415: C1 value numbering handling of Unsafe.get*Volatile is incorrect
+Patch554: 8175887-pr3415.patch
# Patches ineligible for 8u
# 8043805: Allow using a system-installed libjpeg
@@ -966,6 +996,7 @@ Patch533: rh1367357.patch
Patch539: pr2888.patch
# Non-OpenJDK fixes
+Patch1000: enableCommentedOutSystemNss.patch
BuildRequires: autoconf
BuildRequires: automake
@@ -994,7 +1025,13 @@ BuildRequires: nss-devel
BuildRequires: pkgconfig
BuildRequires: xorg-x11-proto-devel
BuildRequires: zip
+# Use OpenJDK 7 where available (on RHEL) to avoid
+# having to use the rhel-7.x-java-unsafe-candidate hack
+%if 0%{?rhel}
+BuildRequires: java-1.7.0-openjdk-devel
+%else
BuildRequires: java-1.8.0-openjdk-aarch32-devel
+%endif
# Zero-assembler build requirement.
%ifnarch %{jit_arches}
BuildRequires: libffi-devel
@@ -1016,9 +1053,7 @@ BuildRequires: systemtap-sdt-devel
ExclusiveArch: %{arm}
%description
-A preview release of the upstream OpenJDK AArch32 porting project. In
-due time it will be merged with the main java-1.8.0-openjdk package.
-This release may get security fixes late. Use carefully.
+A preview release of the upstream OpenJDK AArch32 porting project.
The OpenJDK runtime environment.
%if %{include_debug_build}
@@ -1203,6 +1238,43 @@ Summary: OpenJDK accessibility connector %{for_debug}
See normal java-%{version}-openjdk-accessibility description.
%endif
+
+%if %{with_openjfx_binding}
+%package openjfx
+Summary: OpenJDK x OpenJFX connector. This package adds symliks finishing Java FX integration to %{name}
+Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: openjfx%{?_isa}
+Provides: javafx = %{epoch}:%{version}-%{release}
+%description openjfx
+Set of links from OpenJDK (jre) to OpenJFX
+
+%package openjfx-devel
+Summary: OpenJDK x OpenJFX connector for FX developers. This package adds symliks finishing Java FX integration to %{name}-devel
+Requires: %{name}-devel%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: openjfx-devel%{?_isa}
+Provides: javafx-devel = %{epoch}:%{version}-%{release}
+%description openjfx-devel
+Set of links from OpenJDK (sdk) to OpenJFX
+
+%if %{include_debug_build}
+%package openjfx-debug
+Summary: OpenJDK x OpenJFX connector %{for_debug}. his package adds symliks finishing Java FX integration to %{name}-debug
+Requires: %{name}-debug%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: openjfx%{?_isa}
+Provides: javafx-debug = %{epoch}:%{version}-%{release}
+%description openjfx-debug
+Set of links from OpenJDK-debug (jre) to normal OpenJFX. OpenJFX do not support debug buuilds of itself
+
+%package openjfx-devel-debug
+Summary: OpenJDK x OpenJFX connector for FX developers %{for_debug}. This package adds symliks finishing Java FX integration to %{name}-devel-debug
+Requires: %{name}-devel-debug%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: openjfx-devel%{?_isa}
+Provides: javafx-devel-debug = %{epoch}:%{version}-%{release}
+%description openjfx-devel-debug
+Set of links from OpenJDK-debug (sdk) to normal OpenJFX. OpenJFX do not support debug buuilds of itself
+%endif
+%endif
+
%prep
if [ %{include_normal_build} -eq 0 -o %{include_normal_build} -eq 1 ] ; then
echo "include_normal_build is %{include_normal_build}"
@@ -1233,7 +1305,7 @@ ln -s openjdk jdk8
# On Shenandoah-supported architectures, replace HotSpot with
# the Shenandoah version
pushd openjdk
-tar -xf %{SOURCE999}
+tar -xf %{SOURCE1}
rm -rf hotspot
mv openjdk/hotspot .
rm -rf openjdk
@@ -1304,15 +1376,13 @@ sh %{SOURCE12}
%patch528
%patch532
%patch535
-%patch537
%patch538
-#%patch542
-%patch544
-%patch545
-%patch546
%patch547
-%patch548
-%patch549
+#%patch550
+#%patch551
+%patch552
+%patch553
+%patch554
# RPM-only fixes
%patch525
@@ -1324,6 +1394,8 @@ sh %{SOURCE12}
%patch534
%endif
+%patch1000
+
# Extract systemtap tapsets
%if %{with_systemtap}
tar -x -I xz -f %{SOURCE8}
@@ -1561,6 +1633,8 @@ $JAVA_HOME/bin/javap -l java.lang.Object | grep LocalVariableTable
$JAVA_HOME/bin/javap -l java.nio.ByteBuffer | grep "Compiled from"
$JAVA_HOME/bin/javap -l java.nio.ByteBuffer | grep LineNumberTable
$JAVA_HOME/bin/javap -l java.nio.ByteBuffer | grep LocalVariableTable
+
+#build cycles check
done
%install
@@ -1568,7 +1642,7 @@ STRIP_KEEP_SYMTAB=libjvm*
for suffix in %{build_loop} ; do
-pushd %{buildoutputdir $suffix}/images/%{j2sdkimage}
+pushd %{buildoutputdir $suffix}/images/%{j2sdkimage}
#install jsa directories so we can owe them
mkdir -p $RPM_BUILD_ROOT%{_jvmdir}/%{jredir $suffix}/lib/%{archinstall}/server/
@@ -1644,6 +1718,12 @@ popd
# Remove empty cacerts database.
rm -f $RPM_BUILD_ROOT%{_jvmdir}/%{jredir $suffix}/lib/security/cacerts
+ # Install cacerts symlink needed by some apps which hardcode the path.
+ pushd $RPM_BUILD_ROOT%{_jvmdir}/%{jredir $suffix}/lib/security
+ RELATIVE=$(%{abs2rel} %{_sysconfdir}/pki/java \
+ %{_jvmdir}/%{jredir $suffix}/lib/security)
+ ln -sf $RELATIVE/cacerts .
+ popd
# Install extension symlinks.
install -d -m 755 $RPM_BUILD_ROOT%{jvmjardir $suffix}
@@ -1808,6 +1888,44 @@ find $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir $suffix}/demo \
echo "" >> accessibility.properties
popd
+# intentionally after all else, fx links with redirections on its own
+%if %{with_openjfx_binding}
+ FXSDK_FILES=%{name}-openjfx-devel.files"$suffix"
+ FXJRE_FILES=%{name}-openjfx.files"$suffix"
+ echo -n "" > $FXJRE_FILES
+ echo -n "" > $FXSDK_FILES
+ for file in %{jfx_jre_libs} ; do
+ srcfile=%{jfx_jre_libs_dir}/$file
+ targetfile=%{_jvmdir}/%{jredir $suffix}/lib/$file
+ ln -s $srcfile $RPM_BUILD_ROOT/$targetfile
+ echo $targetfile >> $FXJRE_FILES
+ done
+ for file in %{jfx_jre_native} ; do
+ srcfile=%{jfx_jre_native_dir}/$file
+ targetfile=%{_jvmdir}/%{jredir $suffix}/lib/%{archinstall}/$file
+ ln -s $srcfile $RPM_BUILD_ROOT/$targetfile
+ echo $targetfile >> $FXJRE_FILES
+ done
+ for file in %{jfx_jre_exts} ; do
+ srcfile=%{jfx_jre_exts_dir}/$file
+ targetfile=%{_jvmdir}/%{jredir $suffix}/lib/ext/$file
+ ln -s $srcfile $RPM_BUILD_ROOT/$targetfile
+ echo $targetfile >> $FXJRE_FILES
+ done
+ for file in %{jfx_sdk_libs} ; do
+ srcfile=%{jfx_sdk_libs_dir}/$file
+ targetfile=%{_jvmdir}/%{sdkdir $suffix}/lib/$file
+ ln -s $srcfile $RPM_BUILD_ROOT/$targetfile
+ echo $targetfile >> $FXSDK_FILES
+ done
+ for file in %{jfx_sdk_bins} ; do
+ srcfile=%{jfx_sdk_bins_dir}/$file
+ targetfile=%{_jvmdir}/%{sdkdir $suffix}/bin/$file
+ ln -s $srcfile $RPM_BUILD_ROOT/$targetfile
+ echo $targetfile >> $FXSDK_FILES
+ done
+%endif
+
bash %{SOURCE20} $RPM_BUILD_ROOT/%{_jvmdir}/%{jredir $suffix} %{javaver}
# https://bugzilla.redhat.com/show_bug.cgi?id=1183793
touch -t 201401010000 $RPM_BUILD_ROOT/%{_jvmdir}/%{jredir $suffix}/lib/security/java.security
@@ -1966,6 +2084,12 @@ require "copy_jdk_configs.lua"
%files accessibility
%{files_accessibility %{nil}}
+
+%if %{with_openjfx_binding}
+%files openjfx -f %{name}-openjfx.files
+
+%files openjfx-devel -f %{name}-openjfx-devel.files
+%endif
%endif
%if %{include_debug_build}
@@ -1992,9 +2116,20 @@ require "copy_jdk_configs.lua"
%files accessibility-debug
%{files_accessibility %{debug_suffix_unquoted}}
+
+%if %{with_openjfx_binding}
+%files openjfx-debug -f %{name}-openjfx.files-debug
+
+%files openjfx-devel-debug -f %{name}-openjfx-devel.files-debug
+%endif
+
%endif
%changelog
+* Mon Jul 24 2017 Alex Kashchenko <akashche(a)redhat.com> - 1:1.8.0.141-1.170721
+- update sources to 8u141
+- sync with mainline package
+
* Sat Apr 29 2017 Alex Kashchenko <akashche(a)redhat.com> - 1:1.8.0.131-1.170420
- update sources to 8u131
- sync with mainline package
6 years, 2 months
Architecture specific change in rpms/nfs-ganesha.git
by githook-noreply@fedoraproject.org
The package rpms/nfs-ganesha.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/nfs-ganesha.git/commit/?id=b85803....
Change:
+%ifnarch ppc64
Thanks.
Full change:
============
commit b85803fad4c58368ab656fa66e24c531aa31f1a4
Author: Kaleb S. KEITHLEY <kkeithle(a)redhat.com>
Date: Mon Jul 31 08:22:52 2017 -0400
nfs-ganesha 2.5.1 w/ FSAL_CEPH and FSAL_RGW on i686, armv7hl
diff --git a/nfs-ganesha.spec b/nfs-ganesha.spec
index 0264b78..42d70cb 100644
--- a/nfs-ganesha.spec
+++ b/nfs-ganesha.spec
@@ -52,14 +52,14 @@ Requires: openSUSE-release
%bcond_without xfs
%global use_fsal_xfs %{on_off_switch xfs}
-%ifnarch i686 armv7hl ppc64
+%ifnarch ppc64
%bcond_without ceph
%else
%bcond_with ceph
%endif
%global use_fsal_ceph %{on_off_switch ceph}
-%ifnarch i686 armv7hl ppc64
+%ifnarch ppc64
%bcond_without rgw
%else
%bcond_with rgw
@@ -98,7 +98,7 @@ Requires: openSUSE-release
Name: nfs-ganesha
Version: 2.5.1
-Release: 6%{?dev:%{dev}}%{?dist}
+Release: 7%{?dev:%{dev}}%{?dist}
Summary: NFS-Ganesha is a NFS Server running in user space
Group: Applications/System
License: LGPLv3+
@@ -283,7 +283,7 @@ be used with NFS-Ganesha to support GPFS backend
%endif
# CEPH
-%ifnarch i686 armv7hl ppc64
+%ifnarch ppc64
%if %{with ceph}
%package ceph
Summary: The NFS-GANESHA's CephFS FSAL
@@ -425,7 +425,7 @@ install -m 644 scripts/init.d/sysconfig/ganesha %{buildroot}%{_sysconfdir}/sysc
install -m 644 config_samples/xfs.conf %{buildroot}%{_sysconfdir}/ganesha
%endif
-%ifnarch i686 armv7hl ppc64
+%ifnarch ppc64
%if %{with ceph}
install -m 644 config_samples/ceph.conf %{buildroot}%{_sysconfdir}/ganesha
%endif
@@ -592,7 +592,7 @@ exit 0
%endif
%endif
-%ifnarch i686 armv7hl ppc64
+%ifnarch ppc64
%if %{with ceph}
%files ceph
%{_libdir}/ganesha/libfsalceph*
@@ -663,6 +663,9 @@ exit 0
%endif
%changelog
+* Mon Jul 31 2017 Kaleb S. KEITHLEY <kkeithle at redhat.com> 2.5.1-7
+- nfs-ganesha 2.5.1 w/ FSAL_CEPH and FSAL_RGW on i686, armv7hl
+
* Wed Jul 26 2017 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.5.1-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
6 years, 2 months
Architecture specific change in rpms/nuvolaruntime.git
by githook-noreply@fedoraproject.org
The package rpms/nuvolaruntime.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/nuvolaruntime.git/commit/?id=4886....
Change:
-ExcludeArch: ppc64le
Thanks.
Full change:
============
commit 9b9f61401e968167dd9e36e7d421ad3cc46d5783
Merge: 753888c 4886937
Author: Martin Gansser <martinkg(a)fedoraproject.org>
Date: Mon Jul 31 11:23:02 2017 +0200
Merge branch 'master' into f25
commit 48869373dd9bc12e954d676921f65ab546fa6031
Author: Martin Gansser <martinkg(a)fedoraproject.org>
Date: Mon Jul 31 11:12:22 2017 +0200
include ppc64le again
diff --git a/nuvolaruntime.spec b/nuvolaruntime.spec
index 695378c..f434824 100644
--- a/nuvolaruntime.spec
+++ b/nuvolaruntime.spec
@@ -6,7 +6,7 @@
Name: nuvolaruntime
Version: 4.5.0
-Release: 4%{?dist}
+Release: 5%{?dist}
# Nuvola itself is BSD licensed, but the bundled engineio-soup content is MIT.
License: BSD and MIT
Summary: Tight integration of web apps with your desktop
@@ -16,9 +16,9 @@ Patch0: 0001-Revert-Check-whether-VA-API-driver-is-installed.patch
Patch1: 0002-Revert-Check-whether-VDPAU-driver-is-installed.patch
# Build is broken on ppc64le
-%if 0%{?fedora} >= 26
-ExcludeArch: ppc64le
-%endif
+#if 0%{?fedora} >= 26
+#ExcludeArch: ppc64le
+#endif
BuildRequires: gcc
BuildRequires: desktop-file-utils
@@ -168,6 +168,9 @@ fi
%changelog
+* Mon Jul 31 2017 Martin Gansser <martinkg(a)fedoraproject.org> - 4.5.0-5
+- include ppc64le again
+
* Fri Jul 28 2017 Martin Gansser <martinkg(a)fedoraproject.org> - 4.5.0-4
- exclude ppc64le due build problem
6 years, 2 months
Architecture specific change in rpms/nuvolaruntime.git
by githook-noreply@fedoraproject.org
The package rpms/nuvolaruntime.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/nuvolaruntime.git/commit/?id=4886....
Change:
-ExcludeArch: ppc64le
Thanks.
Full change:
============
commit 48869373dd9bc12e954d676921f65ab546fa6031
Author: Martin Gansser <martinkg(a)fedoraproject.org>
Date: Mon Jul 31 11:12:22 2017 +0200
include ppc64le again
diff --git a/nuvolaruntime.spec b/nuvolaruntime.spec
index 695378c..f434824 100644
--- a/nuvolaruntime.spec
+++ b/nuvolaruntime.spec
@@ -6,7 +6,7 @@
Name: nuvolaruntime
Version: 4.5.0
-Release: 4%{?dist}
+Release: 5%{?dist}
# Nuvola itself is BSD licensed, but the bundled engineio-soup content is MIT.
License: BSD and MIT
Summary: Tight integration of web apps with your desktop
@@ -16,9 +16,9 @@ Patch0: 0001-Revert-Check-whether-VA-API-driver-is-installed.patch
Patch1: 0002-Revert-Check-whether-VDPAU-driver-is-installed.patch
# Build is broken on ppc64le
-%if 0%{?fedora} >= 26
-ExcludeArch: ppc64le
-%endif
+#if 0%{?fedora} >= 26
+#ExcludeArch: ppc64le
+#endif
BuildRequires: gcc
BuildRequires: desktop-file-utils
@@ -168,6 +168,9 @@ fi
%changelog
+* Mon Jul 31 2017 Martin Gansser <martinkg(a)fedoraproject.org> - 4.5.0-5
+- include ppc64le again
+
* Fri Jul 28 2017 Martin Gansser <martinkg(a)fedoraproject.org> - 4.5.0-4
- exclude ppc64le due build problem
6 years, 2 months