diff --git a/.gitignore b/.gitignore
index 5eb44fd..cf98633 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,2 @@
-SOURCES/aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u265-b01-4curve.tar.xz
+SOURCES/aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u272-b10-4curve.tar.xz
SOURCES/tapsets-icedtea-3.15.0.tar.xz
diff --git a/.java-1.8.0-openjdk.metadata b/.java-1.8.0-openjdk.metadata
index 2d6c98c..d554ae2 100644
--- a/.java-1.8.0-openjdk.metadata
+++ b/.java-1.8.0-openjdk.metadata
@@ -1,2 +1,2 @@
-a00a0c65e1c1a9ffc1028992cde398ee11d9c94a SOURCES/aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u265-b01-4curve.tar.xz
+6fdff31687c0ac7a4dd7f49619748c7209602cb1 SOURCES/aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u272-b10-4curve.tar.xz
7ae2cba67467825b2c2a5fec7aea041865023002 SOURCES/tapsets-icedtea-3.15.0.tar.xz
diff --git a/SOURCES/CheckVendor.java b/SOURCES/CheckVendor.java
new file mode 100644
index 0000000..e2101cf
--- /dev/null
+++ b/SOURCES/CheckVendor.java
@@ -0,0 +1,57 @@
+/* CheckVendor -- Check the vendor properties match specified values.
+ Copyright (C) 2020 Red Hat, Inc.
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as
+published by the Free Software Foundation, either version 3 of the
+License, or (at your option) any later version.
+
+This program 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 Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with this program. If not, see .
+*/
+
+/**
+ * @test
+ */
+public class CheckVendor {
+
+ public static void main(String[] args) {
+ if (args.length < 3) {
+ System.err.println("CheckVendor ");
+ System.exit(1);
+ }
+
+ String vendor = System.getProperty("java.vendor");
+ String expectedVendor = args[0];
+ String vendorURL = System.getProperty("java.vendor.url");
+ String expectedVendorURL = args[1];
+ String vendorBugURL = System.getProperty("java.vendor.url.bug");
+ String expectedVendorBugURL = args[2];
+
+ if (!expectedVendor.equals(vendor)) {
+ System.err.printf("Invalid vendor %s, expected %s\n",
+ vendor, expectedVendor);
+ System.exit(2);
+ }
+
+ if (!expectedVendorURL.equals(vendorURL)) {
+ System.err.printf("Invalid vendor URL %s, expected %s\n",
+ vendorURL, expectedVendorURL);
+ System.exit(3);
+ }
+
+ if (!expectedVendorBugURL.equals(vendorBugURL)) {
+ System.err.printf("Invalid vendor bug URL%s, expected %s\n",
+ vendorBugURL, expectedVendorBugURL);
+ System.exit(4);
+ }
+
+ System.err.printf("Vendor information verified as %s, %s, %s\n",
+ vendor, vendorURL, vendorBugURL);
+ }
+}
diff --git a/SOURCES/NEWS b/SOURCES/NEWS
index fd782fc..1c1d679 100644
--- a/SOURCES/NEWS
+++ b/SOURCES/NEWS
@@ -3,6 +3,313 @@ Key:
JDK-X - https://bugs.openjdk.java.net/browse/JDK-X
CVE-XXXX-YYYY: https://cve.mitre.org/cgi-bin/cvename.cgi?name=XXXX-YYYY
+New in release OpenJDK 8u272 (2020-10-20):
+===========================================
+Live versions of these release notes can be found at:
+ * https://bitly.com/openjdk8u272
+ * https://builds.shipilev.net/backports-monitor/release-notes-openjdk8u272.txt
+
+* New features
+ - JDK-8245468: Add TLSv1.3 implementation classes from 11.0.7
+* Security fixes
+ - JDK-8233624: Enhance JNI linkage
+ - JDK-8236196: Improve string pooling
+ - JDK-8236862, CVE-2020-14779: Enhance support of Proxy class
+ - JDK-8237990, CVE-2020-14781: Enhanced LDAP contexts
+ - JDK-8237995, CVE-2020-14782: Enhance certificate processing
+ - JDK-8240124: Better VM Interning
+ - JDK-8241114, CVE-2020-14792: Better range handling
+ - JDK-8242680, CVE-2020-14796: Improved URI Support
+ - JDK-8242685, CVE-2020-14797: Better Path Validation
+ - JDK-8242695, CVE-2020-14798: Enhanced buffer support
+ - JDK-8243302: Advanced class supports
+ - JDK-8244136, CVE-2020-14803: Improved Buffer supports
+ - JDK-8244479: Further constrain certificates
+ - JDK-8244955: Additional Fix for JDK-8240124
+ - JDK-8245407: Enhance zoning of times
+ - JDK-8245412: Better class definitions
+ - JDK-8245417: Improve certificate chain handling
+ - JDK-8248574: Improve jpeg processing
+ - JDK-8249927: Specify limits of jdk.serialProxyInterfaceLimit
+ - JDK-8253019: Enhanced JPEG decoding
+* Other changes
+ - JDK-6574989: TEST_BUG: javax/sound/sampled/Clip/bug5070081.java fails sometimes
+ - JDK-8006205: [TESTBUG] NEED_TEST: please JTREGIFY test/compiler/7177917/Test7177917.java
+ - JDK-8023697: failed class resolution reports different class name in detail message for the first and subsequent times
+ - JDK-8025886: replace [[ and == bash extensions in regtest
+ - JDK-8026236: Add PrimeTest for BigInteger
+ - JDK-8031625: javadoc problems referencing inner class constructors
+ - JDK-8035493: JVMTI PopFrame capability must instruct compilers not to prune locals
+ - JDK-8036088: Replace strtok() with its safe equivalent strtok_s() in DefaultProxySelector.c
+ - JDK-8039082: [TEST_BUG] Test java/awt/dnd/BadSerializationTest/BadSerializationTest.java fails
+ - JDK-8046274: Removing dependency on jakarta-regexp
+ - JDK-8048933: -XX:+TraceExceptions output should include the message
+ - JDK-8057003: Large reference arrays cause extremely long synchronization times
+ - JDK-8060721: Test runtime/SharedArchiveFile/LimitSharedSizes.java fails in jdk 9 fcs new platforms/compiler
+ - JDK-8061616: HotspotDiagnosticMXBean.getVMOption() throws IllegalArgumentException for flags of type double
+ - JDK-8062947: Fix exception message to correctly represent LDAP connection failure
+ - JDK-8064319: Need to enable -XX:+TraceExceptions in release builds
+ - JDK-8075774: Small readability and performance improvements for zipfs
+ - JDK-8076151: [TESTBUG] Test java/awt/FontClass/CreateFont/fileaccess/FontFile.java fails
+ - JDK-8078334: Mark regression tests using randomness
+ - JDK-8078880: Mark a few more intermittently failuring security-libs
+ - JDK-8080462: Update SunPKCS11 provider with PKCS11 v2.40 support
+ - JDK-8132206: move ScanTest.java into OpenJDK
+ - JDK-8132376: Add @requires os.family to the client tests with access to internal OS-specific API
+ - JDK-8132745: minor cleanup of java/util/Scanner/ScanTest.java
+ - JDK-8137087: [TEST_BUG] Cygwin failure of java/awt/appletviewer/IOExceptionIfEncodedURLTest/IOExceptionIfEncodedURLTest.sh
+ - JDK-8144539: Update PKCS11 tests to run with security manager
+ - JDK-8145808: java/awt/Graphics2D/MTGraphicsAccessTest/MTGraphicsAccessTest.java hangs on Win. 8
+ - JDK-8148754: C2 loop unrolling fails due to unexpected graph shape
+ - JDK-8148854: Class names "SomeClass" and "LSomeClass;" treated by JVM as an equivalent
+ - JDK-8151678: com/sun/jndi/ldap/LdapTimeoutTest.java failed due to timeout on DeadServerNoTimeoutTest is incorrect
+ - JDK-8151788: NullPointerException from ntlm.Client.type3
+ - JDK-8151834: Test SmallPrimeExponentP.java times out intermittently
+ - JDK-8152077: (cal) Calendar.roll does not always roll the hours during daylight savings
+ - JDK-8153430: jdk regression test MletParserLocaleTest, ParserInfiniteLoopTest reduce default timeout
+ - JDK-8153583: Make OutputAnalyzer.reportDiagnosticSummary public
+ - JDK-8154313: Generated javadoc scattered all over the place
+ - JDK-8156169: Some sound tests rarely hangs because of incorrect synchronization
+ - JDK-8160768: Add capability to custom resolve host/domain names within the default JNDI LDAP provider
+ - JDK-8161973: PKIXRevocationChecker.getSoftFailExceptions() not working
+ - JDK-8163251: Hard coded loop limit prevents reading of smart card data greater than 8k
+ - JDK-8165936: Potential Heap buffer overflow when seaching timezone info files
+ - JDK-8165996: PKCS11 using NSS throws an error regarding secmod.db when NSS uses sqlite
+ - JDK-8166148: Fix for JDK-8165936 broke solaris builds
+ - JDK-8167300: Scheduling failures during gcm should be fatal
+ - JDK-8167615: Opensource unit/regression tests for JavaSound
+ - JDK-8168517: java/lang/ProcessBuilder/Basic.java failed
+ - JDK-8169925: PKCS #11 Cryptographic Token Interface license
+ - JDK-8172012: [TEST_BUG] delays needed in javax/swing/JTree/4633594/bug4633594.java
+ - JDK-8173300: [TESTBUG]compiler/tiered/NonTieredLevelsTest.java fails with compiler.whitebox.SimpleTestCaseHelper(int) must be compiled
+ - JDK-8177334: Update xmldsig implementation to Apache Santuario 2.1.1
+ - JDK-8177628: Opensource unit/regression tests for ImageIO
+ - JDK-8183341: Better cleanup for javax/imageio/AllowSearch.java
+ - JDK-8183349: Better cleanup for jdk/test/javax/imageio/plugins/shared/CanWriteSequence.java and WriteAfterAbort.java
+ - JDK-8183351: Better cleanup for jdk/test/javax/imageio/spi/AppletContextTest/BadPluginConfigurationTest.sh
+ - JDK-8184762: ZapStackSegments should use optimized memset
+ - JDK-8191678: [TESTBUG] Add keyword headful in java/awt FocusTransitionTest test.
+ - JDK-8192953: sun/management/jmxremote/bootstrap/*.sh tests fail with error : revokeall.exe: Permission denied
+ - JDK-8193137: Nashorn crashes when given an empty script file
+ - JDK-8193234: When using -Xcheck:jni an internally allocated buffer can leak
+ - JDK-8194298: Add support for per Socket configuration of TCP keepalive
+ - JDK-8198004: javax/swing/JFileChooser/6868611/bug6868611.java throws error
+ - JDK-8200313: java/awt/Gtk/GtkVersionTest/GtkVersionTest.java fails
+ - JDK-8201633: Problems with AES-GCM native acceleration
+ - JDK-8203357: Container Metrics
+ - JDK-8209113: Use WeakReference for lastFontStrike for created Fonts
+ - JDK-8210147: adjust some WSAGetLastError usages in windows network coding
+ - JDK-8211049: Second parameter of "initialize" method is not used
+ - JDK-8211163: UNIX version of Java_java_io_Console_echo does not return a clean boolean
+ - JDK-8211714: Need to update vm_version.cpp to recognise VS2017 minor versions
+ - JDK-8214862: assert(proj != __null) at compile.cpp:3251
+ - JDK-8216283: Allow shorter method sampling interval than 10 ms
+ - JDK-8217606: LdapContext#reconnect always opens a new connection
+ - JDK-8217647: JFR: recordings on 32-bit systems unreadable
+ - JDK-8217878: ENVELOPING XML signature no longer works in JDK 11
+ - JDK-8218629: XML Digital Signature throws NAMESPACE_ERR exception on OpenJDK 11, works 8/9/10
+ - JDK-8219566: JFR did not collect call stacks when MaxJavaStackTraceDepth is set to zero
+ - JDK-8219919: RuntimeStub name lost with PrintFrameConverterAssembly
+ - JDK-8220165: Encryption using GCM results in RuntimeException- input length out of bound
+ - JDK-8220313: [TESTBUG] Update base image for Docker testing to OL 7.6
+ - JDK-8220555: JFR tool shows potentially misleading message when it cannot access a file
+ - JDK-8220674: [TESTBUG] MetricsMemoryTester failcount test in docker container only works with debug JVMs
+ - JDK-8221569: JFR tool produces incorrect output when both --categories and --events are specified
+ - JDK-8222079: Don't use memset to initialize fields decode_env constructor in disassembler.cpp
+ - JDK-8224217: RecordingInfo should use textual representation of path
+ - JDK-8225695: 32-bit build failures after JDK-8080462 (Update SunPKCS11 provider with PKCS11 v2.40 support)
+ - JDK-8226575: OperatingSystemMXBean should be made container aware
+ - JDK-8226697: Several tests which need the @key headful keyword are missing it.
+ - JDK-8226809: Circular reference in printed stack trace is not correctly indented & ambiguous
+ - JDK-8228835: Memory leak in PKCS11 provider when using AES GCM
+ - JDK-8229378: jdwp library loader in linker_md.c quietly truncates on buffer overflow
+ - JDK-8230303: JDB hangs when running monitor command
+ - JDK-8230711: ConnectionGraph::unique_java_object(Node* N) return NULL if n is not in the CG
+ - JDK-8231213: Migrate SimpleDateFormatConstTest to JDK Repo
+ - JDK-8231779: crash HeapWord*ParallelScavengeHeap::failed_mem_allocate
+ - JDK-8233097: Fontmetrics for large Fonts has zero width
+ - JDK-8233621: Mismatch in jsse.enableMFLNExtension property name
+ - JDK-8234617: C1: Incorrect result of field load due to missing narrowing conversion
+ - JDK-8235243: handle VS2017 15.9 and VS2019 in abstract_vm_version
+ - JDK-8235325: build failure on Linux after 8235243
+ - JDK-8235687: Contents/MacOS/libjli.dylib cannot be a symlink
+ - JDK-8236645: JDK 8u231 introduces a regression with incompatible handling of XML messages
+ - JDK-8237951: CTW: C2 compilation fails with "malformed control flow"
+ - JDK-8238225: Issues reported after replacing symlink at Contents/MacOS/libjli.dylib with binary
+ - JDK-8238380: java.base/unix/native/libjava/childproc.c "multiple definition" link errors with GCC10
+ - JDK-8238386: (sctp) jdk.sctp/unix/native/libsctp/SctpNet.c "multiple definition" link errors with GCC10
+ - JDK-8238388: libj2gss/NativeFunc.o "multiple definition" link errors with GCC10
+ - JDK-8238898: Missing hash characters for header on license file
+ - JDK-8239385: KerberosTicket client name refers wrongly to sAMAccountName in AD
+ - JDK-8239819: XToolkit: Misread of screen information memory
+ - JDK-8240295: hs_err elapsed time in seconds is not accurate enough
+ - JDK-8240676: Meet not symmetric failure when running lucene on jdk8
+ - JDK-8241888: Mirror jdk.security.allowNonCaAnchor system property with a security one
+ - JDK-8242498: Invalid "sun.awt.TimedWindowEvent" object leads to JVM crash
+ - JDK-8242556: Cannot load RSASSA-PSS public key with non-null params from byte array
+ - JDK-8243138: Enhance BaseLdapServer to support starttls extended request
+ - JDK-8243320: Add SSL root certificates to Oracle Root CA program
+ - JDK-8243321: Add Entrust root CA - G4 to Oracle Root CA program
+ - JDK-8243489: Thread CPU Load event may contain wrong data for CPU time under certain conditions
+ - JDK-8244151: Update MUSCLE PC/SC-Lite headers to the latest release 1.8.26
+ - JDK-8244818: Java2D Queue Flusher crash while moving application window to external monitor
+ - JDK-8245467: Remove 8u TLSv1.2 implementation files
+ - JDK-8245469: Remove DTLS protocol implementation
+ - JDK-8245470: Fix JDK8 compatibility issues
+ - JDK-8245471: Revert JDK-8148188
+ - JDK-8245472: Backport JDK-8038893 to JDK8
+ - JDK-8245473: OCSP stapling support
+ - JDK-8245474: Add TLS_KRB5 cipher suites support according to RFC-2712
+ - JDK-8245476: Disable TLSv1.3 protocol in the ClientHello message by default
+ - JDK-8245477: Adjust TLS tests location
+ - JDK-8245653: Remove 8u TLS tests
+ - JDK-8245681: Add TLSv1.3 regression test from 11.0.7
+ - JDK-8246193: Possible NPE in ENC-PA-REP search in AS-REQ
+ - JDK-8246310: Clean commented-out code about ModuleEntry andPackageEntry in JFR
+ - JDK-8246384: Enable JFR by default on supported architectures for October 2020 release
+ - JDK-8248643: Remove extra leading space in JDK-8240295 8u backport
+ - JDK-8248851: CMS: Missing memory fences between free chunk check and klass read
+ - JDK-8249158: THREAD_START and THREAD_END event posted in primordial phase
+ - JDK-8249610: Make sun.security.krb5.Config.getBooleanObject(String... keys) method public
+ - JDK-8249677: Regression in 8u after JDK-8237117: Better ForkJoinPool behavior
+ - JDK-8250546: Expect changed behaviour reported in JDK-8249846
+ - JDK-8250627: Use -XX:+/-UseContainerSupport for enabling/disabling Java container metrics
+ - JDK-8250755: Better cleanup for jdk/test/javax/imageio/plugins/shared/CanWriteSequence.java
+ - JDK-8250875: Incorrect parameter type for update_number in JDK_Version::jdk_update
+ - JDK-8251117: Cannot check P11Key size in P11Cipher and P11AEADCipher
+ - JDK-8251120: [8u] HotSpot build assumes ENABLE_JFR is set to either true or false
+ - JDK-8251341: Minimal Java specification change
+ - JDK-8251478: Backport TLSv1.3 regression tests to JDK8u
+ - JDK-8251546: 8u backport of JDK-8194298 breaks AIX and Solaris builds
+ - JDK-8252084: Minimal VM fails to bootcycle: undefined symbol: AgeTableTracer::is_tenuring_distribution_event_enabled
+ - JDK-8252573: 8u: Windows build failed after 8222079 backport
+ - JDK-8252886: [TESTBUG] sun/security/ec/TestEC.java : Compilation failed
+ - JDK-8254673: Call to JvmtiExport::post_vm_start() was removed by the fix for JDK-8249158
+ - JDK-8254937: Revert JDK-8148854 for 8u272
+
+Notes on individual issues:
+===========================
+
+core-svc/java.lang.management:
+
+JDK-8236876: OperatingSystemMXBean Methods Inside a Container Return Container Specific Data
+============================================================================================
+When executing in a container, or other virtualized operating
+environment, the following `OperatingSystemMXBean` methods in this
+release return container specific information, if
+available. Otherwise, they return host specific data:
+
+* getFreePhysicalMemorySize()
+* getTotalPhysicalMemorySize()
+* getFreeSwapSpaceSize()
+* getTotalSwapSpaceSize()
+* getSystemCpuLoad()
+
+security-libs/java.security:
+
+JDK-8250756: Added Entrust Root Certification Authority - G4 certificate
+========================================================================
+The Entrust root certificate has been added to the cacerts truststore:
+
+Alias Name: entrustrootcag4
+Distinguished Name: CN=Entrust Root Certification Authority - G4, OU="(c) 2015 Entrust, Inc. - for authorized use only", OU=See www.entrust.net/legal-terms, O="Entrust, Inc.", C=US
+
+JDK-8250860: Added 3 SSL Corporation Root CA Certificates
+=========================================================
+The following root certificates have been added to the cacerts truststore for the SSL Corporation:
+
+Alias Name: sslrootrsaca
+Distinguished Name: CN=SSL.com Root Certification Authority RSA, O=SSL Corporation, L=Houston, ST=Texas, C=US
+
+Alias Name: sslrootevrsaca
+Distinguished Name: CN=SSL.com EV Root Certification Authority RSA R2, O=SSL Corporation, L=Houston, ST=Texas, C=US
+
+Alias Name: sslrooteccca
+Distinguished Name: CN=SSL.com Root Certification Authority ECC, O=SSL Corporation, L=Houston, ST=Texas, C=US
+
+security-libs/javax.crypto:pkcs11:
+
+JDK-8221441: SunPKCS11 Provider Upgraded with Support for PKCS#11 v2.40
+=======================================================================
+The SunPKCS11 provider has been updated with support for PKCS#11
+v2.40. This version adds support for more algorithms such as the
+AES/GCM/NoPadding cipher, DSA signatures using SHA-2 family of message
+digests, and RSASSA-PSS signatures when the corresponding PKCS11
+mechanisms are supported by the underlying PKCS11 library.
+
+security-libs/javax.security:
+
+JDK-8242059: Support for canonicalize in krb5.conf
+==================================================
+The 'canonicalize' flag in the [krb5.conf file][0] is now supported by
+the JDK Kerberos implementation. When set to *true*, RFC 6806 [1] name
+canonicalization is requested by clients in TGT requests to KDC
+services (AS protocol). Otherwise, and by default, it is not
+requested.
+
+The new default behavior is different from previous releases where
+name canonicalization was always requested by clients in TGT requests
+to KDC services (provided that support for RFC 6806[1] was not
+explicitly disabled with the *sun.security.krb5.disableReferrals*
+system or security properties).
+
+[0]: https://web.mit.edu/kerberos/krb5-devel/doc/admin/conf_files/krb5_conf.html
+[1]: https://tools.ietf.org/html/rfc6806
+
+security-libs/javax.xml.crypto:
+
+JDK-8202891: Updated xmldsig Implementation to Apache Santuario 2.1.1
+=====================================================================
+The XMLDSig provider implementation in the `java.xml.crypto` module has been updated to version 2.1.1 of Apache Santuario.
+
+New features include:
+
+1. Support for the SHA-224 and SHA-3 DigestMethod algorithms specified
+in RFC 6931.
+2. Support for the HMAC-SHA224, RSA-SHA224, ECDSA-SHA224, and
+RSASSA-PSS family of SignatureMethod algorithms specified in RFC 6931.
+
+JDK-8238185: New OpenJDK-specific JDK 8 Updates System Property to fallback to legacy Base64 Encoding format
+============================================================================================================
+The upgrade to the Apache Santuario libraries (see above) introduced
+an issue where XML signature using Base64 encoding resulted in
+appending `
` or `
` to the encoded output. This behavioural
+change was made in the Apache Santuario codebase to comply with RFC
+2045. The Santuario team has adopted a position of keeping their
+libraries compliant with RFC 2045.
+
+Earlier versions of OpenJDK 8 using the legacy encoder returns encoded
+data in a format without `
` or `
`.
+
+Therefore a new system property, specific to the 8 update stream,
+`com.sun.org.apache.xml.internal.security.lineFeedOnly` is made
+available to fall back to the legacy Base64 encoded format.
+
+Users can set this flag in one of two ways:
+
+1. -Dcom.sun.org.apache.xml.internal.security.lineFeedOnly=true
+
+2. System.setProperty("com.sun.org.apache.xml.internal.security.lineFeedOnly", "true")
+
+This new system property is disabled by default. It has no effect on
+default behaviour nor when
+`com.sun.org.apache.xml.internal.security.ignoreLineBreaks` property
+is set.
+
+Later JDK family versions will only support the recommended property:
+
+`com.sun.org.apache.xml.internal.security.ignoreLineBreaks`
+
+JDK-8254177: US/Pacific-New Zone name removed as part of tzdata2020b
+====================================================================
+Following JDK's update to tzdata2020b, the long-obsolete files
+pacificnew and systemv have been removed. As a result, the
+"US/Pacific-New" zone name declared in the pacificnew data file is no
+longer available for use.
+
+Information regarding the update can be viewed at
+https://mm.icann.org/pipermail/tz-announce/2020-October/000059.html
+
New in release OpenJDK 8u265 (2020-07-27):
===========================================
Live versions of these release notes can be found at:
diff --git a/SOURCES/jdk8062808-pr3548-turn_on_the_wreturn_type_warning.patch b/SOURCES/jdk8062808-pr3548-turn_on_the_wreturn_type_warning.patch
index e91abd3..1010b73 100644
--- a/SOURCES/jdk8062808-pr3548-turn_on_the_wreturn_type_warning.patch
+++ b/SOURCES/jdk8062808-pr3548-turn_on_the_wreturn_type_warning.patch
@@ -132,7 +132,7 @@ diff --git openjdk.orig/hotspot/src/share/vm/memory/metaspaceShared.hpp openjdk/
diff --git openjdk.orig/hotspot/src/share/vm/oops/constantPool.hpp openjdk/hotspot/src/share/vm/oops/constantPool.hpp
--- openjdk.orig/hotspot/src/share/vm/oops/constantPool.hpp
+++ openjdk/hotspot/src/share/vm/oops/constantPool.hpp
-@@ -352,7 +352,7 @@
+@@ -353,7 +353,7 @@
Klass* klass_at(int which, TRAPS) {
constantPoolHandle h_this(THREAD, this);
@@ -140,7 +140,7 @@ diff --git openjdk.orig/hotspot/src/share/vm/oops/constantPool.hpp openjdk/hotsp
+ return klass_at_impl(h_this, which, THREAD);
}
- Symbol* klass_name_at(int which); // Returns the name, w/o resolving.
+ Symbol* klass_name_at(int which) const; // Returns the name, w/o resolving.
diff --git openjdk.orig/hotspot/src/share/vm/prims/jvm.cpp openjdk/hotspot/src/share/vm/prims/jvm.cpp
--- openjdk.orig/hotspot/src/share/vm/prims/jvm.cpp
+++ openjdk/hotspot/src/share/vm/prims/jvm.cpp
diff --git a/SOURCES/jdk8154313-generated_javadoc_scattered_all_over_the_place.patch b/SOURCES/jdk8154313-generated_javadoc_scattered_all_over_the_place.patch
deleted file mode 100644
index 3a43c5f..0000000
--- a/SOURCES/jdk8154313-generated_javadoc_scattered_all_over_the_place.patch
+++ /dev/null
@@ -1,68 +0,0 @@
---- jdk8/make/Javadoc.gmk 2016-04-01 16:53:41.069477682 +0200
-+++ jdk8/make/Javadoc.gmk 2016-04-01 16:53:41.014477059 +0200
-@@ -220,6 +220,12 @@
- JRE_API_DOCSDIR = $(DOCSDIR)/jre/api
- PLATFORM_DOCSDIR = $(DOCSDIR)/platform
-
-+
-+JAVADOC_ARCHIVE_NAME := jdk-$(FULL_VERSION)-docs.zip
-+JAVADOC_ARCHIVE_ASSEMBLY_DIR := $(DOCSTMPDIR)/zip-docs
-+JAVADOC_ARCHIVE_DIR := $(OUTPUT_ROOT)/bundles
-+JAVADOC_ARCHIVE := $(JAVADOC_ARCHIVE_DIR)/$(JAVADOC_ARCHIVE_NAME)
-+
- # The non-core api javadocs need to be able to access the root of the core
- # api directory, so for jdk/api or jre/api to get to the core api/
- # directory we would use this:
-@@ -319,6 +325,37 @@
- all: docs
- docs: coredocs otherdocs
-
-+#
-+# Optional target which bundles all generated javadocs into a zip
-+# archive. The dependency on docs is handled in Main.gmk. Incremental
-+# building of docs is currently broken so if you invoke zip-docs after
-+# docs, the docs are always rebuilt.
-+#
-+
-+zip-docs: $(JAVADOC_ARCHIVE)
-+
-+#
-+# Add the core docs as prerequisite to the archive to trigger a rebuild
-+# if the core docs were rebuilt. Ideally any doc rebuild should trigger
-+# this, but the way prerequisites are currently setup in this file, that
-+# is hard to achieve.
-+#
-+
-+$(JAVADOC_ARCHIVE): $(COREAPI_INDEX_FILE)
-+ @$(ECHO) "Compressing javadoc to single $(JAVADOC_ARCHIVE_NAME)" ;
-+ $(MKDIR) -p $(JAVADOC_ARCHIVE_DIR) ;
-+ $(RM) -r $(JAVADOC_ARCHIVE_ASSEMBLY_DIR) ;
-+ $(MKDIR) -p $(JAVADOC_ARCHIVE_ASSEMBLY_DIR);
-+ all_roots=`$(FIND) $(DOCSDIR) | $(GREP) index.html `; \
-+ pushd $(JAVADOC_ARCHIVE_ASSEMBLY_DIR); \
-+ for index_file in $${all_roots} ; do \
-+ target_dir=`dirname $${index_file}`; \
-+ name=`$(ECHO) $${target_dir} | $(SED) "s;/spec;;" | $(SED) "s;.*/;;"`; \
-+ $(LN) -s $${target_dir} $${name}; \
-+ done; \
-+ $(ZIP) -q -r $(JAVADOC_ARCHIVE) * ; \
-+ popd ;
-+
- #################################################################
- # Production Targets -- USE THESE TARGETS WHEN:
- # a) You're generating docs outside of release engineering's
---- jdk8/make/Main.gmk 2016-04-01 16:53:41.311480424 +0200
-+++ jdk8/make/Main.gmk 2016-04-01 16:53:41.266479914 +0200
-@@ -165,6 +165,12 @@
- @($(CD) $(SRC_ROOT)/make && $(BUILD_LOG_WRAPPER) $(MAKE) $(MAKE_ARGS) -f Javadoc.gmk docs)
- @$(call TargetExit)
-
-+zip-docs: docs zip-docs-only
-+zip-docs-only: start-make
-+ @$(call TargetEnter)
-+ @($(CD) $(SRC_ROOT)/make && $(BUILD_LOG_WRAPPER) $(MAKE) $(MAKE_ARGS) -f Javadoc.gmk zip-docs)
-+ @$(call TargetExit)
-+
- sign-jars: jdk sign-jars-only
- sign-jars-only: start-make
- @$(call TargetEnter)
diff --git a/SOURCES/jdk8165996-pr3506-rh1760437-nss_sqlite_db.patch b/SOURCES/jdk8165996-pr3506-rh1760437-nss_sqlite_db.patch
deleted file mode 100644
index d7afbc6..0000000
--- a/SOURCES/jdk8165996-pr3506-rh1760437-nss_sqlite_db.patch
+++ /dev/null
@@ -1,257 +0,0 @@
-# HG changeset patch
-# User weijun
-# Date 1513099798 -28800
-# Wed Dec 13 01:29:58 2017 +0800
-# Node ID aa8f2e25f003feddf362892b2820fa2839c854b6
-# Parent 9ebb70cb99a472b5fee9ac08240b7979468c2fa5
-8165996: PKCS11 using NSS throws an error regarding secmod.db when NSS uses sqlite
-Reviewed-by: weijun
-Contributed-by: Martin Balao
-
-diff --git openjdk.orig/jdk/src/share/classes/sun/security/pkcs11/Secmod.java openjdk/jdk/src/share/classes/sun/security/pkcs11/Secmod.java
---- openjdk.orig/jdk/src/share/classes/sun/security/pkcs11/Secmod.java
-+++ openjdk/jdk/src/share/classes/sun/security/pkcs11/Secmod.java
-@@ -196,13 +196,23 @@
- }
-
- if (configDir != null) {
-- File configBase = new File(configDir);
-- if (configBase.isDirectory() == false ) {
-- throw new IOException("configDir must be a directory: " + configDir);
-+ String configDirPath = null;
-+ String sqlPrefix = "sql:/";
-+ if (!configDir.startsWith(sqlPrefix)) {
-+ configDirPath = configDir;
-+ } else {
-+ StringBuilder configDirPathSB = new StringBuilder(configDir);
-+ configDirPath = configDirPathSB.substring(sqlPrefix.length());
- }
-- File secmodFile = new File(configBase, "secmod.db");
-- if (secmodFile.isFile() == false) {
-- throw new FileNotFoundException(secmodFile.getPath());
-+ File configBase = new File(configDirPath);
-+ if (configBase.isDirectory() == false ) {
-+ throw new IOException("configDir must be a directory: " + configDirPath);
-+ }
-+ if (!configDir.startsWith(sqlPrefix)) {
-+ File secmodFile = new File(configBase, "secmod.db");
-+ if (secmodFile.isFile() == false) {
-+ throw new FileNotFoundException(secmodFile.getPath());
-+ }
- }
- }
-
-diff --git openjdk.orig/jdk/test/sun/security/pkcs11/Secmod/README-SQLITE openjdk/jdk/test/sun/security/pkcs11/Secmod/README-SQLITE
-new file mode 100644
---- /dev/null
-+++ openjdk/jdk/test/sun/security/pkcs11/Secmod/README-SQLITE
-@@ -0,0 +1,8 @@
-+// How to create key4.db and cert9.db
-+cd
-+echo "" > 1
-+echo "test12" > 2
-+modutil -create -force -dbdir sql:/$(pwd)
-+modutil -list "NSS Internal PKCS #11 Module" -dbdir sql:/$(pwd)
-+modutil -changepw "NSS Certificate DB" -force -dbdir sql:/$(pwd) -pwfile $(pwd)/1 -newpwfile $(pwd)/2
-+
-diff --git openjdk.orig/jdk/test/sun/security/pkcs11/Secmod/TestNssDbSqlite.java openjdk/jdk/test/sun/security/pkcs11/Secmod/TestNssDbSqlite.java
-new file mode 100644
---- /dev/null
-+++ openjdk/jdk/test/sun/security/pkcs11/Secmod/TestNssDbSqlite.java
-@@ -0,0 +1,134 @@
-+/*
-+ * Copyright (c) 2017, Red Hat, Inc. and/or its affiliates.
-+ *
-+ * 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 8165996
-+ * @summary Test NSS DB Sqlite
-+ * @library ../
-+ * @modules java.base/sun.security.rsa
-+ * java.base/sun.security.provider
-+ * java.base/sun.security.jca
-+ * java.base/sun.security.tools.keytool
-+ * java.base/sun.security.x509
-+ * java.base/com.sun.crypto.provider
-+ * jdk.crypto.cryptoki/sun.security.pkcs11:+open
-+ * @run main/othervm/timeout=120 TestNssDbSqlite
-+ * @author Martin Balao (mbalao@redhat.com)
-+ */
-+
-+import java.security.PrivateKey;
-+import java.security.cert.Certificate;
-+import java.security.KeyStore;
-+import java.security.Provider;
-+import java.security.Signature;
-+
-+import sun.security.rsa.SunRsaSign;
-+import sun.security.jca.ProviderList;
-+import sun.security.jca.Providers;
-+import sun.security.tools.keytool.CertAndKeyGen;
-+import sun.security.x509.X500Name;
-+
-+public final class TestNssDbSqlite extends SecmodTest {
-+
-+ private static final boolean enableDebug = true;
-+
-+ private static Provider sunPKCS11NSSProvider;
-+ private static Provider sunRsaSignProvider;
-+ private static Provider sunJCEProvider;
-+ private static KeyStore ks;
-+ private static char[] passphrase = "test12".toCharArray();
-+ private static PrivateKey privateKey;
-+ private static Certificate certificate;
-+
-+ public static void main(String[] args) throws Exception {
-+
-+ initialize();
-+
-+ if (enableDebug) {
-+ System.out.println("SunPKCS11 provider: " +
-+ sunPKCS11NSSProvider);
-+ }
-+
-+ testRetrieveKeysFromKeystore();
-+
-+ System.out.println("Test PASS - OK");
-+ }
-+
-+ private static void testRetrieveKeysFromKeystore() throws Exception {
-+
-+ String plainText = "known plain text";
-+
-+ ks.setKeyEntry("root_ca_1", privateKey, passphrase,
-+ new Certificate[]{certificate});
-+ PrivateKey k1 = (PrivateKey) ks.getKey("root_ca_1", passphrase);
-+
-+ Signature sS = Signature.getInstance(
-+ "SHA256withRSA", sunPKCS11NSSProvider);
-+ sS.initSign(k1);
-+ sS.update(plainText.getBytes());
-+ byte[] generatedSignature = sS.sign();
-+
-+ if (enableDebug) {
-+ System.out.println("Generated signature: ");
-+ for (byte b : generatedSignature) {
-+ System.out.printf("0x%02x, ", (int)(b) & 0xFF);
-+ }
-+ System.out.println("");
-+ }
-+
-+ Signature sV = Signature.getInstance("SHA256withRSA", sunRsaSignProvider);
-+ sV.initVerify(certificate);
-+ sV.update(plainText.getBytes());
-+ if(!sV.verify(generatedSignature)){
-+ throw new Exception("Couldn't verify signature");
-+ }
-+ }
-+
-+ private static void initialize() throws Exception {
-+ initializeProvider();
-+ }
-+
-+ private static void initializeProvider () throws Exception {
-+ useSqlite(true);
-+ if (!initSecmod()) {
-+ return;
-+ }
-+
-+ sunPKCS11NSSProvider = getSunPKCS11(BASE + SEP + "nss-sqlite.cfg");
-+ sunJCEProvider = new com.sun.crypto.provider.SunJCE();
-+ sunRsaSignProvider = new SunRsaSign();
-+ Providers.setProviderList(ProviderList.newList(
-+ sunJCEProvider, sunPKCS11NSSProvider,
-+ new sun.security.provider.Sun(), sunRsaSignProvider));
-+
-+ ks = KeyStore.getInstance("PKCS11-NSS-Sqlite", sunPKCS11NSSProvider);
-+ ks.load(null, passphrase);
-+
-+ CertAndKeyGen gen = new CertAndKeyGen("RSA", "SHA256withRSA");
-+ gen.generate(2048);
-+ privateKey = gen.getPrivateKey();
-+ certificate = gen.getSelfCertificate(new X500Name("CN=Me"), 365);
-+ }
-+}
-diff --git openjdk.orig/jdk/test/sun/security/pkcs11/Secmod/nss-sqlite.cfg openjdk/jdk/test/sun/security/pkcs11/Secmod/nss-sqlite.cfg
-new file mode 100644
---- /dev/null
-+++ openjdk/jdk/test/sun/security/pkcs11/Secmod/nss-sqlite.cfg
-@@ -0,0 +1,13 @@
-+# config file for secmod KeyStore access using sqlite backend
-+
-+name = NSS-Sqlite
-+
-+nssLibraryDirectory = ${pkcs11test.nss.libdir}
-+
-+nssDbMode = readWrite
-+
-+nssModule = keystore
-+
-+nssSecmodDirectory = ${pkcs11test.nss.db}
-+
-+attributes = compatibility
-diff --git openjdk.orig/jdk/test/sun/security/pkcs11/SecmodTest.java openjdk/jdk/test/sun/security/pkcs11/SecmodTest.java
---- openjdk.orig/jdk/test/sun/security/pkcs11/SecmodTest.java
-+++ openjdk/jdk/test/sun/security/pkcs11/SecmodTest.java
-@@ -34,6 +34,11 @@
- static String DBDIR;
- static char[] password = "test12".toCharArray();
- static String keyAlias = "mykey";
-+ static boolean useSqlite = false;
-+
-+ static void useSqlite(boolean b) {
-+ useSqlite = b;
-+ }
-
- static boolean initSecmod() throws Exception {
- useNSS();
-@@ -49,14 +54,24 @@
- safeReload(LIBPATH + System.mapLibraryName("nssckbi"));
-
- DBDIR = System.getProperty("test.classes", ".") + SEP + "tmpdb";
-- System.setProperty("pkcs11test.nss.db", DBDIR);
-+ if (useSqlite) {
-+ System.setProperty("pkcs11test.nss.db", "sql:/" + DBDIR);
-+ } else {
-+ System.setProperty("pkcs11test.nss.db", DBDIR);
-+ }
- File dbdirFile = new File(DBDIR);
- if (dbdirFile.exists() == false) {
- dbdirFile.mkdir();
- }
-- copyFile("secmod.db", BASE, DBDIR);
-- copyFile("key3.db", BASE, DBDIR);
-- copyFile("cert8.db", BASE, DBDIR);
-+
-+ if (useSqlite) {
-+ copyFile("key4.db", BASE, DBDIR);
-+ copyFile("cert9.db", BASE, DBDIR);
-+ } else {
-+ copyFile("secmod.db", BASE, DBDIR);
-+ copyFile("key3.db", BASE, DBDIR);
-+ copyFile("cert8.db", BASE, DBDIR);
-+ }
- return true;
- }
-
diff --git a/SOURCES/jdk8203030-zero_s390_31_bit_size_t_type_conflicts_in_shared_code.patch b/SOURCES/jdk8203030-zero_s390_31_bit_size_t_type_conflicts_in_shared_code.patch
index 843158e..53bceec 100644
--- a/SOURCES/jdk8203030-zero_s390_31_bit_size_t_type_conflicts_in_shared_code.patch
+++ b/SOURCES/jdk8203030-zero_s390_31_bit_size_t_type_conflicts_in_shared_code.patch
@@ -319,3 +319,25 @@ diff --git openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp openjdk/hotsp
if (PrintGCDetails && Verbose) {
// Too early to use gclog_or_tty
tty->print_cr("CMS ergo set OldSize: " SIZE_FORMAT, OldSize);
+diff --git openjdk.orig/hotspot/src/share/vm/gc_implementation/g1/g1ConcurrentMarkObjArrayProcessor.cpp openjdk/hotspot/src/share/vm/gc_implementation/g1/g1ConcurrentMarkObjArrayProcessor.cpp
+--- openjdk.orig/hotspot/src/share/vm/gc_implementation/g1/g1ConcurrentMarkObjArrayProcessor.cpp
++++ openjdk/hotspot/src/share/vm/gc_implementation/g1/g1ConcurrentMarkObjArrayProcessor.cpp
+@@ -41,7 +41,7 @@
+ }
+
+ size_t G1CMObjArrayProcessor::process_array_slice(objArrayOop obj, HeapWord* start_from, size_t remaining) {
+- size_t words_to_scan = MIN2(remaining, ObjArrayMarkingStride);
++ size_t words_to_scan = MIN2(remaining, (size_t) ObjArrayMarkingStride);
+
+ if (remaining > ObjArrayMarkingStride) {
+ push_array_slice(start_from + ObjArrayMarkingStride);
+diff --git openjdk.orig/hotspot/src/share/vm/gc_implementation/shenandoah/shenandoahUtils.cpp openjdk/hotspot/src/share/vm/gc_implementation/shenandoah/shenandoahUtils.cpp
+--- openjdk.orig/hotspot/src/share/vm/gc_implementation/shenandoah/shenandoahUtils.cpp
++++ openjdk/hotspot/src/share/vm/gc_implementation/shenandoah/shenandoahUtils.cpp
+@@ -150,5 +150,5 @@
+ return value;
+ }
+
+- return (size_t)1 << (log2_intptr(value) + 1);
++ return (size_t)1 << (log2_intptr((uintptr_t) value) + 1);
+ }
diff --git a/SOURCES/jdk8215727-rh1889532-restore_jfr_thread_sampler_loop.patch b/SOURCES/jdk8215727-rh1889532-restore_jfr_thread_sampler_loop.patch
new file mode 100644
index 0000000..cf05600
--- /dev/null
+++ b/SOURCES/jdk8215727-rh1889532-restore_jfr_thread_sampler_loop.patch
@@ -0,0 +1,68 @@
+# HG changeset patch
+# User mgronlun
+# Date 1545407800 -3600
+# Fri Dec 21 16:56:40 2018 +0100
+# Node ID 321a84a5e5b88cbb88f72aa98645affc57689fb0
+# Parent 002b9c947f0f3d53aebccffb922460701555b456
+8215727: Restore JFR thread sampler loop to old / previous behavior
+Reviewed-by: egahlin, mgronlun
+Contributed-by: milan.mimica@gmail.com
+
+diff --git openjdk.orig/hotspot/src/share/vm/jfr/periodic/sampling/jfrThreadSampler.cpp openjdk/hotspot/src/share/vm/jfr/periodic/sampling/jfrThreadSampler.cpp
+--- openjdk.orig/hotspot/src/share/vm/jfr/periodic/sampling/jfrThreadSampler.cpp
++++ openjdk/hotspot/src/share/vm/jfr/periodic/sampling/jfrThreadSampler.cpp
+@@ -285,13 +285,13 @@
+
+ void JfrThreadSampleClosure::commit_events(JfrSampleType type) {
+ if (JAVA_SAMPLE == type) {
+- assert(_added_java <= MAX_NR_OF_JAVA_SAMPLES, "invariant");
++ assert(_added_java > 0 && _added_java <= MAX_NR_OF_JAVA_SAMPLES, "invariant");
+ for (uint i = 0; i < _added_java; ++i) {
+ _events[i].commit();
+ }
+ } else {
+ assert(NATIVE_SAMPLE == type, "invariant");
+- assert(_added_native <= MAX_NR_OF_NATIVE_SAMPLES, "invariant");
++ assert(_added_native > 0 && _added_native <= MAX_NR_OF_NATIVE_SAMPLES, "invariant");
+ for (uint i = 0; i < _added_native; ++i) {
+ _events_native[i].commit();
+ }
+@@ -537,7 +537,7 @@
+ JfrThreadSampleClosure sample_task(samples, samples_native);
+
+ const uint sample_limit = JAVA_SAMPLE == type ? MAX_NR_OF_JAVA_SAMPLES : MAX_NR_OF_NATIVE_SAMPLES;
+- uint num_sample_attempts = 0;
++ uint num_samples = 0;
+ JavaThread* start = NULL;
+
+ {
+@@ -555,7 +555,7 @@
+ JavaThread* current = Threads::includes(*last_thread) ? *last_thread : NULL;
+ JavaThread* start = NULL;
+
+- while (num_sample_attempts < sample_limit) {
++ while (num_samples < sample_limit) {
+ current = next_thread(threads_list, index, start, current);
+ if (current == NULL) {
+ break;
+@@ -566,8 +566,9 @@
+ if (current->is_Compiler_thread()) {
+ continue;
+ }
+- sample_task.do_sample_thread(current, _frames, _max_frames, type);
+- num_sample_attempts++;
++ if (sample_task.do_sample_thread(current, _frames, _max_frames, type)) {
++ num_samples++;
++ }
+ }
+ *last_thread = current; // remember the thread we last attempted to sample
+ FREE_C_HEAP_ARRAY(JavaThread *, threads_list, mtInternal);
+@@ -576,7 +577,7 @@
+ if (LogJFR && Verbose) tty->print_cr("JFR thread sampling done in %3.7f secs with %d java %d native samples",
+ sample_time.seconds(), sample_task.java_entries(), sample_task.native_entries());
+ }
+- if (num_sample_attempts > 0) {
++ if (num_samples > 0) {
+ sample_task.commit_events(type);
+ }
+ }
diff --git a/SOURCES/jdk8223482-rh1860965-tls_offers_unsupported_ciphers.patch b/SOURCES/jdk8223482-rh1860965-tls_offers_unsupported_ciphers.patch
deleted file mode 100644
index e5f54c7..0000000
--- a/SOURCES/jdk8223482-rh1860965-tls_offers_unsupported_ciphers.patch
+++ /dev/null
@@ -1,128 +0,0 @@
-# HG changeset patch
-# User mbalao
-# Date 1559080898 10800
-# Tue May 28 19:01:38 2019 -0300
-# Node ID 3ba9c532128b1feccf59ab8ce812b1fce2b6f681
-# Parent 056a435ab5447c33aab61dd9179a67781e99c35d
-8223482: Unsupported ciphersuites may be offered by a TLS client
-Reviewed-by: andrew
-
-diff --git openjdk.orig/jdk/src/share/classes/sun/security/ssl/CipherSuite.java openjdk/jdk/src/share/classes/sun/security/ssl/CipherSuite.java
---- openjdk.orig/jdk/src/share/classes/sun/security/ssl/CipherSuite.java
-+++ openjdk/jdk/src/share/classes/sun/security/ssl/CipherSuite.java
-@@ -34,6 +34,7 @@
- import java.security.KeyManagementException;
-
- import javax.crypto.Cipher;
-+import javax.crypto.NoSuchPaddingException;
- import javax.crypto.SecretKey;
- import javax.crypto.spec.IvParameterSpec;
- import javax.crypto.spec.SecretKeySpec;
-@@ -69,6 +70,8 @@
- */
- final class CipherSuite implements Comparable {
-
-+ private static final Debug debug = Debug.getInstance("ssl");
-+
- // minimum priority for supported CipherSuites
- final static int SUPPORTED_SUITES_PRIORITY = 1;
-
-@@ -451,6 +454,22 @@
- }
- }
-
-+ private static boolean isTransformationAvailable(String transformation) {
-+ if (transformation.equals("NULL")) {
-+ return true;
-+ }
-+ try {
-+ Cipher.getInstance(transformation);
-+ return true;
-+ } catch (NoSuchAlgorithmException | NoSuchPaddingException e) {
-+ if (debug != null && Debug.isOn("ssl")) {
-+ System.out.println("Transformation " + transformation + " is" +
-+ " not available.");
-+ }
-+ }
-+ return false;
-+ }
-+
- BulkCipher(String transformation, CipherType cipherType, int keySize,
- int expandedKeySize, int ivSize,
- int fixedIvSize, boolean allowed) {
-@@ -470,14 +489,10 @@
-
- // availability of this bulk cipher
- //
-- // Currently all supported ciphers except AES are always available
-- // via the JSSE internal implementations. We also assume AES/128 of
-- // CBC mode is always available since it is shipped with the SunJCE
-- // provider. However, AES/256 is unavailable when the default JCE
-- // policy jurisdiction files are installed because of key length
-- // restrictions.
-- this.isAvailable =
-- allowed ? isUnlimited(keySize, transformation) : false;
-+ // AES/256 is unavailable when the default JCE policy jurisdiction files
-+ // are installed because of key length restrictions.
-+ this.isAvailable = allowed && isUnlimited(keySize, transformation) &&
-+ isTransformationAvailable(transformation);
- }
-
- BulkCipher(String transformation, CipherType cipherType, int keySize,
-@@ -497,14 +512,11 @@
-
- // availability of this bulk cipher
- //
-- // Currently all supported ciphers except AES are always available
-- // via the JSSE internal implementations. We also assume AES/128 of
-- // CBC mode is always available since it is shipped with the SunJCE
-- // provider. However, AES/256 is unavailable when the default JCE
-- // policy jurisdiction files are installed because of key length
-- // restrictions.
-+ // AES/256 is unavailable when the default JCE policy jurisdiction files
-+ // are installed because of key length restrictions.
- this.isAvailable =
-- allowed ? isUnlimited(keySize, transformation) : false;
-+ allowed ? isUnlimited(keySize, transformation) &&
-+ isTransformationAvailable(transformation) : false;
- }
-
- /**
-diff --git openjdk.orig/jdk/src/share/classes/sun/security/ssl/SSLContextImpl.java openjdk/jdk/src/share/classes/sun/security/ssl/SSLContextImpl.java
---- openjdk.orig/jdk/src/share/classes/sun/security/ssl/SSLContextImpl.java
-+++ openjdk/jdk/src/share/classes/sun/security/ssl/SSLContextImpl.java
-@@ -339,7 +339,8 @@
-
- if (suite.isAvailable() &&
- suite.obsoleted > protocols.min.v &&
-- suite.supported <= protocols.max.v) {
-+ suite.supported <= protocols.max.v &&
-+ suite.cipher.isAvailable()) {
- if (SSLAlgorithmConstraints.DEFAULT.permits(
- EnumSet.of(CryptoPrimitive.KEY_AGREEMENT),
- suite.name, null)) {
-diff --git openjdk.orig/jdk/test/sun/security/pkcs11/fips/TestTLS12.java openjdk/jdk/test/sun/security/pkcs11/fips/TestTLS12.java
---- openjdk.orig/jdk/test/sun/security/pkcs11/fips/TestTLS12.java
-+++ openjdk/jdk/test/sun/security/pkcs11/fips/TestTLS12.java
-@@ -372,15 +372,20 @@
-
- private static SSLEngine[][] getSSLEnginesToTest() throws Exception {
- SSLEngine[][] enginesToTest = new SSLEngine[2][2];
-+ // TLS_RSA_WITH_AES_128_GCM_SHA256 ciphersuite is available but
-+ // must not be chosen for the TLS connection if not supported.
-+ // See JDK-8222937.
- String[][] preferredSuites = new String[][]{ new String[] {
-+ "TLS_RSA_WITH_AES_128_GCM_SHA256",
- "TLS_RSA_WITH_AES_128_CBC_SHA256"
- }, new String[] {
-+ "TLS_RSA_WITH_AES_128_GCM_SHA256",
- "TLS_DHE_RSA_WITH_AES_128_CBC_SHA256"
- }};
- for (int i = 0; i < enginesToTest.length; i++) {
- enginesToTest[i][0] = createSSLEngine(true);
- enginesToTest[i][1] = createSSLEngine(false);
-- enginesToTest[i][0].setEnabledCipherSuites(preferredSuites[i]);
-+ // All CipherSuites enabled for the client.
- enginesToTest[i][1].setEnabledCipherSuites(preferredSuites[i]);
- }
- return enginesToTest;
diff --git a/SOURCES/jdk8236512-rh1889414-pkcs11_incorrrect_session_closure.patch b/SOURCES/jdk8236512-rh1889414-pkcs11_incorrrect_session_closure.patch
new file mode 100644
index 0000000..f99fb13
--- /dev/null
+++ b/SOURCES/jdk8236512-rh1889414-pkcs11_incorrrect_session_closure.patch
@@ -0,0 +1,467 @@
+# HG changeset patch
+# User valeriep
+# Date 1581468987 0
+# Wed Feb 12 00:56:27 2020 +0000
+# Node ID e47d22d82b0464720ccb7641e290080972b6ce88
+# Parent 5c41dc4c48f85e5a1e1ce6e3836b54674f273367
+8236512: PKCS11 Connection closed after Cipher.doFinal and NoPadding
+Summary: Removed killSession() calls in certain impl classes when cancelling operations
+Reviewed-by: xuelei
+
+--- openjdk.orig/jdk/src/share/classes/sun/security/pkcs11/P11AEADCipher.java 2020-10-08 06:03:20.018533399 +0100
++++ openjdk/jdk/src/share/classes/sun/security/pkcs11/P11AEADCipher.java 2020-10-08 06:03:19.908532219 +0100
+@@ -1,4 +1,5 @@
+-/* Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
++/*
++ * Copyright (c) 2019, 2020, 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
+@@ -331,25 +332,25 @@
+ }
+
+ private void cancelOperation() {
++ // cancel operation by finishing it; avoid killSession as some
++ // hardware vendors may require re-login
++ int bufLen = doFinalLength(0);
++ byte[] buffer = new byte[bufLen];
++ byte[] in = dataBuffer.toByteArray();
++ int inLen = in.length;
+ try {
+- if (session.hasObjects() == false) {
+- session = token.killSession(session);
+- return;
++ if (encrypt) {
++ token.p11.C_Encrypt(session.id(), 0, in, 0, inLen,
++ 0, buffer, 0, bufLen);
+ } else {
+- // cancel operation by finishing it
+- int bufLen = doFinalLength(0);
+- byte[] buffer = new byte[bufLen];
+-
+- if (encrypt) {
+- token.p11.C_Encrypt(session.id(), 0, buffer, 0, bufLen,
+- 0, buffer, 0, bufLen);
+- } else {
+- token.p11.C_Decrypt(session.id(), 0, buffer, 0, bufLen,
+- 0, buffer, 0, bufLen);
+- }
++ token.p11.C_Decrypt(session.id(), 0, in, 0, inLen,
++ 0, buffer, 0, bufLen);
+ }
+ } catch (PKCS11Exception e) {
+- throw new ProviderException("Cancel failed", e);
++ if (encrypt) {
++ throw new ProviderException("Cancel failed", e);
++ }
++ // ignore failure for decryption
+ }
+ }
+
+@@ -432,18 +433,21 @@
+ if (!initialized) {
+ return;
+ }
++ initialized = false;
++
+ try {
+ if (session == null) {
+ return;
+ }
++
+ if (doCancel && token.explicitCancel) {
+ cancelOperation();
+ }
+ } finally {
+ p11Key.releaseKeyID();
+ session = token.releaseSession(session);
++ dataBuffer.reset();
+ }
+- initialized = false;
+ }
+
+ // see JCE spec
+--- openjdk.orig/jdk/src/share/classes/sun/security/pkcs11/P11Cipher.java 2020-10-08 06:03:20.450538032 +0100
++++ openjdk/jdk/src/share/classes/sun/security/pkcs11/P11Cipher.java 2020-10-08 06:03:20.330536745 +0100
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2003, 2020, 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
+@@ -409,10 +409,12 @@
+ return;
+ }
+ initialized = false;
++
+ try {
+ if (session == null) {
+ return;
+ }
++
+ if (doCancel && token.explicitCancel) {
+ cancelOperation();
+ }
+@@ -426,22 +428,21 @@
+
+ private void cancelOperation() {
+ token.ensureValid();
+- if (session.hasObjects() == false) {
+- session = token.killSession(session);
+- return;
+- } else {
+- try {
+- // cancel operation by finishing it
+- int bufLen = doFinalLength(0);
+- byte[] buffer = new byte[bufLen];
+- if (encrypt) {
+- token.p11.C_EncryptFinal(session.id(), 0, buffer, 0, bufLen);
+- } else {
+- token.p11.C_DecryptFinal(session.id(), 0, buffer, 0, bufLen);
+- }
+- } catch (PKCS11Exception e) {
++ // cancel operation by finishing it; avoid killSession as some
++ // hardware vendors may require re-login
++ try {
++ int bufLen = doFinalLength(0);
++ byte[] buffer = new byte[bufLen];
++ if (encrypt) {
++ token.p11.C_EncryptFinal(session.id(), 0, buffer, 0, bufLen);
++ } else {
++ token.p11.C_DecryptFinal(session.id(), 0, buffer, 0, bufLen);
++ }
++ } catch (PKCS11Exception e) {
++ if (encrypt) {
+ throw new ProviderException("Cancel failed", e);
+ }
++ // ignore failure for decryption
+ }
+ }
+
+--- openjdk.orig/jdk/src/share/classes/sun/security/pkcs11/P11Mac.java 2020-10-08 06:03:20.893542782 +0100
++++ openjdk/jdk/src/share/classes/sun/security/pkcs11/P11Mac.java 2020-10-08 06:03:20.780541571 +0100
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2003, 2020, 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
+@@ -122,10 +122,12 @@
+ return;
+ }
+ initialized = false;
++
+ try {
+ if (session == null) {
+ return;
+ }
++
+ if (doCancel && token.explicitCancel) {
+ cancelOperation();
+ }
+@@ -137,15 +139,12 @@
+
+ private void cancelOperation() {
+ token.ensureValid();
+- if (session.hasObjects() == false) {
+- session = token.killSession(session);
+- return;
+- } else {
+- try {
+- token.p11.C_SignFinal(session.id(), 0);
+- } catch (PKCS11Exception e) {
+- throw new ProviderException("Cancel failed", e);
+- }
++ // cancel operation by finishing it; avoid killSession as some
++ // hardware vendors may require re-login
++ try {
++ token.p11.C_SignFinal(session.id(), 0);
++ } catch (PKCS11Exception e) {
++ throw new ProviderException("Cancel failed", e);
+ }
+ }
+
+@@ -207,7 +206,6 @@
+ ensureInitialized();
+ return token.p11.C_SignFinal(session.id(), 0);
+ } catch (PKCS11Exception e) {
+- reset(true);
+ throw new ProviderException("doFinal() failed", e);
+ } finally {
+ reset(false);
+--- openjdk.orig/jdk/src/share/classes/sun/security/pkcs11/P11PSSSignature.java 2020-10-08 06:03:21.314547298 +0100
++++ openjdk/jdk/src/share/classes/sun/security/pkcs11/P11PSSSignature.java 2020-10-08 06:03:21.202546096 +0100
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2019, 2020, 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
+@@ -223,10 +223,12 @@
+ return;
+ }
+ initialized = false;
++
+ try {
+ if (session == null) {
+ return;
+ }
++
+ if (doCancel && token.explicitCancel) {
+ cancelOperation();
+ }
+@@ -242,14 +244,10 @@
+ token.ensureValid();
+ if (DEBUG) System.out.print("Cancelling operation");
+
+- if (session.hasObjects() == false) {
+- if (DEBUG) System.out.println(" by killing session");
+- session = token.killSession(session);
+- return;
+- }
+- // "cancel" operation by finishing it
+- if (mode == M_SIGN) {
+- try {
++ // cancel operation by finishing it; avoid killSession as some
++ // hardware vendors may require re-login
++ try {
++ if (mode == M_SIGN) {
+ if (type == T_UPDATE) {
+ if (DEBUG) System.out.println(" by C_SignFinal");
+ token.p11.C_SignFinal(session.id(), 0);
+@@ -259,11 +257,7 @@
+ if (DEBUG) System.out.println(" by C_Sign");
+ token.p11.C_Sign(session.id(), digest);
+ }
+- } catch (PKCS11Exception e) {
+- throw new ProviderException("cancel failed", e);
+- }
+- } else { // M_VERIFY
+- try {
++ } else { // M_VERIFY
+ byte[] signature =
+ new byte[(p11Key.length() + 7) >> 3];
+ if (type == T_UPDATE) {
+@@ -275,10 +269,12 @@
+ if (DEBUG) System.out.println(" by C_Verify");
+ token.p11.C_Verify(session.id(), digest, signature);
+ }
+- } catch (PKCS11Exception e) {
+- // will fail since the signature is incorrect
+- // XXX check error code
+ }
++ } catch (PKCS11Exception e) {
++ if (mode == M_SIGN) {
++ throw new ProviderException("cancel failed", e);
++ }
++ // ignore failure for verification
+ }
+ }
+
+--- openjdk.orig/jdk/src/share/classes/sun/security/pkcs11/P11RSACipher.java 2020-10-08 06:03:21.749551962 +0100
++++ openjdk/jdk/src/share/classes/sun/security/pkcs11/P11RSACipher.java 2020-10-08 06:03:21.633550718 +0100
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2003, 2020, 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
+@@ -246,10 +246,12 @@
+ return;
+ }
+ initialized = false;
++
+ try {
+ if (session == null) {
+ return;
+ }
++
+ if (doCancel && token.explicitCancel) {
+ cancelOperation();
+ }
+@@ -263,36 +265,33 @@
+ // state variables such as "initialized"
+ private void cancelOperation() {
+ token.ensureValid();
+- if (session.hasObjects() == false) {
+- session = token.killSession(session);
+- return;
+- } else {
+- try {
+- PKCS11 p11 = token.p11;
+- int inLen = maxInputSize;
+- int outLen = buffer.length;
+- long sessId = session.id();
+- switch (mode) {
+- case MODE_ENCRYPT:
+- p11.C_Encrypt(sessId, 0, buffer, 0, inLen, 0, buffer, 0, outLen);
+- break;
+- case MODE_DECRYPT:
+- p11.C_Decrypt(sessId, 0, buffer, 0, inLen, 0, buffer, 0, outLen);
+- break;
+- case MODE_SIGN:
+- byte[] tmpBuffer = new byte[maxInputSize];
+- p11.C_Sign(sessId, tmpBuffer);
+- break;
+- case MODE_VERIFY:
+- p11.C_VerifyRecover(sessId, buffer, 0, inLen, buffer,
+- 0, outLen);
+- break;
+- default:
+- throw new ProviderException("internal error");
+- }
+- } catch (PKCS11Exception e) {
+- // XXX ensure this always works, ignore error
++ // cancel operation by finishing it; avoid killSession as some
++ // hardware vendors may require re-login
++ try {
++ PKCS11 p11 = token.p11;
++ int inLen = maxInputSize;
++ int outLen = buffer.length;
++ long sessId = session.id();
++ switch (mode) {
++ case MODE_ENCRYPT:
++ p11.C_Encrypt(sessId, 0, buffer, 0, inLen, 0, buffer, 0, outLen);
++ break;
++ case MODE_DECRYPT:
++ p11.C_Decrypt(sessId, 0, buffer, 0, inLen, 0, buffer, 0, outLen);
++ break;
++ case MODE_SIGN:
++ byte[] tmpBuffer = new byte[maxInputSize];
++ p11.C_Sign(sessId, tmpBuffer);
++ break;
++ case MODE_VERIFY:
++ p11.C_VerifyRecover(sessId, buffer, 0, inLen, buffer,
++ 0, outLen);
++ break;
++ default:
++ throw new ProviderException("internal error");
+ }
++ } catch (PKCS11Exception e) {
++ // XXX ensure this always works, ignore error
+ }
+ }
+
+@@ -361,6 +360,7 @@
+ private int implDoFinal(byte[] out, int outOfs, int outLen)
+ throws BadPaddingException, IllegalBlockSizeException {
+ if (bufOfs > maxInputSize) {
++ reset(true);
+ throw new IllegalBlockSizeException("Data must not be longer "
+ + "than " + maxInputSize + " bytes");
+ }
+--- openjdk.orig/jdk/src/share/classes/sun/security/pkcs11/P11Signature.java 2020-10-08 06:03:22.163556402 +0100
++++ openjdk/jdk/src/share/classes/sun/security/pkcs11/P11Signature.java 2020-10-08 06:03:22.050555191 +0100
+@@ -245,10 +245,12 @@
+ return;
+ }
+ initialized = false;
++
+ try {
+ if (session == null) {
+ return;
+ }
++
+ if (doCancel && token.explicitCancel) {
+ cancelOperation();
+ }
+@@ -259,59 +261,51 @@
+ }
+
+ private void cancelOperation() {
+-
+ token.ensureValid();
+- if (session.hasObjects() == false) {
+- session = token.killSession(session);
+- return;
+- } else {
+- // "cancel" operation by finishing it
+- // XXX make sure all this always works correctly
++ // cancel operation by finishing it; avoid killSession as some
++ // hardware vendors may require re-login
++ try {
+ if (mode == M_SIGN) {
+- try {
+- if (type == T_UPDATE) {
+- token.p11.C_SignFinal(session.id(), 0);
+- } else {
+- byte[] digest;
+- if (type == T_DIGEST) {
+- digest = md.digest();
+- } else { // T_RAW
+- digest = buffer;
+- }
+- token.p11.C_Sign(session.id(), digest);
++ if (type == T_UPDATE) {
++ token.p11.C_SignFinal(session.id(), 0);
++ } else {
++ byte[] digest;
++ if (type == T_DIGEST) {
++ digest = md.digest();
++ } else { // T_RAW
++ digest = buffer;
+ }
+- } catch (PKCS11Exception e) {
+- throw new ProviderException("cancel failed", e);
++ token.p11.C_Sign(session.id(), digest);
+ }
+ } else { // M_VERIFY
+ byte[] signature;
+- try {
+- if (keyAlgorithm.equals("DSA")) {
+- signature = new byte[40];
+- } else {
+- signature = new byte[(p11Key.length() + 7) >> 3];
+- }
+- if (type == T_UPDATE) {
+- token.p11.C_VerifyFinal(session.id(), signature);
+- } else {
+- byte[] digest;
+- if (type == T_DIGEST) {
+- digest = md.digest();
+- } else { // T_RAW
+- digest = buffer;
+- }
+- token.p11.C_Verify(session.id(), digest, signature);
+- }
+- } catch (PKCS11Exception e) {
+- long errorCode = e.getErrorCode();
+- if ((errorCode == CKR_SIGNATURE_INVALID) ||
+- (errorCode == CKR_SIGNATURE_LEN_RANGE)) {
+- // expected since signature is incorrect
+- return;
++ if (keyAlgorithm.equals("DSA")) {
++ signature = new byte[40];
++ } else {
++ signature = new byte[(p11Key.length() + 7) >> 3];
++ }
++ if (type == T_UPDATE) {
++ token.p11.C_VerifyFinal(session.id(), signature);
++ } else {
++ byte[] digest;
++ if (type == T_DIGEST) {
++ digest = md.digest();
++ } else { // T_RAW
++ digest = buffer;
+ }
+- throw new ProviderException("cancel failed", e);
++ token.p11.C_Verify(session.id(), digest, signature);
++ }
++ }
++ } catch (PKCS11Exception e) {
++ if (mode == M_VERIFY) {
++ long errorCode = e.getErrorCode();
++ if ((errorCode == CKR_SIGNATURE_INVALID) ||
++ (errorCode == CKR_SIGNATURE_LEN_RANGE)) {
++ // expected since signature is incorrect
++ return;
+ }
+ }
++ throw new ProviderException("cancel failed", e);
+ }
+ }
+
diff --git a/SOURCES/jdk8251117-rh1860990-pkcs11_key_length.patch b/SOURCES/jdk8251117-rh1860990-pkcs11_key_length.patch
deleted file mode 100644
index e17990f..0000000
--- a/SOURCES/jdk8251117-rh1860990-pkcs11_key_length.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-# HG changeset patch
-# User mbalao
-# Date 1596572361 10800
-# Tue Aug 04 17:19:21 2020 -0300
-# Node ID d8a0513b92ee262d4e64c1e13d43e1b3f3e5c5d5
-# Parent a259b5b1bc7cc4dd0d8fa19e8bdbf96a4e76224f
-8251117: Cannot check P11Key size in P11Cipher and P11AEADCipher
-Reviewed-by: andrew
-Contributed-by: zzambers@redhat.com
-
-diff --git openjdk.orig/jdk/src/share/classes/sun/security/pkcs11/P11Cipher.java openjdk/jdk/src/share/classes/sun/security/pkcs11/P11Cipher.java
---- openjdk.orig/jdk/src/share/classes/sun/security/pkcs11/P11Cipher.java
-+++ openjdk/jdk/src/share/classes/sun/security/pkcs11/P11Cipher.java
-@@ -345,7 +345,9 @@
- SecureRandom random)
- throws InvalidKeyException, InvalidAlgorithmParameterException {
- reset(true);
-- if (fixedKeySize != -1 && key.getEncoded().length != fixedKeySize) {
-+ if (fixedKeySize != -1 &&
-+ ((key instanceof P11Key) ? ((P11Key) key).length() >> 3 :
-+ key.getEncoded().length) != fixedKeySize) {
- throw new InvalidKeyException("Key size is invalid");
- }
- switch (opmode) {
diff --git a/SOURCES/jdk8254177-tzdata2020b.patch b/SOURCES/jdk8254177-tzdata2020b.patch
new file mode 100644
index 0000000..abd9131
--- /dev/null
+++ b/SOURCES/jdk8254177-tzdata2020b.patch
@@ -0,0 +1,3849 @@
+diff --git openjdk.orig/jdk/make/data/tzdata/VERSION openjdk/jdk/make/data/tzdata/VERSION
+--- openjdk.orig/jdk/make/data/tzdata/VERSION
++++ openjdk/jdk/make/data/tzdata/VERSION
+@@ -21,4 +21,4 @@
+ # or visit www.oracle.com if you need additional information or have any
+ # questions.
+ #
+-tzdata2020a
++tzdata2020b
+diff --git openjdk.orig/jdk/make/data/tzdata/africa openjdk/jdk/make/data/tzdata/africa
+--- openjdk.orig/jdk/make/data/tzdata/africa
++++ openjdk/jdk/make/data/tzdata/africa
+@@ -87,7 +87,7 @@
+ # Corrections are welcome.
+
+ # Algeria
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Algeria 1916 only - Jun 14 23:00s 1:00 S
+ Rule Algeria 1916 1919 - Oct Sun>=1 23:00s 0 -
+ Rule Algeria 1917 only - Mar 24 23:00s 1:00 S
+@@ -110,10 +110,9 @@
+ Rule Algeria 1978 only - Sep 22 3:00 0 -
+ Rule Algeria 1980 only - Apr 25 0:00 1:00 S
+ Rule Algeria 1980 only - Oct 31 2:00 0 -
+-# Shanks & Pottenger give 0:09:20 for Paris Mean Time; go with Howse's
+-# more precise 0:09:21.
++# See Europe/Paris for PMT-related transitions.
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+-Zone Africa/Algiers 0:12:12 - LMT 1891 Mar 15 0:01
++Zone Africa/Algiers 0:12:12 - LMT 1891 Mar 16
+ 0:09:21 - PMT 1911 Mar 11 # Paris Mean Time
+ 0:00 Algeria WE%sT 1940 Feb 25 2:00
+ 1:00 Algeria CE%sT 1946 Oct 7
+@@ -199,7 +198,7 @@
+ # Egypt was mean noon at the Great Pyramid, 2:04:30.5, but apparently this
+ # did not apply to Cairo, Alexandria, or Port Said.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Egypt 1940 only - Jul 15 0:00 1:00 S
+ Rule Egypt 1940 only - Oct 1 0:00 0 -
+ Rule Egypt 1941 only - Apr 15 0:00 1:00 S
+@@ -434,7 +433,7 @@
+ # now Ghana observed different DST regimes in different years. For
+ # lack of better info, use Shanks except treat the minus sign as a
+ # typo, and assume DST started in 1920 not 1936.
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Ghana 1920 1942 - Sep 1 0:00 0:20 -
+ Rule Ghana 1920 1942 - Dec 31 0:00 0 -
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+@@ -524,7 +523,7 @@
+ # From Paul Eggert (2013-10-25):
+ # For now, assume they're reverting to the pre-2012 rules of permanent UT +02.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Libya 1951 only - Oct 14 2:00 1:00 S
+ Rule Libya 1952 only - Jan 1 0:00 0 -
+ Rule Libya 1953 only - Oct 9 2:00 1:00 S
+@@ -647,7 +646,7 @@
+ # "The trial ended on March 29, 2009, when the clocks moved back by one hour
+ # at 2am (or 02:00) local time..."
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Mauritius 1982 only - Oct 10 0:00 1:00 -
+ Rule Mauritius 1983 only - Mar 21 0:00 0 -
+ Rule Mauritius 2008 only - Oct lastSun 2:00 1:00 -
+@@ -898,17 +897,30 @@
+ # https://maroc-diplomatique.net/maroc-le-retour-a-lheure-gmt-est-prevu-dimanche-prochain/
+ # http://aujourdhui.ma/actualite/gmt1-retour-a-lheure-normale-dimanche-prochain-1
+ #
+-# From Paul Eggert (2020-04-14):
++# From Milamber (2020-05-31)
++# In Morocco (where I live), the end of Ramadan (Arabic month) is followed by
++# the Eid al-Fitr, and concretely it's 1 or 2 day offs for the people (with
++# traditional visiting of family, big lunches/dinners, etc.). So for this
++# year the astronomical calculations don't include the following 2 days off in
++# the calc. These 2 days fall in a Sunday/Monday, so it's not acceptable by
++# people to have a time shift during these 2 days off. Perhaps you can modify
++# the (predicted) rules for next years: if the end of Ramadan is a (probable)
++# Friday or Saturday (and so the 2 days off are on a weekend), the next time
++# shift will be the next weekend.
++#
++# From Paul Eggert (2020-05-31):
+ # For now, guess that in the future Morocco will fall back at 03:00
+ # the last Sunday before Ramadan, and spring forward at 02:00 the
+-# first Sunday after the day after Ramadan. To implement this,
+-# transition dates for 2021 through 2087 were determined by running
+-# the following program under GNU Emacs 26.3.
+-# (let ((islamic-year 1442))
++# first Sunday after two days after Ramadan. To implement this,
++# transition dates and times for 2019 through 2087 were determined by
++# running the following program under GNU Emacs 26.3. (This algorithm
++# also produces the correct transition dates for 2016 through 2018,
++# though the times differ due to Morocco's time zone change in 2018.)
++# (let ((islamic-year 1440))
+ # (require 'cal-islam)
+ # (while (< islamic-year 1511)
+ # (let ((a (calendar-islamic-to-absolute (list 9 1 islamic-year)))
+-# (b (1+ (calendar-islamic-to-absolute (list 10 1 islamic-year))))
++# (b (+ 2 (calendar-islamic-to-absolute (list 10 1 islamic-year))))
+ # (sunday 0))
+ # (while (/= sunday (mod (setq a (1- a)) 7)))
+ # (while (/= sunday (mod b 7))
+@@ -923,7 +935,7 @@
+ # (car (cdr (cdr b))) (calendar-month-name (car b) t) (car (cdr b)))))
+ # (setq islamic-year (+ 1 islamic-year))))
+
+-# RULE NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Morocco 1939 only - Sep 12 0:00 1:00 -
+ Rule Morocco 1939 only - Nov 19 0:00 0 -
+ Rule Morocco 1940 only - Feb 25 0:00 1:00 -
+@@ -974,7 +986,7 @@
+ Rule Morocco 2022 only - Mar 27 3:00 0 -
+ Rule Morocco 2022 only - May 8 2:00 1:00 -
+ Rule Morocco 2023 only - Mar 19 3:00 0 -
+-Rule Morocco 2023 only - Apr 23 2:00 1:00 -
++Rule Morocco 2023 only - Apr 30 2:00 1:00 -
+ Rule Morocco 2024 only - Mar 10 3:00 0 -
+ Rule Morocco 2024 only - Apr 14 2:00 1:00 -
+ Rule Morocco 2025 only - Feb 23 3:00 0 -
+@@ -990,7 +1002,7 @@
+ Rule Morocco 2029 only - Dec 30 3:00 0 -
+ Rule Morocco 2030 only - Feb 10 2:00 1:00 -
+ Rule Morocco 2030 only - Dec 22 3:00 0 -
+-Rule Morocco 2031 only - Jan 26 2:00 1:00 -
++Rule Morocco 2031 only - Feb 2 2:00 1:00 -
+ Rule Morocco 2031 only - Dec 14 3:00 0 -
+ Rule Morocco 2032 only - Jan 18 2:00 1:00 -
+ Rule Morocco 2032 only - Nov 28 3:00 0 -
+@@ -1006,7 +1018,7 @@
+ Rule Morocco 2037 only - Oct 4 3:00 0 -
+ Rule Morocco 2037 only - Nov 15 2:00 1:00 -
+ Rule Morocco 2038 only - Sep 26 3:00 0 -
+-Rule Morocco 2038 only - Oct 31 2:00 1:00 -
++Rule Morocco 2038 only - Nov 7 2:00 1:00 -
+ Rule Morocco 2039 only - Sep 18 3:00 0 -
+ Rule Morocco 2039 only - Oct 23 2:00 1:00 -
+ Rule Morocco 2040 only - Sep 2 3:00 0 -
+@@ -1022,7 +1034,7 @@
+ Rule Morocco 2045 only - Jul 9 3:00 0 -
+ Rule Morocco 2045 only - Aug 20 2:00 1:00 -
+ Rule Morocco 2046 only - Jul 1 3:00 0 -
+-Rule Morocco 2046 only - Aug 5 2:00 1:00 -
++Rule Morocco 2046 only - Aug 12 2:00 1:00 -
+ Rule Morocco 2047 only - Jun 23 3:00 0 -
+ Rule Morocco 2047 only - Jul 28 2:00 1:00 -
+ Rule Morocco 2048 only - Jun 7 3:00 0 -
+@@ -1038,7 +1050,7 @@
+ Rule Morocco 2053 only - Apr 13 3:00 0 -
+ Rule Morocco 2053 only - May 25 2:00 1:00 -
+ Rule Morocco 2054 only - Apr 5 3:00 0 -
+-Rule Morocco 2054 only - May 10 2:00 1:00 -
++Rule Morocco 2054 only - May 17 2:00 1:00 -
+ Rule Morocco 2055 only - Mar 28 3:00 0 -
+ Rule Morocco 2055 only - May 2 2:00 1:00 -
+ Rule Morocco 2056 only - Mar 12 3:00 0 -
+@@ -1054,7 +1066,7 @@
+ Rule Morocco 2061 only - Jan 16 3:00 0 -
+ Rule Morocco 2061 only - Feb 27 2:00 1:00 -
+ Rule Morocco 2062 only - Jan 8 3:00 0 -
+-Rule Morocco 2062 only - Feb 12 2:00 1:00 -
++Rule Morocco 2062 only - Feb 19 2:00 1:00 -
+ Rule Morocco 2062 only - Dec 31 3:00 0 -
+ Rule Morocco 2063 only - Feb 4 2:00 1:00 -
+ Rule Morocco 2063 only - Dec 16 3:00 0 -
+@@ -1070,7 +1082,7 @@
+ Rule Morocco 2068 only - Oct 21 3:00 0 -
+ Rule Morocco 2068 only - Dec 2 2:00 1:00 -
+ Rule Morocco 2069 only - Oct 13 3:00 0 -
+-Rule Morocco 2069 only - Nov 17 2:00 1:00 -
++Rule Morocco 2069 only - Nov 24 2:00 1:00 -
+ Rule Morocco 2070 only - Oct 5 3:00 0 -
+ Rule Morocco 2070 only - Nov 9 2:00 1:00 -
+ Rule Morocco 2071 only - Sep 20 3:00 0 -
+@@ -1086,7 +1098,7 @@
+ Rule Morocco 2076 only - Jul 26 3:00 0 -
+ Rule Morocco 2076 only - Sep 6 2:00 1:00 -
+ Rule Morocco 2077 only - Jul 18 3:00 0 -
+-Rule Morocco 2077 only - Aug 22 2:00 1:00 -
++Rule Morocco 2077 only - Aug 29 2:00 1:00 -
+ Rule Morocco 2078 only - Jul 10 3:00 0 -
+ Rule Morocco 2078 only - Aug 14 2:00 1:00 -
+ Rule Morocco 2079 only - Jun 25 3:00 0 -
+@@ -1096,13 +1108,13 @@
+ Rule Morocco 2081 only - Jun 1 3:00 0 -
+ Rule Morocco 2081 only - Jul 13 2:00 1:00 -
+ Rule Morocco 2082 only - May 24 3:00 0 -
+-Rule Morocco 2082 only - Jun 28 2:00 1:00 -
++Rule Morocco 2082 only - Jul 5 2:00 1:00 -
+ Rule Morocco 2083 only - May 16 3:00 0 -
+ Rule Morocco 2083 only - Jun 20 2:00 1:00 -
+ Rule Morocco 2084 only - Apr 30 3:00 0 -
+ Rule Morocco 2084 only - Jun 11 2:00 1:00 -
+ Rule Morocco 2085 only - Apr 22 3:00 0 -
+-Rule Morocco 2085 only - May 27 2:00 1:00 -
++Rule Morocco 2085 only - Jun 3 2:00 1:00 -
+ Rule Morocco 2086 only - Apr 14 3:00 0 -
+ Rule Morocco 2086 only - May 19 2:00 1:00 -
+ Rule Morocco 2087 only - Mar 30 3:00 0 -
+@@ -1203,7 +1215,7 @@
+ # Use plain "WAT" and "CAT" for the time zone abbreviations, to be compatible
+ # with Namibia's neighbors.
+
+-# RULE NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ # Vanguard section, for zic and other parsers that support negative DST.
+ #Rule Namibia 1994 only - Mar 21 0:00 -1:00 WAT
+ #Rule Namibia 1994 2017 - Sep Sun>=1 2:00 0 CAT
+@@ -1326,7 +1338,7 @@
+ # See Africa/Nairobi.
+
+ # South Africa
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule SA 1942 1943 - Sep Sun>=15 2:00 1:00 -
+ Rule SA 1943 1944 - Mar Sun>=15 2:00 0 -
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+@@ -1359,7 +1371,7 @@
+ # Abdalla of NTC, archived at:
+ # https://mm.icann.org/pipermail/tz/2017-October/025333.html
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Sudan 1970 only - May 1 0:00 1:00 S
+ Rule Sudan 1970 1985 - Oct 15 0:00 0 -
+ Rule Sudan 1971 only - Apr 30 0:00 1:00 S
+@@ -1447,7 +1459,7 @@
+ # http://www.almadenahnews.com/newss/news.php?c=118&id=38036
+ # http://www.worldtimezone.com/dst_news/dst_news_tunis02.html
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Tunisia 1939 only - Apr 15 23:00s 1:00 S
+ Rule Tunisia 1939 only - Nov 18 23:00s 0 -
+ Rule Tunisia 1940 only - Feb 25 23:00s 1:00 S
+@@ -1474,9 +1486,7 @@
+ Rule Tunisia 2006 2008 - Mar lastSun 2:00s 1:00 S
+ Rule Tunisia 2006 2008 - Oct lastSun 2:00s 0 -
+
+-# Shanks & Pottenger give 0:09:20 for Paris Mean Time; go with Howse's
+-# more precise 0:09:21.
+-# Shanks & Pottenger say the 1911 switch was on Mar 9; go with Howse's Mar 11.
++# See Europe/Paris for PMT-related transitions.
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+ Zone Africa/Tunis 0:40:44 - LMT 1881 May 12
+ 0:09:21 - PMT 1911 Mar 11 # Paris Mean Time
+diff --git openjdk.orig/jdk/make/data/tzdata/antarctica openjdk/jdk/make/data/tzdata/antarctica
+--- openjdk.orig/jdk/make/data/tzdata/antarctica
++++ openjdk/jdk/make/data/tzdata/antarctica
+@@ -93,15 +93,30 @@
+ # Australian Antarctica Division informed us that Casey changed time
+ # zone to UTC+11 in "the morning of 22nd October 2016".
+
++# From Steffen Thorsen (2020-10-02, as corrected):
++# Based on information we have received from the Australian Antarctic
++# Division, Casey station and Macquarie Island station will move to Tasmanian
++# daylight savings time on Sunday 4 October. This will take effect from 0001
++# hrs on Sunday 4 October 2020 and will mean Casey and Macquarie Island will
++# be on the same time zone as Hobart. Some past dates too for this 3 hour
++# time change back and forth between UTC+8 and UTC+11 for Casey:
++# - 2018 Oct 7 4:00 - 2019 Mar 17 3:00 - 2019 Oct 4 3:00 - 2020 Mar 8 3:00
++# and now - 2020 Oct 4 0:01
++
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+-Zone Antarctica/Casey 0 - -00 1969
+- 8:00 - +08 2009 Oct 18 2:00
++Zone Antarctica/Casey 0 - -00 1969
++ 8:00 - +08 2009 Oct 18 2:00
+ 11:00 - +11 2010 Mar 5 2:00
+- 8:00 - +08 2011 Oct 28 2:00
++ 8:00 - +08 2011 Oct 28 2:00
+ 11:00 - +11 2012 Feb 21 17:00u
+- 8:00 - +08 2016 Oct 22
++ 8:00 - +08 2016 Oct 22
+ 11:00 - +11 2018 Mar 11 4:00
+- 8:00 - +08
++ 8:00 - +08 2018 Oct 7 4:00
++ 11:00 - +11 2019 Mar 17 3:00
++ 8:00 - +08 2019 Oct 4 3:00
++ 11:00 - +11 2020 Mar 8 3:00
++ 8:00 - +08 2020 Oct 4 0:01
++ 11:00 - +11
+ Zone Antarctica/Davis 0 - -00 1957 Jan 13
+ 7:00 - +07 1964 Nov
+ 0 - -00 1969 Feb
+@@ -247,7 +262,7 @@
+ # suggested by Bengt-Inge Larsson comment them out for now, and approximate
+ # with only UTC and CEST. Uncomment them when 2014b is more prevalent.
+ #
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ #Rule Troll 2005 max - Mar 1 1:00u 1:00 +01
+ Rule Troll 2005 max - Mar lastSun 1:00u 2:00 +02
+ #Rule Troll 2005 max - Oct lastSun 1:00u 1:00 +01
+diff --git openjdk.orig/jdk/make/data/tzdata/asia openjdk/jdk/make/data/tzdata/asia
+--- openjdk.orig/jdk/make/data/tzdata/asia
++++ openjdk/jdk/make/data/tzdata/asia
+@@ -93,7 +93,7 @@
+ ###############################################################################
+
+ # These rules are stolen from the 'europe' file.
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule EUAsia 1981 max - Mar lastSun 1:00u 1:00 S
+ Rule EUAsia 1979 1995 - Sep lastSun 1:00u 0 -
+ Rule EUAsia 1996 max - Oct lastSun 1:00u 0 -
+@@ -137,7 +137,7 @@
+ # or
+ # (brief)
+ # http://www.worldtimezone.com/dst_news/dst_news_armenia03.html
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Armenia 2011 only - Mar lastSun 2:00s 1:00 -
+ Rule Armenia 2011 only - Oct lastSun 2:00s 0 -
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+@@ -163,7 +163,7 @@
+ # http://vestnikkavkaza.net/news/Azerbaijani-Cabinet-of-Ministers-cancels-daylight-saving-time.html
+ # http://en.apa.az/xeber_azerbaijan_abolishes_daylight_savings_ti_240862.html
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Azer 1997 2015 - Mar lastSun 4:00 1:00 -
+ Rule Azer 1997 2015 - Oct lastSun 5:00 0 -
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+@@ -250,7 +250,7 @@
+ # http://www.thedailystar.net/newDesign/latest_news.php?nid=22817
+ # http://www.worldtimezone.com/dst_news/dst_news_bangladesh06.html
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Dhaka 2009 only - Jun 19 23:00 1:00 -
+ Rule Dhaka 2009 only - Dec 31 24:00 0 -
+
+@@ -326,7 +326,7 @@
+ # generally esteemed a success, it was announced early in 1920 that it would
+ # not be repeated."
+ #
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Shang 1919 only - Apr 12 24:00 1:00 D
+ Rule Shang 1919 only - Sep 30 24:00 0 S
+
+@@ -422,7 +422,7 @@
+ # the Yangtze river delta area during that period of time although the scope
+ # of such use will need to be investigated to determine.
+ #
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Shang 1940 only - Jun 1 0:00 1:00 D
+ Rule Shang 1940 only - Oct 12 24:00 0 S
+ Rule Shang 1941 only - Mar 15 0:00 1:00 D
+@@ -485,7 +485,7 @@
+ # to begin on 17 April.
+ # http://data.people.com.cn/pic/101p/1988/04/1988041201.jpg
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule PRC 1986 only - May 4 2:00 1:00 D
+ Rule PRC 1986 1991 - Sep Sun>=11 2:00 0 S
+ Rule PRC 1987 1991 - Apr Sun>=11 2:00 1:00 D
+@@ -869,7 +869,7 @@
+ # or dates for the 1942 and 1945 transitions.
+ # The Japanese occupation of Hong Kong began 1941-12-25.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule HK 1946 only - Apr 21 0:00 1:00 S
+ Rule HK 1946 only - Dec 1 3:30s 0 -
+ Rule HK 1947 only - Apr 13 3:30s 1:00 S
+@@ -996,7 +996,7 @@
+ # until 1945-09-21 at 01:00, overriding Shanks & Pottenger.
+ # Likewise, use Yu-Cheng Chuang's data for DST in Taiwan.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Taiwan 1946 only - May 15 0:00 1:00 D
+ Rule Taiwan 1946 only - Oct 1 0:00 0 S
+ Rule Taiwan 1947 only - Apr 15 0:00 1:00 D
+@@ -1122,7 +1122,7 @@
+ # The 1904 decree says that Macau changed from the meridian of
+ # Fortaleza do Monte, presumably the basis for the 7:34:10 for LMT.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Macau 1942 1943 - Apr 30 23:00 1:00 -
+ Rule Macau 1942 only - Nov 17 23:00 0 -
+ Rule Macau 1943 only - Sep 30 23:00 0 S
+@@ -1180,7 +1180,7 @@
+ # Cyprus to remain united in time. Cyprus Mail 2017-10-17.
+ # https://cyprus-mail.com/2017/10/17/cyprus-remain-united-time/
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Cyprus 1975 only - Apr 13 0:00 1:00 S
+ Rule Cyprus 1975 only - Oct 12 0:00 0 -
+ Rule Cyprus 1976 only - May 15 0:00 1:00 S
+@@ -1557,7 +1557,7 @@
+ # be changed back to its previous state on the 24 hours of the
+ # thirtieth day of Shahrivar.
+ #
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Iran 1978 1980 - Mar 20 24:00 1:00 -
+ Rule Iran 1978 only - Oct 20 24:00 0 -
+ Rule Iran 1979 only - Sep 18 24:00 0 -
+@@ -1699,7 +1699,7 @@
+ # We have published a short article in English about the change:
+ # https://www.timeanddate.com/news/time/iraq-dumps-daylight-saving.html
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Iraq 1982 only - May 1 0:00 1:00 -
+ Rule Iraq 1982 1984 - Oct 1 0:00 0 -
+ Rule Iraq 1983 only - Mar 31 0:00 1:00 -
+@@ -1722,6 +1722,10 @@
+
+ # Israel
+
++# For more info about the motivation for DST in Israel, see:
++# Barak Y. Israel's Daylight Saving Time controversy. Israel Affairs.
++# 2020-08-11. https://doi.org/10.1080/13537121.2020.1806564
++
+ # From Ephraim Silverberg (2001-01-11):
+ #
+ # I coined "IST/IDT" circa 1988. Until then there were three
+@@ -1743,7 +1747,7 @@
+ # family is from India).
+
+ # From Shanks & Pottenger:
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Zion 1940 only - Jun 1 0:00 1:00 D
+ Rule Zion 1942 1944 - Nov 1 0:00 0 S
+ Rule Zion 1943 only - Apr 1 2:00 1:00 D
+@@ -1835,7 +1839,7 @@
+ # (except in 2002) is three nights before Yom Kippur [Day of Atonement]
+ # (the eve of the 7th of Tishrei in the lunar Hebrew calendar).
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Zion 1989 only - Apr 30 0:00 1:00 D
+ Rule Zion 1989 only - Sep 3 0:00 0 S
+ Rule Zion 1990 only - Mar 25 0:00 1:00 D
+@@ -1851,7 +1855,7 @@
+ # Ministry of Interior, Jerusalem, Israel. The spokeswoman can be reached by
+ # calling the office directly at 972-2-6701447 or 972-2-6701448.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Zion 1994 only - Apr 1 0:00 1:00 D
+ Rule Zion 1994 only - Aug 28 0:00 0 S
+ Rule Zion 1995 only - Mar 31 0:00 1:00 D
+@@ -1871,7 +1875,7 @@
+ #
+ # where YYYY is the relevant year.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Zion 1996 only - Mar 15 0:00 1:00 D
+ Rule Zion 1996 only - Sep 16 0:00 0 S
+ Rule Zion 1997 only - Mar 21 0:00 1:00 D
+@@ -1894,7 +1898,7 @@
+ #
+ # ftp://ftp.cs.huji.ac.il/pub/tz/announcements/2000-2004.ps.gz
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Zion 2000 only - Apr 14 2:00 1:00 D
+ Rule Zion 2000 only - Oct 6 1:00 0 S
+ Rule Zion 2001 only - Apr 9 1:00 1:00 D
+@@ -1916,7 +1920,7 @@
+ #
+ # ftp://ftp.cs.huji.ac.il/pub/tz/announcements/2005+beyond.ps
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Zion 2005 2012 - Apr Fri<=1 2:00 1:00 D
+ Rule Zion 2005 only - Oct 9 2:00 0 S
+ Rule Zion 2006 only - Oct 1 2:00 0 S
+@@ -1936,7 +1940,7 @@
+ # As of 2013, DST starts at 02:00 on the Friday before the last Sunday
+ # in March. DST ends at 02:00 on the last Sunday of October.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Zion 2013 max - Mar Fri>=23 2:00 1:00 D
+ Rule Zion 2013 max - Oct lastSun 2:00 0 S
+
+@@ -2036,7 +2040,7 @@
+ # do in any POSIX or C platform. The "25:00" assumes zic from 2007 or later,
+ # which should be safe now.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Japan 1948 only - May Sat>=1 24:00 1:00 D
+ Rule Japan 1948 1951 - Sep Sun>=9 1:00 0 S
+ Rule Japan 1949 only - Apr Sat>=1 24:00 1:00 D
+@@ -2113,7 +2117,7 @@
+ # From Paul Eggert (2013-12-11):
+ # As Steffen suggested, consider the past 21-month experiment to be DST.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Jordan 1973 only - Jun 6 0:00 1:00 S
+ Rule Jordan 1973 1975 - Oct 1 0:00 0 -
+ Rule Jordan 1974 1977 - May 1 0:00 1:00 S
+@@ -2439,7 +2443,7 @@
+ # Our government cancels daylight saving time 6th of August 2005.
+ # From 2005-08-12 our GMT-offset is +6, w/o any daylight saving.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Kyrgyz 1992 1996 - Apr Sun>=7 0:00s 1:00 -
+ Rule Kyrgyz 1992 1996 - Sep lastSun 0:00 0 -
+ Rule Kyrgyz 1997 2005 - Mar lastSun 2:30 1:00 -
+@@ -2495,7 +2499,7 @@
+ # follow and continued to use GMT+9:00 for interoperability.
+
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule ROK 1948 only - Jun 1 0:00 1:00 D
+ Rule ROK 1948 only - Sep 12 24:00 0 S
+ Rule ROK 1949 only - Apr 3 0:00 1:00 D
+@@ -2583,7 +2587,7 @@
+
+
+ # Lebanon
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Lebanon 1920 only - Mar 28 0:00 1:00 S
+ Rule Lebanon 1920 only - Oct 25 0:00 0 -
+ Rule Lebanon 1921 only - Apr 3 0:00 1:00 S
+@@ -2613,7 +2617,7 @@
+ 2:00 Lebanon EE%sT
+
+ # Malaysia
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule NBorneo 1935 1941 - Sep 14 0:00 0:20 -
+ Rule NBorneo 1935 1941 - Dec 14 0:00 0 -
+ #
+@@ -2758,7 +2762,7 @@
+ # September daylight saving time ends. Source:
+ # http://zasag.mn/news/view/8969
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Mongol 1983 1984 - Apr 1 0:00 1:00 -
+ Rule Mongol 1983 only - Oct 1 0:00 0 -
+ # Shanks & Pottenger and IATA SSIM say 1990s switches occurred at 00:00,
+@@ -2946,7 +2950,7 @@
+ # "People laud PM's announcement to end DST"
+ # http://www.app.com.pk/en_/index.php?option=com_content&task=view&id=99374&Itemid=2
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Pakistan 2002 only - Apr Sun>=2 0:00 1:00 S
+ Rule Pakistan 2002 only - Oct Sun>=2 0:00 0 -
+ Rule Pakistan 2008 only - Jun 1 0:00 1:00 S
+@@ -3248,7 +3252,7 @@
+ # From Tim Parenti (2016-10-19):
+ # Predict fall transitions on October's last Saturday at 01:00 from now on.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule EgyptAsia 1957 only - May 10 0:00 1:00 S
+ Rule EgyptAsia 1957 1958 - Oct 1 0:00 0 -
+ Rule EgyptAsia 1958 only - May 1 0:00 1:00 S
+@@ -3348,7 +3352,7 @@
+ # influence of the sources. There is no current abbreviation for DST,
+ # so use "PDT", the usual American style.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Phil 1936 only - Nov 1 0:00 1:00 D
+ Rule Phil 1937 only - Feb 1 0:00 0 S
+ Rule Phil 1954 only - Apr 12 0:00 1:00 D
+@@ -3496,7 +3500,7 @@
+ 5:30 - +0530
+
+ # Syria
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Syria 1920 1923 - Apr Sun>=15 2:00 1:00 S
+ Rule Syria 1920 1923 - Oct Sun>=1 2:00 0 -
+ Rule Syria 1962 only - Apr 29 2:00 1:00 S
+diff --git openjdk.orig/jdk/make/data/tzdata/australasia openjdk/jdk/make/data/tzdata/australasia
+--- openjdk.orig/jdk/make/data/tzdata/australasia
++++ openjdk/jdk/make/data/tzdata/australasia
+@@ -36,7 +36,7 @@
+
+ # Please see the notes below for the controversy about "EST" versus "AEST" etc.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Aus 1917 only - Jan 1 0:01 1:00 D
+ Rule Aus 1917 only - Mar 25 2:00 0 S
+ Rule Aus 1942 only - Jan 1 2:00 1:00 D
+@@ -55,7 +55,7 @@
+ 9:30 Aus AC%sT
+ # Western Australia
+ #
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule AW 1974 only - Oct lastSun 2:00s 1:00 D
+ Rule AW 1975 only - Mar Sun>=1 2:00s 0 S
+ Rule AW 1983 only - Oct lastSun 2:00s 1:00 D
+@@ -93,7 +93,7 @@
+ # applies to all of the Whitsundays.
+ # http://www.australia.gov.au/about-australia/australian-story/austn-islands
+ #
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule AQ 1971 only - Oct lastSun 2:00s 1:00 D
+ Rule AQ 1972 only - Feb lastSun 2:00s 0 S
+ Rule AQ 1989 1991 - Oct lastSun 2:00s 1:00 D
+@@ -109,7 +109,7 @@
+ 10:00 Holiday AE%sT
+
+ # South Australia
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule AS 1971 1985 - Oct lastSun 2:00s 1:00 D
+ Rule AS 1986 only - Oct 19 2:00s 1:00 D
+ Rule AS 1987 2007 - Oct lastSun 2:00s 1:00 D
+@@ -137,7 +137,7 @@
+ # http://www.bom.gov.au/climate/averages/tables/dst_times.shtml
+ # says King Island didn't observe DST from WWII until late 1971.
+ #
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule AT 1967 only - Oct Sun>=1 2:00s 1:00 D
+ Rule AT 1968 only - Mar lastSun 2:00s 0 S
+ Rule AT 1968 1985 - Oct lastSun 2:00s 1:00 D
+@@ -170,7 +170,7 @@
+ 10:00 AT AE%sT
+
+ # Victoria
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule AV 1971 1985 - Oct lastSun 2:00s 1:00 D
+ Rule AV 1972 only - Feb lastSun 2:00s 0 S
+ Rule AV 1973 1985 - Mar Sun>=1 2:00s 0 S
+@@ -191,7 +191,7 @@
+ 10:00 AV AE%sT
+
+ # New South Wales
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule AN 1971 1985 - Oct lastSun 2:00s 1:00 D
+ Rule AN 1972 only - Feb 27 2:00s 0 S
+ Rule AN 1973 1981 - Mar Sun>=1 2:00s 0 S
+@@ -220,7 +220,7 @@
+ 9:30 AS AC%sT
+
+ # Lord Howe Island
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule LH 1981 1984 - Oct lastSun 2:00 1:00 -
+ Rule LH 1982 1985 - Mar Sun>=1 2:00 0 -
+ Rule LH 1985 only - Oct lastSun 2:00 0:30 -
+@@ -275,8 +275,9 @@
+ 10:00 Aus AE%sT 1919 Apr 1 0:00s
+ 0 - -00 1948 Mar 25
+ 10:00 Aus AE%sT 1967
+- 10:00 AT AE%sT 2010 Apr 4 3:00
+- 11:00 - +11
++ 10:00 AT AE%sT 2010
++ 10:00 1:00 AEDT 2011
++ 10:00 AT AE%sT
+
+ # Christmas
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+@@ -403,7 +404,7 @@
+ # From Michael Deckers (2019-08-06):
+ # https://www.laws.gov.fj/LawsAsMade/downloadfile/848
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Fiji 1998 1999 - Nov Sun>=1 2:00 1:00 -
+ Rule Fiji 1999 2000 - Feb lastSun 3:00 0 -
+ Rule Fiji 2009 only - Nov 29 2:00 1:00 -
+@@ -432,7 +433,7 @@
+
+ # Guam
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ # http://guamlegislature.com/Public_Laws_5th/PL05-025.pdf
+ # http://documents.guam.gov/wp-content/uploads/E.O.-59-7-Guam-Daylight-Savings-Time-May-6-1959.pdf
+ Rule Guam 1959 only - Jun 27 2:00 1:00 D
+@@ -543,7 +544,7 @@
+ 12:00 - +12
+
+ # New Caledonia
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule NC 1977 1978 - Dec Sun>=1 0:00 1:00 -
+ Rule NC 1978 1979 - Feb 27 0:00 0 -
+ Rule NC 1996 only - Dec 1 2:00s 1:00 -
+@@ -558,7 +559,7 @@
+
+ # New Zealand
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule NZ 1927 only - Nov 6 2:00 1:00 S
+ Rule NZ 1928 only - Mar 4 2:00 0 M
+ Rule NZ 1928 1933 - Oct Sun>=8 2:00 0:30 S
+@@ -610,7 +611,7 @@
+
+ # Cook Is
+ # From Shanks & Pottenger:
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Cook 1978 only - Nov 12 0:00 0:30 -
+ Rule Cook 1979 1991 - Mar Sun>=1 0:00 0 -
+ Rule Cook 1979 1990 - Oct lastSun 0:00 0:30 -
+@@ -755,7 +756,7 @@
+ # That web page currently lists transitions for 2012/3 and 2013/4.
+ # Assume the pattern instituted in 2012 will continue indefinitely.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule WS 2010 only - Sep lastSun 0:00 1 -
+ Rule WS 2011 only - Apr Sat>=1 4:00 0 -
+ Rule WS 2011 only - Sep lastSat 3:00 1 -
+@@ -799,7 +800,7 @@
+ 13:00 - +13
+
+ # Tonga
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Tonga 1999 only - Oct 7 2:00s 1:00 -
+ Rule Tonga 2000 only - Mar 19 2:00s 0 -
+ Rule Tonga 2000 2001 - Nov Sun>=1 2:00 1:00 -
+@@ -880,7 +881,7 @@
+
+
+ # Vanuatu
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Vanuatu 1983 only - Sep 25 0:00 1:00 -
+ Rule Vanuatu 1984 1991 - Mar Sun>=23 0:00 0 -
+ Rule Vanuatu 1984 only - Oct 23 0:00 1:00 -
+diff --git openjdk.orig/jdk/make/data/tzdata/europe openjdk/jdk/make/data/tzdata/europe
+--- openjdk.orig/jdk/make/data/tzdata/europe
++++ openjdk/jdk/make/data/tzdata/europe
+@@ -411,7 +411,7 @@
+ # http://www.irishstatutebook.ie/eli/1926/sro/919/made/en/print
+ # http://www.irishstatutebook.ie/eli/1947/sro/71/made/en/print
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ # Summer Time Act, 1916
+ Rule GB-Eire 1916 only - May 21 2:00s 1:00 BST
+ Rule GB-Eire 1916 only - Oct 1 2:00s 0 GMT
+@@ -552,7 +552,7 @@
+ # The following is like GB-Eire and EU, except with standard time in
+ # summer and negative daylight saving time in winter. It is for when
+ # negative SAVE values are used.
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ #Rule Eire 1971 only - Oct 31 2:00u -1:00 -
+ #Rule Eire 1972 1980 - Mar Sun>=16 2:00u 0 -
+ #Rule Eire 1972 1980 - Oct Sun>=23 2:00u -1:00 -
+@@ -589,7 +589,7 @@
+ # predecessor organization, the European Communities.
+ # For brevity they are called "EU rules" elsewhere in this file.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule EU 1977 1980 - Apr Sun>=1 1:00u 1:00 S
+ Rule EU 1977 only - Sep lastSun 1:00u 0 -
+ Rule EU 1978 only - Oct 1 1:00u 0 -
+@@ -629,13 +629,13 @@
+ # corrected in version 2008d). The circumstantial evidence is simply the
+ # tz database itself, as seen below:
+ #
+-# Zone Europe/Paris 0:09:21 - LMT 1891 Mar 15 0:01
++# Zone Europe/Paris ...
+ # 0:00 France WE%sT 1945 Sep 16 3:00
+ #
+-# Zone Europe/Monaco 0:29:32 - LMT 1891 Mar 15
++# Zone Europe/Monaco ...
+ # 0:00 France WE%sT 1945 Sep 16 3:00
+ #
+-# Zone Europe/Belgrade 1:22:00 - LMT 1884
++# Zone Europe/Belgrade ...
+ # 1:00 1:00 CEST 1945 Sep 16 2:00s
+ #
+ # Rule France 1945 only - Sep 16 3:00 0 -
+@@ -681,7 +681,7 @@
+ #
+ # The 1917-1921 decree URLs are from Alexander Belopolsky (2016-08-23).
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Russia 1917 only - Jul 1 23:00 1:00 MST # Moscow Summer Time
+ #
+ # Decree No. 142 (1917-12-22) http://istmat.info/node/28137
+@@ -795,7 +795,7 @@
+
+
+ # Albania
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Albania 1940 only - Jun 16 0:00 1:00 S
+ Rule Albania 1942 only - Nov 2 3:00 0 -
+ Rule Albania 1943 only - Mar 29 2:00 1:00 S
+@@ -849,7 +849,7 @@
+ # In 1946 the end of DST was on Monday, 7 October 1946, at 3:00 am.
+ # Shanks had this right. Source: Die Weltpresse, 5. Oktober 1946, page 5.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Austria 1920 only - Apr 5 2:00s 1:00 S
+ Rule Austria 1920 only - Sep 13 2:00s 0 -
+ Rule Austria 1946 only - Apr 14 2:00s 1:00 S
+@@ -936,7 +936,7 @@
+ # The 1918 rules are listed for completeness; they apply to unoccupied Belgium.
+ # Assume Brussels switched to WET in 1918 when the armistice took effect.
+ #
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Belgium 1918 only - Mar 9 0:00s 1:00 S
+ Rule Belgium 1918 1919 - Oct Sat>=1 23:00s 0 -
+ Rule Belgium 1919 only - Mar 1 23:00s 1:00 S
+@@ -996,7 +996,7 @@
+ # EET -> EETDST is in 03:00 Local time in last Sunday of March ...
+ # EETDST -> EET is in 04:00 Local time in last Sunday of October
+ #
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Bulg 1979 only - Mar 31 23:00 1:00 S
+ Rule Bulg 1979 only - Oct 1 1:00 0 -
+ Rule Bulg 1980 1982 - Apr Sat>=1 23:00 1:00 S
+@@ -1028,7 +1028,7 @@
+ # We know of no English-language name for historical Czech winter time;
+ # abbreviate it as "GMT", as it happened to be GMT.
+ #
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Czech 1945 only - Apr Mon>=1 2:00s 1:00 S
+ Rule Czech 1945 only - Oct 1 2:00s 0 -
+ Rule Czech 1946 only - May 6 2:00s 1:00 S
+@@ -1084,7 +1084,7 @@
+ # Hence the "02:00" of the 1980 law refers to standard time, not
+ # wall-clock time, and so the EU rules were in effect in 1980.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Denmark 1916 only - May 14 23:00 1:00 S
+ Rule Denmark 1916 only - Sep 30 23:00 0 -
+ Rule Denmark 1940 only - May 15 0:00 1:00 S
+@@ -1186,7 +1186,7 @@
+ # http://naalakkersuisut.gl/~/media/Nanoq/Files/Attached%20Files/Engelske-tekster/Legislation/Executive%20Order%20National%20Park.rtf
+ # It is their only National Park.
+ #
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Thule 1991 1992 - Mar lastSun 2:00 1:00 D
+ Rule Thule 1991 1992 - Sep lastSun 2:00 0 S
+ Rule Thule 1993 2006 - Apr Sun>=1 2:00 1:00 D
+@@ -1317,7 +1317,7 @@
+ # From Paul Eggert (2014-06-14):
+ # Go with Oja over Shanks.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Finland 1942 only - Apr 2 24:00 1:00 S
+ Rule Finland 1942 only - Oct 4 1:00 0 -
+ Rule Finland 1981 1982 - Mar lastSun 2:00 1:00 S
+@@ -1349,10 +1349,58 @@
+ # Françoise Gauquelin, Problèmes de l'heure résolus en astrologie,
+ # Guy Trédaniel, Paris 1987
+
++# From Michael Deckers (2020-06-11):
++# the law of 1891
++# was published on 1891-03-15, so it could only take force on 1891-03-16.
++
++# From Michael Deckers (2020-06-10):
++# Le Gaulois, 1911-03-11, page 1/6, online at
++# https://www.retronews.fr/societe/echo-de-presse/2018/01/29/1911-change-lheure-de-paris
++# ... [ Instantly, all pressure driven clock dials halted... Nine minutes and
++# twenty-one seconds later the hands resumed their circular motion. ]
++# There are also precise reports about how the change was prepared in train
++# stations: all the publicly visible clocks stopped at midnight railway time
++# (or were covered), only the chief of service had a watch, labeled
++# "Heure ancienne", that he kept running until it reached 00:04:21, when
++# he announced "Heure nouvelle". See the "Le Petit Journal 1911-03-11".
++# https://gallica.bnf.fr/ark:/12148/bpt6k6192911/f1.item.zoom
++#
++# From Michael Deckers (2020-06-12):
++# That "all French clocks stopped" for 00:09:21 is a misreading of French
++# newspapers; this sort of adjustment applies only to certain
++# remote-controlled clocks ("pendules pneumatiques", of which there existed
++# perhaps a dozen in Paris, and which simply could not be set back remotely),
++# but not to all the clocks in all French towns and villages. For instance,
++# the following story in the "Courrier de Saône-et-Loire" 1911-03-11, page 2:
++# only works if legal time was stepped back (was not monotone): ...
++# [One can observe that children who had been born at midnight less 5
++# minutes and who had died at midnight of the old time, would turn out to
++# be dead before being born, time having been set back and having
++# suppressed 9 minutes and 25 seconds of their existence, that is, more
++# than they could spend.]
++#
++# From Paul Eggert (2020-06-12):
++# French time in railway stations was legally five minutes behind civil time,
++# which explains why railway "old time" ran to 00:04:21 instead of to 00:09:21.
++# The law's text (which Michael Deckers noted is at
++# ) says only that
++# at 1911-03-11 00:00 legal time was that of Paris mean time delayed by
++# nine minutes and twenty-one seconds, and does not say how the
++# transition from Paris mean time was to occur.
++#
++# tzdb has no way to represent stopped clocks. As the railway practice
++# was to keep a watch running on "old time" to decide when to restart
++# the other clocks, this could be modeled as a transition for "old time" at
++# 00:09:21. However, since the law was ambiguous and clocks outside railway
++# stations were probably done haphazardly with the popular impression being
++# that the transition was done at 00:00 "old time", simply leave the time
++# blank; this causes zic to default to 00:00 "old time" which is good enough.
++# Do something similar for the 1891-03-16 transition. There are similar
++# problems in Algiers, Monaco and Tunis.
+
+ #
+ # Shank & Pottenger seem to use '24:00' ambiguously; resolve it with Whitman.
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule France 1916 only - Jun 14 23:00s 1:00 S
+ Rule France 1916 1919 - Oct Sun>=1 23:00s 0 -
+ Rule France 1917 only - Mar 24 23:00s 1:00 S
+@@ -1412,13 +1460,11 @@
+ # go with Excoffier's 28/3/76 0hUT and 25/9/76 23hUT.
+ Rule France 1976 only - Mar 28 1:00 1:00 S
+ Rule France 1976 only - Sep 26 1:00 0 -
+-# Shanks & Pottenger give 0:09:20 for Paris Mean Time, and Whitman 0:09:05,
+-# but Howse quotes the actual French legislation as saying 0:09:21.
+-# Go with Howse. Howse writes that the time in France was officially based
++# Howse writes that the time in France was officially based
+ # on PMT-0:09:21 until 1978-08-09, when the time base finally switched to UTC.
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+-Zone Europe/Paris 0:09:21 - LMT 1891 Mar 15 0:01
+- 0:09:21 - PMT 1911 Mar 11 0:01 # Paris MT
++Zone Europe/Paris 0:09:21 - LMT 1891 Mar 16
++ 0:09:21 - PMT 1911 Mar 11 # Paris Mean Time
+ # Shanks & Pottenger give 1940 Jun 14 0:00; go with Excoffier and Le Corre.
+ 0:00 France WE%sT 1940 Jun 14 23:00
+ # Le Corre says Paris stuck with occupied-France time after the liberation;
+@@ -1447,7 +1493,7 @@
+ # this was equivalent to UT +03, not +04.
+
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Germany 1946 only - Apr 14 2:00s 1:00 S
+ Rule Germany 1946 only - Oct 7 2:00s 0 -
+ Rule Germany 1947 1949 - Oct Sun>=1 2:00s 0 -
+@@ -1499,7 +1545,7 @@
+ 1:00 EU CE%sT
+
+ # Greece
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ # Whitman gives 1932 Jul 5 - Nov 1; go with Shanks & Pottenger.
+ Rule Greece 1932 only - Jul 7 0:00 1:00 S
+ Rule Greece 1932 only - Sep 1 0:00 0 -
+@@ -1534,38 +1580,69 @@
+ 2:00 EU EE%sT
+
+ # Hungary
+-# From Paul Eggert (2014-07-15):
+-# Dates for 1916-1945 are taken from:
+-# Oross A. Jelen a múlt jövője: a nyári időszámítás Magyarországon 1916-1945.
+-# National Archives of Hungary (2012-10-29).
+-# http://mnl.gov.hu/a_het_dokumentuma/a_nyari_idoszamitas_magyarorszagon_19161945.html
+-# This source does not always give times, which are taken from Shanks
+-# & Pottenger (which disagree about the dates).
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+-Rule Hungary 1918 only - Apr 1 3:00 1:00 S
+-Rule Hungary 1918 only - Sep 16 3:00 0 -
+-Rule Hungary 1919 only - Apr 15 3:00 1:00 S
+-Rule Hungary 1919 only - Nov 24 3:00 0 -
++
++# From Michael Deckers (2020-06-09):
++# an Austrian encyclopedia of railroads of 1913, online at
++# http://www.zeno.org/Roell-1912/A/Eisenbahnzeit
++# says that the switch [to CET] happened on 1890-11-01.
++
++# From Géza Nyáry (2020-06-07):
++# Data for 1918-1983 are based on the archive database of Library Hungaricana.
++# The dates are collected from original, scanned governmental orders,
++# bulletins, instructions and public press.
++# [See URLs below.]
++
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
++# https://library.hungaricana.hu/hu/view/OGYK_RT_1918/?pg=238
++# https://library.hungaricana.hu/hu/view/OGYK_RT_1919/?pg=808
++# https://library.hungaricana.hu/hu/view/OGYK_RT_1920/?pg=201
++Rule Hungary 1918 1919 - Apr 15 2:00 1:00 S
++Rule Hungary 1918 1920 - Sep Mon>=15 3:00 0 -
++Rule Hungary 1920 only - Apr 5 2:00 1:00 S
++# https://library.hungaricana.hu/hu/view/OGYK_RT_1945/?pg=882
+ Rule Hungary 1945 only - May 1 23:00 1:00 S
+-Rule Hungary 1945 only - Nov 1 0:00 0 -
++Rule Hungary 1945 only - Nov 1 1:00 0 -
++# https://library.hungaricana.hu/hu/view/Delmagyarorszag_1946_03/?pg=49
+ Rule Hungary 1946 only - Mar 31 2:00s 1:00 S
+-Rule Hungary 1946 1949 - Oct Sun>=1 2:00s 0 -
++# https://library.hungaricana.hu/hu/view/Delmagyarorszag_1946_09/?pg=54
++Rule Hungary 1946 only - Oct 7 2:00 0 -
++# https://library.hungaricana.hu/hu/view/KulfBelfHirek_1947_04_1__001-123/?pg=90
++# https://library.hungaricana.hu/hu/view/DunantuliNaplo_1947_09/?pg=128
++# https://library.hungaricana.hu/hu/view/KulfBelfHirek_1948_03_3__001-123/?pg=304
++# https://library.hungaricana.hu/hu/view/Zala_1948_09/?pg=64
++# https://library.hungaricana.hu/hu/view/SatoraljaujhelyiLeveltar_ZempleniNepujsag_1948/?pg=53
++# https://library.hungaricana.hu/hu/view/SatoraljaujhelyiLeveltar_ZempleniNepujsag_1948/?pg=160
++# https://library.hungaricana.hu/hu/view/Delmagyarorszag_1949_09/?pg=94
+ Rule Hungary 1947 1949 - Apr Sun>=4 2:00s 1:00 S
+-Rule Hungary 1950 only - Apr 17 2:00s 1:00 S
+-Rule Hungary 1950 only - Oct 23 2:00s 0 -
+-Rule Hungary 1954 1955 - May 23 0:00 1:00 S
+-Rule Hungary 1954 1955 - Oct 3 0:00 0 -
+-Rule Hungary 1956 only - Jun Sun>=1 0:00 1:00 S
+-Rule Hungary 1956 only - Sep lastSun 0:00 0 -
+-Rule Hungary 1957 only - Jun Sun>=1 1:00 1:00 S
+-Rule Hungary 1957 only - Sep lastSun 3:00 0 -
+-Rule Hungary 1980 only - Apr 6 1:00 1:00 S
++Rule Hungary 1947 1949 - Oct Sun>=1 2:00s 0 -
++# https://library.hungaricana.hu/hu/view/DTT_KOZL_TanacsokKozlonye_1954/?pg=513
++Rule Hungary 1954 only - May 23 0:00 1:00 S
++Rule Hungary 1954 only - Oct 3 0:00 0 -
++# https://library.hungaricana.hu/hu/view/DTT_KOZL_TanacsokKozlonye_1955/?pg=398
++Rule Hungary 1955 only - May 22 2:00 1:00 S
++Rule Hungary 1955 only - Oct 2 3:00 0 -
++# https://library.hungaricana.hu/hu/view/HevesMegyeiNepujsag_1956_06/?pg=0
++# https://library.hungaricana.hu/hu/view/EszakMagyarorszag_1956_06/?pg=6
++# https://library.hungaricana.hu/hu/view/SzolnokMegyeiNeplap_1957_04/?pg=120
++# https://library.hungaricana.hu/hu/view/PestMegyeiHirlap_1957_09/?pg=143
++Rule Hungary 1956 1957 - Jun Sun>=1 2:00 1:00 S
++Rule Hungary 1956 1957 - Sep lastSun 3:00 0 -
++# https://library.hungaricana.hu/hu/view/DTT_KOZL_TanacsokKozlonye_1980/?pg=1227
++Rule Hungary 1980 only - Apr 6 0:00 1:00 S
++Rule Hungary 1980 only - Sep 28 1:00 0 -
++# https://library.hungaricana.hu/hu/view/Delmagyarorszag_1981_01/?pg=79
++# https://library.hungaricana.hu/hu/view/DTT_KOZL_TanacsokKozlonye_1982/?pg=115
++# https://library.hungaricana.hu/hu/view/DTT_KOZL_TanacsokKozlonye_1983/?pg=85
++Rule Hungary 1981 1983 - Mar lastSun 0:00 1:00 S
++Rule Hungary 1981 1983 - Sep lastSun 1:00 0 -
++#
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+-Zone Europe/Budapest 1:16:20 - LMT 1890 Oct
++Zone Europe/Budapest 1:16:20 - LMT 1890 Nov 1
+ 1:00 C-Eur CE%sT 1918
+- 1:00 Hungary CE%sT 1941 Apr 8
++# https://library.hungaricana.hu/hu/view/OGYK_RT_1941/?pg=1204
++ 1:00 Hungary CE%sT 1941 Apr 7 23:00
+ 1:00 C-Eur CE%sT 1945
+- 1:00 Hungary CE%sT 1980 Sep 28 2:00s
++ 1:00 Hungary CE%sT 1984
+ 1:00 EU CE%sT
+
+ # Iceland
+@@ -1601,7 +1678,7 @@
+ # The information below is taken from the 1988 Almanak; see
+ # http://www.almanak.hi.is/klukkan.html
+ #
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Iceland 1917 1919 - Feb 19 23:00 1:00 -
+ Rule Iceland 1917 only - Oct 21 1:00 0 -
+ Rule Iceland 1918 1919 - Nov 16 1:00 0 -
+@@ -1693,7 +1770,7 @@
+ # to 1944-06-04; although Rome was an open city during this period, it
+ # was effectively controlled by Germany.
+ #
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Italy 1916 only - Jun 3 24:00 1:00 S
+ Rule Italy 1916 1917 - Sep 30 24:00 0 -
+ Rule Italy 1917 only - Mar 31 24:00 1:00 S
+@@ -1803,7 +1880,7 @@
+ # urged Lithuania and Estonia to adopt a similar time policy, but it
+ # appears that they will not do so....
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Latvia 1989 1996 - Mar lastSun 2:00s 1:00 S
+ Rule Latvia 1989 1996 - Sep lastSun 2:00s 0 -
+
+@@ -1896,7 +1973,7 @@
+ # Luxembourg
+ # Whitman disagrees with most of these dates in minor ways;
+ # go with Shanks & Pottenger.
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Lux 1916 only - May 14 23:00 1:00 S
+ Rule Lux 1916 only - Oct 1 1:00 0 -
+ Rule Lux 1917 only - Apr 28 23:00 1:00 S
+@@ -1937,7 +2014,7 @@
+ # From Paul Eggert (2016-10-21):
+ # Assume 1900-1972 was like Rome, overriding Shanks.
+ #
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Malta 1973 only - Mar 31 0:00s 1:00 S
+ Rule Malta 1973 only - Sep 29 0:00s 0 -
+ Rule Malta 1974 only - Apr 21 0:00s 1:00 S
+@@ -2010,7 +2087,7 @@
+ # says the 2014-03-30 spring-forward transition was at 02:00 local time.
+ # Guess that since 1997 Moldova has switched one hour before the EU.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Moldova 1997 max - Mar lastSun 2:00 1:00 S
+ Rule Moldova 1997 max - Oct lastSun 3:00 0 -
+
+@@ -2028,11 +2105,24 @@
+ 2:00 Moldova EE%sT
+
+ # Monaco
+-# Shanks & Pottenger give 0:09:20 for Paris Mean Time; go with Howse's
+-# more precise 0:09:21.
++#
++# From Michael Deckers (2020-06-12):
++# In the "Journal de Monaco" of 1892-05-24, online at
++# https://journaldemonaco.gouv.mc/var/jdm/storage/original/application/b1c67c12c5af11b41ea888fb048e4fe8.pdf
++# we read: ...
++# [In virtue of a Sovereign Ordinance of the May 13 of the current [year],
++# legal time in the Principality will be set to, from the date of June 1,
++# 1892 onwards, to the meridian of Paris, as in France.]
++# In the "Journal de Monaco" of 1911-03-28, online at
++# https://journaldemonaco.gouv.mc/var/jdm/storage/original/application/de74ffb7db53d4f599059fe8f0ed482a.pdf
++# we read an ordinance of 1911-03-16: ...
++# [Legal time in the Principality will be set, from the date of promulgation
++# of the present ordinance, to legal time in France.... Consequently, legal
++# time will be retarded by 9 minutes and 21 seconds.]
++#
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+-Zone Europe/Monaco 0:29:32 - LMT 1891 Mar 15
+- 0:09:21 - PMT 1911 Mar 11 # Paris Mean Time
++Zone Europe/Monaco 0:29:32 - LMT 1892 Jun 1
++ 0:09:21 - PMT 1911 Mar 29 # Paris Mean Time
+ 0:00 France WE%sT 1945 Sep 16 3:00
+ 1:00 France CE%sT 1977
+ 1:00 EU CE%sT
+@@ -2080,7 +2170,7 @@
+ # The data entries before 1945 are taken from
+ # https://www.staff.science.uu.nl/~gent0113/wettijd/wettijd.htm
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Neth 1916 only - May 1 0:00 1:00 NST # Netherlands Summer Time
+ Rule Neth 1916 only - Oct 1 0:00 0 AMT # Amsterdam Mean Time
+ Rule Neth 1917 only - Apr 16 2:00s 1:00 NST
+@@ -2117,7 +2207,7 @@
+ # Norway
+ # http://met.no/met/met_lex/q_u/sommertid.html (2004-01) agrees with Shanks &
+ # Pottenger.
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Norway 1916 only - May 22 1:00 1:00 S
+ Rule Norway 1916 only - Sep 30 0:00 0 -
+ Rule Norway 1945 only - Apr 2 2:00s 1:00 S
+@@ -2186,7 +2276,7 @@
+ # The 1919 dates and times can be found in Tygodnik Urzędowy nr 1 (1919-03-20),
+ # pp 1-2.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Poland 1918 1919 - Sep 16 2:00s 0 -
+ Rule Poland 1919 only - Apr 15 2:00s 1:00 S
+ Rule Poland 1944 only - Apr 3 2:00s 1:00 S
+@@ -2257,7 +2347,7 @@
+ # Guess that the Azores changed to EU rules in 1992 (since that's when Portugal
+ # harmonized with EU rules), and that they stayed +0:00 that winter.
+ #
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ # DSH writes that despite Decree 1,469 (1915), the change to the clocks was not
+ # done every year, depending on what Spain did, because of railroad schedules.
+ # Go with Shanks & Pottenger.
+@@ -2370,7 +2460,7 @@
+ # assume that Romania and Moldova switched to EU rules in 1997,
+ # the same year as Bulgaria.
+ #
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Romania 1932 only - May 21 0:00s 1:00 S
+ Rule Romania 1932 1939 - Oct Sun>=1 0:00s 0 -
+ Rule Romania 1933 1939 - Apr Sun>=2 0:00s 1:00 S
+@@ -3468,14 +3558,14 @@
+ # fallback transition from the next day's 00:59... to 00:00.
+
+ # From Michael Deckers (2016-12-15):
+-# The Royal Decree of 1900-06-26 quoted by Planesas, online at
++# The Royal Decree of 1900-07-26 quoted by Planesas, online at
+ # https://www.boe.es/datos/pdfs/BOE//1900/209/A00383-00384.pdf
+ # says in its article 5 (my translation):
+ # These dispositions will enter into force beginning with the
+ # instant at which, according to the time indicated in article 1,
+ # the 1st day of January of 1901 will begin.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Spain 1918 only - Apr 15 23:00 1:00 S
+ Rule Spain 1918 1919 - Oct 6 24:00s 0 -
+ Rule Spain 1919 only - Apr 6 23:00 1:00 S
+@@ -3612,7 +3702,7 @@
+ # By the end of the 18th century clocks and watches became commonplace
+ # and their performance improved enormously. Communities began to keep
+ # mean time in preference to apparent time - Geneva from 1780 ....
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ # From Whitman (who writes "Midnight?"):
+ # Rule Swiss 1940 only - Nov 2 0:00 1:00 S
+ # Rule Swiss 1940 only - Dec 31 0:00 0 -
+@@ -3699,7 +3789,7 @@
+ # 1853-07-16, though it probably occurred at some other date in Zurich, and
+ # legal civil time probably changed at still some other transition date.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Swiss 1941 1942 - May Mon>=1 1:00 1:00 S
+ Rule Swiss 1941 1942 - Oct Mon>=1 2:00 0 -
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+@@ -3848,7 +3938,7 @@
+ # Although Google Translate misfires on that source, it looks like
+ # Turkey reversed last month's decision, and so will stay at +03.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Turkey 1916 only - May 1 0:00 1:00 S
+ Rule Turkey 1916 only - Oct 1 0:00 0 -
+ Rule Turkey 1920 only - Mar 28 0:00 1:00 S
+@@ -4006,7 +4096,7 @@
+ 2:00 1:00 EEST 1991 Sep 29 3:00
+ 2:00 E-Eur EE%sT 1995
+ 2:00 EU EE%sT
+-# Ruthenia used CET 1990/1991.
++# Transcarpathia used CET 1990/1991.
+ # "Uzhhorod" is the transliteration of the Rusyn/Ukrainian pronunciation, but
+ # "Uzhgorod" is more common in English.
+ Zone Europe/Uzhgorod 1:29:12 - LMT 1890 Oct
+diff --git openjdk.orig/jdk/make/data/tzdata/leapseconds openjdk/jdk/make/data/tzdata/leapseconds
+--- openjdk.orig/jdk/make/data/tzdata/leapseconds
++++ openjdk/jdk/make/data/tzdata/leapseconds
+@@ -91,11 +91,11 @@
+ # Any additional leap seconds will come after this.
+ # This Expires line is commented out for now,
+ # so that pre-2020a zic implementations do not reject this file.
+-#Expires 2020 Dec 28 00:00:00
++#Expires 2021 Jun 28 00:00:00
+
+ # POSIX timestamps for the data in this file:
+ #updated 1467936000 (2016-07-08 00:00:00 UTC)
+-#expires 1609113600 (2020-12-28 00:00:00 UTC)
++#expires 1624838400 (2021-06-28 00:00:00 UTC)
+
+-# Updated through IERS Bulletin C59
+-# File expires on: 28 December 2020
++# Updated through IERS Bulletin C60
++# File expires on: 28 June 2021
+diff --git openjdk.orig/jdk/make/data/tzdata/northamerica openjdk/jdk/make/data/tzdata/northamerica
+--- openjdk.orig/jdk/make/data/tzdata/northamerica
++++ openjdk/jdk/make/data/tzdata/northamerica
+@@ -193,7 +193,7 @@
+ # U.S. government action. So even though the "US" rules have changed
+ # in the latest release, other countries won't be affected.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule US 1918 1919 - Mar lastSun 2:00 1:00 D
+ Rule US 1918 1919 - Oct lastSun 2:00 0 S
+ Rule US 1942 only - Feb 9 2:00 1:00 W # War
+@@ -370,7 +370,7 @@
+ # Eastern time (i.e., -4:56:01.6) just before the 1883 switch. Round to the
+ # nearest second.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
++# Rule NAME FROM TO - IN ON AT SAVE LETTER
+ Rule NYC 1920 only - Mar lastSun 2:00 1:00 D
+ Rule NYC 1920 only - Oct lastSun 2:00 0 S
+ Rule NYC 1921 1966 - Apr lastSun 2:00 1:00 D
+@@ -454,7 +454,7 @@
+ # The Tennessean 2007-05-11, republished 2015-04-06.
+ # https://www.tennessean.com/story/insider/extras/2015/04/06/archives-seigenthaler-for-100-years-the-tennessean-had-it-covered/25348545/
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
++# Rule NAME FROM TO - IN ON AT SAVE LETTER
+ Rule Chicago 1920 only - Jun 13 2:00 1:00 D
+ Rule Chicago 1920 1921 - Oct lastSun 2:00 0 S
+ Rule Chicago 1921 only - Mar lastSun 2:00 1:00 D
+@@ -523,7 +523,7 @@
+ # El Paso Times. 2018-10-24 06:40 -06.
+ # https://www.elpasotimes.com/story/news/local/el-paso/2018/10/24/el-pasoans-were-time-rebels-fought-stay-mountain-zone/1744509002/
+ #
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
++# Rule NAME FROM TO - IN ON AT SAVE LETTER
+ Rule Denver 1920 1921 - Mar lastSun 2:00 1:00 D
+ Rule Denver 1920 only - Oct lastSun 2:00 0 S
+ Rule Denver 1921 only - May 22 2:00 0 S
+@@ -576,7 +576,7 @@
+ # https://repository.uchastings.edu/cgi/viewcontent.cgi?article=1501&context=ca_ballot_props
+ # https://repository.uchastings.edu/cgi/viewcontent.cgi?article=1636&context=ca_ballot_props
+ #
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
++# Rule NAME FROM TO - IN ON AT SAVE LETTER
+ Rule CA 1948 only - Mar 14 2:01 1:00 D
+ Rule CA 1949 only - Jan 1 2:00 0 S
+ Rule CA 1950 1966 - Apr lastSun 1:00 1:00 D
+@@ -934,7 +934,7 @@
+ # going to switch from Central to Eastern Time on March 11, 2007....
+ # http://www.indystar.com/apps/pbcs.dll/article?AID=/20070207/LOCAL190108/702070524/0/LOCAL
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
++# Rule NAME FROM TO - IN ON AT SAVE LETTER
+ Rule Indianapolis 1941 only - Jun 22 2:00 1:00 D
+ Rule Indianapolis 1941 1954 - Sep lastSun 2:00 0 S
+ Rule Indianapolis 1946 1954 - Apr lastSun 2:00 1:00 D
+@@ -953,7 +953,7 @@
+ #
+ # Eastern Crawford County, Indiana, left its clocks alone in 1974,
+ # as well as from 1976 through 2005.
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
++# Rule NAME FROM TO - IN ON AT SAVE LETTER
+ Rule Marengo 1951 only - Apr lastSun 2:00 1:00 D
+ Rule Marengo 1951 only - Sep lastSun 2:00 0 S
+ Rule Marengo 1954 1960 - Apr lastSun 2:00 1:00 D
+@@ -972,7 +972,7 @@
+ # Daviess, Dubois, Knox, and Martin Counties, Indiana,
+ # switched from eastern to central time in April 2006, then switched back
+ # in November 2007.
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
++# Rule NAME FROM TO - IN ON AT SAVE LETTER
+ Rule Vincennes 1946 only - Apr lastSun 2:00 1:00 D
+ Rule Vincennes 1946 only - Sep lastSun 2:00 0 S
+ Rule Vincennes 1953 1954 - Apr lastSun 2:00 1:00 D
+@@ -997,7 +997,7 @@
+ # The Indianapolis News, Friday 27 October 1967 states that Perry County
+ # returned to CST. It went again to EST on 27 April 1969, as documented by the
+ # Indianapolis star of Saturday 26 April.
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
++# Rule NAME FROM TO - IN ON AT SAVE LETTER
+ Rule Perry 1955 only - May 1 0:00 1:00 D
+ Rule Perry 1955 1960 - Sep lastSun 2:00 0 S
+ Rule Perry 1956 1963 - Apr lastSun 2:00 1:00 D
+@@ -1014,7 +1014,7 @@
+ #
+ # Pike County, Indiana moved from central to eastern time in 1977,
+ # then switched back in 2006, then switched back again in 2007.
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
++# Rule NAME FROM TO - IN ON AT SAVE LETTER
+ Rule Pike 1955 only - May 1 0:00 1:00 D
+ Rule Pike 1955 1960 - Sep lastSun 2:00 0 S
+ Rule Pike 1956 1964 - Apr lastSun 2:00 1:00 D
+@@ -1035,7 +1035,7 @@
+ # An article on page A3 of the Sunday, 1991-10-27 Washington Post
+ # notes that Starke County switched from Central time to Eastern time as of
+ # 1991-10-27.
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
++# Rule NAME FROM TO - IN ON AT SAVE LETTER
+ Rule Starke 1947 1961 - Apr lastSun 2:00 1:00 D
+ Rule Starke 1947 1954 - Sep lastSun 2:00 0 S
+ Rule Starke 1955 1956 - Oct lastSun 2:00 0 S
+@@ -1052,7 +1052,7 @@
+ #
+ # Pulaski County, Indiana, switched from eastern to central time in
+ # April 2006 and then switched back in March 2007.
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
++# Rule NAME FROM TO - IN ON AT SAVE LETTER
+ Rule Pulaski 1946 1960 - Apr lastSun 2:00 1:00 D
+ Rule Pulaski 1946 1954 - Sep lastSun 2:00 0 S
+ Rule Pulaski 1955 1956 - Oct lastSun 2:00 0 S
+@@ -1094,7 +1094,7 @@
+ #
+ # Part of Kentucky left its clocks alone in 1974.
+ # This also includes Clark, Floyd, and Harrison counties in Indiana.
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
++# Rule NAME FROM TO - IN ON AT SAVE LETTER
+ Rule Louisville 1921 only - May 1 2:00 1:00 D
+ Rule Louisville 1921 only - Sep 1 2:00 0 S
+ Rule Louisville 1941 only - Apr lastSun 2:00 1:00 D
+@@ -1208,7 +1208,7 @@
+ # election Michigan voters narrowly repealed DST, effective 1969.
+ #
+ # Most of Michigan observed DST from 1973 on, but was a bit late in 1975.
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
++# Rule NAME FROM TO - IN ON AT SAVE LETTER
+ Rule Detroit 1948 only - Apr lastSun 2:00 1:00 D
+ Rule Detroit 1948 only - Sep lastSun 2:00 0 S
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+@@ -1225,7 +1225,7 @@
+ #
+ # Dickinson, Gogebic, Iron, and Menominee Counties, Michigan,
+ # switched from EST to CST/CDT in 1973.
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
++# Rule NAME FROM TO - IN ON AT SAVE LETTER
+ Rule Menominee 1946 only - Apr lastSun 2:00 1:00 D
+ Rule Menominee 1946 only - Sep lastSun 2:00 0 S
+ Rule Menominee 1966 only - Apr lastSun 2:00 1:00 D
+@@ -1395,7 +1395,7 @@
+ # Oct 31, to Oct 27, 1918 (and Sunday is a more likely transition day
+ # than Thursday) in all Canadian rulesets.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Canada 1918 only - Apr 14 2:00 1:00 D
+ Rule Canada 1918 only - Oct 27 2:00 0 S
+ Rule Canada 1942 only - Feb 9 2:00 1:00 W # War
+@@ -1418,7 +1418,7 @@
+ # that follows the rules is the southeast corner, including Port Hope
+ # Simpson and Mary's Harbour, but excluding, say, Black Tickle.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule StJohns 1917 only - Apr 8 2:00 1:00 D
+ Rule StJohns 1917 only - Sep 17 2:00 0 S
+ # Whitman gives 1919 Apr 5 and 1920 Apr 5; go with Shanks & Pottenger.
+@@ -1520,7 +1520,7 @@
+ # bill say that it is "accommodating the customs and practices" of those
+ # regions, which suggests that they have always been in-line with Halifax.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Halifax 1916 only - Apr 1 0:00 1:00 D
+ Rule Halifax 1916 only - Oct 1 0:00 0 S
+ Rule Halifax 1920 only - May 9 0:00 1:00 D
+@@ -1586,7 +1586,7 @@
+ # clear that this was the case since at least 1993.
+ # For now, assume it started in 1993.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Moncton 1933 1935 - Jun Sun>=8 1:00 1:00 D
+ Rule Moncton 1933 1935 - Sep Sun>=8 1:00 0 S
+ Rule Moncton 1936 1938 - Jun Sun>=1 1:00 1:00 D
+@@ -1795,7 +1795,7 @@
+ # With some exceptions, the use of daylight saving may be said to be limited
+ # to those cities and towns lying between Quebec city and Windsor, Ont.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Toronto 1919 only - Mar 30 23:30 1:00 D
+ Rule Toronto 1919 only - Oct 26 0:00 0 S
+ Rule Toronto 1920 only - May 2 2:00 1:00 D
+@@ -1893,7 +1893,7 @@
+ # starting 1966. Since 02:00s is clearly correct for 1967 on, assume
+ # it was also 02:00s in 1966.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Winn 1916 only - Apr 23 0:00 1:00 D
+ Rule Winn 1916 only - Sep 17 0:00 0 S
+ Rule Winn 1918 only - Apr 14 2:00 1:00 D
+@@ -1984,7 +1984,7 @@
+ # long and rather painful to read.
+ # http://www.qp.gov.sk.ca/documents/English/Statutes/Statutes/T14.pdf
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Regina 1918 only - Apr 14 2:00 1:00 D
+ Rule Regina 1918 only - Oct 27 2:00 0 S
+ Rule Regina 1930 1934 - May Sun>=1 0:00 1:00 D
+@@ -2034,7 +2034,7 @@
+ # Boyer JP. Forcing Choice: The Risky Reward of Referendums. Dundum. 2017.
+ # ISBN 978-1459739123.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Edm 1918 1919 - Apr Sun>=8 2:00 1:00 D
+ Rule Edm 1918 only - Oct 27 2:00 0 S
+ Rule Edm 1919 only - May 27 2:00 0 S
+@@ -2143,7 +2143,7 @@
+ # https://searcharchives.vancouver.ca/daylight-saving-1918-starts-again-july-7-1941-start-d-s-sept-27-end-of-d-s-1941
+ # We have no further details, so omit them for now.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Vanc 1918 only - Apr 14 2:00 1:00 D
+ Rule Vanc 1918 only - Oct 27 2:00 0 S
+ Rule Vanc 1942 only - Feb 9 2:00 1:00 W # War
+@@ -2472,7 +2472,19 @@
+ # consistency with nearby Dawson Creek, Creston, and Fort Nelson.
+ # https://yukon.ca/en/news/yukon-end-seasonal-time-change
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# From Andrew G. Smith (2020-09-24):
++# Yukon has completed its regulatory change to be on UTC -7 year-round....
++# http://www.gov.yk.ca/legislation/regs/oic2020_125.pdf
++# What we have done is re-defined Yukon Standard Time, as we are
++# authorized to do under section 33 of our Interpretation Act:
++# http://www.gov.yk.ca/legislation/acts/interpretation_c.pdf
++#
++# From Paul Eggert (2020-09-24):
++# tzdb uses the obsolete YST abbreviation for standard time in Yukon through
++# about 1970, and uses PST for standard time in Yukon since then. Consistent
++# with that, use MST for -07, the new standard time in Yukon effective Nov. 1.
++
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule NT_YK 1918 only - Apr 14 2:00 1:00 D
+ Rule NT_YK 1918 only - Oct 27 2:00 0 S
+ Rule NT_YK 1919 only - May 25 2:00 1:00 D
+@@ -2526,12 +2538,12 @@
+ Zone America/Whitehorse -9:00:12 - LMT 1900 Aug 20
+ -9:00 NT_YK Y%sT 1967 May 28 0:00
+ -8:00 NT_YK P%sT 1980
+- -8:00 Canada P%sT 2020 Mar 8 2:00
++ -8:00 Canada P%sT 2020 Nov 1
+ -7:00 - MST
+ Zone America/Dawson -9:17:40 - LMT 1900 Aug 20
+ -9:00 NT_YK Y%sT 1973 Oct 28 0:00
+ -8:00 NT_YK P%sT 1980
+- -8:00 Canada P%sT 2020 Mar 8 2:00
++ -8:00 Canada P%sT 2020 Nov 1
+ -7:00 - MST
+
+
+@@ -2746,7 +2758,7 @@
+ # 5- The islands, reefs and keys shall take their timezone from the
+ # longitude they are located at.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Mexico 1939 only - Feb 5 0:00 1:00 D
+ Rule Mexico 1939 only - Jun 25 0:00 0 S
+ Rule Mexico 1940 only - Dec 9 0:00 1:00 D
+@@ -2951,7 +2963,7 @@
+ # rules to sync with the U.S. starting in 2007....
+ # http://www.jonesbahamas.com/?c=45&a=10412
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Bahamas 1964 1975 - Oct lastSun 2:00 0 S
+ Rule Bahamas 1964 1975 - Apr lastSun 2:00 1:00 D
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+@@ -2963,7 +2975,7 @@
+
+ # For 1899 Milne gives -3:58:29.2; round that.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Barb 1977 only - Jun 12 2:00 1:00 D
+ Rule Barb 1977 1978 - Oct Sun>=1 2:00 0 S
+ Rule Barb 1978 1980 - Apr Sun>=15 2:00 1:00 D
+@@ -2976,7 +2988,7 @@
+
+ # Belize
+ # Whitman entirely disagrees with Shanks; go with Shanks & Pottenger.
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Belize 1918 1942 - Oct Sun>=2 0:00 0:30 -0530
+ Rule Belize 1919 1943 - Feb Sun>=9 0:00 0 CST
+ Rule Belize 1973 only - Dec 5 0:00 1:00 CDT
+@@ -3013,7 +3025,7 @@
+
+ # Milne gives -5:36:13.3 as San José mean time; round to nearest.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule CR 1979 1980 - Feb lastSun 0:00 1:00 D
+ Rule CR 1979 1980 - Jun Sun>=1 0:00 0 S
+ Rule CR 1991 1992 - Jan Sat>=15 0:00 1:00 D
+@@ -3187,7 +3199,7 @@
+ # From Paul Eggert (2012-11-03):
+ # For now, assume the future rule is first Sunday in November.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Cuba 1928 only - Jun 10 0:00 1:00 D
+ Rule Cuba 1928 only - Oct 10 0:00 0 S
+ Rule Cuba 1940 1942 - Jun Sun>=1 0:00 1:00 D
+@@ -3256,7 +3268,7 @@
+ # decided to revert.
+
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule DR 1966 only - Oct 30 0:00 1:00 EDT
+ Rule DR 1967 only - Feb 28 0:00 0 EST
+ Rule DR 1969 1973 - Oct lastSun 0:00 0:30 -0430
+@@ -3273,7 +3285,7 @@
+
+ # El Salvador
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Salv 1987 1988 - May Sun>=1 0:00 1:00 D
+ Rule Salv 1987 1988 - Sep lastSun 0:00 0 S
+ # There are too many San Salvadors elsewhere, so use America/El_Salvador
+@@ -3302,7 +3314,7 @@
+ # (2006-04-19), says DST ends at 24:00. See
+ # http://www.sieca.org.gt/Sitio_publico/Energeticos/Doc/Medidas/Cambio_Horario_Nac_190406.pdf
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Guat 1973 only - Nov 25 0:00 1:00 D
+ Rule Guat 1974 only - Feb 24 0:00 0 S
+ Rule Guat 1983 only - May 21 0:00 1:00 D
+@@ -3383,7 +3395,7 @@
+ # I have not been able to find a more authoritative source:
+ # https://www.haitilibre.com/en/news-20319-haiti-notices-time-change-in-haiti.html
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Haiti 1983 only - May 8 0:00 1:00 D
+ Rule Haiti 1984 1987 - Apr lastSun 0:00 1:00 D
+ Rule Haiti 1983 1987 - Oct lastSun 0:00 0 S
+@@ -3431,7 +3443,7 @@
+ # http://www.laprensahn.com/pais_nota.php?id04962=7386
+ # So it seems that Honduras will not enter DST this year....
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Hond 1987 1988 - May Sun>=1 0:00 1:00 D
+ Rule Hond 1987 1988 - Sep lastSun 0:00 0 S
+ Rule Hond 2006 only - May Sun>=1 0:00 1:00 D
+@@ -3522,7 +3534,7 @@
+ # The natural sun time is restored in all the national territory, in that the
+ # time is returned one hour at 01:00 am of October 1 of 2006.
+ #
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Nic 1979 1980 - Mar Sun>=16 0:00 1:00 D
+ Rule Nic 1979 1980 - Jun Mon>=23 0:00 0 S
+ Rule Nic 2005 only - Apr 10 0:00 1:00 D
+diff --git openjdk.orig/jdk/make/data/tzdata/pacificnew openjdk/jdk/make/data/tzdata/pacificnew
+deleted file mode 100644
+--- openjdk/jdk/make/data/tzdata/pacificnew
++++ /dev/null
+@@ -1,52 +0,0 @@
+-#
+-# 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. Oracle designates this
+-# particular file as subject to the "Classpath" exception as provided
+-# by Oracle in the LICENSE file that accompanied this code.
+-#
+-# 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.
+-#
+-# tzdb data for proposed US election time (this file is obsolete)
+-
+-# This file is in the public domain, so clarified as of
+-# 2009-05-17 by Arthur David Olson.
+-
+-# From Arthur David Olson (1989-04-05):
+-# On 1989-04-05, the U. S. House of Representatives passed (238-154) a bill
+-# establishing "Pacific Presidential Election Time"; it was not acted on
+-# by the Senate or signed into law by the President.
+-# You might want to change the "PE" (Presidential Election) below to
+-# "Q" (Quadrennial) to maintain three-character zone abbreviations.
+-# If you're really conservative, you might want to change it to "D".
+-# Avoid "L" (Leap Year), which won't be true in 2100.
+-
+-# If Presidential Election Time is ever established, replace "XXXX" below
+-# with the year the law takes effect and uncomment the "##" lines.
+-
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+-## Rule Twilite XXXX max - Apr Sun>=1 2:00 1:00 D
+-## Rule Twilite XXXX max uspres Oct lastSun 2:00 1:00 PE
+-## Rule Twilite XXXX max uspres Nov Sun>=7 2:00 0 S
+-## Rule Twilite XXXX max nonpres Oct lastSun 2:00 0 S
+-
+-# Zone NAME STDOFF RULES/SAVE FORMAT [UNTIL]
+-## Zone America/Los_Angeles-PET -8:00 US P%sT XXXX
+-## -8:00 Twilite P%sT
+-
+-# For now...
+-Link America/Los_Angeles US/Pacific-New ##
+diff --git openjdk.orig/jdk/make/data/tzdata/southamerica openjdk/jdk/make/data/tzdata/southamerica
+--- openjdk.orig/jdk/make/data/tzdata/southamerica
++++ openjdk/jdk/make/data/tzdata/southamerica
+@@ -71,7 +71,7 @@
+ # I am sending modifications to the Argentine time zone table...
+ # AR was chosen because they are the ISO letters that represent Argentina.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Arg 1930 only - Dec 1 0:00 1:00 -
+ Rule Arg 1931 only - Apr 1 0:00 0 -
+ Rule Arg 1931 only - Oct 15 0:00 1:00 -
+@@ -792,7 +792,7 @@
+ # From Paul Eggert (2013-10-17):
+ # For now, assume western Amazonas will change as well.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ # Decree 20,466 (1931-10-01)
+ # Decree 21,896 (1932-01-10)
+ Rule Brazil 1931 only - Oct 3 11:00 1:00 -
+@@ -1281,7 +1281,7 @@
+ # For now, assume that they will not revert,
+ # since they have extended the expiration date once already.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Chile 1927 1931 - Sep 1 0:00 1:00 -
+ Rule Chile 1928 1932 - Apr 1 0:00 0 -
+ Rule Chile 1968 only - Nov 3 4:00u 1:00 -
+@@ -1381,7 +1381,7 @@
+ # Milne gives 4:56:16.4 for Bogotá time in 1899; round to nearest. He writes,
+ # "A variation of fifteen minutes in the public clocks of Bogota is not rare."
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule CO 1992 only - May 3 0:00 1:00 -
+ Rule CO 1993 only - Apr 4 0:00 0 -
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+@@ -1441,7 +1441,7 @@
+ # (Not one step back), the clocks went back in 1993 and the experiment was not
+ # repeated. For now, assume transitions were at 00:00 local time country-wide.
+ #
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Ecuador 1992 only - Nov 28 0:00 1:00 -
+ Rule Ecuador 1993 only - Feb 5 0:00 0 -
+ #
+@@ -1535,7 +1535,7 @@
+ # For now we will assume permanent -03 for the Falklands
+ # until advised differently (to apply for 2012 and beyond, after the 2011
+ # experiment was apparently successful.)
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Falk 1937 1938 - Sep lastSun 0:00 1:00 -
+ Rule Falk 1938 1942 - Mar Sun>=19 0:00 0 -
+ Rule Falk 1939 only - Oct 1 0:00 1:00 -
+@@ -1581,7 +1581,7 @@
+ # No time of the day is established for the adjustment, so people normally
+ # adjust their clocks at 0 hour of the given dates.
+ #
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Para 1975 1988 - Oct 1 0:00 1:00 -
+ Rule Para 1975 1978 - Mar 1 0:00 0 -
+ Rule Para 1979 1991 - Apr 1 0:00 0 -
+@@ -1674,7 +1674,7 @@
+ # From Paul Eggert (2006-03-22):
+ # Shanks & Pottenger don't have this transition. Assume 1986 was like 1987.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Peru 1938 only - Jan 1 0:00 1:00 -
+ Rule Peru 1938 only - Apr 1 0:00 0 -
+ Rule Peru 1938 1939 - Sep lastSun 0:00 1:00 -
+@@ -1770,7 +1770,7 @@
+ # https://www.impo.com.uy/diariooficial/1926/03/10/2
+ # https://www.impo.com.uy/diariooficial/1926/03/18/2
+ #
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Uruguay 1923 1925 - Oct 1 0:00 0:30 -
+ Rule Uruguay 1924 1926 - Apr 1 0:00 0 -
+ # From Tim Parenti (2018-02-15):
+diff --git openjdk.orig/jdk/make/data/tzdata/systemv openjdk/jdk/make/data/tzdata/systemv
+deleted file mode 100644
+--- openjdk/jdk/make/data/tzdata/systemv
++++ /dev/null
+@@ -1,62 +0,0 @@
+-#
+-# 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. Oracle designates this
+-# particular file as subject to the "Classpath" exception as provided
+-# by Oracle in the LICENSE file that accompanied this code.
+-#
+-# 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.
+-#
+-# tzdb data for System V rules (this file is obsolete)
+-
+-# This file is in the public domain, so clarified as of
+-# 2009-05-17 by Arthur David Olson.
+-
+-# Old rules, should the need arise.
+-# No attempt is made to handle Newfoundland, since it cannot be expressed
+-# using the System V "TZ" scheme (half-hour offset), or anything outside
+-# North America (no support for non-standard DST start/end dates), nor
+-# the changes in the DST rules in the US after 1976 (which occurred after
+-# the old rules were written).
+-#
+-# If you need the old rules, uncomment ## lines.
+-# Compile this *without* leap second correction for true conformance.
+-
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+-Rule SystemV min 1973 - Apr lastSun 2:00 1:00 D
+-Rule SystemV min 1973 - Oct lastSun 2:00 0 S
+-Rule SystemV 1974 only - Jan 6 2:00 1:00 D
+-Rule SystemV 1974 only - Nov lastSun 2:00 0 S
+-Rule SystemV 1975 only - Feb 23 2:00 1:00 D
+-Rule SystemV 1975 only - Oct lastSun 2:00 0 S
+-Rule SystemV 1976 max - Apr lastSun 2:00 1:00 D
+-Rule SystemV 1976 max - Oct lastSun 2:00 0 S
+-
+-# Zone NAME STDOFF RULES/SAVE FORMAT [UNTIL]
+-## Zone SystemV/AST4ADT -4:00 SystemV A%sT
+-## Zone SystemV/EST5EDT -5:00 SystemV E%sT
+-## Zone SystemV/CST6CDT -6:00 SystemV C%sT
+-## Zone SystemV/MST7MDT -7:00 SystemV M%sT
+-## Zone SystemV/PST8PDT -8:00 SystemV P%sT
+-## Zone SystemV/YST9YDT -9:00 SystemV Y%sT
+-## Zone SystemV/AST4 -4:00 - AST
+-## Zone SystemV/EST5 -5:00 - EST
+-## Zone SystemV/CST6 -6:00 - CST
+-## Zone SystemV/MST7 -7:00 - MST
+-## Zone SystemV/PST8 -8:00 - PST
+-## Zone SystemV/YST9 -9:00 - YST
+-## Zone SystemV/HST10 -10:00 - HST
+diff --git openjdk.orig/jdk/make/gendata/GendataTZDB.gmk openjdk/jdk/make/gendata/GendataTZDB.gmk
+--- openjdk.orig/jdk/make/gendata/GendataTZDB.gmk
++++ openjdk/jdk/make/gendata/GendataTZDB.gmk
+@@ -29,7 +29,7 @@
+ # Time zone data file creation
+ #
+ TZDATA_DIR := $(JDK_TOPDIR)/make/data/tzdata
+-TZDATA_TZFILE := africa antarctica asia australasia europe northamerica pacificnew southamerica backward etcetera gmt jdk11_backward
++TZDATA_TZFILE := africa antarctica asia australasia europe northamerica southamerica backward etcetera gmt jdk11_backward
+ TZDATA_TZFILES := $(addprefix $(TZDATA_DIR)/,$(TZDATA_TZFILE))
+
+ GENDATA_TZDB_DAT := $(JDK_OUTPUTDIR)/lib/tzdb.dat
+diff --git openjdk.orig/jdk/src/aix/lib/tzmappings openjdk/jdk/src/aix/lib/tzmappings
+--- openjdk.orig/jdk/src/aix/lib/tzmappings
++++ openjdk/jdk/src/aix/lib/tzmappings
+@@ -568,7 +568,6 @@
+ US/Michigan America/New_York
+ US/Mountain America/Denver
+ US/Pacific America/Los_Angeles
+-US/Pacific-New America/Los_Angeles
+ US/Samoa Pacific/Pago_Pago
+ USAST-2 Africa/Johannesburg
+ USAST-2USADT Europe/Istanbul
+diff --git openjdk.orig/jdk/src/share/classes/sun/util/resources/TimeZoneNames.java openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames.java
+--- openjdk.orig/jdk/src/share/classes/sun/util/resources/TimeZoneNames.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames.java
+@@ -1040,7 +1040,6 @@
+ {"US/Michigan", EST},
+ {"US/Mountain", MST},
+ {"US/Pacific", PST},
+- {"US/Pacific-New", PST},
+ {"US/Samoa", SAMOA},
+ {"VST", ICT},
+ {"W-SU", MSK},
+diff --git openjdk.orig/jdk/src/share/classes/sun/util/resources/de/TimeZoneNames_de.java openjdk/jdk/src/share/classes/sun/util/resources/de/TimeZoneNames_de.java
+--- openjdk.orig/jdk/src/share/classes/sun/util/resources/de/TimeZoneNames_de.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/de/TimeZoneNames_de.java
+@@ -1035,7 +1035,6 @@
+ {"US/Michigan", EST},
+ {"US/Mountain", MST},
+ {"US/Pacific", PST},
+- {"US/Pacific-New", PST},
+ {"US/Samoa", SAMOA},
+ {"VST", ICT},
+ {"W-SU", MSK},
+diff --git openjdk.orig/jdk/src/share/classes/sun/util/resources/es/TimeZoneNames_es.java openjdk/jdk/src/share/classes/sun/util/resources/es/TimeZoneNames_es.java
+--- openjdk.orig/jdk/src/share/classes/sun/util/resources/es/TimeZoneNames_es.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/es/TimeZoneNames_es.java
+@@ -1035,7 +1035,6 @@
+ {"US/Michigan", EST},
+ {"US/Mountain", MST},
+ {"US/Pacific", PST},
+- {"US/Pacific-New", PST},
+ {"US/Samoa", SAMOA},
+ {"VST", ICT},
+ {"W-SU", MSK},
+diff --git openjdk.orig/jdk/src/share/classes/sun/util/resources/fr/TimeZoneNames_fr.java openjdk/jdk/src/share/classes/sun/util/resources/fr/TimeZoneNames_fr.java
+--- openjdk.orig/jdk/src/share/classes/sun/util/resources/fr/TimeZoneNames_fr.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/fr/TimeZoneNames_fr.java
+@@ -1035,7 +1035,6 @@
+ {"US/Michigan", EST},
+ {"US/Mountain", MST},
+ {"US/Pacific", PST},
+- {"US/Pacific-New", PST},
+ {"US/Samoa", SAMOA},
+ {"VST", ICT},
+ {"W-SU", MSK},
+diff --git openjdk.orig/jdk/src/share/classes/sun/util/resources/it/TimeZoneNames_it.java openjdk/jdk/src/share/classes/sun/util/resources/it/TimeZoneNames_it.java
+--- openjdk.orig/jdk/src/share/classes/sun/util/resources/it/TimeZoneNames_it.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/it/TimeZoneNames_it.java
+@@ -1035,7 +1035,6 @@
+ {"US/Michigan", EST},
+ {"US/Mountain", MST},
+ {"US/Pacific", PST},
+- {"US/Pacific-New", PST},
+ {"US/Samoa", SAMOA},
+ {"VST", ICT},
+ {"W-SU", MSK},
+diff --git openjdk.orig/jdk/src/share/classes/sun/util/resources/ja/TimeZoneNames_ja.java openjdk/jdk/src/share/classes/sun/util/resources/ja/TimeZoneNames_ja.java
+--- openjdk.orig/jdk/src/share/classes/sun/util/resources/ja/TimeZoneNames_ja.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/ja/TimeZoneNames_ja.java
+@@ -1035,7 +1035,6 @@
+ {"US/Michigan", EST},
+ {"US/Mountain", MST},
+ {"US/Pacific", PST},
+- {"US/Pacific-New", PST},
+ {"US/Samoa", SAMOA},
+ {"VST", ICT},
+ {"W-SU", MSK},
+diff --git openjdk.orig/jdk/src/share/classes/sun/util/resources/ko/TimeZoneNames_ko.java openjdk/jdk/src/share/classes/sun/util/resources/ko/TimeZoneNames_ko.java
+--- openjdk.orig/jdk/src/share/classes/sun/util/resources/ko/TimeZoneNames_ko.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/ko/TimeZoneNames_ko.java
+@@ -1035,7 +1035,6 @@
+ {"US/Michigan", EST},
+ {"US/Mountain", MST},
+ {"US/Pacific", PST},
+- {"US/Pacific-New", PST},
+ {"US/Samoa", SAMOA},
+ {"VST", ICT},
+ {"W-SU", MSK},
+diff --git openjdk.orig/jdk/src/share/classes/sun/util/resources/pt/TimeZoneNames_pt_BR.java openjdk/jdk/src/share/classes/sun/util/resources/pt/TimeZoneNames_pt_BR.java
+--- openjdk.orig/jdk/src/share/classes/sun/util/resources/pt/TimeZoneNames_pt_BR.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/pt/TimeZoneNames_pt_BR.java
+@@ -1035,7 +1035,6 @@
+ {"US/Michigan", EST},
+ {"US/Mountain", MST},
+ {"US/Pacific", PST},
+- {"US/Pacific-New", PST},
+ {"US/Samoa", SAMOA},
+ {"VST", ICT},
+ {"W-SU", MSK},
+diff --git openjdk.orig/jdk/src/share/classes/sun/util/resources/sv/TimeZoneNames_sv.java openjdk/jdk/src/share/classes/sun/util/resources/sv/TimeZoneNames_sv.java
+--- openjdk.orig/jdk/src/share/classes/sun/util/resources/sv/TimeZoneNames_sv.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/sv/TimeZoneNames_sv.java
+@@ -1035,7 +1035,6 @@
+ {"US/Michigan", EST},
+ {"US/Mountain", MST},
+ {"US/Pacific", PST},
+- {"US/Pacific-New", PST},
+ {"US/Samoa", SAMOA},
+ {"VST", ICT},
+ {"W-SU", MSK},
+diff --git openjdk.orig/jdk/src/share/classes/sun/util/resources/zh/TimeZoneNames_zh_CN.java openjdk/jdk/src/share/classes/sun/util/resources/zh/TimeZoneNames_zh_CN.java
+--- openjdk.orig/jdk/src/share/classes/sun/util/resources/zh/TimeZoneNames_zh_CN.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/zh/TimeZoneNames_zh_CN.java
+@@ -1035,7 +1035,6 @@
+ {"US/Michigan", EST},
+ {"US/Mountain", MST},
+ {"US/Pacific", PST},
+- {"US/Pacific-New", PST},
+ {"US/Samoa", SAMOA},
+ {"VST", ICT},
+ {"W-SU", MSK},
+diff --git a/src/share/classes/sun/util/resources/zh/TimeZoneNames_zh_TW.java b/src/share/classes/sun/util/resources/zh/TimeZoneNames_zh_TW.java
+--- openjdk.orig/jdk/src/share/classes/sun/util/resources/zh/TimeZoneNames_zh_TW.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/zh/TimeZoneNames_zh_TW.java
+@@ -1037,7 +1037,6 @@
+ {"US/Michigan", EST},
+ {"US/Mountain", MST},
+ {"US/Pacific", PST},
+- {"US/Pacific-New", PST},
+ {"US/Samoa", SAMOA},
+ {"VST", ICT},
+ {"W-SU", MSK},
+diff --git openjdk.orig/jdk/test/sun/util/calendar/zi/TestZoneInfo310.java openjdk/jdk/test/sun/util/calendar/zi/TestZoneInfo310.java
+--- openjdk.orig/jdk/test/sun/util/calendar/zi/TestZoneInfo310.java
++++ openjdk/jdk/test/sun/util/calendar/zi/TestZoneInfo310.java
+@@ -47,7 +47,7 @@
+ String TESTDIR = System.getProperty("test.dir", ".");
+ String SRCDIR = System.getProperty("test.src", ".");
+ String tzdir = SRCDIR + File.separator + "tzdata";
+- String tzfiles = "africa antarctica asia australasia europe northamerica pacificnew southamerica backward etcetera systemv";
++ String tzfiles = "africa antarctica asia australasia europe northamerica southamerica backward etcetera";
+ String jdk_tzdir = SRCDIR + File.separator + "tzdata_jdk";
+ String jdk_tzfiles = "gmt jdk11_backward";
+ String zidir = TESTDIR + File.separator + "zi";
+@@ -194,8 +194,9 @@
+
+ // test getAvailableIDs(raw);
+ zids_new = TimeZone.getAvailableIDs(-8 * 60 * 60 * 1000);
+- //Arrays.sort(zids_new);
++ Arrays.sort(zids_new);
+ zids_old = ZoneInfoOld.getAvailableIDs(-8 * 60 * 60 * 1000);
++ Arrays.sort(zids_old);
+ if (!Arrays.equals(zids_new, zids_old)) {
+ System.out.println("------------------------");
+ System.out.println("NEW.getAvailableIDs(-8:00)");
+diff --git openjdk.orig/jdk/test/sun/util/calendar/zi/tzdata/VERSION openjdk/jdk/test/sun/util/calendar/zi/tzdata/VERSION
+--- openjdk.orig/jdk/test/sun/util/calendar/zi/tzdata/VERSION
++++ openjdk/jdk/test/sun/util/calendar/zi/tzdata/VERSION
+@@ -21,4 +21,4 @@
+ # or visit www.oracle.com if you need additional information or have any
+ # questions.
+ #
+-tzdata2020a
++tzdata2020b
+diff --git openjdk.orig/jdk/test/sun/util/calendar/zi/tzdata/africa openjdk/jdk/test/sun/util/calendar/zi/tzdata/africa
+--- openjdk.orig/jdk/test/sun/util/calendar/zi/tzdata/africa
++++ openjdk/jdk/test/sun/util/calendar/zi/tzdata/africa
+@@ -87,7 +87,7 @@
+ # Corrections are welcome.
+
+ # Algeria
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Algeria 1916 only - Jun 14 23:00s 1:00 S
+ Rule Algeria 1916 1919 - Oct Sun>=1 23:00s 0 -
+ Rule Algeria 1917 only - Mar 24 23:00s 1:00 S
+@@ -110,10 +110,9 @@
+ Rule Algeria 1978 only - Sep 22 3:00 0 -
+ Rule Algeria 1980 only - Apr 25 0:00 1:00 S
+ Rule Algeria 1980 only - Oct 31 2:00 0 -
+-# Shanks & Pottenger give 0:09:20 for Paris Mean Time; go with Howse's
+-# more precise 0:09:21.
++# See Europe/Paris for PMT-related transitions.
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+-Zone Africa/Algiers 0:12:12 - LMT 1891 Mar 15 0:01
++Zone Africa/Algiers 0:12:12 - LMT 1891 Mar 16
+ 0:09:21 - PMT 1911 Mar 11 # Paris Mean Time
+ 0:00 Algeria WE%sT 1940 Feb 25 2:00
+ 1:00 Algeria CE%sT 1946 Oct 7
+@@ -199,7 +198,7 @@
+ # Egypt was mean noon at the Great Pyramid, 2:04:30.5, but apparently this
+ # did not apply to Cairo, Alexandria, or Port Said.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Egypt 1940 only - Jul 15 0:00 1:00 S
+ Rule Egypt 1940 only - Oct 1 0:00 0 -
+ Rule Egypt 1941 only - Apr 15 0:00 1:00 S
+@@ -434,7 +433,7 @@
+ # now Ghana observed different DST regimes in different years. For
+ # lack of better info, use Shanks except treat the minus sign as a
+ # typo, and assume DST started in 1920 not 1936.
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Ghana 1920 1942 - Sep 1 0:00 0:20 -
+ Rule Ghana 1920 1942 - Dec 31 0:00 0 -
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+@@ -524,7 +523,7 @@
+ # From Paul Eggert (2013-10-25):
+ # For now, assume they're reverting to the pre-2012 rules of permanent UT +02.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Libya 1951 only - Oct 14 2:00 1:00 S
+ Rule Libya 1952 only - Jan 1 0:00 0 -
+ Rule Libya 1953 only - Oct 9 2:00 1:00 S
+@@ -647,7 +646,7 @@
+ # "The trial ended on March 29, 2009, when the clocks moved back by one hour
+ # at 2am (or 02:00) local time..."
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Mauritius 1982 only - Oct 10 0:00 1:00 -
+ Rule Mauritius 1983 only - Mar 21 0:00 0 -
+ Rule Mauritius 2008 only - Oct lastSun 2:00 1:00 -
+@@ -898,17 +897,30 @@
+ # https://maroc-diplomatique.net/maroc-le-retour-a-lheure-gmt-est-prevu-dimanche-prochain/
+ # http://aujourdhui.ma/actualite/gmt1-retour-a-lheure-normale-dimanche-prochain-1
+ #
+-# From Paul Eggert (2020-04-14):
++# From Milamber (2020-05-31)
++# In Morocco (where I live), the end of Ramadan (Arabic month) is followed by
++# the Eid al-Fitr, and concretely it's 1 or 2 day offs for the people (with
++# traditional visiting of family, big lunches/dinners, etc.). So for this
++# year the astronomical calculations don't include the following 2 days off in
++# the calc. These 2 days fall in a Sunday/Monday, so it's not acceptable by
++# people to have a time shift during these 2 days off. Perhaps you can modify
++# the (predicted) rules for next years: if the end of Ramadan is a (probable)
++# Friday or Saturday (and so the 2 days off are on a weekend), the next time
++# shift will be the next weekend.
++#
++# From Paul Eggert (2020-05-31):
+ # For now, guess that in the future Morocco will fall back at 03:00
+ # the last Sunday before Ramadan, and spring forward at 02:00 the
+-# first Sunday after the day after Ramadan. To implement this,
+-# transition dates for 2021 through 2087 were determined by running
+-# the following program under GNU Emacs 26.3.
+-# (let ((islamic-year 1442))
++# first Sunday after two days after Ramadan. To implement this,
++# transition dates and times for 2019 through 2087 were determined by
++# running the following program under GNU Emacs 26.3. (This algorithm
++# also produces the correct transition dates for 2016 through 2018,
++# though the times differ due to Morocco's time zone change in 2018.)
++# (let ((islamic-year 1440))
+ # (require 'cal-islam)
+ # (while (< islamic-year 1511)
+ # (let ((a (calendar-islamic-to-absolute (list 9 1 islamic-year)))
+-# (b (1+ (calendar-islamic-to-absolute (list 10 1 islamic-year))))
++# (b (+ 2 (calendar-islamic-to-absolute (list 10 1 islamic-year))))
+ # (sunday 0))
+ # (while (/= sunday (mod (setq a (1- a)) 7)))
+ # (while (/= sunday (mod b 7))
+@@ -923,7 +935,7 @@
+ # (car (cdr (cdr b))) (calendar-month-name (car b) t) (car (cdr b)))))
+ # (setq islamic-year (+ 1 islamic-year))))
+
+-# RULE NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Morocco 1939 only - Sep 12 0:00 1:00 -
+ Rule Morocco 1939 only - Nov 19 0:00 0 -
+ Rule Morocco 1940 only - Feb 25 0:00 1:00 -
+@@ -974,7 +986,7 @@
+ Rule Morocco 2022 only - Mar 27 3:00 0 -
+ Rule Morocco 2022 only - May 8 2:00 1:00 -
+ Rule Morocco 2023 only - Mar 19 3:00 0 -
+-Rule Morocco 2023 only - Apr 23 2:00 1:00 -
++Rule Morocco 2023 only - Apr 30 2:00 1:00 -
+ Rule Morocco 2024 only - Mar 10 3:00 0 -
+ Rule Morocco 2024 only - Apr 14 2:00 1:00 -
+ Rule Morocco 2025 only - Feb 23 3:00 0 -
+@@ -990,7 +1002,7 @@
+ Rule Morocco 2029 only - Dec 30 3:00 0 -
+ Rule Morocco 2030 only - Feb 10 2:00 1:00 -
+ Rule Morocco 2030 only - Dec 22 3:00 0 -
+-Rule Morocco 2031 only - Jan 26 2:00 1:00 -
++Rule Morocco 2031 only - Feb 2 2:00 1:00 -
+ Rule Morocco 2031 only - Dec 14 3:00 0 -
+ Rule Morocco 2032 only - Jan 18 2:00 1:00 -
+ Rule Morocco 2032 only - Nov 28 3:00 0 -
+@@ -1006,7 +1018,7 @@
+ Rule Morocco 2037 only - Oct 4 3:00 0 -
+ Rule Morocco 2037 only - Nov 15 2:00 1:00 -
+ Rule Morocco 2038 only - Sep 26 3:00 0 -
+-Rule Morocco 2038 only - Oct 31 2:00 1:00 -
++Rule Morocco 2038 only - Nov 7 2:00 1:00 -
+ Rule Morocco 2039 only - Sep 18 3:00 0 -
+ Rule Morocco 2039 only - Oct 23 2:00 1:00 -
+ Rule Morocco 2040 only - Sep 2 3:00 0 -
+@@ -1022,7 +1034,7 @@
+ Rule Morocco 2045 only - Jul 9 3:00 0 -
+ Rule Morocco 2045 only - Aug 20 2:00 1:00 -
+ Rule Morocco 2046 only - Jul 1 3:00 0 -
+-Rule Morocco 2046 only - Aug 5 2:00 1:00 -
++Rule Morocco 2046 only - Aug 12 2:00 1:00 -
+ Rule Morocco 2047 only - Jun 23 3:00 0 -
+ Rule Morocco 2047 only - Jul 28 2:00 1:00 -
+ Rule Morocco 2048 only - Jun 7 3:00 0 -
+@@ -1038,7 +1050,7 @@
+ Rule Morocco 2053 only - Apr 13 3:00 0 -
+ Rule Morocco 2053 only - May 25 2:00 1:00 -
+ Rule Morocco 2054 only - Apr 5 3:00 0 -
+-Rule Morocco 2054 only - May 10 2:00 1:00 -
++Rule Morocco 2054 only - May 17 2:00 1:00 -
+ Rule Morocco 2055 only - Mar 28 3:00 0 -
+ Rule Morocco 2055 only - May 2 2:00 1:00 -
+ Rule Morocco 2056 only - Mar 12 3:00 0 -
+@@ -1054,7 +1066,7 @@
+ Rule Morocco 2061 only - Jan 16 3:00 0 -
+ Rule Morocco 2061 only - Feb 27 2:00 1:00 -
+ Rule Morocco 2062 only - Jan 8 3:00 0 -
+-Rule Morocco 2062 only - Feb 12 2:00 1:00 -
++Rule Morocco 2062 only - Feb 19 2:00 1:00 -
+ Rule Morocco 2062 only - Dec 31 3:00 0 -
+ Rule Morocco 2063 only - Feb 4 2:00 1:00 -
+ Rule Morocco 2063 only - Dec 16 3:00 0 -
+@@ -1070,7 +1082,7 @@
+ Rule Morocco 2068 only - Oct 21 3:00 0 -
+ Rule Morocco 2068 only - Dec 2 2:00 1:00 -
+ Rule Morocco 2069 only - Oct 13 3:00 0 -
+-Rule Morocco 2069 only - Nov 17 2:00 1:00 -
++Rule Morocco 2069 only - Nov 24 2:00 1:00 -
+ Rule Morocco 2070 only - Oct 5 3:00 0 -
+ Rule Morocco 2070 only - Nov 9 2:00 1:00 -
+ Rule Morocco 2071 only - Sep 20 3:00 0 -
+@@ -1086,7 +1098,7 @@
+ Rule Morocco 2076 only - Jul 26 3:00 0 -
+ Rule Morocco 2076 only - Sep 6 2:00 1:00 -
+ Rule Morocco 2077 only - Jul 18 3:00 0 -
+-Rule Morocco 2077 only - Aug 22 2:00 1:00 -
++Rule Morocco 2077 only - Aug 29 2:00 1:00 -
+ Rule Morocco 2078 only - Jul 10 3:00 0 -
+ Rule Morocco 2078 only - Aug 14 2:00 1:00 -
+ Rule Morocco 2079 only - Jun 25 3:00 0 -
+@@ -1096,13 +1108,13 @@
+ Rule Morocco 2081 only - Jun 1 3:00 0 -
+ Rule Morocco 2081 only - Jul 13 2:00 1:00 -
+ Rule Morocco 2082 only - May 24 3:00 0 -
+-Rule Morocco 2082 only - Jun 28 2:00 1:00 -
++Rule Morocco 2082 only - Jul 5 2:00 1:00 -
+ Rule Morocco 2083 only - May 16 3:00 0 -
+ Rule Morocco 2083 only - Jun 20 2:00 1:00 -
+ Rule Morocco 2084 only - Apr 30 3:00 0 -
+ Rule Morocco 2084 only - Jun 11 2:00 1:00 -
+ Rule Morocco 2085 only - Apr 22 3:00 0 -
+-Rule Morocco 2085 only - May 27 2:00 1:00 -
++Rule Morocco 2085 only - Jun 3 2:00 1:00 -
+ Rule Morocco 2086 only - Apr 14 3:00 0 -
+ Rule Morocco 2086 only - May 19 2:00 1:00 -
+ Rule Morocco 2087 only - Mar 30 3:00 0 -
+@@ -1203,7 +1215,7 @@
+ # Use plain "WAT" and "CAT" for the time zone abbreviations, to be compatible
+ # with Namibia's neighbors.
+
+-# RULE NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ # Vanguard section, for zic and other parsers that support negative DST.
+ #Rule Namibia 1994 only - Mar 21 0:00 -1:00 WAT
+ #Rule Namibia 1994 2017 - Sep Sun>=1 2:00 0 CAT
+@@ -1326,7 +1338,7 @@
+ # See Africa/Nairobi.
+
+ # South Africa
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule SA 1942 1943 - Sep Sun>=15 2:00 1:00 -
+ Rule SA 1943 1944 - Mar Sun>=15 2:00 0 -
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+@@ -1359,7 +1371,7 @@
+ # Abdalla of NTC, archived at:
+ # https://mm.icann.org/pipermail/tz/2017-October/025333.html
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Sudan 1970 only - May 1 0:00 1:00 S
+ Rule Sudan 1970 1985 - Oct 15 0:00 0 -
+ Rule Sudan 1971 only - Apr 30 0:00 1:00 S
+@@ -1447,7 +1459,7 @@
+ # http://www.almadenahnews.com/newss/news.php?c=118&id=38036
+ # http://www.worldtimezone.com/dst_news/dst_news_tunis02.html
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Tunisia 1939 only - Apr 15 23:00s 1:00 S
+ Rule Tunisia 1939 only - Nov 18 23:00s 0 -
+ Rule Tunisia 1940 only - Feb 25 23:00s 1:00 S
+@@ -1474,9 +1486,7 @@
+ Rule Tunisia 2006 2008 - Mar lastSun 2:00s 1:00 S
+ Rule Tunisia 2006 2008 - Oct lastSun 2:00s 0 -
+
+-# Shanks & Pottenger give 0:09:20 for Paris Mean Time; go with Howse's
+-# more precise 0:09:21.
+-# Shanks & Pottenger say the 1911 switch was on Mar 9; go with Howse's Mar 11.
++# See Europe/Paris for PMT-related transitions.
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+ Zone Africa/Tunis 0:40:44 - LMT 1881 May 12
+ 0:09:21 - PMT 1911 Mar 11 # Paris Mean Time
+diff --git openjdk.orig/jdk/test/sun/util/calendar/zi/tzdata/antarctica openjdk/jdk/test/sun/util/calendar/zi/tzdata/antarctica
+--- openjdk.orig/jdk/test/sun/util/calendar/zi/tzdata/antarctica
++++ openjdk/jdk/test/sun/util/calendar/zi/tzdata/antarctica
+@@ -93,15 +93,30 @@
+ # Australian Antarctica Division informed us that Casey changed time
+ # zone to UTC+11 in "the morning of 22nd October 2016".
+
++# From Steffen Thorsen (2020-10-02, as corrected):
++# Based on information we have received from the Australian Antarctic
++# Division, Casey station and Macquarie Island station will move to Tasmanian
++# daylight savings time on Sunday 4 October. This will take effect from 0001
++# hrs on Sunday 4 October 2020 and will mean Casey and Macquarie Island will
++# be on the same time zone as Hobart. Some past dates too for this 3 hour
++# time change back and forth between UTC+8 and UTC+11 for Casey:
++# - 2018 Oct 7 4:00 - 2019 Mar 17 3:00 - 2019 Oct 4 3:00 - 2020 Mar 8 3:00
++# and now - 2020 Oct 4 0:01
++
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+-Zone Antarctica/Casey 0 - -00 1969
+- 8:00 - +08 2009 Oct 18 2:00
++Zone Antarctica/Casey 0 - -00 1969
++ 8:00 - +08 2009 Oct 18 2:00
+ 11:00 - +11 2010 Mar 5 2:00
+- 8:00 - +08 2011 Oct 28 2:00
++ 8:00 - +08 2011 Oct 28 2:00
+ 11:00 - +11 2012 Feb 21 17:00u
+- 8:00 - +08 2016 Oct 22
++ 8:00 - +08 2016 Oct 22
+ 11:00 - +11 2018 Mar 11 4:00
+- 8:00 - +08
++ 8:00 - +08 2018 Oct 7 4:00
++ 11:00 - +11 2019 Mar 17 3:00
++ 8:00 - +08 2019 Oct 4 3:00
++ 11:00 - +11 2020 Mar 8 3:00
++ 8:00 - +08 2020 Oct 4 0:01
++ 11:00 - +11
+ Zone Antarctica/Davis 0 - -00 1957 Jan 13
+ 7:00 - +07 1964 Nov
+ 0 - -00 1969 Feb
+@@ -247,7 +262,7 @@
+ # suggested by Bengt-Inge Larsson comment them out for now, and approximate
+ # with only UTC and CEST. Uncomment them when 2014b is more prevalent.
+ #
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ #Rule Troll 2005 max - Mar 1 1:00u 1:00 +01
+ Rule Troll 2005 max - Mar lastSun 1:00u 2:00 +02
+ #Rule Troll 2005 max - Oct lastSun 1:00u 1:00 +01
+diff --git openjdk.orig/jdk/test/sun/util/calendar/zi/tzdata/asia openjdk/jdk/test/sun/util/calendar/zi/tzdata/asia
+--- openjdk.orig/jdk/test/sun/util/calendar/zi/tzdata/asia
++++ openjdk/jdk/test/sun/util/calendar/zi/tzdata/asia
+@@ -93,7 +93,7 @@
+ ###############################################################################
+
+ # These rules are stolen from the 'europe' file.
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule EUAsia 1981 max - Mar lastSun 1:00u 1:00 S
+ Rule EUAsia 1979 1995 - Sep lastSun 1:00u 0 -
+ Rule EUAsia 1996 max - Oct lastSun 1:00u 0 -
+@@ -137,7 +137,7 @@
+ # or
+ # (brief)
+ # http://www.worldtimezone.com/dst_news/dst_news_armenia03.html
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Armenia 2011 only - Mar lastSun 2:00s 1:00 -
+ Rule Armenia 2011 only - Oct lastSun 2:00s 0 -
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+@@ -163,7 +163,7 @@
+ # http://vestnikkavkaza.net/news/Azerbaijani-Cabinet-of-Ministers-cancels-daylight-saving-time.html
+ # http://en.apa.az/xeber_azerbaijan_abolishes_daylight_savings_ti_240862.html
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Azer 1997 2015 - Mar lastSun 4:00 1:00 -
+ Rule Azer 1997 2015 - Oct lastSun 5:00 0 -
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+@@ -250,7 +250,7 @@
+ # http://www.thedailystar.net/newDesign/latest_news.php?nid=22817
+ # http://www.worldtimezone.com/dst_news/dst_news_bangladesh06.html
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Dhaka 2009 only - Jun 19 23:00 1:00 -
+ Rule Dhaka 2009 only - Dec 31 24:00 0 -
+
+@@ -326,7 +326,7 @@
+ # generally esteemed a success, it was announced early in 1920 that it would
+ # not be repeated."
+ #
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Shang 1919 only - Apr 12 24:00 1:00 D
+ Rule Shang 1919 only - Sep 30 24:00 0 S
+
+@@ -422,7 +422,7 @@
+ # the Yangtze river delta area during that period of time although the scope
+ # of such use will need to be investigated to determine.
+ #
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Shang 1940 only - Jun 1 0:00 1:00 D
+ Rule Shang 1940 only - Oct 12 24:00 0 S
+ Rule Shang 1941 only - Mar 15 0:00 1:00 D
+@@ -485,7 +485,7 @@
+ # to begin on 17 April.
+ # http://data.people.com.cn/pic/101p/1988/04/1988041201.jpg
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule PRC 1986 only - May 4 2:00 1:00 D
+ Rule PRC 1986 1991 - Sep Sun>=11 2:00 0 S
+ Rule PRC 1987 1991 - Apr Sun>=11 2:00 1:00 D
+@@ -869,7 +869,7 @@
+ # or dates for the 1942 and 1945 transitions.
+ # The Japanese occupation of Hong Kong began 1941-12-25.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule HK 1946 only - Apr 21 0:00 1:00 S
+ Rule HK 1946 only - Dec 1 3:30s 0 -
+ Rule HK 1947 only - Apr 13 3:30s 1:00 S
+@@ -996,7 +996,7 @@
+ # until 1945-09-21 at 01:00, overriding Shanks & Pottenger.
+ # Likewise, use Yu-Cheng Chuang's data for DST in Taiwan.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Taiwan 1946 only - May 15 0:00 1:00 D
+ Rule Taiwan 1946 only - Oct 1 0:00 0 S
+ Rule Taiwan 1947 only - Apr 15 0:00 1:00 D
+@@ -1122,7 +1122,7 @@
+ # The 1904 decree says that Macau changed from the meridian of
+ # Fortaleza do Monte, presumably the basis for the 7:34:10 for LMT.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Macau 1942 1943 - Apr 30 23:00 1:00 -
+ Rule Macau 1942 only - Nov 17 23:00 0 -
+ Rule Macau 1943 only - Sep 30 23:00 0 S
+@@ -1180,7 +1180,7 @@
+ # Cyprus to remain united in time. Cyprus Mail 2017-10-17.
+ # https://cyprus-mail.com/2017/10/17/cyprus-remain-united-time/
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Cyprus 1975 only - Apr 13 0:00 1:00 S
+ Rule Cyprus 1975 only - Oct 12 0:00 0 -
+ Rule Cyprus 1976 only - May 15 0:00 1:00 S
+@@ -1557,7 +1557,7 @@
+ # be changed back to its previous state on the 24 hours of the
+ # thirtieth day of Shahrivar.
+ #
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Iran 1978 1980 - Mar 20 24:00 1:00 -
+ Rule Iran 1978 only - Oct 20 24:00 0 -
+ Rule Iran 1979 only - Sep 18 24:00 0 -
+@@ -1699,7 +1699,7 @@
+ # We have published a short article in English about the change:
+ # https://www.timeanddate.com/news/time/iraq-dumps-daylight-saving.html
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Iraq 1982 only - May 1 0:00 1:00 -
+ Rule Iraq 1982 1984 - Oct 1 0:00 0 -
+ Rule Iraq 1983 only - Mar 31 0:00 1:00 -
+@@ -1722,6 +1722,10 @@
+
+ # Israel
+
++# For more info about the motivation for DST in Israel, see:
++# Barak Y. Israel's Daylight Saving Time controversy. Israel Affairs.
++# 2020-08-11. https://doi.org/10.1080/13537121.2020.1806564
++
+ # From Ephraim Silverberg (2001-01-11):
+ #
+ # I coined "IST/IDT" circa 1988. Until then there were three
+@@ -1743,7 +1747,7 @@
+ # family is from India).
+
+ # From Shanks & Pottenger:
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Zion 1940 only - Jun 1 0:00 1:00 D
+ Rule Zion 1942 1944 - Nov 1 0:00 0 S
+ Rule Zion 1943 only - Apr 1 2:00 1:00 D
+@@ -1835,7 +1839,7 @@
+ # (except in 2002) is three nights before Yom Kippur [Day of Atonement]
+ # (the eve of the 7th of Tishrei in the lunar Hebrew calendar).
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Zion 1989 only - Apr 30 0:00 1:00 D
+ Rule Zion 1989 only - Sep 3 0:00 0 S
+ Rule Zion 1990 only - Mar 25 0:00 1:00 D
+@@ -1851,7 +1855,7 @@
+ # Ministry of Interior, Jerusalem, Israel. The spokeswoman can be reached by
+ # calling the office directly at 972-2-6701447 or 972-2-6701448.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Zion 1994 only - Apr 1 0:00 1:00 D
+ Rule Zion 1994 only - Aug 28 0:00 0 S
+ Rule Zion 1995 only - Mar 31 0:00 1:00 D
+@@ -1871,7 +1875,7 @@
+ #
+ # where YYYY is the relevant year.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Zion 1996 only - Mar 15 0:00 1:00 D
+ Rule Zion 1996 only - Sep 16 0:00 0 S
+ Rule Zion 1997 only - Mar 21 0:00 1:00 D
+@@ -1894,7 +1898,7 @@
+ #
+ # ftp://ftp.cs.huji.ac.il/pub/tz/announcements/2000-2004.ps.gz
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Zion 2000 only - Apr 14 2:00 1:00 D
+ Rule Zion 2000 only - Oct 6 1:00 0 S
+ Rule Zion 2001 only - Apr 9 1:00 1:00 D
+@@ -1916,7 +1920,7 @@
+ #
+ # ftp://ftp.cs.huji.ac.il/pub/tz/announcements/2005+beyond.ps
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Zion 2005 2012 - Apr Fri<=1 2:00 1:00 D
+ Rule Zion 2005 only - Oct 9 2:00 0 S
+ Rule Zion 2006 only - Oct 1 2:00 0 S
+@@ -1936,7 +1940,7 @@
+ # As of 2013, DST starts at 02:00 on the Friday before the last Sunday
+ # in March. DST ends at 02:00 on the last Sunday of October.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Zion 2013 max - Mar Fri>=23 2:00 1:00 D
+ Rule Zion 2013 max - Oct lastSun 2:00 0 S
+
+@@ -2036,7 +2040,7 @@
+ # do in any POSIX or C platform. The "25:00" assumes zic from 2007 or later,
+ # which should be safe now.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Japan 1948 only - May Sat>=1 24:00 1:00 D
+ Rule Japan 1948 1951 - Sep Sun>=9 1:00 0 S
+ Rule Japan 1949 only - Apr Sat>=1 24:00 1:00 D
+@@ -2113,7 +2117,7 @@
+ # From Paul Eggert (2013-12-11):
+ # As Steffen suggested, consider the past 21-month experiment to be DST.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Jordan 1973 only - Jun 6 0:00 1:00 S
+ Rule Jordan 1973 1975 - Oct 1 0:00 0 -
+ Rule Jordan 1974 1977 - May 1 0:00 1:00 S
+@@ -2439,7 +2443,7 @@
+ # Our government cancels daylight saving time 6th of August 2005.
+ # From 2005-08-12 our GMT-offset is +6, w/o any daylight saving.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Kyrgyz 1992 1996 - Apr Sun>=7 0:00s 1:00 -
+ Rule Kyrgyz 1992 1996 - Sep lastSun 0:00 0 -
+ Rule Kyrgyz 1997 2005 - Mar lastSun 2:30 1:00 -
+@@ -2495,7 +2499,7 @@
+ # follow and continued to use GMT+9:00 for interoperability.
+
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule ROK 1948 only - Jun 1 0:00 1:00 D
+ Rule ROK 1948 only - Sep 12 24:00 0 S
+ Rule ROK 1949 only - Apr 3 0:00 1:00 D
+@@ -2583,7 +2587,7 @@
+
+
+ # Lebanon
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Lebanon 1920 only - Mar 28 0:00 1:00 S
+ Rule Lebanon 1920 only - Oct 25 0:00 0 -
+ Rule Lebanon 1921 only - Apr 3 0:00 1:00 S
+@@ -2613,7 +2617,7 @@
+ 2:00 Lebanon EE%sT
+
+ # Malaysia
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule NBorneo 1935 1941 - Sep 14 0:00 0:20 -
+ Rule NBorneo 1935 1941 - Dec 14 0:00 0 -
+ #
+@@ -2758,7 +2762,7 @@
+ # September daylight saving time ends. Source:
+ # http://zasag.mn/news/view/8969
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Mongol 1983 1984 - Apr 1 0:00 1:00 -
+ Rule Mongol 1983 only - Oct 1 0:00 0 -
+ # Shanks & Pottenger and IATA SSIM say 1990s switches occurred at 00:00,
+@@ -2946,7 +2950,7 @@
+ # "People laud PM's announcement to end DST"
+ # http://www.app.com.pk/en_/index.php?option=com_content&task=view&id=99374&Itemid=2
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Pakistan 2002 only - Apr Sun>=2 0:00 1:00 S
+ Rule Pakistan 2002 only - Oct Sun>=2 0:00 0 -
+ Rule Pakistan 2008 only - Jun 1 0:00 1:00 S
+@@ -3248,7 +3252,7 @@
+ # From Tim Parenti (2016-10-19):
+ # Predict fall transitions on October's last Saturday at 01:00 from now on.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule EgyptAsia 1957 only - May 10 0:00 1:00 S
+ Rule EgyptAsia 1957 1958 - Oct 1 0:00 0 -
+ Rule EgyptAsia 1958 only - May 1 0:00 1:00 S
+@@ -3348,7 +3352,7 @@
+ # influence of the sources. There is no current abbreviation for DST,
+ # so use "PDT", the usual American style.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Phil 1936 only - Nov 1 0:00 1:00 D
+ Rule Phil 1937 only - Feb 1 0:00 0 S
+ Rule Phil 1954 only - Apr 12 0:00 1:00 D
+@@ -3496,7 +3500,7 @@
+ 5:30 - +0530
+
+ # Syria
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Syria 1920 1923 - Apr Sun>=15 2:00 1:00 S
+ Rule Syria 1920 1923 - Oct Sun>=1 2:00 0 -
+ Rule Syria 1962 only - Apr 29 2:00 1:00 S
+diff --git openjdk.orig/jdk/test/sun/util/calendar/zi/tzdata/australasia openjdk/jdk/test/sun/util/calendar/zi/tzdata/australasia
+--- openjdk.orig/jdk/test/sun/util/calendar/zi/tzdata/australasia
++++ openjdk/jdk/test/sun/util/calendar/zi/tzdata/australasia
+@@ -36,7 +36,7 @@
+
+ # Please see the notes below for the controversy about "EST" versus "AEST" etc.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Aus 1917 only - Jan 1 0:01 1:00 D
+ Rule Aus 1917 only - Mar 25 2:00 0 S
+ Rule Aus 1942 only - Jan 1 2:00 1:00 D
+@@ -55,7 +55,7 @@
+ 9:30 Aus AC%sT
+ # Western Australia
+ #
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule AW 1974 only - Oct lastSun 2:00s 1:00 D
+ Rule AW 1975 only - Mar Sun>=1 2:00s 0 S
+ Rule AW 1983 only - Oct lastSun 2:00s 1:00 D
+@@ -93,7 +93,7 @@
+ # applies to all of the Whitsundays.
+ # http://www.australia.gov.au/about-australia/australian-story/austn-islands
+ #
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule AQ 1971 only - Oct lastSun 2:00s 1:00 D
+ Rule AQ 1972 only - Feb lastSun 2:00s 0 S
+ Rule AQ 1989 1991 - Oct lastSun 2:00s 1:00 D
+@@ -109,7 +109,7 @@
+ 10:00 Holiday AE%sT
+
+ # South Australia
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule AS 1971 1985 - Oct lastSun 2:00s 1:00 D
+ Rule AS 1986 only - Oct 19 2:00s 1:00 D
+ Rule AS 1987 2007 - Oct lastSun 2:00s 1:00 D
+@@ -137,7 +137,7 @@
+ # http://www.bom.gov.au/climate/averages/tables/dst_times.shtml
+ # says King Island didn't observe DST from WWII until late 1971.
+ #
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule AT 1967 only - Oct Sun>=1 2:00s 1:00 D
+ Rule AT 1968 only - Mar lastSun 2:00s 0 S
+ Rule AT 1968 1985 - Oct lastSun 2:00s 1:00 D
+@@ -170,7 +170,7 @@
+ 10:00 AT AE%sT
+
+ # Victoria
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule AV 1971 1985 - Oct lastSun 2:00s 1:00 D
+ Rule AV 1972 only - Feb lastSun 2:00s 0 S
+ Rule AV 1973 1985 - Mar Sun>=1 2:00s 0 S
+@@ -191,7 +191,7 @@
+ 10:00 AV AE%sT
+
+ # New South Wales
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule AN 1971 1985 - Oct lastSun 2:00s 1:00 D
+ Rule AN 1972 only - Feb 27 2:00s 0 S
+ Rule AN 1973 1981 - Mar Sun>=1 2:00s 0 S
+@@ -220,7 +220,7 @@
+ 9:30 AS AC%sT
+
+ # Lord Howe Island
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule LH 1981 1984 - Oct lastSun 2:00 1:00 -
+ Rule LH 1982 1985 - Mar Sun>=1 2:00 0 -
+ Rule LH 1985 only - Oct lastSun 2:00 0:30 -
+@@ -275,8 +275,9 @@
+ 10:00 Aus AE%sT 1919 Apr 1 0:00s
+ 0 - -00 1948 Mar 25
+ 10:00 Aus AE%sT 1967
+- 10:00 AT AE%sT 2010 Apr 4 3:00
+- 11:00 - +11
++ 10:00 AT AE%sT 2010
++ 10:00 1:00 AEDT 2011
++ 10:00 AT AE%sT
+
+ # Christmas
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+@@ -403,7 +404,7 @@
+ # From Michael Deckers (2019-08-06):
+ # https://www.laws.gov.fj/LawsAsMade/downloadfile/848
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Fiji 1998 1999 - Nov Sun>=1 2:00 1:00 -
+ Rule Fiji 1999 2000 - Feb lastSun 3:00 0 -
+ Rule Fiji 2009 only - Nov 29 2:00 1:00 -
+@@ -432,7 +433,7 @@
+
+ # Guam
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ # http://guamlegislature.com/Public_Laws_5th/PL05-025.pdf
+ # http://documents.guam.gov/wp-content/uploads/E.O.-59-7-Guam-Daylight-Savings-Time-May-6-1959.pdf
+ Rule Guam 1959 only - Jun 27 2:00 1:00 D
+@@ -543,7 +544,7 @@
+ 12:00 - +12
+
+ # New Caledonia
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule NC 1977 1978 - Dec Sun>=1 0:00 1:00 -
+ Rule NC 1978 1979 - Feb 27 0:00 0 -
+ Rule NC 1996 only - Dec 1 2:00s 1:00 -
+@@ -558,7 +559,7 @@
+
+ # New Zealand
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule NZ 1927 only - Nov 6 2:00 1:00 S
+ Rule NZ 1928 only - Mar 4 2:00 0 M
+ Rule NZ 1928 1933 - Oct Sun>=8 2:00 0:30 S
+@@ -610,7 +611,7 @@
+
+ # Cook Is
+ # From Shanks & Pottenger:
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Cook 1978 only - Nov 12 0:00 0:30 -
+ Rule Cook 1979 1991 - Mar Sun>=1 0:00 0 -
+ Rule Cook 1979 1990 - Oct lastSun 0:00 0:30 -
+@@ -755,7 +756,7 @@
+ # That web page currently lists transitions for 2012/3 and 2013/4.
+ # Assume the pattern instituted in 2012 will continue indefinitely.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule WS 2010 only - Sep lastSun 0:00 1 -
+ Rule WS 2011 only - Apr Sat>=1 4:00 0 -
+ Rule WS 2011 only - Sep lastSat 3:00 1 -
+@@ -799,7 +800,7 @@
+ 13:00 - +13
+
+ # Tonga
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Tonga 1999 only - Oct 7 2:00s 1:00 -
+ Rule Tonga 2000 only - Mar 19 2:00s 0 -
+ Rule Tonga 2000 2001 - Nov Sun>=1 2:00 1:00 -
+@@ -880,7 +881,7 @@
+
+
+ # Vanuatu
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Vanuatu 1983 only - Sep 25 0:00 1:00 -
+ Rule Vanuatu 1984 1991 - Mar Sun>=23 0:00 0 -
+ Rule Vanuatu 1984 only - Oct 23 0:00 1:00 -
+diff --git openjdk.orig/jdk/test/sun/util/calendar/zi/tzdata/europe openjdk/jdk/test/sun/util/calendar/zi/tzdata/europe
+--- openjdk.orig/jdk/test/sun/util/calendar/zi/tzdata/europe
++++ openjdk/jdk/test/sun/util/calendar/zi/tzdata/europe
+@@ -411,7 +411,7 @@
+ # http://www.irishstatutebook.ie/eli/1926/sro/919/made/en/print
+ # http://www.irishstatutebook.ie/eli/1947/sro/71/made/en/print
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ # Summer Time Act, 1916
+ Rule GB-Eire 1916 only - May 21 2:00s 1:00 BST
+ Rule GB-Eire 1916 only - Oct 1 2:00s 0 GMT
+@@ -552,7 +552,7 @@
+ # The following is like GB-Eire and EU, except with standard time in
+ # summer and negative daylight saving time in winter. It is for when
+ # negative SAVE values are used.
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ #Rule Eire 1971 only - Oct 31 2:00u -1:00 -
+ #Rule Eire 1972 1980 - Mar Sun>=16 2:00u 0 -
+ #Rule Eire 1972 1980 - Oct Sun>=23 2:00u -1:00 -
+@@ -589,7 +589,7 @@
+ # predecessor organization, the European Communities.
+ # For brevity they are called "EU rules" elsewhere in this file.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule EU 1977 1980 - Apr Sun>=1 1:00u 1:00 S
+ Rule EU 1977 only - Sep lastSun 1:00u 0 -
+ Rule EU 1978 only - Oct 1 1:00u 0 -
+@@ -629,13 +629,13 @@
+ # corrected in version 2008d). The circumstantial evidence is simply the
+ # tz database itself, as seen below:
+ #
+-# Zone Europe/Paris 0:09:21 - LMT 1891 Mar 15 0:01
++# Zone Europe/Paris ...
+ # 0:00 France WE%sT 1945 Sep 16 3:00
+ #
+-# Zone Europe/Monaco 0:29:32 - LMT 1891 Mar 15
++# Zone Europe/Monaco ...
+ # 0:00 France WE%sT 1945 Sep 16 3:00
+ #
+-# Zone Europe/Belgrade 1:22:00 - LMT 1884
++# Zone Europe/Belgrade ...
+ # 1:00 1:00 CEST 1945 Sep 16 2:00s
+ #
+ # Rule France 1945 only - Sep 16 3:00 0 -
+@@ -681,7 +681,7 @@
+ #
+ # The 1917-1921 decree URLs are from Alexander Belopolsky (2016-08-23).
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Russia 1917 only - Jul 1 23:00 1:00 MST # Moscow Summer Time
+ #
+ # Decree No. 142 (1917-12-22) http://istmat.info/node/28137
+@@ -795,7 +795,7 @@
+
+
+ # Albania
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Albania 1940 only - Jun 16 0:00 1:00 S
+ Rule Albania 1942 only - Nov 2 3:00 0 -
+ Rule Albania 1943 only - Mar 29 2:00 1:00 S
+@@ -849,7 +849,7 @@
+ # In 1946 the end of DST was on Monday, 7 October 1946, at 3:00 am.
+ # Shanks had this right. Source: Die Weltpresse, 5. Oktober 1946, page 5.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Austria 1920 only - Apr 5 2:00s 1:00 S
+ Rule Austria 1920 only - Sep 13 2:00s 0 -
+ Rule Austria 1946 only - Apr 14 2:00s 1:00 S
+@@ -936,7 +936,7 @@
+ # The 1918 rules are listed for completeness; they apply to unoccupied Belgium.
+ # Assume Brussels switched to WET in 1918 when the armistice took effect.
+ #
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Belgium 1918 only - Mar 9 0:00s 1:00 S
+ Rule Belgium 1918 1919 - Oct Sat>=1 23:00s 0 -
+ Rule Belgium 1919 only - Mar 1 23:00s 1:00 S
+@@ -996,7 +996,7 @@
+ # EET -> EETDST is in 03:00 Local time in last Sunday of March ...
+ # EETDST -> EET is in 04:00 Local time in last Sunday of October
+ #
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Bulg 1979 only - Mar 31 23:00 1:00 S
+ Rule Bulg 1979 only - Oct 1 1:00 0 -
+ Rule Bulg 1980 1982 - Apr Sat>=1 23:00 1:00 S
+@@ -1028,7 +1028,7 @@
+ # We know of no English-language name for historical Czech winter time;
+ # abbreviate it as "GMT", as it happened to be GMT.
+ #
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Czech 1945 only - Apr Mon>=1 2:00s 1:00 S
+ Rule Czech 1945 only - Oct 1 2:00s 0 -
+ Rule Czech 1946 only - May 6 2:00s 1:00 S
+@@ -1084,7 +1084,7 @@
+ # Hence the "02:00" of the 1980 law refers to standard time, not
+ # wall-clock time, and so the EU rules were in effect in 1980.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Denmark 1916 only - May 14 23:00 1:00 S
+ Rule Denmark 1916 only - Sep 30 23:00 0 -
+ Rule Denmark 1940 only - May 15 0:00 1:00 S
+@@ -1186,7 +1186,7 @@
+ # http://naalakkersuisut.gl/~/media/Nanoq/Files/Attached%20Files/Engelske-tekster/Legislation/Executive%20Order%20National%20Park.rtf
+ # It is their only National Park.
+ #
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Thule 1991 1992 - Mar lastSun 2:00 1:00 D
+ Rule Thule 1991 1992 - Sep lastSun 2:00 0 S
+ Rule Thule 1993 2006 - Apr Sun>=1 2:00 1:00 D
+@@ -1317,7 +1317,7 @@
+ # From Paul Eggert (2014-06-14):
+ # Go with Oja over Shanks.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Finland 1942 only - Apr 2 24:00 1:00 S
+ Rule Finland 1942 only - Oct 4 1:00 0 -
+ Rule Finland 1981 1982 - Mar lastSun 2:00 1:00 S
+@@ -1349,10 +1349,58 @@
+ # Françoise Gauquelin, Problèmes de l'heure résolus en astrologie,
+ # Guy Trédaniel, Paris 1987
+
++# From Michael Deckers (2020-06-11):
++# the law of 1891
++# was published on 1891-03-15, so it could only take force on 1891-03-16.
++
++# From Michael Deckers (2020-06-10):
++# Le Gaulois, 1911-03-11, page 1/6, online at
++# https://www.retronews.fr/societe/echo-de-presse/2018/01/29/1911-change-lheure-de-paris
++# ... [ Instantly, all pressure driven clock dials halted... Nine minutes and
++# twenty-one seconds later the hands resumed their circular motion. ]
++# There are also precise reports about how the change was prepared in train
++# stations: all the publicly visible clocks stopped at midnight railway time
++# (or were covered), only the chief of service had a watch, labeled
++# "Heure ancienne", that he kept running until it reached 00:04:21, when
++# he announced "Heure nouvelle". See the "Le Petit Journal 1911-03-11".
++# https://gallica.bnf.fr/ark:/12148/bpt6k6192911/f1.item.zoom
++#
++# From Michael Deckers (2020-06-12):
++# That "all French clocks stopped" for 00:09:21 is a misreading of French
++# newspapers; this sort of adjustment applies only to certain
++# remote-controlled clocks ("pendules pneumatiques", of which there existed
++# perhaps a dozen in Paris, and which simply could not be set back remotely),
++# but not to all the clocks in all French towns and villages. For instance,
++# the following story in the "Courrier de Saône-et-Loire" 1911-03-11, page 2:
++# only works if legal time was stepped back (was not monotone): ...
++# [One can observe that children who had been born at midnight less 5
++# minutes and who had died at midnight of the old time, would turn out to
++# be dead before being born, time having been set back and having
++# suppressed 9 minutes and 25 seconds of their existence, that is, more
++# than they could spend.]
++#
++# From Paul Eggert (2020-06-12):
++# French time in railway stations was legally five minutes behind civil time,
++# which explains why railway "old time" ran to 00:04:21 instead of to 00:09:21.
++# The law's text (which Michael Deckers noted is at
++# ) says only that
++# at 1911-03-11 00:00 legal time was that of Paris mean time delayed by
++# nine minutes and twenty-one seconds, and does not say how the
++# transition from Paris mean time was to occur.
++#
++# tzdb has no way to represent stopped clocks. As the railway practice
++# was to keep a watch running on "old time" to decide when to restart
++# the other clocks, this could be modeled as a transition for "old time" at
++# 00:09:21. However, since the law was ambiguous and clocks outside railway
++# stations were probably done haphazardly with the popular impression being
++# that the transition was done at 00:00 "old time", simply leave the time
++# blank; this causes zic to default to 00:00 "old time" which is good enough.
++# Do something similar for the 1891-03-16 transition. There are similar
++# problems in Algiers, Monaco and Tunis.
+
+ #
+ # Shank & Pottenger seem to use '24:00' ambiguously; resolve it with Whitman.
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule France 1916 only - Jun 14 23:00s 1:00 S
+ Rule France 1916 1919 - Oct Sun>=1 23:00s 0 -
+ Rule France 1917 only - Mar 24 23:00s 1:00 S
+@@ -1412,13 +1460,11 @@
+ # go with Excoffier's 28/3/76 0hUT and 25/9/76 23hUT.
+ Rule France 1976 only - Mar 28 1:00 1:00 S
+ Rule France 1976 only - Sep 26 1:00 0 -
+-# Shanks & Pottenger give 0:09:20 for Paris Mean Time, and Whitman 0:09:05,
+-# but Howse quotes the actual French legislation as saying 0:09:21.
+-# Go with Howse. Howse writes that the time in France was officially based
++# Howse writes that the time in France was officially based
+ # on PMT-0:09:21 until 1978-08-09, when the time base finally switched to UTC.
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+-Zone Europe/Paris 0:09:21 - LMT 1891 Mar 15 0:01
+- 0:09:21 - PMT 1911 Mar 11 0:01 # Paris MT
++Zone Europe/Paris 0:09:21 - LMT 1891 Mar 16
++ 0:09:21 - PMT 1911 Mar 11 # Paris Mean Time
+ # Shanks & Pottenger give 1940 Jun 14 0:00; go with Excoffier and Le Corre.
+ 0:00 France WE%sT 1940 Jun 14 23:00
+ # Le Corre says Paris stuck with occupied-France time after the liberation;
+@@ -1447,7 +1493,7 @@
+ # this was equivalent to UT +03, not +04.
+
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Germany 1946 only - Apr 14 2:00s 1:00 S
+ Rule Germany 1946 only - Oct 7 2:00s 0 -
+ Rule Germany 1947 1949 - Oct Sun>=1 2:00s 0 -
+@@ -1499,7 +1545,7 @@
+ 1:00 EU CE%sT
+
+ # Greece
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ # Whitman gives 1932 Jul 5 - Nov 1; go with Shanks & Pottenger.
+ Rule Greece 1932 only - Jul 7 0:00 1:00 S
+ Rule Greece 1932 only - Sep 1 0:00 0 -
+@@ -1534,38 +1580,69 @@
+ 2:00 EU EE%sT
+
+ # Hungary
+-# From Paul Eggert (2014-07-15):
+-# Dates for 1916-1945 are taken from:
+-# Oross A. Jelen a múlt jövője: a nyári időszámítás Magyarországon 1916-1945.
+-# National Archives of Hungary (2012-10-29).
+-# http://mnl.gov.hu/a_het_dokumentuma/a_nyari_idoszamitas_magyarorszagon_19161945.html
+-# This source does not always give times, which are taken from Shanks
+-# & Pottenger (which disagree about the dates).
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+-Rule Hungary 1918 only - Apr 1 3:00 1:00 S
+-Rule Hungary 1918 only - Sep 16 3:00 0 -
+-Rule Hungary 1919 only - Apr 15 3:00 1:00 S
+-Rule Hungary 1919 only - Nov 24 3:00 0 -
++
++# From Michael Deckers (2020-06-09):
++# an Austrian encyclopedia of railroads of 1913, online at
++# http://www.zeno.org/Roell-1912/A/Eisenbahnzeit
++# says that the switch [to CET] happened on 1890-11-01.
++
++# From Géza Nyáry (2020-06-07):
++# Data for 1918-1983 are based on the archive database of Library Hungaricana.
++# The dates are collected from original, scanned governmental orders,
++# bulletins, instructions and public press.
++# [See URLs below.]
++
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
++# https://library.hungaricana.hu/hu/view/OGYK_RT_1918/?pg=238
++# https://library.hungaricana.hu/hu/view/OGYK_RT_1919/?pg=808
++# https://library.hungaricana.hu/hu/view/OGYK_RT_1920/?pg=201
++Rule Hungary 1918 1919 - Apr 15 2:00 1:00 S
++Rule Hungary 1918 1920 - Sep Mon>=15 3:00 0 -
++Rule Hungary 1920 only - Apr 5 2:00 1:00 S
++# https://library.hungaricana.hu/hu/view/OGYK_RT_1945/?pg=882
+ Rule Hungary 1945 only - May 1 23:00 1:00 S
+-Rule Hungary 1945 only - Nov 1 0:00 0 -
++Rule Hungary 1945 only - Nov 1 1:00 0 -
++# https://library.hungaricana.hu/hu/view/Delmagyarorszag_1946_03/?pg=49
+ Rule Hungary 1946 only - Mar 31 2:00s 1:00 S
+-Rule Hungary 1946 1949 - Oct Sun>=1 2:00s 0 -
++# https://library.hungaricana.hu/hu/view/Delmagyarorszag_1946_09/?pg=54
++Rule Hungary 1946 only - Oct 7 2:00 0 -
++# https://library.hungaricana.hu/hu/view/KulfBelfHirek_1947_04_1__001-123/?pg=90
++# https://library.hungaricana.hu/hu/view/DunantuliNaplo_1947_09/?pg=128
++# https://library.hungaricana.hu/hu/view/KulfBelfHirek_1948_03_3__001-123/?pg=304
++# https://library.hungaricana.hu/hu/view/Zala_1948_09/?pg=64
++# https://library.hungaricana.hu/hu/view/SatoraljaujhelyiLeveltar_ZempleniNepujsag_1948/?pg=53
++# https://library.hungaricana.hu/hu/view/SatoraljaujhelyiLeveltar_ZempleniNepujsag_1948/?pg=160
++# https://library.hungaricana.hu/hu/view/Delmagyarorszag_1949_09/?pg=94
+ Rule Hungary 1947 1949 - Apr Sun>=4 2:00s 1:00 S
+-Rule Hungary 1950 only - Apr 17 2:00s 1:00 S
+-Rule Hungary 1950 only - Oct 23 2:00s 0 -
+-Rule Hungary 1954 1955 - May 23 0:00 1:00 S
+-Rule Hungary 1954 1955 - Oct 3 0:00 0 -
+-Rule Hungary 1956 only - Jun Sun>=1 0:00 1:00 S
+-Rule Hungary 1956 only - Sep lastSun 0:00 0 -
+-Rule Hungary 1957 only - Jun Sun>=1 1:00 1:00 S
+-Rule Hungary 1957 only - Sep lastSun 3:00 0 -
+-Rule Hungary 1980 only - Apr 6 1:00 1:00 S
++Rule Hungary 1947 1949 - Oct Sun>=1 2:00s 0 -
++# https://library.hungaricana.hu/hu/view/DTT_KOZL_TanacsokKozlonye_1954/?pg=513
++Rule Hungary 1954 only - May 23 0:00 1:00 S
++Rule Hungary 1954 only - Oct 3 0:00 0 -
++# https://library.hungaricana.hu/hu/view/DTT_KOZL_TanacsokKozlonye_1955/?pg=398
++Rule Hungary 1955 only - May 22 2:00 1:00 S
++Rule Hungary 1955 only - Oct 2 3:00 0 -
++# https://library.hungaricana.hu/hu/view/HevesMegyeiNepujsag_1956_06/?pg=0
++# https://library.hungaricana.hu/hu/view/EszakMagyarorszag_1956_06/?pg=6
++# https://library.hungaricana.hu/hu/view/SzolnokMegyeiNeplap_1957_04/?pg=120
++# https://library.hungaricana.hu/hu/view/PestMegyeiHirlap_1957_09/?pg=143
++Rule Hungary 1956 1957 - Jun Sun>=1 2:00 1:00 S
++Rule Hungary 1956 1957 - Sep lastSun 3:00 0 -
++# https://library.hungaricana.hu/hu/view/DTT_KOZL_TanacsokKozlonye_1980/?pg=1227
++Rule Hungary 1980 only - Apr 6 0:00 1:00 S
++Rule Hungary 1980 only - Sep 28 1:00 0 -
++# https://library.hungaricana.hu/hu/view/Delmagyarorszag_1981_01/?pg=79
++# https://library.hungaricana.hu/hu/view/DTT_KOZL_TanacsokKozlonye_1982/?pg=115
++# https://library.hungaricana.hu/hu/view/DTT_KOZL_TanacsokKozlonye_1983/?pg=85
++Rule Hungary 1981 1983 - Mar lastSun 0:00 1:00 S
++Rule Hungary 1981 1983 - Sep lastSun 1:00 0 -
++#
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+-Zone Europe/Budapest 1:16:20 - LMT 1890 Oct
++Zone Europe/Budapest 1:16:20 - LMT 1890 Nov 1
+ 1:00 C-Eur CE%sT 1918
+- 1:00 Hungary CE%sT 1941 Apr 8
++# https://library.hungaricana.hu/hu/view/OGYK_RT_1941/?pg=1204
++ 1:00 Hungary CE%sT 1941 Apr 7 23:00
+ 1:00 C-Eur CE%sT 1945
+- 1:00 Hungary CE%sT 1980 Sep 28 2:00s
++ 1:00 Hungary CE%sT 1984
+ 1:00 EU CE%sT
+
+ # Iceland
+@@ -1601,7 +1678,7 @@
+ # The information below is taken from the 1988 Almanak; see
+ # http://www.almanak.hi.is/klukkan.html
+ #
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Iceland 1917 1919 - Feb 19 23:00 1:00 -
+ Rule Iceland 1917 only - Oct 21 1:00 0 -
+ Rule Iceland 1918 1919 - Nov 16 1:00 0 -
+@@ -1693,7 +1770,7 @@
+ # to 1944-06-04; although Rome was an open city during this period, it
+ # was effectively controlled by Germany.
+ #
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Italy 1916 only - Jun 3 24:00 1:00 S
+ Rule Italy 1916 1917 - Sep 30 24:00 0 -
+ Rule Italy 1917 only - Mar 31 24:00 1:00 S
+@@ -1803,7 +1880,7 @@
+ # urged Lithuania and Estonia to adopt a similar time policy, but it
+ # appears that they will not do so....
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Latvia 1989 1996 - Mar lastSun 2:00s 1:00 S
+ Rule Latvia 1989 1996 - Sep lastSun 2:00s 0 -
+
+@@ -1896,7 +1973,7 @@
+ # Luxembourg
+ # Whitman disagrees with most of these dates in minor ways;
+ # go with Shanks & Pottenger.
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Lux 1916 only - May 14 23:00 1:00 S
+ Rule Lux 1916 only - Oct 1 1:00 0 -
+ Rule Lux 1917 only - Apr 28 23:00 1:00 S
+@@ -1937,7 +2014,7 @@
+ # From Paul Eggert (2016-10-21):
+ # Assume 1900-1972 was like Rome, overriding Shanks.
+ #
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Malta 1973 only - Mar 31 0:00s 1:00 S
+ Rule Malta 1973 only - Sep 29 0:00s 0 -
+ Rule Malta 1974 only - Apr 21 0:00s 1:00 S
+@@ -2010,7 +2087,7 @@
+ # says the 2014-03-30 spring-forward transition was at 02:00 local time.
+ # Guess that since 1997 Moldova has switched one hour before the EU.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Moldova 1997 max - Mar lastSun 2:00 1:00 S
+ Rule Moldova 1997 max - Oct lastSun 3:00 0 -
+
+@@ -2028,11 +2105,24 @@
+ 2:00 Moldova EE%sT
+
+ # Monaco
+-# Shanks & Pottenger give 0:09:20 for Paris Mean Time; go with Howse's
+-# more precise 0:09:21.
++#
++# From Michael Deckers (2020-06-12):
++# In the "Journal de Monaco" of 1892-05-24, online at
++# https://journaldemonaco.gouv.mc/var/jdm/storage/original/application/b1c67c12c5af11b41ea888fb048e4fe8.pdf
++# we read: ...
++# [In virtue of a Sovereign Ordinance of the May 13 of the current [year],
++# legal time in the Principality will be set to, from the date of June 1,
++# 1892 onwards, to the meridian of Paris, as in France.]
++# In the "Journal de Monaco" of 1911-03-28, online at
++# https://journaldemonaco.gouv.mc/var/jdm/storage/original/application/de74ffb7db53d4f599059fe8f0ed482a.pdf
++# we read an ordinance of 1911-03-16: ...
++# [Legal time in the Principality will be set, from the date of promulgation
++# of the present ordinance, to legal time in France.... Consequently, legal
++# time will be retarded by 9 minutes and 21 seconds.]
++#
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+-Zone Europe/Monaco 0:29:32 - LMT 1891 Mar 15
+- 0:09:21 - PMT 1911 Mar 11 # Paris Mean Time
++Zone Europe/Monaco 0:29:32 - LMT 1892 Jun 1
++ 0:09:21 - PMT 1911 Mar 29 # Paris Mean Time
+ 0:00 France WE%sT 1945 Sep 16 3:00
+ 1:00 France CE%sT 1977
+ 1:00 EU CE%sT
+@@ -2080,7 +2170,7 @@
+ # The data entries before 1945 are taken from
+ # https://www.staff.science.uu.nl/~gent0113/wettijd/wettijd.htm
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Neth 1916 only - May 1 0:00 1:00 NST # Netherlands Summer Time
+ Rule Neth 1916 only - Oct 1 0:00 0 AMT # Amsterdam Mean Time
+ Rule Neth 1917 only - Apr 16 2:00s 1:00 NST
+@@ -2117,7 +2207,7 @@
+ # Norway
+ # http://met.no/met/met_lex/q_u/sommertid.html (2004-01) agrees with Shanks &
+ # Pottenger.
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Norway 1916 only - May 22 1:00 1:00 S
+ Rule Norway 1916 only - Sep 30 0:00 0 -
+ Rule Norway 1945 only - Apr 2 2:00s 1:00 S
+@@ -2186,7 +2276,7 @@
+ # The 1919 dates and times can be found in Tygodnik Urzędowy nr 1 (1919-03-20),
+ # pp 1-2.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Poland 1918 1919 - Sep 16 2:00s 0 -
+ Rule Poland 1919 only - Apr 15 2:00s 1:00 S
+ Rule Poland 1944 only - Apr 3 2:00s 1:00 S
+@@ -2257,7 +2347,7 @@
+ # Guess that the Azores changed to EU rules in 1992 (since that's when Portugal
+ # harmonized with EU rules), and that they stayed +0:00 that winter.
+ #
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ # DSH writes that despite Decree 1,469 (1915), the change to the clocks was not
+ # done every year, depending on what Spain did, because of railroad schedules.
+ # Go with Shanks & Pottenger.
+@@ -2370,7 +2460,7 @@
+ # assume that Romania and Moldova switched to EU rules in 1997,
+ # the same year as Bulgaria.
+ #
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Romania 1932 only - May 21 0:00s 1:00 S
+ Rule Romania 1932 1939 - Oct Sun>=1 0:00s 0 -
+ Rule Romania 1933 1939 - Apr Sun>=2 0:00s 1:00 S
+@@ -3468,14 +3558,14 @@
+ # fallback transition from the next day's 00:59... to 00:00.
+
+ # From Michael Deckers (2016-12-15):
+-# The Royal Decree of 1900-06-26 quoted by Planesas, online at
++# The Royal Decree of 1900-07-26 quoted by Planesas, online at
+ # https://www.boe.es/datos/pdfs/BOE//1900/209/A00383-00384.pdf
+ # says in its article 5 (my translation):
+ # These dispositions will enter into force beginning with the
+ # instant at which, according to the time indicated in article 1,
+ # the 1st day of January of 1901 will begin.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Spain 1918 only - Apr 15 23:00 1:00 S
+ Rule Spain 1918 1919 - Oct 6 24:00s 0 -
+ Rule Spain 1919 only - Apr 6 23:00 1:00 S
+@@ -3612,7 +3702,7 @@
+ # By the end of the 18th century clocks and watches became commonplace
+ # and their performance improved enormously. Communities began to keep
+ # mean time in preference to apparent time - Geneva from 1780 ....
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ # From Whitman (who writes "Midnight?"):
+ # Rule Swiss 1940 only - Nov 2 0:00 1:00 S
+ # Rule Swiss 1940 only - Dec 31 0:00 0 -
+@@ -3699,7 +3789,7 @@
+ # 1853-07-16, though it probably occurred at some other date in Zurich, and
+ # legal civil time probably changed at still some other transition date.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Swiss 1941 1942 - May Mon>=1 1:00 1:00 S
+ Rule Swiss 1941 1942 - Oct Mon>=1 2:00 0 -
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+@@ -3848,7 +3938,7 @@
+ # Although Google Translate misfires on that source, it looks like
+ # Turkey reversed last month's decision, and so will stay at +03.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Turkey 1916 only - May 1 0:00 1:00 S
+ Rule Turkey 1916 only - Oct 1 0:00 0 -
+ Rule Turkey 1920 only - Mar 28 0:00 1:00 S
+@@ -4006,7 +4096,7 @@
+ 2:00 1:00 EEST 1991 Sep 29 3:00
+ 2:00 E-Eur EE%sT 1995
+ 2:00 EU EE%sT
+-# Ruthenia used CET 1990/1991.
++# Transcarpathia used CET 1990/1991.
+ # "Uzhhorod" is the transliteration of the Rusyn/Ukrainian pronunciation, but
+ # "Uzhgorod" is more common in English.
+ Zone Europe/Uzhgorod 1:29:12 - LMT 1890 Oct
+diff --git openjdk.orig/jdk/test/sun/util/calendar/zi/tzdata/leapseconds openjdk/jdk/test/sun/util/calendar/zi/tzdata/leapseconds
+--- openjdk.orig/jdk/test/sun/util/calendar/zi/tzdata/leapseconds
++++ openjdk/jdk/test/sun/util/calendar/zi/tzdata/leapseconds
+@@ -91,11 +91,11 @@
+ # Any additional leap seconds will come after this.
+ # This Expires line is commented out for now,
+ # so that pre-2020a zic implementations do not reject this file.
+-#Expires 2020 Dec 28 00:00:00
++#Expires 2021 Jun 28 00:00:00
+
+ # POSIX timestamps for the data in this file:
+ #updated 1467936000 (2016-07-08 00:00:00 UTC)
+-#expires 1609113600 (2020-12-28 00:00:00 UTC)
++#expires 1624838400 (2021-06-28 00:00:00 UTC)
+
+-# Updated through IERS Bulletin C59
+-# File expires on: 28 December 2020
++# Updated through IERS Bulletin C60
++# File expires on: 28 June 2021
+diff --git openjdk.orig/jdk/test/sun/util/calendar/zi/tzdata/northamerica openjdk/jdk/test/sun/util/calendar/zi/tzdata/northamerica
+--- openjdk.orig/jdk/test/sun/util/calendar/zi/tzdata/northamerica
++++ openjdk/jdk/test/sun/util/calendar/zi/tzdata/northamerica
+@@ -193,7 +193,7 @@
+ # U.S. government action. So even though the "US" rules have changed
+ # in the latest release, other countries won't be affected.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule US 1918 1919 - Mar lastSun 2:00 1:00 D
+ Rule US 1918 1919 - Oct lastSun 2:00 0 S
+ Rule US 1942 only - Feb 9 2:00 1:00 W # War
+@@ -370,7 +370,7 @@
+ # Eastern time (i.e., -4:56:01.6) just before the 1883 switch. Round to the
+ # nearest second.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
++# Rule NAME FROM TO - IN ON AT SAVE LETTER
+ Rule NYC 1920 only - Mar lastSun 2:00 1:00 D
+ Rule NYC 1920 only - Oct lastSun 2:00 0 S
+ Rule NYC 1921 1966 - Apr lastSun 2:00 1:00 D
+@@ -454,7 +454,7 @@
+ # The Tennessean 2007-05-11, republished 2015-04-06.
+ # https://www.tennessean.com/story/insider/extras/2015/04/06/archives-seigenthaler-for-100-years-the-tennessean-had-it-covered/25348545/
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
++# Rule NAME FROM TO - IN ON AT SAVE LETTER
+ Rule Chicago 1920 only - Jun 13 2:00 1:00 D
+ Rule Chicago 1920 1921 - Oct lastSun 2:00 0 S
+ Rule Chicago 1921 only - Mar lastSun 2:00 1:00 D
+@@ -523,7 +523,7 @@
+ # El Paso Times. 2018-10-24 06:40 -06.
+ # https://www.elpasotimes.com/story/news/local/el-paso/2018/10/24/el-pasoans-were-time-rebels-fought-stay-mountain-zone/1744509002/
+ #
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
++# Rule NAME FROM TO - IN ON AT SAVE LETTER
+ Rule Denver 1920 1921 - Mar lastSun 2:00 1:00 D
+ Rule Denver 1920 only - Oct lastSun 2:00 0 S
+ Rule Denver 1921 only - May 22 2:00 0 S
+@@ -576,7 +576,7 @@
+ # https://repository.uchastings.edu/cgi/viewcontent.cgi?article=1501&context=ca_ballot_props
+ # https://repository.uchastings.edu/cgi/viewcontent.cgi?article=1636&context=ca_ballot_props
+ #
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
++# Rule NAME FROM TO - IN ON AT SAVE LETTER
+ Rule CA 1948 only - Mar 14 2:01 1:00 D
+ Rule CA 1949 only - Jan 1 2:00 0 S
+ Rule CA 1950 1966 - Apr lastSun 1:00 1:00 D
+@@ -934,7 +934,7 @@
+ # going to switch from Central to Eastern Time on March 11, 2007....
+ # http://www.indystar.com/apps/pbcs.dll/article?AID=/20070207/LOCAL190108/702070524/0/LOCAL
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
++# Rule NAME FROM TO - IN ON AT SAVE LETTER
+ Rule Indianapolis 1941 only - Jun 22 2:00 1:00 D
+ Rule Indianapolis 1941 1954 - Sep lastSun 2:00 0 S
+ Rule Indianapolis 1946 1954 - Apr lastSun 2:00 1:00 D
+@@ -953,7 +953,7 @@
+ #
+ # Eastern Crawford County, Indiana, left its clocks alone in 1974,
+ # as well as from 1976 through 2005.
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
++# Rule NAME FROM TO - IN ON AT SAVE LETTER
+ Rule Marengo 1951 only - Apr lastSun 2:00 1:00 D
+ Rule Marengo 1951 only - Sep lastSun 2:00 0 S
+ Rule Marengo 1954 1960 - Apr lastSun 2:00 1:00 D
+@@ -972,7 +972,7 @@
+ # Daviess, Dubois, Knox, and Martin Counties, Indiana,
+ # switched from eastern to central time in April 2006, then switched back
+ # in November 2007.
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
++# Rule NAME FROM TO - IN ON AT SAVE LETTER
+ Rule Vincennes 1946 only - Apr lastSun 2:00 1:00 D
+ Rule Vincennes 1946 only - Sep lastSun 2:00 0 S
+ Rule Vincennes 1953 1954 - Apr lastSun 2:00 1:00 D
+@@ -997,7 +997,7 @@
+ # The Indianapolis News, Friday 27 October 1967 states that Perry County
+ # returned to CST. It went again to EST on 27 April 1969, as documented by the
+ # Indianapolis star of Saturday 26 April.
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
++# Rule NAME FROM TO - IN ON AT SAVE LETTER
+ Rule Perry 1955 only - May 1 0:00 1:00 D
+ Rule Perry 1955 1960 - Sep lastSun 2:00 0 S
+ Rule Perry 1956 1963 - Apr lastSun 2:00 1:00 D
+@@ -1014,7 +1014,7 @@
+ #
+ # Pike County, Indiana moved from central to eastern time in 1977,
+ # then switched back in 2006, then switched back again in 2007.
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
++# Rule NAME FROM TO - IN ON AT SAVE LETTER
+ Rule Pike 1955 only - May 1 0:00 1:00 D
+ Rule Pike 1955 1960 - Sep lastSun 2:00 0 S
+ Rule Pike 1956 1964 - Apr lastSun 2:00 1:00 D
+@@ -1035,7 +1035,7 @@
+ # An article on page A3 of the Sunday, 1991-10-27 Washington Post
+ # notes that Starke County switched from Central time to Eastern time as of
+ # 1991-10-27.
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
++# Rule NAME FROM TO - IN ON AT SAVE LETTER
+ Rule Starke 1947 1961 - Apr lastSun 2:00 1:00 D
+ Rule Starke 1947 1954 - Sep lastSun 2:00 0 S
+ Rule Starke 1955 1956 - Oct lastSun 2:00 0 S
+@@ -1052,7 +1052,7 @@
+ #
+ # Pulaski County, Indiana, switched from eastern to central time in
+ # April 2006 and then switched back in March 2007.
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
++# Rule NAME FROM TO - IN ON AT SAVE LETTER
+ Rule Pulaski 1946 1960 - Apr lastSun 2:00 1:00 D
+ Rule Pulaski 1946 1954 - Sep lastSun 2:00 0 S
+ Rule Pulaski 1955 1956 - Oct lastSun 2:00 0 S
+@@ -1094,7 +1094,7 @@
+ #
+ # Part of Kentucky left its clocks alone in 1974.
+ # This also includes Clark, Floyd, and Harrison counties in Indiana.
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
++# Rule NAME FROM TO - IN ON AT SAVE LETTER
+ Rule Louisville 1921 only - May 1 2:00 1:00 D
+ Rule Louisville 1921 only - Sep 1 2:00 0 S
+ Rule Louisville 1941 only - Apr lastSun 2:00 1:00 D
+@@ -1208,7 +1208,7 @@
+ # election Michigan voters narrowly repealed DST, effective 1969.
+ #
+ # Most of Michigan observed DST from 1973 on, but was a bit late in 1975.
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
++# Rule NAME FROM TO - IN ON AT SAVE LETTER
+ Rule Detroit 1948 only - Apr lastSun 2:00 1:00 D
+ Rule Detroit 1948 only - Sep lastSun 2:00 0 S
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+@@ -1225,7 +1225,7 @@
+ #
+ # Dickinson, Gogebic, Iron, and Menominee Counties, Michigan,
+ # switched from EST to CST/CDT in 1973.
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
++# Rule NAME FROM TO - IN ON AT SAVE LETTER
+ Rule Menominee 1946 only - Apr lastSun 2:00 1:00 D
+ Rule Menominee 1946 only - Sep lastSun 2:00 0 S
+ Rule Menominee 1966 only - Apr lastSun 2:00 1:00 D
+@@ -1395,7 +1395,7 @@
+ # Oct 31, to Oct 27, 1918 (and Sunday is a more likely transition day
+ # than Thursday) in all Canadian rulesets.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Canada 1918 only - Apr 14 2:00 1:00 D
+ Rule Canada 1918 only - Oct 27 2:00 0 S
+ Rule Canada 1942 only - Feb 9 2:00 1:00 W # War
+@@ -1418,7 +1418,7 @@
+ # that follows the rules is the southeast corner, including Port Hope
+ # Simpson and Mary's Harbour, but excluding, say, Black Tickle.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule StJohns 1917 only - Apr 8 2:00 1:00 D
+ Rule StJohns 1917 only - Sep 17 2:00 0 S
+ # Whitman gives 1919 Apr 5 and 1920 Apr 5; go with Shanks & Pottenger.
+@@ -1520,7 +1520,7 @@
+ # bill say that it is "accommodating the customs and practices" of those
+ # regions, which suggests that they have always been in-line with Halifax.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Halifax 1916 only - Apr 1 0:00 1:00 D
+ Rule Halifax 1916 only - Oct 1 0:00 0 S
+ Rule Halifax 1920 only - May 9 0:00 1:00 D
+@@ -1586,7 +1586,7 @@
+ # clear that this was the case since at least 1993.
+ # For now, assume it started in 1993.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Moncton 1933 1935 - Jun Sun>=8 1:00 1:00 D
+ Rule Moncton 1933 1935 - Sep Sun>=8 1:00 0 S
+ Rule Moncton 1936 1938 - Jun Sun>=1 1:00 1:00 D
+@@ -1795,7 +1795,7 @@
+ # With some exceptions, the use of daylight saving may be said to be limited
+ # to those cities and towns lying between Quebec city and Windsor, Ont.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Toronto 1919 only - Mar 30 23:30 1:00 D
+ Rule Toronto 1919 only - Oct 26 0:00 0 S
+ Rule Toronto 1920 only - May 2 2:00 1:00 D
+@@ -1893,7 +1893,7 @@
+ # starting 1966. Since 02:00s is clearly correct for 1967 on, assume
+ # it was also 02:00s in 1966.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Winn 1916 only - Apr 23 0:00 1:00 D
+ Rule Winn 1916 only - Sep 17 0:00 0 S
+ Rule Winn 1918 only - Apr 14 2:00 1:00 D
+@@ -1984,7 +1984,7 @@
+ # long and rather painful to read.
+ # http://www.qp.gov.sk.ca/documents/English/Statutes/Statutes/T14.pdf
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Regina 1918 only - Apr 14 2:00 1:00 D
+ Rule Regina 1918 only - Oct 27 2:00 0 S
+ Rule Regina 1930 1934 - May Sun>=1 0:00 1:00 D
+@@ -2034,7 +2034,7 @@
+ # Boyer JP. Forcing Choice: The Risky Reward of Referendums. Dundum. 2017.
+ # ISBN 978-1459739123.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Edm 1918 1919 - Apr Sun>=8 2:00 1:00 D
+ Rule Edm 1918 only - Oct 27 2:00 0 S
+ Rule Edm 1919 only - May 27 2:00 0 S
+@@ -2143,7 +2143,7 @@
+ # https://searcharchives.vancouver.ca/daylight-saving-1918-starts-again-july-7-1941-start-d-s-sept-27-end-of-d-s-1941
+ # We have no further details, so omit them for now.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Vanc 1918 only - Apr 14 2:00 1:00 D
+ Rule Vanc 1918 only - Oct 27 2:00 0 S
+ Rule Vanc 1942 only - Feb 9 2:00 1:00 W # War
+@@ -2472,7 +2472,19 @@
+ # consistency with nearby Dawson Creek, Creston, and Fort Nelson.
+ # https://yukon.ca/en/news/yukon-end-seasonal-time-change
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# From Andrew G. Smith (2020-09-24):
++# Yukon has completed its regulatory change to be on UTC -7 year-round....
++# http://www.gov.yk.ca/legislation/regs/oic2020_125.pdf
++# What we have done is re-defined Yukon Standard Time, as we are
++# authorized to do under section 33 of our Interpretation Act:
++# http://www.gov.yk.ca/legislation/acts/interpretation_c.pdf
++#
++# From Paul Eggert (2020-09-24):
++# tzdb uses the obsolete YST abbreviation for standard time in Yukon through
++# about 1970, and uses PST for standard time in Yukon since then. Consistent
++# with that, use MST for -07, the new standard time in Yukon effective Nov. 1.
++
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule NT_YK 1918 only - Apr 14 2:00 1:00 D
+ Rule NT_YK 1918 only - Oct 27 2:00 0 S
+ Rule NT_YK 1919 only - May 25 2:00 1:00 D
+@@ -2526,12 +2538,12 @@
+ Zone America/Whitehorse -9:00:12 - LMT 1900 Aug 20
+ -9:00 NT_YK Y%sT 1967 May 28 0:00
+ -8:00 NT_YK P%sT 1980
+- -8:00 Canada P%sT 2020 Mar 8 2:00
++ -8:00 Canada P%sT 2020 Nov 1
+ -7:00 - MST
+ Zone America/Dawson -9:17:40 - LMT 1900 Aug 20
+ -9:00 NT_YK Y%sT 1973 Oct 28 0:00
+ -8:00 NT_YK P%sT 1980
+- -8:00 Canada P%sT 2020 Mar 8 2:00
++ -8:00 Canada P%sT 2020 Nov 1
+ -7:00 - MST
+
+
+@@ -2746,7 +2758,7 @@
+ # 5- The islands, reefs and keys shall take their timezone from the
+ # longitude they are located at.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Mexico 1939 only - Feb 5 0:00 1:00 D
+ Rule Mexico 1939 only - Jun 25 0:00 0 S
+ Rule Mexico 1940 only - Dec 9 0:00 1:00 D
+@@ -2951,7 +2963,7 @@
+ # rules to sync with the U.S. starting in 2007....
+ # http://www.jonesbahamas.com/?c=45&a=10412
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Bahamas 1964 1975 - Oct lastSun 2:00 0 S
+ Rule Bahamas 1964 1975 - Apr lastSun 2:00 1:00 D
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+@@ -2963,7 +2975,7 @@
+
+ # For 1899 Milne gives -3:58:29.2; round that.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Barb 1977 only - Jun 12 2:00 1:00 D
+ Rule Barb 1977 1978 - Oct Sun>=1 2:00 0 S
+ Rule Barb 1978 1980 - Apr Sun>=15 2:00 1:00 D
+@@ -2976,7 +2988,7 @@
+
+ # Belize
+ # Whitman entirely disagrees with Shanks; go with Shanks & Pottenger.
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Belize 1918 1942 - Oct Sun>=2 0:00 0:30 -0530
+ Rule Belize 1919 1943 - Feb Sun>=9 0:00 0 CST
+ Rule Belize 1973 only - Dec 5 0:00 1:00 CDT
+@@ -3013,7 +3025,7 @@
+
+ # Milne gives -5:36:13.3 as San José mean time; round to nearest.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule CR 1979 1980 - Feb lastSun 0:00 1:00 D
+ Rule CR 1979 1980 - Jun Sun>=1 0:00 0 S
+ Rule CR 1991 1992 - Jan Sat>=15 0:00 1:00 D
+@@ -3187,7 +3199,7 @@
+ # From Paul Eggert (2012-11-03):
+ # For now, assume the future rule is first Sunday in November.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Cuba 1928 only - Jun 10 0:00 1:00 D
+ Rule Cuba 1928 only - Oct 10 0:00 0 S
+ Rule Cuba 1940 1942 - Jun Sun>=1 0:00 1:00 D
+@@ -3256,7 +3268,7 @@
+ # decided to revert.
+
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule DR 1966 only - Oct 30 0:00 1:00 EDT
+ Rule DR 1967 only - Feb 28 0:00 0 EST
+ Rule DR 1969 1973 - Oct lastSun 0:00 0:30 -0430
+@@ -3273,7 +3285,7 @@
+
+ # El Salvador
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Salv 1987 1988 - May Sun>=1 0:00 1:00 D
+ Rule Salv 1987 1988 - Sep lastSun 0:00 0 S
+ # There are too many San Salvadors elsewhere, so use America/El_Salvador
+@@ -3302,7 +3314,7 @@
+ # (2006-04-19), says DST ends at 24:00. See
+ # http://www.sieca.org.gt/Sitio_publico/Energeticos/Doc/Medidas/Cambio_Horario_Nac_190406.pdf
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Guat 1973 only - Nov 25 0:00 1:00 D
+ Rule Guat 1974 only - Feb 24 0:00 0 S
+ Rule Guat 1983 only - May 21 0:00 1:00 D
+@@ -3383,7 +3395,7 @@
+ # I have not been able to find a more authoritative source:
+ # https://www.haitilibre.com/en/news-20319-haiti-notices-time-change-in-haiti.html
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Haiti 1983 only - May 8 0:00 1:00 D
+ Rule Haiti 1984 1987 - Apr lastSun 0:00 1:00 D
+ Rule Haiti 1983 1987 - Oct lastSun 0:00 0 S
+@@ -3431,7 +3443,7 @@
+ # http://www.laprensahn.com/pais_nota.php?id04962=7386
+ # So it seems that Honduras will not enter DST this year....
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Hond 1987 1988 - May Sun>=1 0:00 1:00 D
+ Rule Hond 1987 1988 - Sep lastSun 0:00 0 S
+ Rule Hond 2006 only - May Sun>=1 0:00 1:00 D
+@@ -3522,7 +3534,7 @@
+ # The natural sun time is restored in all the national territory, in that the
+ # time is returned one hour at 01:00 am of October 1 of 2006.
+ #
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Nic 1979 1980 - Mar Sun>=16 0:00 1:00 D
+ Rule Nic 1979 1980 - Jun Mon>=23 0:00 0 S
+ Rule Nic 2005 only - Apr 10 0:00 1:00 D
+diff --git openjdk.orig/jdk/test/sun/util/calendar/zi/tzdata/pacificnew openjdk/jdk/test/sun/util/calendar/zi/tzdata/pacificnew
+deleted file mode 100644
+--- openjdk/jdk/test/sun/util/calendar/zi/tzdata/pacificnew
++++ /dev/null
+@@ -1,52 +0,0 @@
+-#
+-# 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. Oracle designates this
+-# particular file as subject to the "Classpath" exception as provided
+-# by Oracle in the LICENSE file that accompanied this code.
+-#
+-# 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.
+-#
+-# tzdb data for proposed US election time (this file is obsolete)
+-
+-# This file is in the public domain, so clarified as of
+-# 2009-05-17 by Arthur David Olson.
+-
+-# From Arthur David Olson (1989-04-05):
+-# On 1989-04-05, the U. S. House of Representatives passed (238-154) a bill
+-# establishing "Pacific Presidential Election Time"; it was not acted on
+-# by the Senate or signed into law by the President.
+-# You might want to change the "PE" (Presidential Election) below to
+-# "Q" (Quadrennial) to maintain three-character zone abbreviations.
+-# If you're really conservative, you might want to change it to "D".
+-# Avoid "L" (Leap Year), which won't be true in 2100.
+-
+-# If Presidential Election Time is ever established, replace "XXXX" below
+-# with the year the law takes effect and uncomment the "##" lines.
+-
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+-## Rule Twilite XXXX max - Apr Sun>=1 2:00 1:00 D
+-## Rule Twilite XXXX max uspres Oct lastSun 2:00 1:00 PE
+-## Rule Twilite XXXX max uspres Nov Sun>=7 2:00 0 S
+-## Rule Twilite XXXX max nonpres Oct lastSun 2:00 0 S
+-
+-# Zone NAME STDOFF RULES/SAVE FORMAT [UNTIL]
+-## Zone America/Los_Angeles-PET -8:00 US P%sT XXXX
+-## -8:00 Twilite P%sT
+-
+-# For now...
+-Link America/Los_Angeles US/Pacific-New ##
+diff --git openjdk.orig/jdk/test/sun/util/calendar/zi/tzdata/southamerica openjdk/jdk/test/sun/util/calendar/zi/tzdata/southamerica
+--- openjdk.orig/jdk/test/sun/util/calendar/zi/tzdata/southamerica
++++ openjdk/jdk/test/sun/util/calendar/zi/tzdata/southamerica
+@@ -71,7 +71,7 @@
+ # I am sending modifications to the Argentine time zone table...
+ # AR was chosen because they are the ISO letters that represent Argentina.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Arg 1930 only - Dec 1 0:00 1:00 -
+ Rule Arg 1931 only - Apr 1 0:00 0 -
+ Rule Arg 1931 only - Oct 15 0:00 1:00 -
+@@ -792,7 +792,7 @@
+ # From Paul Eggert (2013-10-17):
+ # For now, assume western Amazonas will change as well.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ # Decree 20,466 (1931-10-01)
+ # Decree 21,896 (1932-01-10)
+ Rule Brazil 1931 only - Oct 3 11:00 1:00 -
+@@ -1281,7 +1281,7 @@
+ # For now, assume that they will not revert,
+ # since they have extended the expiration date once already.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Chile 1927 1931 - Sep 1 0:00 1:00 -
+ Rule Chile 1928 1932 - Apr 1 0:00 0 -
+ Rule Chile 1968 only - Nov 3 4:00u 1:00 -
+@@ -1381,7 +1381,7 @@
+ # Milne gives 4:56:16.4 for Bogotá time in 1899; round to nearest. He writes,
+ # "A variation of fifteen minutes in the public clocks of Bogota is not rare."
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule CO 1992 only - May 3 0:00 1:00 -
+ Rule CO 1993 only - Apr 4 0:00 0 -
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+@@ -1441,7 +1441,7 @@
+ # (Not one step back), the clocks went back in 1993 and the experiment was not
+ # repeated. For now, assume transitions were at 00:00 local time country-wide.
+ #
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Ecuador 1992 only - Nov 28 0:00 1:00 -
+ Rule Ecuador 1993 only - Feb 5 0:00 0 -
+ #
+@@ -1535,7 +1535,7 @@
+ # For now we will assume permanent -03 for the Falklands
+ # until advised differently (to apply for 2012 and beyond, after the 2011
+ # experiment was apparently successful.)
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Falk 1937 1938 - Sep lastSun 0:00 1:00 -
+ Rule Falk 1938 1942 - Mar Sun>=19 0:00 0 -
+ Rule Falk 1939 only - Oct 1 0:00 1:00 -
+@@ -1581,7 +1581,7 @@
+ # No time of the day is established for the adjustment, so people normally
+ # adjust their clocks at 0 hour of the given dates.
+ #
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Para 1975 1988 - Oct 1 0:00 1:00 -
+ Rule Para 1975 1978 - Mar 1 0:00 0 -
+ Rule Para 1979 1991 - Apr 1 0:00 0 -
+@@ -1674,7 +1674,7 @@
+ # From Paul Eggert (2006-03-22):
+ # Shanks & Pottenger don't have this transition. Assume 1986 was like 1987.
+
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Peru 1938 only - Jan 1 0:00 1:00 -
+ Rule Peru 1938 only - Apr 1 0:00 0 -
+ Rule Peru 1938 1939 - Sep lastSun 0:00 1:00 -
+@@ -1770,7 +1770,7 @@
+ # https://www.impo.com.uy/diariooficial/1926/03/10/2
+ # https://www.impo.com.uy/diariooficial/1926/03/18/2
+ #
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
++# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Uruguay 1923 1925 - Oct 1 0:00 0:30 -
+ Rule Uruguay 1924 1926 - Apr 1 0:00 0 -
+ # From Tim Parenti (2018-02-15):
+diff --git openjdk.orig/jdk/test/sun/util/calendar/zi/tzdata/systemv openjdk/jdk/test/sun/util/calendar/zi/tzdata/systemv
+deleted file mode 100644
+--- openjdk/jdk/test/sun/util/calendar/zi/tzdata/systemv
++++ /dev/null
+@@ -1,62 +0,0 @@
+-#
+-# 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. Oracle designates this
+-# particular file as subject to the "Classpath" exception as provided
+-# by Oracle in the LICENSE file that accompanied this code.
+-#
+-# 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.
+-#
+-# tzdb data for System V rules (this file is obsolete)
+-
+-# This file is in the public domain, so clarified as of
+-# 2009-05-17 by Arthur David Olson.
+-
+-# Old rules, should the need arise.
+-# No attempt is made to handle Newfoundland, since it cannot be expressed
+-# using the System V "TZ" scheme (half-hour offset), or anything outside
+-# North America (no support for non-standard DST start/end dates), nor
+-# the changes in the DST rules in the US after 1976 (which occurred after
+-# the old rules were written).
+-#
+-# If you need the old rules, uncomment ## lines.
+-# Compile this *without* leap second correction for true conformance.
+-
+-# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+-Rule SystemV min 1973 - Apr lastSun 2:00 1:00 D
+-Rule SystemV min 1973 - Oct lastSun 2:00 0 S
+-Rule SystemV 1974 only - Jan 6 2:00 1:00 D
+-Rule SystemV 1974 only - Nov lastSun 2:00 0 S
+-Rule SystemV 1975 only - Feb 23 2:00 1:00 D
+-Rule SystemV 1975 only - Oct lastSun 2:00 0 S
+-Rule SystemV 1976 max - Apr lastSun 2:00 1:00 D
+-Rule SystemV 1976 max - Oct lastSun 2:00 0 S
+-
+-# Zone NAME STDOFF RULES/SAVE FORMAT [UNTIL]
+-## Zone SystemV/AST4ADT -4:00 SystemV A%sT
+-## Zone SystemV/EST5EDT -5:00 SystemV E%sT
+-## Zone SystemV/CST6CDT -6:00 SystemV C%sT
+-## Zone SystemV/MST7MDT -7:00 SystemV M%sT
+-## Zone SystemV/PST8PDT -8:00 SystemV P%sT
+-## Zone SystemV/YST9YDT -9:00 SystemV Y%sT
+-## Zone SystemV/AST4 -4:00 - AST
+-## Zone SystemV/EST5 -5:00 - EST
+-## Zone SystemV/CST6 -6:00 - CST
+-## Zone SystemV/MST7 -7:00 - MST
+-## Zone SystemV/PST8 -8:00 - PST
+-## Zone SystemV/YST9 -9:00 - YST
+-## Zone SystemV/HST10 -10:00 - HST
diff --git a/SOURCES/pr3593-s390_use_z_format_specifier_for_size_t_arguments_as_size_t_not_equals_to_int.patch b/SOURCES/pr3593-s390_use_z_format_specifier_for_size_t_arguments_as_size_t_not_equals_to_int.patch
index 2700f3c..e1e7214 100644
--- a/SOURCES/pr3593-s390_use_z_format_specifier_for_size_t_arguments_as_size_t_not_equals_to_int.patch
+++ b/SOURCES/pr3593-s390_use_z_format_specifier_for_size_t_arguments_as_size_t_not_equals_to_int.patch
@@ -32,7 +32,7 @@ diff --git openjdk.orig/hotspot/src/share/vm/gc_implementation/g1/g1StringDedupT
- " [Entries: " UINTX_FORMAT ", Load: " G1_STRDEDUP_PERCENT_FORMAT_NS ", Cached: " UINTX_FORMAT ", Added: " UINTX_FORMAT ", Removed: " UINTX_FORMAT "]\n"
+ " [Entries: " UINTX_FORMAT ", Load: " G1_STRDEDUP_PERCENT_FORMAT_NS ", Cached: " SIZE_FORMAT ", Added: " UINTX_FORMAT ", Removed: " UINTX_FORMAT "]\n"
" [Resize Count: " UINTX_FORMAT ", Shrink Threshold: " UINTX_FORMAT "(" G1_STRDEDUP_PERCENT_FORMAT_NS "), Grow Threshold: " UINTX_FORMAT "(" G1_STRDEDUP_PERCENT_FORMAT_NS ")]\n"
- " [Rehash Count: " UINTX_FORMAT ", Rehash Threshold: " UINTX_FORMAT ", Hash Seed: 0x%x]\n"
+ " [Rehash Count: " UINTX_FORMAT ", Rehash Threshold: " UINTX_FORMAT ", Hash Seed: " UINT64_FORMAT "]\n"
" [Age Threshold: " UINTX_FORMAT "]",
diff --git openjdk.orig/hotspot/src/share/vm/memory/blockOffsetTable.cpp openjdk/hotspot/src/share/vm/memory/blockOffsetTable.cpp
--- openjdk.orig/hotspot/src/share/vm/memory/blockOffsetTable.cpp
diff --git a/SOURCES/rh1860986-disable_tlsv1.3_in_fips_mode.patch b/SOURCES/rh1860986-disable_tlsv1.3_in_fips_mode.patch
new file mode 100644
index 0000000..91e3705
--- /dev/null
+++ b/SOURCES/rh1860986-disable_tlsv1.3_in_fips_mode.patch
@@ -0,0 +1,327 @@
+diff -r bbc65dfa59d1 src/share/classes/java/security/SystemConfigurator.java
+--- openjdk/jdk/src/share/classes/java/security/SystemConfigurator.java Thu Jan 23 18:22:31 2020 -0300
++++ openjdk/jdk/src/share/classes/java/security/SystemConfigurator.java Sat Aug 01 23:16:51 2020 -0300
+@@ -1,11 +1,13 @@
+ /*
+- * Copyright (c) 2019, Red Hat, Inc.
++ * Copyright (c) 2019, 2020, Red Hat, Inc.
+ *
+ * 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.
++ * published by the Free Software Foundation. Oracle designates this
++ * particular file as subject to the "Classpath" exception as provided
++ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+@@ -34,10 +36,10 @@
+ import java.util.Iterator;
+ import java.util.Map.Entry;
+ import java.util.Properties;
+-import java.util.function.Consumer;
+-import java.util.regex.Matcher;
+ import java.util.regex.Pattern;
+
++import sun.misc.SharedSecrets;
++import sun.misc.JavaSecuritySystemConfiguratorAccess;
+ import sun.security.util.Debug;
+
+ /**
+@@ -47,7 +49,7 @@
+ *
+ */
+
+-class SystemConfigurator {
++final class SystemConfigurator {
+
+ private static final Debug sdebug =
+ Debug.getInstance("properties");
+@@ -61,15 +63,16 @@
+ private static final String CRYPTO_POLICIES_CONFIG =
+ CRYPTO_POLICIES_BASE_DIR + "/config";
+
+- private static final class SecurityProviderInfo {
+- int number;
+- String key;
+- String value;
+- SecurityProviderInfo(int number, String key, String value) {
+- this.number = number;
+- this.key = key;
+- this.value = value;
+- }
++ private static boolean systemFipsEnabled = false;
++
++ static {
++ SharedSecrets.setJavaSecuritySystemConfiguratorAccess(
++ new JavaSecuritySystemConfiguratorAccess() {
++ @Override
++ public boolean isSystemFipsEnabled() {
++ return SystemConfigurator.isSystemFipsEnabled();
++ }
++ });
+ }
+
+ /*
+@@ -128,9 +131,9 @@
+ String nonFipsKeystoreType = props.getProperty("keystore.type");
+ props.put("keystore.type", keystoreTypeValue);
+ if (keystoreTypeValue.equals("PKCS11")) {
+- // If keystore.type is PKCS11, javax.net.ssl.keyStore
+- // must be "NONE". See JDK-8238264.
+- System.setProperty("javax.net.ssl.keyStore", "NONE");
++ // If keystore.type is PKCS11, javax.net.ssl.keyStore
++ // must be "NONE". See JDK-8238264.
++ System.setProperty("javax.net.ssl.keyStore", "NONE");
+ }
+ if (System.getProperty("javax.net.ssl.trustStoreType") == null) {
+ // If no trustStoreType has been set, use the
+@@ -144,12 +147,13 @@
+ sdebug.println("FIPS mode default keystore.type = " +
+ keystoreTypeValue);
+ sdebug.println("FIPS mode javax.net.ssl.keyStore = " +
+- System.getProperty("javax.net.ssl.keyStore", ""));
++ System.getProperty("javax.net.ssl.keyStore", ""));
+ sdebug.println("FIPS mode javax.net.ssl.trustStoreType = " +
+ System.getProperty("javax.net.ssl.trustStoreType", ""));
+ }
+ }
+ loadedProps = true;
++ systemFipsEnabled = true;
+ }
+ } catch (Exception e) {
+ if (sdebug != null) {
+@@ -165,20 +165,37 @@
+ return loadedProps;
+ }
+
++ /**
++ * Returns whether or not global system FIPS alignment is enabled.
++ *
++ * Value is always 'false' before java.security.Security class is
++ * initialized.
++ *
++ * Call from out of this package through SharedSecrets:
++ * SharedSecrets.getJavaSecuritySystemConfiguratorAccess()
++ * .isSystemFipsEnabled();
++ *
++ * @return a boolean value indicating whether or not global
++ * system FIPS alignment is enabled.
++ */
++ static boolean isSystemFipsEnabled() {
++ return systemFipsEnabled;
++ }
++
+ /*
+ * FIPS is enabled only if crypto-policies are set to "FIPS"
+ * and the com.redhat.fips property is true.
+ */
+ private static boolean enableFips() throws Exception {
+- boolean fipsEnabled = Boolean.valueOf(System.getProperty("com.redhat.fips", "true"));
+- if (fipsEnabled) {
+- Path configPath = FileSystems.getDefault().getPath(CRYPTO_POLICIES_CONFIG);
+- String cryptoPoliciesConfig = new String(Files.readAllBytes(configPath));
+- if (sdebug != null) { sdebug.println("Crypto config:\n" + cryptoPoliciesConfig); }
+- Pattern pattern = Pattern.compile("^FIPS$", Pattern.MULTILINE);
+- return pattern.matcher(cryptoPoliciesConfig).find();
+- } else {
+- return false;
+- }
++ boolean shouldEnable = Boolean.valueOf(System.getProperty("com.redhat.fips", "true"));
++ if (shouldEnable) {
++ Path configPath = FileSystems.getDefault().getPath(CRYPTO_POLICIES_CONFIG);
++ String cryptoPoliciesConfig = new String(Files.readAllBytes(configPath));
++ if (sdebug != null) { sdebug.println("Crypto config:\n" + cryptoPoliciesConfig); }
++ Pattern pattern = Pattern.compile("^FIPS$", Pattern.MULTILINE);
++ return pattern.matcher(cryptoPoliciesConfig).find();
++ } else {
++ return false;
++ }
+ }
+ }
+diff --git openjdk.orig/jdk/src/share/classes/sun/misc/JavaSecuritySystemConfiguratorAccess.java openjdk/jdk/src/share/classes/sun/misc/JavaSecuritySystemConfiguratorAccess.java
+new file mode 100644
+--- /dev/null
++++ openjdk/jdk/src/share/classes/sun/misc/JavaSecuritySystemConfiguratorAccess.java
+@@ -0,0 +1,30 @@
++/*
++ * Copyright (c) 2020, Red Hat, Inc.
++ * 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. Oracle designates this
++ * particular file as subject to the "Classpath" exception as provided
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
++ */
++
++package sun.misc;
++
++public interface JavaSecuritySystemConfiguratorAccess {
++ boolean isSystemFipsEnabled();
++}
+diff --git openjdk.orig/jdk/src/share/classes/sun/misc/SharedSecrets.java openjdk/jdk/src/share/classes/sun/misc/SharedSecrets.java
+--- openjdk.orig/jdk/src/share/classes/sun/misc/SharedSecrets.java
++++ openjdk/jdk/src/share/classes/sun/misc/SharedSecrets.java
+@@ -63,6 +63,7 @@
+ private static JavaObjectInputStreamReadString javaObjectInputStreamReadString;
+ private static JavaObjectInputStreamAccess javaObjectInputStreamAccess;
+ private static JavaSecuritySignatureAccess javaSecuritySignatureAccess;
++ private static JavaSecuritySystemConfiguratorAccess javaSecuritySystemConfiguratorAccess;
+
+ public static JavaUtilJarAccess javaUtilJarAccess() {
+ if (javaUtilJarAccess == null) {
+@@ -248,4 +249,12 @@
+ }
+ return javaxCryptoSealedObjectAccess;
+ }
++
++ public static void setJavaSecuritySystemConfiguratorAccess(JavaSecuritySystemConfiguratorAccess jssca) {
++ javaSecuritySystemConfiguratorAccess = jssca;
++ }
++
++ public static JavaSecuritySystemConfiguratorAccess getJavaSecuritySystemConfiguratorAccess() {
++ return javaSecuritySystemConfiguratorAccess;
++ }
+ }
+diff --git openjdk.orig/jdk/src/share/classes/sun/security/ssl/SSLContextImpl.java openjdk/jdk/src/share/classes/sun/security/ssl/SSLContextImpl.java
+--- openjdk.orig/jdk/src/share/classes/sun/security/ssl/SSLContextImpl.java
++++ openjdk/jdk/src/share/classes/sun/security/ssl/SSLContextImpl.java
+@@ -31,6 +31,7 @@
+ import java.security.cert.*;
+ import java.util.*;
+ import javax.net.ssl.*;
++import sun.misc.SharedSecrets;
+ import sun.security.action.GetPropertyAction;
+ import sun.security.provider.certpath.AlgorithmChecker;
+ import sun.security.validator.Validator;
+@@ -539,20 +540,38 @@
+
+ static {
+ if (SunJSSE.isFIPS()) {
+- supportedProtocols = Arrays.asList(
+- ProtocolVersion.TLS13,
+- ProtocolVersion.TLS12,
+- ProtocolVersion.TLS11,
+- ProtocolVersion.TLS10
+- );
++ if (SharedSecrets.getJavaSecuritySystemConfiguratorAccess()
++ .isSystemFipsEnabled()) {
++ // RH1860986: TLSv1.3 key derivation not supported with
++ // the Security Providers available in system FIPS mode.
++ supportedProtocols = Arrays.asList(
++ ProtocolVersion.TLS12,
++ ProtocolVersion.TLS11,
++ ProtocolVersion.TLS10
++ );
+
+- serverDefaultProtocols = getAvailableProtocols(
+- new ProtocolVersion[] {
+- ProtocolVersion.TLS13,
+- ProtocolVersion.TLS12,
+- ProtocolVersion.TLS11,
+- ProtocolVersion.TLS10
+- });
++ serverDefaultProtocols = getAvailableProtocols(
++ new ProtocolVersion[] {
++ ProtocolVersion.TLS12,
++ ProtocolVersion.TLS11,
++ ProtocolVersion.TLS10
++ });
++ } else {
++ supportedProtocols = Arrays.asList(
++ ProtocolVersion.TLS13,
++ ProtocolVersion.TLS12,
++ ProtocolVersion.TLS11,
++ ProtocolVersion.TLS10
++ );
++
++ serverDefaultProtocols = getAvailableProtocols(
++ new ProtocolVersion[] {
++ ProtocolVersion.TLS13,
++ ProtocolVersion.TLS12,
++ ProtocolVersion.TLS11,
++ ProtocolVersion.TLS10
++ });
++ }
+ } else {
+ supportedProtocols = Arrays.asList(
+ ProtocolVersion.TLS13,
+@@ -612,6 +631,16 @@
+
+ static ProtocolVersion[] getSupportedProtocols() {
+ if (SunJSSE.isFIPS()) {
++ if (SharedSecrets.getJavaSecuritySystemConfiguratorAccess()
++ .isSystemFipsEnabled()) {
++ // RH1860986: TLSv1.3 key derivation not supported with
++ // the Security Providers available in system FIPS mode.
++ return new ProtocolVersion[] {
++ ProtocolVersion.TLS12,
++ ProtocolVersion.TLS11,
++ ProtocolVersion.TLS10
++ };
++ }
+ return new ProtocolVersion[] {
+ ProtocolVersion.TLS13,
+ ProtocolVersion.TLS12,
+@@ -939,6 +968,16 @@
+
+ static ProtocolVersion[] getProtocols() {
+ if (SunJSSE.isFIPS()) {
++ if (SharedSecrets.getJavaSecuritySystemConfiguratorAccess()
++ .isSystemFipsEnabled()) {
++ // RH1860986: TLSv1.3 key derivation not supported with
++ // the Security Providers available in system FIPS mode.
++ return new ProtocolVersion[] {
++ ProtocolVersion.TLS12,
++ ProtocolVersion.TLS11,
++ ProtocolVersion.TLS10
++ };
++ }
+ return new ProtocolVersion[]{
+ ProtocolVersion.TLS12,
+ ProtocolVersion.TLS11,
+diff --git openjdk.orig/jdk/src/share/classes/sun/security/ssl/SunJSSE.java openjdk/jdk/src/share/classes/sun/security/ssl/SunJSSE.java
+--- openjdk.orig/jdk/src/share/classes/sun/security/ssl/SunJSSE.java
++++ openjdk/jdk/src/share/classes/sun/security/ssl/SunJSSE.java
+@@ -30,6 +30,8 @@
+
+ import java.security.*;
+
++import sun.misc.SharedSecrets;
++
+ /**
+ * The JSSE provider.
+ *
+@@ -215,8 +217,13 @@
+ "sun.security.ssl.SSLContextImpl$TLS11Context");
+ put("SSLContext.TLSv1.2",
+ "sun.security.ssl.SSLContextImpl$TLS12Context");
+- put("SSLContext.TLSv1.3",
+- "sun.security.ssl.SSLContextImpl$TLS13Context");
++ if (!SharedSecrets.getJavaSecuritySystemConfiguratorAccess()
++ .isSystemFipsEnabled()) {
++ // RH1860986: TLSv1.3 key derivation not supported with
++ // the Security Providers available in system FIPS mode.
++ put("SSLContext.TLSv1.3",
++ "sun.security.ssl.SSLContextImpl$TLS13Context");
++ }
+ put("SSLContext.TLS",
+ "sun.security.ssl.SSLContextImpl$TLSContext");
+ if (isfips == false) {
diff --git a/SPECS/java-1.8.0-openjdk.spec b/SPECS/java-1.8.0-openjdk.spec
index 2ade38c..d1f1e32 100644
--- a/SPECS/java-1.8.0-openjdk.spec
+++ b/SPECS/java-1.8.0-openjdk.spec
@@ -62,7 +62,7 @@
%global multilib_arches %{power64} sparc64 x86_64
%global jit_arches %{ix86} x86_64 sparcv9 sparc64 %{aarch64} %{power64}
%global sa_arches %{ix86} x86_64 sparcv9 sparc64 %{aarch64}
-%global jfr_arches x86_64 sparcv9 sparc64 %{aarch64} %{power64}
+%global jfr_arches %{jit_arches}
%global fastdebug_arches x86_64
# By default, we build a debug build during main build on JIT architectures
@@ -114,7 +114,7 @@
%endif
%global bootstrap_targets images
-%global release_targets images zip-docs
+%global release_targets images docs-zip
# No docs nor bootcycle for debug builds
%global debug_targets images
@@ -225,10 +225,31 @@
%global origin openjdk
%global origin_nice OpenJDK
%global top_level_dir_name %{origin}
+
+# Define vendor information used by OpenJDK
+%global oj_vendor Red Hat, Inc.
+%global oj_vendor_url "https://www.redhat.com/"
+# Define what url should JVM offer in case of a crash report
+# order may be important, epel may have rhel declared
+%if 0%{?epel}
+%global oj_vendor_bug_url https://bugzilla.redhat.com/enter_bug.cgi?product=Fedora%20EPEL&component=%{name}&version=epel%{epel}
+%else
+%if 0%{?fedora}
+# Does not work for rawhide, keeps the version field empty
+%global oj_vendor_bug_url https://bugzilla.redhat.com/enter_bug.cgi?product=Fedora&component=%{name}&version=%{fedora}
+%else
+%if 0%{?rhel}
+%global oj_vendor_bug_url https://bugzilla.redhat.com/enter_bug.cgi?product=Red%20Hat%20Enterprise%20Linux%20%{rhel}&component=%{name}
+%else
+%global oj_vendor_bug_url https://bugzilla.redhat.com/enter_bug.cgi
+%endif
+%endif
+%endif
+
# note, following three variables are sedded from update_sources if used correctly. Hardcode them rather there.
%global shenandoah_project aarch64-port
%global shenandoah_repo jdk8u-shenandoah
-%global shenandoah_revision aarch64-shenandoah-jdk8u265-b01
+%global shenandoah_revision aarch64-shenandoah-jdk8u272-b10
# Define old aarch64/jdk8u tree variables for compatibility
%global project %{shenandoah_project}
%global repo %{shenandoah_repo}
@@ -927,7 +948,8 @@ Requires: ca-certificates
# Require javapackages-filesystem for ownership of /usr/lib/jvm/
Requires: javapackages-filesystem
# Require zoneinfo data provided by tzdata-java subpackage.
-# 2020a required as of JDK-8243541
+# 2020b required as of JDK-8254177 in October CPU
+# Temporarily held at 2020a until 2020b has shipped
Requires: tzdata-java >= 2020a
# libsctp.so.1 is being `dlopen`ed on demand
Requires: lksctp-tools%{?_isa}
@@ -1118,6 +1140,9 @@ Source20: repackReproduciblePolycies.sh
Source100: config.guess
Source101: config.sub
+# Ensure vendor settings are correct
+Source16: CheckVendor.java
+
############################################
#
# RPM/distribution specific patches
@@ -1142,8 +1167,8 @@ Patch1001: rh1655466-global_crypto_and_fips.patch
Patch1002: rh1760838-fips_default_keystore_type.patch
# RH1582504: Use RSA as default for keytool, as DSA is disabled in all crypto policies except LEGACY
Patch1003: rh1582504-rsa_default_for_keytool.patch
-# JDK-8223482, RH1860965: Unsupported ciphersuites may be offered by a TLS client
-Patch1004: jdk8223482-rh1860965-tls_offers_unsupported_ciphers.patch
+# RH1860986: Disable TLSv1.3 with the NSS-FIPS provider until PKCS#11 v3.0 support is available
+Patch1004: rh1860986-disable_tlsv1.3_in_fips_mode.patch
#############################################
#
@@ -1210,8 +1235,6 @@ Patch107: s390-8214206_fix.patch
# S8074839, PR2462: Resolve disabled warnings for libunpack and the unpack200 binary
# This fixes printf warnings that lead to build failure with -Werror=format-security from optflags
Patch502: pr2462-resolve_disabled_warnings_for_libunpack_and_the_unpack200_binary.patch
-# S8154313: Generated javadoc scattered all over the place
-Patch578: jdk8154313-generated_javadoc_scattered_all_over_the_place.patch
# PR3591: Fix for bug 3533 doesn't add -mstackrealign to JDK code
Patch571: jdk8199936-pr3591-enable_mstackrealign_on_x86_linux_as_well_as_x86_mac_os_x_jdk.patch
# 8143245, PR3548: Zero build requires disabled warnings
@@ -1227,24 +1250,24 @@ Patch202: jdk8035341-allow_using_system_installed_libpng.patch
# 8042159: Allow using a system-installed lcms2
Patch203: jdk8042159-allow_using_system_installed_lcms2-root.patch
Patch204: jdk8042159-allow_using_system_installed_lcms2-jdk.patch
-# JDK-8165996, PR3506, RH1760437: PKCS11 using NSS throws an error regarding secmod.db when NSS uses sqlite
-# RPM version excludes binary diffs and a patch to PKCS11Test.java which creates a lengthy bug trail
-Patch579: jdk8165996-pr3506-rh1760437-nss_sqlite_db.patch
# JDK-8195607, PR3776, RH1760437: sun/security/pkcs11/Secmod/TestNssDbSqlite.java failed with "NSS initialization failed" on NSS 3.34.1
Patch580: jdk8195607-pr3776-rh1760437-nss_sqlite_db_config.patch
-# JDK-8251117, RH1860990: Cannot check P11Key size in P11Cipher and P11AEADCipher
-# RPM version excludes changes to P11AEADCipher as JDK-8080462 is not yet in 8u
-Patch581: jdk8251117-rh1860990-pkcs11_key_length.patch
#############################################
#
-# Patches appearing in 8u222
+# Patches appearing in 8u282
#
# This section includes patches which are present
# in the listed OpenJDK 8u release and should be
# able to be removed once that release is out
# and used by this RPM.
#############################################
+# JDK-8254177: (tz) Upgrade time-zone data to tzdata2020b
+Patch13: jdk8254177-tzdata2020b.patch
+# JDK-8215727, RH1889532: Restore JFR thread sampler loop to old / previous behavior
+Patch14: jdk8215727-rh1889532-restore_jfr_thread_sampler_loop.patch
+# JDK-8236512, RH1889414: PKCS11 Connection closed after Cipher.doFinal and NoPadding
+Patch15: jdk8236512-rh1889414-pkcs11_incorrrect_session_closure.patch
#############################################
#
@@ -1321,7 +1344,8 @@ BuildRequires: java-1.8.0-openjdk-devel
%ifnarch %{jit_arches}
BuildRequires: libffi-devel
%endif
-# 2020a required as of JDK-8243541
+# 2020b required as of JDK-8254177 in October CPU
+# Temporarily held at 2020a until 2020b has shipped
BuildRequires: tzdata-java >= 2020a
# Earlier versions have a bug in tree vectorization on PPC
BuildRequires: gcc >= 4.8.3-8
@@ -1653,7 +1677,6 @@ sh %{SOURCE12}
%patch502
%patch504
%patch512
-%patch578
%patch523
%patch528
%patch530
@@ -1663,11 +1686,12 @@ sh %{SOURCE12}
%patch574
%patch575
%patch577
-%patch579
%patch580
-%patch581
%patch539
%patch540
+%patch13
+%patch14
+%patch15
# RPM-only fixes
%patch1000
@@ -1780,12 +1804,21 @@ function buildjdk() {
# Variable used in hs_err hook on build failures
local top_builddir_abs_path=$(pwd)/${outputdir}
+ echo "Using output directory: ${outputdir}";
+ echo "Checking build JDK ${buildjdk} is operational..."
+ ${buildjdk}/bin/java -version
+ echo "Using make targets: ${maketargets}"
+ echo "Using debuglevel: ${debuglevel}"
+ echo "Building 8u%{updatever}-%{buildver}, milestone %{milestone}"
+
mkdir -p ${outputdir}
pushd ${outputdir}
bash ${top_srcdir_abs_path}/configure \
%ifarch %{jfr_arches}
--enable-jfr \
+%else
+ --disable-jfr \
%endif
%ifnarch %{jit_arches}
--with-jvm-variants=zero \
@@ -1794,6 +1827,10 @@ function buildjdk() {
--with-milestone=%{milestone} \
--with-update-version=%{updatever} \
--with-build-number=%{buildver} \
+ --with-vendor-name="%{oj_vendor}" \
+ --with-vendor-url="%{oj_vendor_url}" \
+ --with-vendor-bug-url="%{oj_vendor_bug_url}" \
+ --with-vendor-vm-bug-url="%{oj_vendor_bug_url}" \
--with-boot-jdk=${buildjdk} \
--with-debug-level=${debuglevel} \
--enable-unlimited-crypto \
@@ -1903,6 +1940,10 @@ $JAVA_HOME/bin/java TestCryptoLevel
$JAVA_HOME/bin/javac -d . %{SOURCE14}
$JAVA_HOME/bin/java $(echo $(basename %{SOURCE14})|sed "s|\.java||")
+# Check correct vendor values have been set
+$JAVA_HOME/bin/javac -d . %{SOURCE16}
+$JAVA_HOME/bin/java $(echo $(basename %{SOURCE16})|sed "s|\.java||") "%{oj_vendor}" %{oj_vendor_url} %{oj_vendor_bug_url}
+
# Check debug symbols are present and can identify code
find "$JAVA_HOME" -iname '*.so' -print0 | while read -d $'\0' lib
do
@@ -2360,6 +2401,97 @@ require "copy_jdk_configs.lua"
%endif
%changelog
+* Thu Oct 29 2020 Andrew Hughes - 1:1.8.0.272.b10-4
+- Bump release number to build on RHEL 8.4.0 branch.
+- Resolves: rhbz#1876665
+- Resolves: rhbz#1889414
+
+* Wed Oct 21 2020 Andrew Hughes - 1:1.8.0.272.b10-3
+- Add backport of JDK-8236512 to correct use of killSession
+- Resolves: rhbz#1889414
+
+* Tue Oct 20 2020 Andrew Hughes - 1:1.8.0.272.b10-2
+- Add backport of JDK-8215727: "Restore JFR thread sampler loop to old / previous behaviour"
+- Resolves: rhbz#1876665
+
+* Sat Oct 17 2020 Andrew Hughes - 1:1.8.0.272.b10-1
+- Update to aarch64-shenandoah-jdk8u272-b10.
+- Switch to GA mode for final release.
+- Update release notes for 8u272 release.
+- Add backport of JDK-8254177 to update to tzdata 2020b
+- Require tzdata 2020b due to resource changes in JDK-8254177
+- Delay tzdata 2020b dependency until tzdata update has shipped.
+- Adjust JDK-8062808/PR3548 following constantPool.hpp context change in JDK-8243302
+- Adjust PR3593 following g1StringDedupTable.cpp context change in JDK-8240124 & JDK-8244955
+- This tarball is embargoed until 2020-10-20 @ 1pm PT.
+- Resolves: rhbz#1876665
+
+* Thu Oct 15 2020 Andrew Hughes - 1:1.8.0.272.b09-0.2.ea
+- Include a test in the RPM to check the build has the correct vendor information.
+- Use 'oj_' prefix on new vendor globals to avoid a conflict with RPM's vendor value.
+- Improve quoting of vendor name
+- Resolves: rhbz#1876665
+
+* Thu Oct 15 2020 Jiri Vanek - 1:1.8.0.272.b09-0.2.ea
+- Set vendor property and vendor URLs
+- Made URLs to be preconfigured by OS
+- Resolves: rhbz#1876665
+
+* Wed Oct 14 2020 Andrew Hughes - 1:1.8.0.272.b09-0.1.ea
+- Update to aarch64-shenandoah-jdk8u272-b09 (EA).
+- Resolves: rhbz#1876665
+
+* Tue Oct 13 2020 Andrew Hughes - 1:1.8.0.272.b08-0.1.ea
+- Update to aarch64-shenandoah-jdk8u272-b08 (EA).
+- Resolves: rhbz#1876665
+
+* Tue Oct 13 2020 Andrew Hughes - 1:1.8.0.272.b07-0.1.ea
+- Update to aarch64-shenandoah-jdk8u272-b07 (EA).
+- Resolves: rhbz#1876665
+
+* Mon Oct 12 2020 Andrew Hughes - 1:1.8.0.272.b06-0.1.ea
+- Update to aarch64-shenandoah-jdk8u272-b06.
+- Update tarball generation script to use PR3799, following inclusion of JDK-8245468 (TLSv1.3)
+- Remove JDK-8165996/PR3506/RH1760437 & JDK-8251117/RH1860990 as now applied upstream.
+- Replace JDK-8223482/RH1860965 with RH1860986 (disable TLSv1.3 when using the NSS-FIPS provider)
+- Resolves: rhbz#1876665
+
+* Mon Oct 12 2020 Andrew Hughes - 1:1.8.0.272.b05-0.3.ea
+- Enable JFR on x86, now we have JDK-8252096: Shenandoah: adjust SerialPageShiftCount for x86_32 and JFR
+- Resolves: rhbz#1876665
+
+* Thu Oct 08 2020 Andrew Hughes - 1:1.8.0.272.b05-0.2.ea
+- Update to aarch64-shenandoah-jdk8u272-b05-shenandoah-merge-2020-08-28.
+- Add additional s390 log2_intptr case in shenandoahUtils.cpp introduced by JDK-8245464
+- Resolves: rhbz#1876665
+
+* Thu Oct 08 2020 Andrew Hughes - 1:1.8.0.272.b05-0.1.ea
+- Update to aarch64-shenandoah-jdk8u272-b05.
+- Add additional s390 size_t case in g1ConcurrentMarkObjArrayProcessor.cpp introduced by JDK-8057003
+- Resolves: rhbz#1876665
+
+* Wed Oct 07 2020 Andrew Hughes - 1:1.8.0.272.b04-0.1.ea
+- Update to aarch64-shenandoah-jdk8u272-b04.
+- Update tarball generation script to use PR3795, following inclusion of JDK-8177334
+- Resolves: rhbz#1876665
+
+* Mon Oct 05 2020 Andrew Hughes - 1:1.8.0.272.b03-0.1.ea
+- Update to aarch64-shenandoah-jdk8u272-b03.
+- Resolves: rhbz#1876665
+
+* Mon Oct 05 2020 Andrew Hughes - 1:1.8.0.272.b02-0.1.ea
+- Update to aarch64-shenandoah-jdk8u272-b02.
+- Remove JDK-8154313 backport now applied upstream.
+- Change target from 'zip-docs' to 'docs-zip', which is the naming used upstream.
+- Resolves: rhbz#1876665
+
+* Mon Oct 05 2020 Andrew Hughes - 1:1.8.0.272.b01-0.1.ea
+- Update to aarch64-shenandoah-jdk8u272-b01.
+- Switch to EA mode.
+- Add debugging output for build.
+- JFR must now be explicitly disabled when unwanted (e.g. x86), following switch of upstream default.
+- Resolves: rhbz#1876665
+
* Thu Sep 17 2020 Andrew Hughes - 1:1.8.0.265.b01-4
- Add patch to cancel PKCS#11 operations on failure (RH1868759)
- Resolves: rhbz#1868759