From 719bc6581bd61c1d356f424234669ec9ebbc4a7d3ddcc04e1280080ea083e9e0 Mon Sep 17 00:00:00 2001 From: Fridrich Strba Date: Fri, 28 Sep 2018 06:35:53 +0000 Subject: [PATCH] OBS-URL: https://build.opensuse.org/package/show/Java:Factory/java-1_8_0-openjdk?expand=0&rev=300 --- 8038636.patch | 367 -- 8051972.patch | 18 - 8055008.patch | 1109 ------ 8074373.patch | 74 - 8076117.patch | 390 -- 8157898.patch | 11 - 8169201.patch | 11 - 8170035.patch | 16 - 8176183.patch | 37 - 8187635.patch | 10 - 8188223.patch | 12 - 8191239.patch | 41 - 8193419.patch | 600 ---- 8196224.patch | 40 - 8196491.patch | 239 -- 8196854.patch | 28 - 8197871.patch | 72 - 8197925.patch | 79 - 8197943.patch | 45 - 8198794.patch | 32 - 8199406.patch | 223 -- 8199547.patch | 11 - 8200359.patch | 3577 ------------------- 8200666.patch | 80 - 8201433.patch | 101 - 8202585.patch | 183 - 8202996.patch | 10 - 8203233.patch | 426 --- 8203368.patch | 159 - 8205491.patch | 17 - aarch32.tar.xz | 4 +- corba.tar.xz | 4 +- hotspot.tar.xz | 4 +- icedtea-3.8.0.tar.xz | 3 - icedtea-3.9.0.tar.xz | 3 + java-1_8_0-openjdk-suse-desktop-files.patch | 8 +- java-1_8_0-openjdk.changes | 477 +++ java-1_8_0-openjdk.spec | 73 +- jaxp.tar.xz | 4 +- jaxws.tar.xz | 4 +- jdk.tar.xz | 4 +- langtools.tar.xz | 4 +- nashorn.tar.xz | 4 +- openjdk.tar.xz | 4 +- 44 files changed, 507 insertions(+), 8111 deletions(-) delete mode 100644 8038636.patch delete mode 100644 8051972.patch delete mode 100644 8055008.patch delete mode 100644 8074373.patch delete mode 100644 8076117.patch delete mode 100644 8157898.patch delete mode 100644 8169201.patch delete mode 100644 8170035.patch delete mode 100644 8176183.patch delete mode 100644 8187635.patch delete mode 100644 8188223.patch delete mode 100644 8191239.patch delete mode 100644 8193419.patch delete mode 100644 8196224.patch delete mode 100644 8196491.patch delete mode 100644 8196854.patch delete mode 100644 8197871.patch delete mode 100644 8197925.patch delete mode 100644 8197943.patch delete mode 100644 8198794.patch delete mode 100644 8199406.patch delete mode 100644 8199547.patch delete mode 100644 8200359.patch delete mode 100644 8200666.patch delete mode 100644 8201433.patch delete mode 100644 8202585.patch delete mode 100644 8202996.patch delete mode 100644 8203233.patch delete mode 100644 8203368.patch delete mode 100644 8205491.patch delete mode 100644 icedtea-3.8.0.tar.xz create mode 100644 icedtea-3.9.0.tar.xz diff --git a/8038636.patch b/8038636.patch deleted file mode 100644 index 7499277..0000000 --- a/8038636.patch +++ /dev/null @@ -1,367 +0,0 @@ ---- icedtea-3.8.0/openjdk/hotspot/src/share/vm/oops/instanceKlass.cpp 2018-09-18 09:01:41.412881903 +0200 -+++ icedtea-3.8.0/openjdk/hotspot/src/share/vm/oops/instanceKlass.cpp 2018-09-18 09:03:51.077559026 +0200 -@@ -3699,6 +3699,10 @@ - ("purge: %s(%s): prev method @%d in version @%d is alive", - method->name()->as_C_string(), - method->signature()->as_C_string(), j, i)); -+ if (method->method_data() != NULL) { -+ // Clean out any weak method links -+ method->method_data()->clean_weak_method_links(); -+ } - } - } - } -@@ -3708,6 +3712,14 @@ - ("purge: previous version stats: live=%d, deleted=%d", live_count, - deleted_count)); - } -+ -+ Array* methods = ik->methods(); -+ int num_methods = methods->length(); -+ for (int index2 = 0; index2 < num_methods; ++index2) { -+ if (methods->at(index2)->method_data() != NULL) { -+ methods->at(index2)->method_data()->clean_weak_method_links(); -+ } -+ } - } - - // External interface for use during class unloading. ---- icedtea-3.8.0/openjdk/hotspot/src/share/vm/oops/methodData.cpp 2018-09-18 09:01:41.412881903 +0200 -+++ icedtea-3.8.0/openjdk/hotspot/src/share/vm/oops/methodData.cpp 2018-09-18 09:03:51.077559026 +0200 -@@ -1559,9 +1559,35 @@ - } - } - --// Remove SpeculativeTrapData entries that reference an unloaded --// method --void MethodData::clean_extra_data(BoolObjectClosure* is_alive) { -+class CleanExtraDataClosure : public StackObj { -+public: -+ virtual bool is_live(Method* m) = 0; -+}; -+ -+// Check for entries that reference an unloaded method -+class CleanExtraDataKlassClosure : public CleanExtraDataClosure { -+private: -+ BoolObjectClosure* _is_alive; -+public: -+ CleanExtraDataKlassClosure(BoolObjectClosure* is_alive) : _is_alive(is_alive) {} -+ bool is_live(Method* m) { -+ return m->method_holder()->is_loader_alive(_is_alive); -+ } -+}; -+ -+// Check for entries that reference a redefined method -+class CleanExtraDataMethodClosure : public CleanExtraDataClosure { -+public: -+ CleanExtraDataMethodClosure() {} -+ bool is_live(Method* m) { -+ return m->on_stack(); -+ } -+}; -+ -+ -+// Remove SpeculativeTrapData entries that reference an unloaded or -+// redefined method -+void MethodData::clean_extra_data(CleanExtraDataClosure* cl) { - DataLayout* dp = extra_data_base(); - DataLayout* end = extra_data_limit(); - -@@ -1572,7 +1598,7 @@ - SpeculativeTrapData* data = new SpeculativeTrapData(dp); - Method* m = data->method(); - assert(m != NULL, "should have a method"); -- if (!m->method_holder()->is_loader_alive(is_alive)) { -+ if (!cl->is_live(m)) { - // "shift" accumulates the number of cells for dead - // SpeculativeTrapData entries that have been seen so - // far. Following entries must be shifted left by that many -@@ -1603,9 +1629,9 @@ - } - } - --// Verify there's no unloaded method referenced by a -+// Verify there's no unloaded or redefined method referenced by a - // SpeculativeTrapData entry --void MethodData::verify_extra_data_clean(BoolObjectClosure* is_alive) { -+void MethodData::verify_extra_data_clean(CleanExtraDataClosure* cl) { - #ifdef ASSERT - DataLayout* dp = extra_data_base(); - DataLayout* end = extra_data_limit(); -@@ -1615,7 +1641,7 @@ - case DataLayout::speculative_trap_data_tag: { - SpeculativeTrapData* data = new SpeculativeTrapData(dp); - Method* m = data->method(); -- assert(m != NULL && m->method_holder()->is_loader_alive(is_alive), "Method should exist"); -+ assert(m != NULL && cl->is_live(m), "Method should exist"); - break; - } - case DataLayout::bit_data_tag: -@@ -1641,6 +1667,19 @@ - parameters->clean_weak_klass_links(is_alive); - } - -- clean_extra_data(is_alive); -- verify_extra_data_clean(is_alive); -+ CleanExtraDataKlassClosure cl(is_alive); -+ clean_extra_data(&cl); -+ verify_extra_data_clean(&cl); -+} -+ -+void MethodData::clean_weak_method_links() { -+ for (ProfileData* data = first_data(); -+ is_valid(data); -+ data = next_data(data)) { -+ data->clean_weak_method_links(); -+ } -+ -+ CleanExtraDataMethodClosure cl; -+ clean_extra_data(&cl); -+ verify_extra_data_clean(&cl); - } ---- icedtea-3.8.0/openjdk/hotspot/src/share/vm/oops/methodData.hpp 2018-09-18 09:01:41.412881903 +0200 -+++ icedtea-3.8.0/openjdk/hotspot/src/share/vm/oops/methodData.hpp 2018-09-18 09:03:51.077559026 +0200 -@@ -251,6 +251,9 @@ - - // GC support - void clean_weak_klass_links(BoolObjectClosure* cl); -+ -+ // Redefinition support -+ void clean_weak_method_links(); - }; - - -@@ -508,6 +511,9 @@ - // GC support - virtual void clean_weak_klass_links(BoolObjectClosure* is_alive_closure) {} - -+ // Redefinition support -+ virtual void clean_weak_method_links() {} -+ - // CI translation: ProfileData can represent both MethodDataOop data - // as well as CIMethodData data. This function is provided for translating - // an oop in a ProfileData to the ci equivalent. Generally speaking, -@@ -2030,6 +2036,7 @@ - // - - CC_INTERP_ONLY(class BytecodeInterpreter;) -+class CleanExtraDataClosure; - - class MethodData : public Metadata { - friend class VMStructs; -@@ -2183,9 +2190,9 @@ - static bool profile_parameters_jsr292_only(); - static bool profile_all_parameters(); - -- void clean_extra_data(BoolObjectClosure* is_alive); -+ void clean_extra_data(CleanExtraDataClosure* cl); - void clean_extra_data_helper(DataLayout* dp, int shift, bool reset = false); -- void verify_extra_data_clean(BoolObjectClosure* is_alive); -+ void verify_extra_data_clean(CleanExtraDataClosure* cl); - - public: - static int header_size() { -@@ -2477,6 +2484,8 @@ - static bool profile_return_jsr292_only(); - - void clean_method_data(BoolObjectClosure* is_alive); -+ -+ void clean_weak_method_links(); - }; - - #endif // SHARE_VM_OOPS_METHODDATAOOP_HPP ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ icedtea-3.8.0/openjdk/hotspot/test/compiler/profiling/spectrapredefineclass/Agent.java Tue Apr 08 09:51:25 2014 +0200 -@@ -0,0 +1,142 @@ -+/* -+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. -+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -+ * -+ * This code is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License version 2 only, as -+ * published by the Free Software Foundation. -+ * -+ * This code is distributed in the hope that it will be useful, but WITHOUT -+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -+ * version 2 for more details (a copy is included in the LICENSE file that -+ * accompanied this code). -+ * -+ * You should have received a copy of the GNU General Public License version -+ * 2 along with this work; if not, write to the Free Software Foundation, -+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -+ * -+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -+ * or visit www.oracle.com if you need additional information or have any -+ * questions. -+ */ -+ -+import java.security.*; -+import java.lang.instrument.*; -+import java.lang.reflect.*; -+import java.lang.management.ManagementFactory; -+import com.sun.tools.attach.VirtualMachine; -+ -+class A { -+ void m() { -+ } -+} -+ -+class B extends A { -+ void m() { -+ } -+} -+ -+class C extends A { -+ void m() { -+ } -+} -+ -+class Test { -+ -+ static public void m() throws Exception { -+ for (int i = 0; i < 20000; i++) { -+ m1(a); -+ } -+ for (int i = 0; i < 4; i++) { -+ m1(b); -+ } -+ } -+ -+ static boolean m1(A a) { -+ boolean res = Agent.m2(a); -+ return res; -+ } -+ -+ static public A a = new A(); -+ static public B b = new B(); -+ static public C c = new C(); -+} -+ -+public class Agent implements ClassFileTransformer { -+ -+ -+ static class MemoryChunk { -+ MemoryChunk other; -+ long[] array; -+ MemoryChunk(MemoryChunk other) { -+ other = other; -+ array = new long[1024 * 1024 * 1024]; -+ } -+ } -+ -+ static public boolean m2(A a) { -+ boolean res = false; -+ if (a.getClass() == B.class) { -+ a.m(); -+ } else { -+ res = true; -+ } -+ return res; -+ } -+ -+ static public void main(String[] args) throws Exception { -+ // Create speculative trap entries -+ Test.m(); -+ -+ String nameOfRunningVM = ManagementFactory.getRuntimeMXBean().getName(); -+ int p = nameOfRunningVM.indexOf('@'); -+ String pid = nameOfRunningVM.substring(0, p); -+ -+ // Make the nmethod go away -+ for (int i = 0; i < 10; i++) { -+ System.gc(); -+ } -+ -+ // Redefine class -+ try { -+ VirtualMachine vm = VirtualMachine.attach(pid); -+ vm.loadAgent(System.getProperty("test.classes",".") + "/agent.jar", ""); -+ vm.detach(); -+ } catch (Exception e) { -+ throw new RuntimeException(e); -+ } -+ -+ Test.m(); -+ // GC will hit dead method pointer -+ for (int i = 0; i < 10; i++) { -+ System.gc(); -+ } -+ } -+ -+ public synchronized byte[] transform(final ClassLoader classLoader, -+ final String className, -+ Class classBeingRedefined, -+ ProtectionDomain protectionDomain, -+ byte[] classfileBuffer) { -+ System.out.println("Transforming class " + className); -+ return classfileBuffer; -+ } -+ -+ public static void redefine(String agentArgs, Instrumentation instrumentation, Class to_redefine) { -+ -+ try { -+ instrumentation.retransformClasses(to_redefine); -+ } catch (Exception e) { -+ e.printStackTrace(); -+ } -+ -+ } -+ -+ public static void agentmain(String agentArgs, Instrumentation instrumentation) throws Exception { -+ Agent transformer = new Agent(); -+ instrumentation.addTransformer(transformer, true); -+ -+ redefine(agentArgs, instrumentation, Test.class); -+ } -+} ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ icedtea-3.8.0/openjdk/hotspot/test/compiler/profiling/spectrapredefineclass/Launcher.java Tue Apr 08 09:51:25 2014 +0200 -@@ -0,0 +1,47 @@ -+/* -+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. -+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -+ * -+ * This code is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License version 2 only, as -+ * published by the Free Software Foundation. -+ * -+ * This code is distributed in the hope that it will be useful, but WITHOUT -+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -+ * version 2 for more details (a copy is included in the LICENSE file that -+ * accompanied this code). -+ * -+ * You should have received a copy of the GNU General Public License version -+ * 2 along with this work; if not, write to the Free Software Foundation, -+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -+ * -+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -+ * or visit www.oracle.com if you need additional information or have any -+ * questions. -+ */ -+import java.io.PrintWriter; -+import com.oracle.java.testlibrary.*; -+ -+/* -+ * @test -+ * @bug 8038636 -+ * @library /testlibrary -+ * @build Agent -+ * @run main ClassFileInstaller Agent -+ * @run main Launcher -+ * @run main/othervm -XX:-TieredCompilation -XX:-BackgroundCompilation -XX:-UseOnStackReplacement -XX:TypeProfileLevel=222 -Xmx1M -XX:ReservedCodeCacheSize=3M Agent -+ */ -+public class Launcher { -+ public static void main(String[] args) throws Exception { -+ -+ PrintWriter pw = new PrintWriter("MANIFEST.MF"); -+ pw.println("Agent-Class: Agent"); -+ pw.println("Can-Retransform-Classes: true"); -+ pw.close(); -+ -+ ProcessBuilder pb = new ProcessBuilder(); -+ pb.command(new String[] { JDKToolFinder.getJDKTool("jar"), "cmf", "MANIFEST.MF", System.getProperty("test.classes",".") + "/agent.jar", "Agent.class"}); -+ pb.start().waitFor(); -+ } -+} diff --git a/8051972.patch b/8051972.patch deleted file mode 100644 index 01485b3..0000000 --- a/8051972.patch +++ /dev/null @@ -1,18 +0,0 @@ ---- icedtea-3.8.0/openjdk/jdk/test/sun/security/pkcs11/ec/ReadCertificates.java 2018-09-18 09:01:53.500945030 +0200 -+++ icedtea-3.8.0/openjdk/jdk/test/sun/security/pkcs11/ec/ReadCertificates.java 2018-09-18 09:08:14.826936408 +0200 -@@ -171,8 +171,14 @@ - signer = getRandomCert(certList); - } while (cert.getIssuerX500Principal().equals(signer.getSubjectX500Principal())); - try { -- cert.verify(signer.getPublicKey()); -+ PublicKey signerPublicKey = signer.getPublicKey(); -+ cert.verify(signerPublicKey); -+ // Ignore false positives -+ if (cert.getPublicKey().equals(signerPublicKey)) { -+ System.out.println("OK: self-signed certificate detected"); -+ } else { - throw new Exception("Verified invalid signature"); -+ } - } catch (SignatureException | InvalidKeyException e) { - System.out.println("OK: " + e); - } diff --git a/8055008.patch b/8055008.patch deleted file mode 100644 index 5174f1a..0000000 --- a/8055008.patch +++ /dev/null @@ -1,1109 +0,0 @@ ---- icedtea-3.8.0/openjdk/hotspot/src/share/vm/classfile/metadataOnStackMark.cpp 2018-09-18 09:10:03.879505910 +0200 -+++ icedtea-3.8.0/openjdk/hotspot/src/share/vm/classfile/metadataOnStackMark.cpp 2018-09-18 09:11:09.647849381 +0200 -@@ -41,13 +41,13 @@ - // Walk metadata on the stack and mark it so that redefinition doesn't delete - // it. Class unloading also walks the previous versions and might try to - // delete it, so this class is used by class unloading also. --MetadataOnStackMark::MetadataOnStackMark(bool visit_code_cache) { -+MetadataOnStackMark::MetadataOnStackMark(bool has_redefined_a_class) { - assert(SafepointSynchronize::is_at_safepoint(), "sanity check"); - assert(_used_buffers == NULL, "sanity check"); - NOT_PRODUCT(_is_active = true;) - - Threads::metadata_do(Metadata::mark_on_stack); -- if (visit_code_cache) { -+ if (has_redefined_a_class) { - CodeCache::alive_nmethods_do(nmethod::mark_on_stack); - } - CompileBroker::mark_on_stack(); ---- icedtea-3.8.0/openjdk/hotspot/src/share/vm/classfile/metadataOnStackMark.hpp 2018-09-18 09:10:03.879505910 +0200 -+++ icedtea-3.8.0/openjdk/hotspot/src/share/vm/classfile/metadataOnStackMark.hpp 2018-09-18 09:11:09.647849381 +0200 -@@ -47,7 +47,7 @@ - static void retire_buffer(MetadataOnStackBuffer* buffer); - - public: -- MetadataOnStackMark(bool visit_code_cache); -+ MetadataOnStackMark(bool has_redefined_a_class); - ~MetadataOnStackMark(); - - static void record(Metadata* m, Thread* thread); ---- icedtea-3.8.0/openjdk/hotspot/src/share/vm/code/nmethod.cpp 2018-09-18 09:10:03.879505910 +0200 -+++ icedtea-3.8.0/openjdk/hotspot/src/share/vm/code/nmethod.cpp 2018-09-18 09:11:09.651849402 +0200 -@@ -2193,7 +2193,7 @@ - "metadata must be found in exactly one place"); - if (r->metadata_is_immediate() && r->metadata_value() != NULL) { - Metadata* md = r->metadata_value(); -- f(md); -+ if (md != _method) f(md); - } - } else if (iter.type() == relocInfo::virtual_call_type) { - // Check compiledIC holders associated with this nmethod -@@ -2219,7 +2219,7 @@ - f(md); - } - -- // Visit metadata not embedded in the other places. -+ // Call function Method*, not embedded in these other places. - if (_method != NULL) f(_method); - } - ---- icedtea-3.8.0/openjdk/hotspot/src/share/vm/oops/instanceKlass.cpp 2018-09-18 09:10:03.891505972 +0200 -+++ icedtea-3.8.0/openjdk/hotspot/src/share/vm/oops/instanceKlass.cpp 2018-09-18 09:11:09.651849402 +0200 -@@ -2582,16 +2582,6 @@ - assert(breakpoints() == 0x0, "should have cleared breakpoints"); - } - -- // deallocate information about previous versions -- if (_previous_versions != NULL) { -- for (int i = _previous_versions->length() - 1; i >= 0; i--) { -- PreviousVersionNode * pv_node = _previous_versions->at(i); -- delete pv_node; -- } -- delete _previous_versions; -- _previous_versions = NULL; -- } -- - // deallocate the cached class file - if (_cached_class_file != NULL) { - os::free(_cached_class_file, mtClass); -@@ -3204,16 +3194,17 @@ - st->print(BULLET"field type annotations: "); fields_type_annotations()->print_value_on(st); st->cr(); - { - bool have_pv = false; -- PreviousVersionWalker pvw(Thread::current(), (InstanceKlass*)this); -- for (PreviousVersionNode * pv_node = pvw.next_previous_version(); -- pv_node != NULL; pv_node = pvw.next_previous_version()) { -+ // previous versions are linked together through the InstanceKlass -+ for (InstanceKlass* pv_node = _previous_versions; -+ pv_node != NULL; -+ pv_node = pv_node->previous_versions()) { - if (!have_pv) - st->print(BULLET"previous version: "); - have_pv = true; -- pv_node->prev_constant_pool()->print_value_on(st); -+ pv_node->constants()->print_value_on(st); - } - if (have_pv) st->cr(); -- } // pvw is cleaned up -+ } - - if (generic_signature() != NULL) { - st->print(BULLET"generic signature: "); -@@ -3627,92 +3618,93 @@ - // RedefineClasses() support for previous versions: - - // Purge previous versions --static void purge_previous_versions_internal(InstanceKlass* ik, int emcp_method_count) { -+void InstanceKlass::purge_previous_versions(InstanceKlass* ik) { - if (ik->previous_versions() != NULL) { - // This klass has previous versions so see what we can cleanup - // while it is safe to do so. - - int deleted_count = 0; // leave debugging breadcrumbs - int live_count = 0; -- ClassLoaderData* loader_data = ik->class_loader_data() == NULL ? -- ClassLoaderData::the_null_class_loader_data() : -- ik->class_loader_data(); -+ ClassLoaderData* loader_data = ik->class_loader_data(); -+ assert(loader_data != NULL, "should never be null"); - - // RC_TRACE macro has an embedded ResourceMark -- RC_TRACE(0x00000200, ("purge: %s: previous version length=%d", -- ik->external_name(), ik->previous_versions()->length())); -+ RC_TRACE(0x00000200, ("purge: %s: previous versions", ik->external_name())); -+ -+ // previous versions are linked together through the InstanceKlass -+ InstanceKlass* pv_node = ik->previous_versions(); -+ InstanceKlass* last = ik; -+ int version = 0; -+ -+ // check the previous versions list -+ for (; pv_node != NULL; ) { -+ -+ ConstantPool* pvcp = pv_node->constants(); -+ assert(pvcp != NULL, "cp ref was unexpectedly cleared"); - -- for (int i = ik->previous_versions()->length() - 1; i >= 0; i--) { -- // check the previous versions array -- PreviousVersionNode * pv_node = ik->previous_versions()->at(i); -- ConstantPool* cp_ref = pv_node->prev_constant_pool(); -- assert(cp_ref != NULL, "cp ref was unexpectedly cleared"); - -- ConstantPool* pvcp = cp_ref; - if (!pvcp->on_stack()) { - // If the constant pool isn't on stack, none of the methods -- // are executing. Delete all the methods, the constant pool and -- // and this previous version node. -- GrowableArray* method_refs = pv_node->prev_EMCP_methods(); -- if (method_refs != NULL) { -- for (int j = method_refs->length() - 1; j >= 0; j--) { -- Method* method = method_refs->at(j); -- assert(method != NULL, "method ref was unexpectedly cleared"); -- method_refs->remove_at(j); -- // method will be freed with associated class. -- } -- } -- // Remove the constant pool -- delete pv_node; -- // Since we are traversing the array backwards, we don't have to -- // do anything special with the index. -- ik->previous_versions()->remove_at(i); -+ // are executing. Unlink this previous_version. -+ // The previous version InstanceKlass is on the ClassLoaderData deallocate list -+ // so will be deallocated during the next phase of class unloading. -+ pv_node = pv_node->previous_versions(); -+ last->link_previous_versions(pv_node); - deleted_count++; -+ version++; - continue; - } else { -- RC_TRACE(0x00000200, ("purge: previous version @%d is alive", i)); -+ RC_TRACE(0x00000200, ("purge: previous version " INTPTR_FORMAT " is alive", -+ pv_node)); - assert(pvcp->pool_holder() != NULL, "Constant pool with no holder"); - guarantee (!loader_data->is_unloading(), "unloaded classes can't be on the stack"); - live_count++; - } - -- // At least one method is live in this previous version, clean out -- // the others or mark them as obsolete. -- GrowableArray* method_refs = pv_node->prev_EMCP_methods(); -+ // At least one method is live in this previous version so clean its MethodData. -+ // Reset dead EMCP methods not to get breakpoints. -+ // All methods are deallocated when all of the methods for this class are no -+ // longer running. -+ Array* method_refs = pv_node->methods(); - if (method_refs != NULL) { - RC_TRACE(0x00000200, ("purge: previous methods length=%d", - method_refs->length())); -- for (int j = method_refs->length() - 1; j >= 0; j--) { -+ for (int j = 0; j < method_refs->length(); j++) { - Method* method = method_refs->at(j); -- assert(method != NULL, "method ref was unexpectedly cleared"); - -- // Remove the emcp method if it's not executing -- // If it's been made obsolete by a redefinition of a non-emcp -- // method, mark it as obsolete but leave it to clean up later. - if (!method->on_stack()) { -- method_refs->remove_at(j); -- } else if (emcp_method_count == 0) { -- method->set_is_obsolete(); -+ // no breakpoints for non-running methods -+ if (method->is_running_emcp()) { -+ method->set_running_emcp(false); -+ } - } else { -+ assert (method->is_obsolete() || method->is_running_emcp(), -+ "emcp method cannot run after emcp bit is cleared"); - // RC_TRACE macro has an embedded ResourceMark - RC_TRACE(0x00000200, - ("purge: %s(%s): prev method @%d in version @%d is alive", - method->name()->as_C_string(), -- method->signature()->as_C_string(), j, i)); -+ method->signature()->as_C_string(), j, version)); - if (method->method_data() != NULL) { -- // Clean out any weak method links -+ // Clean out any weak method links for running methods -+ // (also should include not EMCP methods) - method->method_data()->clean_weak_method_links(); - } - } - } - } -+ // next previous version -+ last = pv_node; -+ pv_node = pv_node->previous_versions(); -+ version++; - } -- assert(ik->previous_versions()->length() == live_count, "sanity check"); - RC_TRACE(0x00000200, - ("purge: previous version stats: live=%d, deleted=%d", live_count, - deleted_count)); - } - -+ // Clean MethodData of this class's methods so they don't refer to -+ // old methods that are no longer running. - Array* methods = ik->methods(); - int num_methods = methods->length(); - for (int index2 = 0; index2 < num_methods; ++index2) { -@@ -3722,122 +3714,30 @@ - } - } - --// External interface for use during class unloading. --void InstanceKlass::purge_previous_versions(InstanceKlass* ik) { -- // Call with >0 emcp methods since they are not currently being redefined. -- purge_previous_versions_internal(ik, 1); --} -- -- --// Potentially add an information node that contains pointers to the --// interesting parts of the previous version of the_class. --// This is also where we clean out any unused references. --// Note that while we delete nodes from the _previous_versions --// array, we never delete the array itself until the klass is --// unloaded. The has_been_redefined() query depends on that fact. --// --void InstanceKlass::add_previous_version(instanceKlassHandle ikh, -- BitMap* emcp_methods, int emcp_method_count) { -- assert(Thread::current()->is_VM_thread(), -- "only VMThread can add previous versions"); -- -- if (_previous_versions == NULL) { -- // This is the first previous version so make some space. -- // Start with 2 elements under the assumption that the class -- // won't be redefined much. -- _previous_versions = new (ResourceObj::C_HEAP, mtClass) -- GrowableArray(2, true); -- } -- -- ConstantPool* cp_ref = ikh->constants(); -- -- // RC_TRACE macro has an embedded ResourceMark -- RC_TRACE(0x00000400, ("adding previous version ref for %s @%d, EMCP_cnt=%d " -- "on_stack=%d", -- ikh->external_name(), _previous_versions->length(), emcp_method_count, -- cp_ref->on_stack())); -- -- // If the constant pool for this previous version of the class -- // is not marked as being on the stack, then none of the methods -- // in this previous version of the class are on the stack so -- // we don't need to create a new PreviousVersionNode. However, -- // we still need to examine older previous versions below. -- Array* old_methods = ikh->methods(); -- -- if (cp_ref->on_stack()) { -- PreviousVersionNode * pv_node = NULL; -- if (emcp_method_count == 0) { -- // non-shared ConstantPool gets a reference -- pv_node = new PreviousVersionNode(cp_ref, NULL); -- RC_TRACE(0x00000400, -- ("add: all methods are obsolete; flushing any EMCP refs")); -- } else { -- int local_count = 0; -- GrowableArray* method_refs = new (ResourceObj::C_HEAP, mtClass) -- GrowableArray(emcp_method_count, true); -- for (int i = 0; i < old_methods->length(); i++) { -- if (emcp_methods->at(i)) { -- // this old method is EMCP. Save it only if it's on the stack -- Method* old_method = old_methods->at(i); -- if (old_method->on_stack()) { -- method_refs->append(old_method); -- } -- if (++local_count >= emcp_method_count) { -- // no more EMCP methods so bail out now -- break; -- } -- } -- } -- // non-shared ConstantPool gets a reference -- pv_node = new PreviousVersionNode(cp_ref, method_refs); -- } -- // append new previous version. -- _previous_versions->append(pv_node); -- } -- -- // Since the caller is the VMThread and we are at a safepoint, this -- // is a good time to clear out unused references. -- -- RC_TRACE(0x00000400, ("add: previous version length=%d", -- _previous_versions->length())); -- -- // Purge previous versions not executing on the stack -- purge_previous_versions_internal(this, emcp_method_count); -- -+void InstanceKlass::mark_newly_obsolete_methods(Array* old_methods, -+ int emcp_method_count) { - int obsolete_method_count = old_methods->length() - emcp_method_count; - - if (emcp_method_count != 0 && obsolete_method_count != 0 && -- _previous_versions->length() > 0) { -+ _previous_versions != NULL) { - // We have a mix of obsolete and EMCP methods so we have to - // clear out any matching EMCP method entries the hard way. - int local_count = 0; - for (int i = 0; i < old_methods->length(); i++) { -- if (!emcp_methods->at(i)) { -- // only obsolete methods are interesting - Method* old_method = old_methods->at(i); -+ if (old_method->is_obsolete()) { -+ // only obsolete methods are interesting - Symbol* m_name = old_method->name(); - Symbol* m_signature = old_method->signature(); - -- // we might not have added the last entry -- for (int j = _previous_versions->length() - 1; j >= 0; j--) { -- // check the previous versions array for non executing obsolete methods -- PreviousVersionNode * pv_node = _previous_versions->at(j); -- -- GrowableArray* method_refs = pv_node->prev_EMCP_methods(); -- if (method_refs == NULL) { -- // We have run into a PreviousVersion generation where -- // all methods were made obsolete during that generation's -- // RedefineClasses() operation. At the time of that -- // operation, all EMCP methods were flushed so we don't -- // have to go back any further. -- // -- // A NULL method_refs is different than an empty method_refs. -- // We cannot infer any optimizations about older generations -- // from an empty method_refs for the current generation. -- break; -- } -+ // previous versions are linked together through the InstanceKlass -+ int j = 0; -+ for (InstanceKlass* prev_version = _previous_versions; -+ prev_version != NULL; -+ prev_version = prev_version->previous_versions(), j++) { - -- for (int k = method_refs->length() - 1; k >= 0; k--) { -+ Array* method_refs = prev_version->methods(); -+ for (int k = 0; k < method_refs->length(); k++) { - Method* method = method_refs->at(k); - - if (!method->is_obsolete() && -@@ -3845,14 +3745,11 @@ - method->signature() == m_signature) { - // The current RedefineClasses() call has made all EMCP - // versions of this method obsolete so mark it as obsolete -- // and remove the reference. - RC_TRACE(0x00000400, - ("add: %s(%s): flush obsolete method @%d in version @%d", - m_name->as_C_string(), m_signature->as_C_string(), k, j)); - - method->set_is_obsolete(); -- // Leave obsolete methods on the previous version list to -- // clean up later. - break; - } - } -@@ -3860,9 +3757,9 @@ - // The previous loop may not find a matching EMCP method, but - // that doesn't mean that we can optimize and not go any - // further back in the PreviousVersion generations. The EMCP -- // method for this generation could have already been deleted, -+ // method for this generation could have already been made obsolete, - // but there still may be an older EMCP method that has not -- // been deleted. -+ // been made obsolete. - } - - if (++local_count >= obsolete_method_count) { -@@ -3872,30 +3769,67 @@ - } - } - } --} // end add_previous_version() -+} - -+// Save the scratch_class as the previous version if any of the methods are running. -+// The previous_versions are used to set breakpoints in EMCP methods and they are -+// also used to clean MethodData links to redefined methods that are no longer running. -+void InstanceKlass::add_previous_version(instanceKlassHandle scratch_class, -+ int emcp_method_count) { -+ assert(Thread::current()->is_VM_thread(), -+ "only VMThread can add previous versions"); - --// Determine if InstanceKlass has a previous version. --bool InstanceKlass::has_previous_version() const { -- return (_previous_versions != NULL && _previous_versions->length() > 0); --} // end has_previous_version() -+ // RC_TRACE macro has an embedded ResourceMark -+ RC_TRACE(0x00000400, ("adding previous version ref for %s, EMCP_cnt=%d", -+ scratch_class->external_name(), emcp_method_count)); - -+ // Clean out old previous versions -+ purge_previous_versions(this); - --InstanceKlass* InstanceKlass::get_klass_version(int version) { -- if (constants()->version() == version) { -- return this; -+ // Mark newly obsolete methods in remaining previous versions. An EMCP method from -+ // a previous redefinition may be made obsolete by this redefinition. -+ Array* old_methods = scratch_class->methods(); -+ mark_newly_obsolete_methods(old_methods, emcp_method_count); -+ -+ // If the constant pool for this previous version of the class -+ // is not marked as being on the stack, then none of the methods -+ // in this previous version of the class are on the stack so -+ // we don't need to add this as a previous version. -+ ConstantPool* cp_ref = scratch_class->constants(); -+ if (!cp_ref->on_stack()) { -+ RC_TRACE(0x00000400, ("add: scratch class not added; no methods are running")); -+ return; - } -- PreviousVersionWalker pvw(Thread::current(), (InstanceKlass*)this); -- for (PreviousVersionNode * pv_node = pvw.next_previous_version(); -- pv_node != NULL; pv_node = pvw.next_previous_version()) { -- ConstantPool* prev_cp = pv_node->prev_constant_pool(); -- if (prev_cp->version() == version) { -- return prev_cp->pool_holder(); -+ -+ if (emcp_method_count != 0) { -+ // At least one method is still running, check for EMCP methods -+ for (int i = 0; i < old_methods->length(); i++) { -+ Method* old_method = old_methods->at(i); -+ if (!old_method->is_obsolete() && old_method->on_stack()) { -+ // if EMCP method (not obsolete) is on the stack, mark as EMCP so that -+ // we can add breakpoints for it. -+ -+ // We set the method->on_stack bit during safepoints for class redefinition and -+ // class unloading and use this bit to set the is_running_emcp bit. -+ // After the safepoint, the on_stack bit is cleared and the running emcp -+ // method may exit. If so, we would set a breakpoint in a method that -+ // is never reached, but this won't be noticeable to the programmer. -+ old_method->set_running_emcp(true); -+ RC_TRACE(0x00000400, ("add: EMCP method %s is on_stack " INTPTR_FORMAT, -+ old_method->name_and_sig_as_C_string(), old_method)); -+ } else if (!old_method->is_obsolete()) { -+ RC_TRACE(0x00000400, ("add: EMCP method %s is NOT on_stack " INTPTR_FORMAT, -+ old_method->name_and_sig_as_C_string(), old_method)); - } - } -- return NULL; // None found - } - -+ // Add previous version if any methods are still running. -+ RC_TRACE(0x00000400, ("add: scratch class added; one of its methods is on_stack")); -+ assert(scratch_class->previous_versions() == NULL, "shouldn't have a previous version"); -+ scratch_class->link_previous_versions(previous_versions()); -+ link_previous_versions(scratch_class()); -+} // end add_previous_version() - - Method* InstanceKlass::method_with_idnum(int idnum) { - Method* m = NULL; -@@ -3953,61 +3887,3 @@ - unsigned char * InstanceKlass::get_cached_class_file_bytes() { - return VM_RedefineClasses::get_cached_class_file_bytes(_cached_class_file); - } -- -- --// Construct a PreviousVersionNode entry for the array hung off --// the InstanceKlass. --PreviousVersionNode::PreviousVersionNode(ConstantPool* prev_constant_pool, -- GrowableArray* prev_EMCP_methods) { -- -- _prev_constant_pool = prev_constant_pool; -- _prev_EMCP_methods = prev_EMCP_methods; --} -- -- --// Destroy a PreviousVersionNode --PreviousVersionNode::~PreviousVersionNode() { -- if (_prev_constant_pool != NULL) { -- _prev_constant_pool = NULL; -- } -- -- if (_prev_EMCP_methods != NULL) { -- delete _prev_EMCP_methods; -- } --} -- --// Construct a helper for walking the previous versions array --PreviousVersionWalker::PreviousVersionWalker(Thread* thread, InstanceKlass *ik) { -- _thread = thread; -- _previous_versions = ik->previous_versions(); -- _current_index = 0; -- _current_p = NULL; -- _current_constant_pool_handle = constantPoolHandle(thread, ik->constants()); --} -- -- --// Return the interesting information for the next previous version --// of the klass. Returns NULL if there are no more previous versions. --PreviousVersionNode* PreviousVersionWalker::next_previous_version() { -- if (_previous_versions == NULL) { -- // no previous versions so nothing to return -- return NULL; -- } -- -- _current_p = NULL; // reset to NULL -- _current_constant_pool_handle = NULL; -- -- int length = _previous_versions->length(); -- -- while (_current_index < length) { -- PreviousVersionNode * pv_node = _previous_versions->at(_current_index++); -- -- // Save a handle to the constant pool for this previous version, -- // which keeps all the methods from being deallocated. -- _current_constant_pool_handle = constantPoolHandle(_thread, pv_node->prev_constant_pool()); -- _current_p = pv_node; -- return pv_node; -- } -- -- return NULL; --} // end next_previous_version() ---- icedtea-3.8.0/openjdk/hotspot/src/share/vm/oops/instanceKlass.hpp 2018-09-18 09:10:03.891505972 +0200 -+++ icedtea-3.8.0/openjdk/hotspot/src/share/vm/oops/instanceKlass.hpp 2018-09-18 09:11:09.651849402 +0200 -@@ -88,7 +88,6 @@ - class fieldDescriptor; - class DepChange; - class nmethodBucket; --class PreviousVersionNode; - class JvmtiCachedClassFieldMap; - class MemberNameTable; - -@@ -235,7 +234,8 @@ - _misc_is_anonymous = 1 << 3, // has embedded _host_klass field - _misc_is_contended = 1 << 4, // marked with contended annotation - _misc_has_default_methods = 1 << 5, // class/superclass/implemented interfaces has default methods -- _misc_declares_default_methods = 1 << 6 // directly declares default methods (any access) -+ _misc_declares_default_methods = 1 << 6, // directly declares default methods (any access) -+ _misc_has_been_redefined = 1 << 7 // class has been redefined - }; - u2 _misc_flags; - u2 _minor_version; // minor version number of class file -@@ -250,9 +250,8 @@ - nmethodBucket* _dependencies; // list of dependent nmethods - nmethod* _osr_nmethods_head; // Head of list of on-stack replacement nmethods for this class - BreakpointInfo* _breakpoints; // bpt lists, managed by Method* -- // Array of interesting part(s) of the previous version(s) of this -- // InstanceKlass. See PreviousVersionWalker below. -- GrowableArray* _previous_versions; -+ // Linked instanceKlasses of previous versions -+ InstanceKlass* _previous_versions; - // JVMTI fields can be moved to their own structure - see 6315920 - // JVMTI: cached class file, before retransformable agent modified it in CFLH - JvmtiCachedClassFileData* _cached_class_file; -@@ -669,21 +668,31 @@ - } - - // RedefineClasses() support for previous versions: -- void add_previous_version(instanceKlassHandle ikh, BitMap *emcp_methods, -- int emcp_method_count); -- // If the _previous_versions array is non-NULL, then this klass -- // has been redefined at least once even if we aren't currently -- // tracking a previous version. -- bool has_been_redefined() const { return _previous_versions != NULL; } -- bool has_previous_version() const; -+ void add_previous_version(instanceKlassHandle ikh, int emcp_method_count); -+ -+ InstanceKlass* previous_versions() const { return _previous_versions; } -+ -+ bool has_been_redefined() const { -+ return (_misc_flags & _misc_has_been_redefined) != 0; -+ } -+ void set_has_been_redefined() { -+ _misc_flags |= _misc_has_been_redefined; -+ } -+ - void init_previous_versions() { - _previous_versions = NULL; - } -- GrowableArray* previous_versions() const { -- return _previous_versions; -+ -+ -+ InstanceKlass* get_klass_version(int version) { -+ for (InstanceKlass* ik = this; ik != NULL; ik = ik->previous_versions()) { -+ if (ik->constants()->version() == version) { -+ return ik; -+ } -+ } -+ return NULL; - } - -- InstanceKlass* get_klass_version(int version); - static void purge_previous_versions(InstanceKlass* ik); - - // JVMTI: Support for caching a class file before it is modified by an agent that can do retransformation -@@ -1124,6 +1133,10 @@ - - // Free CHeap allocated fields. - void release_C_heap_structures(); -+ -+ // RedefineClasses support -+ void link_previous_versions(InstanceKlass* pv) { _previous_versions = pv; } -+ void mark_newly_obsolete_methods(Array* old_methods, int emcp_method_count); - public: - // CDS support - remove and restore oops from metadata. Oops are not shared. - virtual void remove_unshareable_info(); -@@ -1222,62 +1235,6 @@ - }; - - --// If breakpoints are more numerous than just JVMTI breakpoints, --// consider compressing this data structure. --// It is currently a simple linked list defined in method.hpp. -- --class BreakpointInfo; -- -- --// A collection point for interesting information about the previous --// version(s) of an InstanceKlass. A GrowableArray of PreviousVersionNodes --// is attached to the InstanceKlass as needed. See PreviousVersionWalker below. --class PreviousVersionNode : public CHeapObj { -- private: -- ConstantPool* _prev_constant_pool; -- -- // If the previous version of the InstanceKlass doesn't have any -- // EMCP methods, then _prev_EMCP_methods will be NULL. If all the -- // EMCP methods have been collected, then _prev_EMCP_methods can -- // have a length of zero. -- GrowableArray* _prev_EMCP_methods; -- --public: -- PreviousVersionNode(ConstantPool* prev_constant_pool, -- GrowableArray* prev_EMCP_methods); -- ~PreviousVersionNode(); -- ConstantPool* prev_constant_pool() const { -- return _prev_constant_pool; -- } -- GrowableArray* prev_EMCP_methods() const { -- return _prev_EMCP_methods; -- } --}; -- -- --// Helper object for walking previous versions. --class PreviousVersionWalker : public StackObj { -- private: -- Thread* _thread; -- GrowableArray* _previous_versions; -- int _current_index; -- -- // A pointer to the current node object so we can handle the deletes. -- PreviousVersionNode* _current_p; -- -- // The constant pool handle keeps all the methods in this class from being -- // deallocated from the metaspace during class unloading. -- constantPoolHandle _current_constant_pool_handle; -- -- public: -- PreviousVersionWalker(Thread* thread, InstanceKlass *ik); -- -- // Return the interesting information for the next previous version -- // of the klass. Returns NULL if there are no more previous versions. -- PreviousVersionNode* next_previous_version(); --}; -- -- - // - // nmethodBucket is used to record dependent nmethods for - // deoptimization. nmethod dependencies are actually ---- icedtea-3.8.0/openjdk/hotspot/src/share/vm/oops/klass.cpp 2018-09-18 09:10:03.891505972 +0200 -+++ icedtea-3.8.0/openjdk/hotspot/src/share/vm/oops/klass.cpp 2018-09-18 09:11:09.651849402 +0200 -@@ -468,6 +468,12 @@ - if (clean_alive_klasses && current->oop_is_instance()) { - InstanceKlass* ik = InstanceKlass::cast(current); - ik->clean_weak_instanceklass_links(is_alive); -+ -+ // JVMTI RedefineClasses creates previous versions that are not in -+ // the class hierarchy, so process them here. -+ while ((ik = ik->previous_versions()) != NULL) { -+ ik->clean_weak_instanceklass_links(is_alive); -+ } - } - } - } ---- icedtea-3.8.0/openjdk/hotspot/src/share/vm/oops/method.cpp 2018-09-18 09:10:03.891505972 +0200 -+++ icedtea-3.8.0/openjdk/hotspot/src/share/vm/oops/method.cpp 2018-09-18 09:11:09.655849423 +0200 -@@ -91,6 +91,7 @@ - set_hidden(false); - set_dont_inline(false); - set_has_injected_profile(false); -+ set_running_emcp(false); - set_method_data(NULL); - clear_method_counters(); - set_vtable_index(Method::garbage_vtable_index); ---- icedtea-3.8.0/openjdk/hotspot/src/share/vm/oops/method.hpp 2018-09-18 09:10:03.891505972 +0200 -+++ icedtea-3.8.0/openjdk/hotspot/src/share/vm/oops/method.hpp 2018-09-18 09:11:09.655849423 +0200 -@@ -110,6 +110,7 @@ - _caller_sensitive : 1, - _force_inline : 1, - _hidden : 1, -+ _running_emcp : 1, - _dont_inline : 1, - _has_injected_profile : 1, - : 2; -@@ -717,6 +718,21 @@ - void set_is_obsolete() { _access_flags.set_is_obsolete(); } - bool is_deleted() const { return access_flags().is_deleted(); } - void set_is_deleted() { _access_flags.set_is_deleted(); } -+ -+ bool is_running_emcp() const { -+ // EMCP methods are old but not obsolete or deleted. Equivalent -+ // Modulo Constant Pool means the method is equivalent except -+ // the constant pool and instructions that access the constant -+ // pool might be different. -+ // If a breakpoint is set in a redefined method, its EMCP methods that are -+ // still running must have a breakpoint also. -+ return _running_emcp; -+ } -+ -+ void set_running_emcp(bool x) { -+ _running_emcp = x; -+ } -+ - bool on_stack() const { return access_flags().on_stack(); } - void set_on_stack(const bool value); - ---- icedtea-3.8.0/openjdk/hotspot/src/share/vm/prims/jvmtiImpl.cpp 2018-09-18 09:10:03.895505993 +0200 -+++ icedtea-3.8.0/openjdk/hotspot/src/share/vm/prims/jvmtiImpl.cpp 2018-09-18 09:11:09.655849423 +0200 -@@ -282,39 +282,22 @@ - void JvmtiBreakpoint::each_method_version_do(method_action meth_act) { - ((Method*)_method->*meth_act)(_bci); - -- // add/remove breakpoint to/from versions of the method that -- // are EMCP. Directly or transitively obsolete methods are -- // not saved in the PreviousVersionNodes. -+ // add/remove breakpoint to/from versions of the method that are EMCP. - Thread *thread = Thread::current(); - instanceKlassHandle ikh = instanceKlassHandle(thread, _method->method_holder()); - Symbol* m_name = _method->name(); - Symbol* m_signature = _method->signature(); - - // search previous versions if they exist -- PreviousVersionWalker pvw(thread, (InstanceKlass *)ikh()); -- for (PreviousVersionNode * pv_node = pvw.next_previous_version(); -- pv_node != NULL; pv_node = pvw.next_previous_version()) { -- GrowableArray* methods = pv_node->prev_EMCP_methods(); -- -- if (methods == NULL) { -- // We have run into a PreviousVersion generation where -- // all methods were made obsolete during that generation's -- // RedefineClasses() operation. At the time of that -- // operation, all EMCP methods were flushed so we don't -- // have to go back any further. -- // -- // A NULL methods array is different than an empty methods -- // array. We cannot infer any optimizations about older -- // generations from an empty methods array for the current -- // generation. -- break; -- } -+ for (InstanceKlass* pv_node = ikh->previous_versions(); -+ pv_node != NULL; -+ pv_node = pv_node->previous_versions()) { -+ Array* methods = pv_node->methods(); - - for (int i = methods->length() - 1; i >= 0; i--) { - Method* method = methods->at(i); -- // obsolete methods that are running are not deleted from -- // previous version array, but they are skipped here. -- if (!method->is_obsolete() && -+ // Only set breakpoints in running EMCP methods. -+ if (method->is_running_emcp() && - method->name() == m_name && - method->signature() == m_signature) { - RC_TRACE(0x00000800, ("%sing breakpoint in %s(%s)", ---- icedtea-3.8.0/openjdk/hotspot/src/share/vm/prims/jvmtiRedefineClasses.cpp 2018-09-18 09:10:03.895505993 +0200 -+++ icedtea-3.8.0/openjdk/hotspot/src/share/vm/prims/jvmtiRedefineClasses.cpp 2018-09-18 09:11:09.655849423 +0200 -@@ -3435,13 +3435,12 @@ - } - - // the previous versions' constant pool caches may need adjustment -- PreviousVersionWalker pvw(_thread, ik); -- for (PreviousVersionNode * pv_node = pvw.next_previous_version(); -- pv_node != NULL; pv_node = pvw.next_previous_version()) { -- other_cp = pv_node->prev_constant_pool(); -- cp_cache = other_cp->cache(); -+ for (InstanceKlass* pv_node = ik->previous_versions(); -+ pv_node != NULL; -+ pv_node = pv_node->previous_versions()) { -+ cp_cache = pv_node->constants()->cache(); - if (cp_cache != NULL) { -- cp_cache->adjust_method_entries(other_cp->pool_holder(), &trace_name_printed); -+ cp_cache->adjust_method_entries(pv_node, &trace_name_printed); - } - } - } -@@ -3461,9 +3460,8 @@ - } - } - --void VM_RedefineClasses::check_methods_and_mark_as_obsolete( -- BitMap *emcp_methods, int * emcp_method_count_p) { -- *emcp_method_count_p = 0; -+int VM_RedefineClasses::check_methods_and_mark_as_obsolete() { -+ int emcp_method_count = 0; - int obsolete_count = 0; - int old_index = 0; - for (int j = 0; j < _matching_methods_length; ++j, ++old_index) { -@@ -3537,9 +3535,9 @@ - // that we get from effectively overwriting the old methods - // when the new methods are attached to the_class. - -- // track which methods are EMCP for add_previous_version() call -- emcp_methods->set_bit(old_index); -- (*emcp_method_count_p)++; -+ // Count number of methods that are EMCP. The method will be marked -+ // old but not obsolete if it is EMCP. -+ emcp_method_count++; - - // An EMCP method is _not_ obsolete. An obsolete method has a - // different jmethodID than the current method. An EMCP method -@@ -3589,10 +3587,11 @@ - old_method->name()->as_C_string(), - old_method->signature()->as_C_string())); - } -- assert((*emcp_method_count_p + obsolete_count) == _old_methods->length(), -+ assert((emcp_method_count + obsolete_count) == _old_methods->length(), - "sanity check"); -- RC_TRACE(0x00000100, ("EMCP_cnt=%d, obsolete_cnt=%d", *emcp_method_count_p, -+ RC_TRACE(0x00000100, ("EMCP_cnt=%d, obsolete_cnt=%d", emcp_method_count, - obsolete_count)); -+ return emcp_method_count; - } - - // This internal class transfers the native function registration from old methods -@@ -3973,11 +3972,8 @@ - old_constants->set_pool_holder(scratch_class()); - #endif - -- // track which methods are EMCP for add_previous_version() call below -- BitMap emcp_methods(_old_methods->length()); -- int emcp_method_count = 0; -- emcp_methods.clear(); // clears 0..(length() - 1) -- check_methods_and_mark_as_obsolete(&emcp_methods, &emcp_method_count); -+ // track number of methods that are EMCP for add_previous_version() call below -+ int emcp_method_count = check_methods_and_mark_as_obsolete(); - transfer_old_native_function_registrations(the_class); - - // The class file bytes from before any retransformable agents mucked -@@ -4064,9 +4060,10 @@ - scratch_class->enclosing_method_method_index()); - scratch_class->set_enclosing_method_indices(old_class_idx, old_method_idx); - -+ the_class->set_has_been_redefined(); -+ - // keep track of previous versions of this class -- the_class->add_previous_version(scratch_class, &emcp_methods, -- emcp_method_count); -+ the_class->add_previous_version(scratch_class, emcp_method_count); - - RC_TIMER_STOP(_timer_rsc_phase1); - RC_TIMER_START(_timer_rsc_phase2); ---- icedtea-3.8.0/openjdk/hotspot/src/share/vm/prims/jvmtiRedefineClasses.hpp 2018-09-18 09:10:03.895505993 +0200 -+++ icedtea-3.8.0/openjdk/hotspot/src/share/vm/prims/jvmtiRedefineClasses.hpp 2018-09-18 09:11:09.655849423 +0200 -@@ -403,14 +403,9 @@ - // Change jmethodIDs to point to the new methods - void update_jmethod_ids(); - -- // In addition to marking methods as obsolete, this routine -- // records which methods are EMCP (Equivalent Module Constant -- // Pool) in the emcp_methods BitMap and returns the number of -- // EMCP methods via emcp_method_count_p. This information is -- // used when information about the previous version of the_class -- // is squirreled away. -- void check_methods_and_mark_as_obsolete(BitMap *emcp_methods, -- int * emcp_method_count_p); -+ // In addition to marking methods as old and/or obsolete, this routine -+ // counts the number of methods that are EMCP (Equivalent Module Constant Pool). -+ int check_methods_and_mark_as_obsolete(); - void transfer_old_native_function_registrations(instanceKlassHandle the_class); - - // Install the redefinition of a class ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ icedtea-3.8.0/openjdk/hotspot/test/runtime/RedefineTests/RedefineFinalizer.java Mon Jan 08 08:32:04 2018 -0800 -@@ -0,0 +1,64 @@ -+/* -+ * Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. -+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -+ * -+ * This code is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License version 2 only, as -+ * published by the Free Software Foundation. -+ * -+ * This code is distributed in the hope that it will be useful, but WITHOUT -+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -+ * version 2 for more details (a copy is included in the LICENSE file that -+ * accompanied this code). -+ * -+ * You should have received a copy of the GNU General Public License version -+ * 2 along with this work; if not, write to the Free Software Foundation, -+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -+ * -+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -+ * or visit www.oracle.com if you need additional information or have any -+ * questions. -+ */ -+ -+/* -+ * @test -+ * @bug 6904403 -+ * @summary Don't assert if we redefine finalize method -+ * @library /testlibrary -+ * @build RedefineClassHelper -+ * @run main RedefineClassHelper -+ * @run main/othervm -javaagent:redefineagent.jar RedefineFinalizer -+ */ -+ -+/* -+ * Regression test for hitting: -+ * -+ * assert(f == k->has_finalizer()) failed: inconsistent has_finalizer -+ * -+ * when redefining finalizer method -+ */ -+public class RedefineFinalizer { -+ -+ public static String newB = -+ "class RedefineFinalizer$B {" + -+ " protected void finalize() { " + -+ " System.out.println(\"Finalizer called\");" + -+ " }" + -+ "}"; -+ -+ public static void main(String[] args) throws Exception { -+ RedefineClassHelper.redefineClass(B.class, newB); -+ -+ A a = new A(); -+ } -+ -+ static class A extends B { -+ } -+ -+ static class B { -+ protected void finalize() { -+ // should be empty -+ } -+ } -+} ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ icedtea-3.8.0/openjdk/hotspot/test/runtime/RedefineTests/RedefineRunningMethods.java Mon Jan 08 08:32:04 2018 -0800 -@@ -0,0 +1,143 @@ -+/* -+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. -+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -+ * -+ * This code is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License version 2 only, as -+ * published by the Free Software Foundation. -+ * -+ * This code is distributed in the hope that it will be useful, but WITHOUT -+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -+ * version 2 for more details (a copy is included in the LICENSE file that -+ * accompanied this code). -+ * -+ * You should have received a copy of the GNU General Public License version -+ * 2 along with this work; if not, write to the Free Software Foundation, -+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -+ * -+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -+ * or visit www.oracle.com if you need additional information or have any -+ * questions. -+ */ -+ -+/* -+ * @test -+ * @bug 8055008 -+ * @summary Redefine EMCP and non-EMCP methods that are running in an infinite loop -+ * @library /testlibrary -+ * @build RedefineClassHelper -+ * @run main RedefineClassHelper -+ * @run main/othervm -javaagent:redefineagent.jar RedefineRunningMethods -+ */ -+public class RedefineRunningMethods { -+ -+ public static String newB = -+ "class RedefineRunningMethods$B {" + -+ " static int count1 = 0;" + -+ " static int count2 = 0;" + -+ " public static volatile boolean stop = false;" + -+ " static void localSleep() { " + -+ " try{ " + -+ " Thread.currentThread().sleep(10);" + -+ " } catch(InterruptedException ie) { " + -+ " } " + -+ " } " + -+ " public static void infinite() { " + -+ " System.out.println(\"infinite called\");" + -+ " }" + -+ " public static void infinite_emcp() { " + -+ " while (!stop) { count2++; localSleep(); }" + -+ " }" + -+ "}"; -+ -+ public static String evenNewerB = -+ "class RedefineRunningMethods$B {" + -+ " static int count1 = 0;" + -+ " static int count2 = 0;" + -+ " public static volatile boolean stop = false;" + -+ " static void localSleep() { " + -+ " try{ " + -+ " Thread.currentThread().sleep(1);" + -+ " } catch(InterruptedException ie) { " + -+ " } " + -+ " } " + -+ " public static void infinite() { }" + -+ " public static void infinite_emcp() { " + -+ " System.out.println(\"infinite_emcp now obsolete called\");" + -+ " }" + -+ "}"; -+ -+ static class B { -+ static int count1 = 0; -+ static int count2 = 0; -+ public static volatile boolean stop = false; -+ static void localSleep() { -+ try{ -+ Thread.currentThread().sleep(10);//sleep for 10 ms -+ } catch(InterruptedException ie) { -+ } -+ } -+ -+ public static void infinite() { -+ while (!stop) { count1++; localSleep(); } -+ } -+ public static void infinite_emcp() { -+ while (!stop) { count2++; localSleep(); } -+ } -+ } -+ -+ -+ public static void main(String[] args) throws Exception { -+ -+ new Thread() { -+ public void run() { -+ B.infinite(); -+ } -+ }.start(); -+ -+ new Thread() { -+ public void run() { -+ B.infinite_emcp(); -+ } -+ }.start(); -+ -+ RedefineClassHelper.redefineClass(B.class, newB); -+ -+ System.gc(); -+ -+ B.infinite(); -+ -+ // Start a thread with the second version of infinite_emcp running -+ new Thread() { -+ public void run() { -+ B.infinite_emcp(); -+ } -+ }.start(); -+ -+ for (int i = 0; i < 20 ; i++) { -+ String s = new String("some garbage"); -+ System.gc(); -+ } -+ -+ RedefineClassHelper.redefineClass(B.class, evenNewerB); -+ System.gc(); -+ -+ for (int i = 0; i < 20 ; i++) { -+ B.infinite(); -+ String s = new String("some garbage"); -+ System.gc(); -+ } -+ -+ B.infinite_emcp(); -+ -+ // purge should clean everything up. -+ B.stop = true; -+ -+ for (int i = 0; i < 20 ; i++) { -+ B.infinite(); -+ String s = new String("some garbage"); -+ System.gc(); -+ } -+ } -+} diff --git a/8074373.patch b/8074373.patch deleted file mode 100644 index 5a52231..0000000 --- a/8074373.patch +++ /dev/null @@ -1,74 +0,0 @@ ---- icedtea-3.8.0/openjdk/jdk/src/share/bin/java.c 2018-09-18 09:11:59.480109603 +0200 -+++ icedtea-3.8.0/openjdk/jdk/src/share/bin/java.c 2018-09-18 09:15:55.665368268 +0200 -@@ -660,16 +660,25 @@ - * arguments are for the application (i.e. the main class name, or - * the -jar argument). - */ -- if ((i > 0 && *arg != '-') -+ if (i > 0) { -+ char *prev = argv[i - 1]; -+ // skip non-dash arg preceded by class path specifiers -+ if (*arg != '-' && -+ ((JLI_StrCmp(prev, "-cp") == 0 -+ || JLI_StrCmp(prev, "-classpath") == 0))) { -+ continue; -+ } -+ -+ if (*arg != '-' - || JLI_StrCmp(arg, "-version") == 0 - || JLI_StrCmp(arg, "-fullversion") == 0 - || JLI_StrCmp(arg, "-help") == 0 - || JLI_StrCmp(arg, "-?") == 0 - || JLI_StrCmp(arg, "-jar") == 0 -- || JLI_StrCmp(arg, "-X") == 0 -- ) { -+ || JLI_StrCmp(arg, "-X") == 0) { - return; - } -+ } - /* - * The following case checks for "-XX:NativeMemoryTracking=value". - * If value is non null, an environmental variable set to this value ---- icedtea-3.8.0/openjdk/jdk/test/tools/launcher/TestSpecialArgs.java 2018-09-18 09:11:59.320108768 +0200 -+++ icedtea-3.8.0/openjdk/jdk/test/tools/launcher/TestSpecialArgs.java 2018-09-18 09:15:55.665368268 +0200 -@@ -23,7 +23,7 @@ - - /* - * @test -- * @bug 7124089 7131021 8042469 8066185 -+ * @bug 7124089 7131021 8042469 8066185 8074373 - * @summary Checks for Launcher special flags, such as MacOSX specific flags, - * and JVM NativeMemoryTracking flags. - * @compile -XDignore.symbol.file TestSpecialArgs.java EnvironmentVariables.java -@@ -270,6 +270,16 @@ - tr = doExec(envMap, javaCmd, "Foo", "-XX:NativeMemoryTracking=summary"); - checkTestResult(tr); - -+ // should accept with no warnings -+ tr = doExec(javaCmd, "-cp", jarFile.getName(), -+ "-XX:NativeMemoryTracking=summary", "Foo"); -+ ensureNoWarnings(tr); -+ -+ // should accept with no warnings -+ tr = doExec(javaCmd, "-classpath", jarFile.getName(), -+ "-XX:NativeMemoryTracking=summary", "Foo"); -+ ensureNoWarnings(tr); -+ - // make sure a missing class is handled correctly, because the class - // resolution is performed by the JVM. - tr = doExec(javaCmd, "AbsentClass", "-XX:NativeMemoryTracking=summary"); -@@ -277,6 +287,14 @@ - throw new RuntimeException("Test Fails"); - } - } -+ -+ void ensureNoWarnings(TestResult tr) { -+ checkTestResult(tr); -+ if (tr.contains("warning: Native Memory Tracking")) { -+ System.err.println(tr.toString()); -+ throw new RuntimeException("Test Fails"); -+ } -+ } - - void checkTestResult(TestResult tr) { - if (!tr.isOK()) { diff --git a/8076117.patch b/8076117.patch deleted file mode 100644 index 292c611..0000000 --- a/8076117.patch +++ /dev/null @@ -1,390 +0,0 @@ ---- icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/security/validator/EndEntityChecker.java 2018-09-18 09:17:15.173802539 +0200 -+++ icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/security/validator/EndEntityChecker.java 2018-09-18 09:17:34.745909443 +0200 -@@ -132,26 +132,33 @@ - return new EndEntityChecker(type, variant); - } - -- void check(X509Certificate cert, Object parameter) -- throws CertificateException { -+ void check(X509Certificate cert, Object parameter, -+ boolean checkUnresolvedCritExts) throws CertificateException { - if (variant.equals(Validator.VAR_GENERIC)) { -- // no checks -- return; -- } else if (variant.equals(Validator.VAR_TLS_SERVER)) { -- checkTLSServer(cert, (String)parameter); -+ return; // no checks -+ } -+ -+ Set exts = getCriticalExtensions(cert); -+ if (variant.equals(Validator.VAR_TLS_SERVER)) { -+ checkTLSServer(cert, (String)parameter, exts); - } else if (variant.equals(Validator.VAR_TLS_CLIENT)) { -- checkTLSClient(cert); -+ checkTLSClient(cert, exts); - } else if (variant.equals(Validator.VAR_CODE_SIGNING)) { -- checkCodeSigning(cert); -+ checkCodeSigning(cert, exts); - } else if (variant.equals(Validator.VAR_JCE_SIGNING)) { -- checkCodeSigning(cert); -+ checkCodeSigning(cert, exts); - } else if (variant.equals(Validator.VAR_PLUGIN_CODE_SIGNING)) { -- checkCodeSigning(cert); -+ checkCodeSigning(cert, exts); - } else if (variant.equals(Validator.VAR_TSA_SERVER)) { -- checkTSAServer(cert); -+ checkTSAServer(cert, exts); - } else { - throw new CertificateException("Unknown variant: " + variant); - } -+ -+ // if neither VAR_GENERIC variant nor unknown variant -+ if (checkUnresolvedCritExts) { -+ checkRemainingExtensions(exts); -+ } - } - - /** -@@ -219,10 +226,8 @@ - * authentication. - * @throws CertificateException if not. - */ -- private void checkTLSClient(X509Certificate cert) -+ private void checkTLSClient(X509Certificate cert, Set exts) - throws CertificateException { -- Set exts = getCriticalExtensions(cert); -- - if (checkKeyUsage(cert, KU_SIGNATURE) == false) { - throw new ValidatorException - ("KeyUsage does not allow digital signatures", -@@ -245,8 +250,6 @@ - exts.remove(SimpleValidator.OID_KEY_USAGE); - exts.remove(SimpleValidator.OID_EXTENDED_KEY_USAGE); - exts.remove(SimpleValidator.OID_NETSCAPE_CERT_TYPE); -- -- checkRemainingExtensions(exts); - } - - /** -@@ -255,10 +258,8 @@ - * specification for details. - * @throws CertificateException if not. - */ -- private void checkTLSServer(X509Certificate cert, String parameter) -- throws CertificateException { -- Set exts = getCriticalExtensions(cert); -- -+ private void checkTLSServer(X509Certificate cert, String parameter, -+ Set exts) throws CertificateException { - if (KU_SERVER_ENCRYPTION.contains(parameter)) { - if (checkKeyUsage(cert, KU_KEY_ENCIPHERMENT) == false) { - throw new ValidatorException -@@ -303,18 +304,14 @@ - exts.remove(SimpleValidator.OID_KEY_USAGE); - exts.remove(SimpleValidator.OID_EXTENDED_KEY_USAGE); - exts.remove(SimpleValidator.OID_NETSCAPE_CERT_TYPE); -- -- checkRemainingExtensions(exts); - } - - /** - * Check whether this certificate can be used for code signing. - * @throws CertificateException if not. - */ -- private void checkCodeSigning(X509Certificate cert) -+ private void checkCodeSigning(X509Certificate cert, Set exts) - throws CertificateException { -- Set exts = getCriticalExtensions(cert); -- - if (checkKeyUsage(cert, KU_SIGNATURE) == false) { - throw new ValidatorException - ("KeyUsage does not allow digital signatures", -@@ -341,8 +338,6 @@ - // remove extensions we checked - exts.remove(SimpleValidator.OID_KEY_USAGE); - exts.remove(SimpleValidator.OID_EXTENDED_KEY_USAGE); -- -- checkRemainingExtensions(exts); - } - - /** -@@ -350,10 +345,8 @@ - * server (see RFC 3161, section 2.3). - * @throws CertificateException if not. - */ -- private void checkTSAServer(X509Certificate cert) -+ private void checkTSAServer(X509Certificate cert, Set exts) - throws CertificateException { -- Set exts = getCriticalExtensions(cert); -- - if (checkKeyUsage(cert, KU_SIGNATURE) == false) { - throw new ValidatorException - ("KeyUsage does not allow digital signatures", -@@ -376,7 +369,5 @@ - // remove extensions we checked - exts.remove(SimpleValidator.OID_KEY_USAGE); - exts.remove(SimpleValidator.OID_EXTENDED_KEY_USAGE); -- -- checkRemainingExtensions(exts); - } - } ---- icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/security/validator/Validator.java 2018-09-18 09:17:15.173802539 +0200 -+++ icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/security/validator/Validator.java 2018-09-18 09:17:34.745909443 +0200 -@@ -143,6 +143,7 @@ - */ - public final static String VAR_PLUGIN_CODE_SIGNING = "plugin code signing"; - -+ private final String type; - final EndEntityChecker endEntityChecker; - final String variant; - -@@ -154,6 +155,7 @@ - volatile Date validationDate; - - Validator(String type, String variant) { -+ this.type = type; - this.variant = variant; - endEntityChecker = EndEntityChecker.getInstance(type, variant); - } -@@ -261,7 +263,16 @@ - - // omit EE extension check if EE cert is also trust anchor - if (chain.length > 1) { -- endEntityChecker.check(chain[0], parameter); -+ // EndEntityChecker does not need to check unresolved critical -+ // extensions when validating with a TYPE_PKIX Validator. -+ // A TYPE_PKIX Validator will already have run checks on all -+ // certs' extensions, including checks by any PKIXCertPathCheckers -+ // included in the PKIXParameters, so the extra checks would be -+ // redundant. -+ boolean checkUnresolvedCritExts = -+ (type == TYPE_PKIX) ? false : true; -+ endEntityChecker.check(chain[0], parameter, -+ checkUnresolvedCritExts); - } - - return chain; ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ icedtea-3.8.0/openjdk/jdk/test/sun/security/validator/EndEntityExtensionCheck.java Fri Feb 16 09:43:14 2018 -0800 -@@ -0,0 +1,221 @@ -+/* -+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. -+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -+ * -+ * This code is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License version 2 only, as -+ * published by the Free Software Foundation. -+ * -+ * This code is distributed in the hope that it will be useful, but WITHOUT -+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -+ * version 2 for more details (a copy is included in the LICENSE file that -+ * accompanied this code). -+ * -+ * You should have received a copy of the GNU General Public License version -+ * 2 along with this work; if not, write to the Free Software Foundation, -+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -+ * -+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -+ * or visit www.oracle.com if you need additional information or have any -+ * questions. -+ */ -+ -+/* -+ * @test -+ * @bug 8076117 -+ * @summary EndEntityChecker should not process custom extensions -+ * after PKIX validation -+ */ -+ -+import java.io.ByteArrayInputStream; -+import java.io.File; -+import java.io.FileInputStream; -+import java.security.KeyStore; -+import java.security.cert.CertPathValidatorException; -+import java.security.cert.Certificate; -+import java.security.cert.CertificateException; -+import java.security.cert.CertificateFactory; -+import java.security.cert.PKIXBuilderParameters; -+import java.security.cert.PKIXCertPathChecker; -+import java.security.cert.TrustAnchor; -+import java.security.cert.X509Certificate; -+import java.util.Collection; -+import java.util.Date; -+import java.util.HashSet; -+import java.util.Set; -+import sun.security.validator.KeyStores; -+import sun.security.validator.Validator; -+ -+ -+public class EndEntityExtensionCheck { -+ -+ /* -+ * Owner: CN=TestCA -+ * Issuer: CN=TestCA -+ */ -+ private static final String CA = -+ "-----BEGIN CERTIFICATE-----\n" + -+ "MIICgDCCAj2gAwIBAgIEC18hWjALBgcqhkjOOAQDBQAwETEPMA0GA1UEAxMGVGVz\n" + -+ "dENBMB4XDTE1MDQwNzIyMzUyMFoXDTI1MDQwNjIyMzUyMFowETEPMA0GA1UEAxMG\n" + -+ "VGVzdENBMIIBuDCCASwGByqGSM44BAEwggEfAoGBAP1/U4EddRIpUt9KnC7s5Of2\n" + -+ "EbdSPO9EAMMeP4C2USZpRV1AIlH7WT2NWPq/xfW6MPbLm1Vs14E7gB00b/JmYLdr\n" + -+ "mVClpJ+f6AR7ECLCT7up1/63xhv4O1fnxqimFQ8E+4P208UewwI1VBNaFpEy9nXz\n" + -+ "rith1yrv8iIDGZ3RSAHHAhUAl2BQjxUjC8yykrmCouuEC/BYHPUCgYEA9+Gghdab\n" + -+ "Pd7LvKtcNrhXuXmUr7v6OuqC+VdMCz0HgmdRWVeOutRZT+ZxBxCBgLRJFnEj6Ewo\n" + -+ "FhO3zwkyjMim4TwWeotUfI0o4KOuHiuzpnWRbqN/C/ohNWLx+2J6ASQ7zKTxvqhR\n" + -+ "kImog9/hWuWfBpKLZl6Ae1UlZAFMO/7PSSoDgYUAAoGBAJOWy2hVy4iNwsi/idWG\n" + -+ "oksr9IZxQIFR2YavoUmD+rIgfYUpiCihzftDLMMaNYqp9PPxuOyoIPGPbwmKpAs5\n" + -+ "nq6gLwH2lSsN+EwyV2SJ0J26PHiMuRNZWWfKR3cpEqbQVb0CmvqSpj8zYfamPzp7\n" + -+ "eXSWwahzgLCGJM3SgCfDFC0uoyEwHzAdBgNVHQ4EFgQU7tLD8FnWM+r6jBr+mCXs\n" + -+ "8G5yBpgwCwYHKoZIzjgEAwUAAzAAMC0CFQCHCtzC3S0ST0EZBucikVui4WXD8QIU\n" + -+ "L3Oxy6989/FhZlZWJlhqc1ungEQ=\n" + -+ "-----END CERTIFICATE-----"; -+ -+ /* -+ * Owner: CN=TestEE -+ * Issuer: CN=TestCA -+ * Contains a custom critical extension with OID 1.2.3.4: -+ * #1: ObjectId: 1.2.3.4 Criticality=true -+ * 0000: 00 00 -+ */ -+ private static final String EE = -+ "-----BEGIN CERTIFICATE-----\n" + -+ "MIICrTCCAmugAwIBAgIELjciKzALBgcqhkjOOAQDBQAwETEPMA0GA1UEAxMGVGVz\n" + -+ "dENBMB4XDTE1MDQwNzIzMDA1OFoXDTE1MDcwNjIzMDA1OFowETEPMA0GA1UEAxMG\n" + -+ "VGVzdEVFMIIBtzCCASwGByqGSM44BAEwggEfAoGBAP1/U4EddRIpUt9KnC7s5Of2\n" + -+ "EbdSPO9EAMMeP4C2USZpRV1AIlH7WT2NWPq/xfW6MPbLm1Vs14E7gB00b/JmYLdr\n" + -+ "mVClpJ+f6AR7ECLCT7up1/63xhv4O1fnxqimFQ8E+4P208UewwI1VBNaFpEy9nXz\n" + -+ "rith1yrv8iIDGZ3RSAHHAhUAl2BQjxUjC8yykrmCouuEC/BYHPUCgYEA9+Gghdab\n" + -+ "Pd7LvKtcNrhXuXmUr7v6OuqC+VdMCz0HgmdRWVeOutRZT+ZxBxCBgLRJFnEj6Ewo\n" + -+ "FhO3zwkyjMim4TwWeotUfI0o4KOuHiuzpnWRbqN/C/ohNWLx+2J6ASQ7zKTxvqhR\n" + -+ "kImog9/hWuWfBpKLZl6Ae1UlZAFMO/7PSSoDgYQAAoGAN97otrAJEuUg/O97vScI\n" + -+ "01xs1jqTz5o0PGpKiDDJNB3tCCUbLqXoBQBvSefQ8vYL3mmlEJLxlwfbajRmJQp0\n" + -+ "tUy5SUCZHk3MdoKxSvrqYnVpYwJHFXKWs6lAawxfuWbkm9SREuepOWnVzy2ecf5z\n" + -+ "hvy9mgEBfi4E9Cy8Byq2TpyjUDBOMAwGAyoDBAEB/wQCAAAwHwYDVR0jBBgwFoAU\n" + -+ "7tLD8FnWM+r6jBr+mCXs8G5yBpgwHQYDVR0OBBYEFNRVqt5F+EAuJ5x1IZLDkoMs\n" + -+ "mDj4MAsGByqGSM44BAMFAAMvADAsAhQyNGhxIp5IshN1zqLs4pUY214IMAIUMmTL\n" + -+ "3ZMpMAjITbuHHlFNUqZ7A9s=\n" + -+ "-----END CERTIFICATE-----"; -+ -+ public static void main(String[] args) throws Exception { -+ X509Certificate[] chain = createChain(); -+ -+ /* Test 1: Test SimpleValidator -+ * SimpleValidator doesn't check for unsupported critical -+ * extensions in the end entity certificate, and leaves that up -+ * to EndEntityChecker, which should catch such extensions. -+ */ -+ KeyStore ks = KeyStore.getInstance("JKS"); -+ ks.load(null, null); -+ ks.setCertificateEntry("testca", chain[chain.length - 1]); -+ -+ Validator v = Validator.getInstance(Validator.TYPE_SIMPLE, -+ Validator.VAR_TLS_CLIENT, -+ KeyStores.getTrustedCerts(ks)); -+ try { -+ v.validate(chain); -+ throw new Exception("Chain should not have validated " + -+ "successfully."); -+ } catch (CertificateException ex) { -+ // EE cert has an unsupported critical extension that is not -+ // checked by SimpleValidator's extension checks, so this -+ // failure is expected -+ } -+ -+ /* Test 2: Test PKIXValidator without custom checker -+ * PKIXValidator accepts PKIXParameters that can contain -+ * custom PKIXCertPathCheckers, which would be run against -+ * each cert in the chain, including EE certs. -+ * Check that if PKIXValidator is not provided a custom -+ * PKIXCertPathChecker for an unknown critical extension in -+ * the EE cert, chain validation will fail. -+ */ -+ TrustAnchor ta = new TrustAnchor(chain[chain.length - 1], null); -+ Set tas = new HashSet<>(); -+ tas.add(ta); -+ PKIXBuilderParameters params = new PKIXBuilderParameters(tas, null); -+ params.setDate(new Date(115, 5, 1)); // 2015-05-01 -+ params.setRevocationEnabled(false); -+ -+ v = Validator.getInstance(Validator.TYPE_PKIX, -+ Validator.VAR_TLS_CLIENT, -+ params); -+ try { -+ v.validate(chain); -+ throw new Exception("Chain should not have validated " + -+ "successfully."); -+ } catch (CertificateException ex) { -+ // EE cert has an unsupported critical extension and -+ // PKIXValidator was not provided any custom checker -+ // for it, so this failure ie expected. -+ } -+ -+ /* Test 3: Test PKIXValidator with custom checker -+ * Check that PKIXValidator will successfully validate a chain -+ * containing an EE cert with a critical custom extension, given -+ * a corresponding PKIXCertPathChecker for the extension. -+ */ -+ params = new PKIXBuilderParameters(tas, null); -+ params.addCertPathChecker(new CustomChecker()); -+ params.setDate(new Date(115, 5, 1)); // 2015-05-01 -+ params.setRevocationEnabled(false); -+ -+ v = Validator.getInstance(Validator.TYPE_PKIX, -+ Validator.VAR_TLS_CLIENT, -+ params); -+ v.validate(chain); // This should validate successfully -+ -+ System.out.println("Tests passed."); -+ } -+ -+ public static X509Certificate[] createChain() throws Exception { -+ CertificateFactory cf = CertificateFactory.getInstance("X.509"); -+ X509Certificate ee = (X509Certificate) -+ cf.generateCertificate((new ByteArrayInputStream(EE.getBytes()))); -+ X509Certificate ca = (X509Certificate) -+ cf.generateCertificate((new ByteArrayInputStream(CA.getBytes()))); -+ -+ X509Certificate[] chain = {ee, ca}; -+ return chain; -+ } -+ -+ /* -+ * A custom PKIXCertPathChecker. Looks for a critical extension -+ * in an end entity certificate with the OID 1.2.3.4. -+ */ -+ static class CustomChecker extends PKIXCertPathChecker { -+ -+ @Override -+ public void init(boolean forward) throws CertPathValidatorException { -+ // nothing to do -+ } -+ -+ @Override -+ public boolean isForwardCheckingSupported() { -+ return false; -+ } -+ -+ @Override -+ public Set getSupportedExtensions() { -+ Set exts = new HashSet<>(); -+ exts.add("1.2.3.4"); -+ return exts; -+ } -+ -+ @Override -+ public void check(Certificate cert, -+ Collection unresolvedCritExts) -+ throws CertPathValidatorException { -+ X509Certificate currCert = (X509Certificate)cert; -+ // check that this is an EE cert -+ if (currCert.getBasicConstraints() == -1) { -+ if (unresolvedCritExts != null && -+ !unresolvedCritExts.isEmpty()) { -+ unresolvedCritExts.remove("1.2.3.4"); -+ } -+ } -+ } -+ -+ } -+} diff --git a/8157898.patch b/8157898.patch deleted file mode 100644 index 79aa25c..0000000 --- a/8157898.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- icedtea-3.8.0/openjdk/jdk/test/sun/security/provider/DSA/SupportedDSAParamGen.java 2018-09-18 09:22:44.275591748 +0200 -+++ icedtea-3.8.0/openjdk/jdk/test/sun/security/provider/DSA/SupportedDSAParamGen.java 2018-09-18 09:29:52.621918745 +0200 -@@ -29,7 +29,7 @@ - * @run main/timeout=300 SupportedDSAParamGen 1024 160 - * @run main/timeout=300 SupportedDSAParamGen 2048 224 - * @run main/timeout=300 SupportedDSAParamGen 2048 256 -- * @run main/timeout=450 SupportedDSAParamGen 3072 256 -+ * @run main/timeout=700 SupportedDSAParamGen 3072 256 - */ - import java.security.*; - import java.security.spec.*; diff --git a/8169201.patch b/8169201.patch deleted file mode 100644 index f5a7a6d..0000000 --- a/8169201.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- icedtea-3.8.0/openjdk/hotspot/src/share/vm/opto/library_call.cpp 2018-09-18 09:31:47.690543877 +0200 -+++ icedtea-3.8.0/openjdk/hotspot/src/share/vm/opto/library_call.cpp 2018-09-18 09:32:09.874664406 +0200 -@@ -6026,7 +6026,7 @@ - } - - assert(UseMontgomeryMultiplyIntrinsic, "not implemented on this platform"); -- const char* stubName = "montgomery_square"; -+ const char* stubName = "montgomery_multiply"; - - assert(callee()->signature()->size() == 7, "montgomeryMultiply has 7 parameters"); - diff --git a/8170035.patch b/8170035.patch deleted file mode 100644 index 4a51f0b..0000000 --- a/8170035.patch +++ /dev/null @@ -1,16 +0,0 @@ ---- icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/security/ssl/SSLContextImpl.java 2018-09-18 09:32:55.266910998 +0200 -+++ icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/security/ssl/SSLContextImpl.java 2018-09-18 09:34:25.091398982 +0200 -@@ -308,6 +308,13 @@ - EnumSet.of(CryptoPrimitive.KEY_AGREEMENT), - suite.name, null)) { - suites.add(suite); -+ } else { -+ if (debug != null && Debug.isOn("sslctx") && -+ Debug.isOn("verbose")) { -+ System.out.println( -+ "Ignoring disabled cipher suite: " + -+ suite.name); -+ } - } - } else if (debug != null && - Debug.isOn("sslctx") && Debug.isOn("verbose")) { diff --git a/8176183.patch b/8176183.patch deleted file mode 100644 index c179f25..0000000 --- a/8176183.patch +++ /dev/null @@ -1,37 +0,0 @@ ---- icedtea-3.8.0/openjdk/jdk/test/java/security/SignedObject/Chain.java 2018-09-18 09:35:10.475645535 +0200 -+++ icedtea-3.8.0/openjdk/jdk/test/java/security/SignedObject/Chain.java 2018-09-18 09:36:00.147915474 +0200 -@@ -142,8 +142,17 @@ - PrivateKey[] privKeys = new PrivateKey[N]; - PublicKey[] pubKeys = new PublicKey[N]; - PublicKey[] anotherPubKeys = new PublicKey[N]; -- KeyPairGenerator kpg = KeyPairGenerator.getInstance( -- test.keyAlg.name); -+ Signature signature; -+ KeyPairGenerator kpg; -+ if (test.provider != Provider.Default) { -+ signature = Signature.getInstance(test.sigAlg.name, -+ test.provider.name); -+ kpg = KeyPairGenerator.getInstance( -+ test.keyAlg.name, test.provider.name); -+ } else { -+ signature = Signature.getInstance(test.sigAlg.name); -+ kpg = KeyPairGenerator.getInstance(test.keyAlg.name); -+ } - for (int j=0; j < N; j++) { - if (test.keySize != -1) { - kpg.initialize(test.keySize); -@@ -162,14 +171,6 @@ - } - } - -- Signature signature; -- if (test.provider != Provider.Default) { -- signature = Signature.getInstance(test.sigAlg.name, -- test.provider.name); -- } else { -- signature = Signature.getInstance(test.sigAlg.name); -- } -- - // Create a chain of signed objects - SignedObject[] objects = new SignedObject[N]; - objects[0] = new SignedObject(str, privKeys[0], signature); diff --git a/8187635.patch b/8187635.patch deleted file mode 100644 index d84d532..0000000 --- a/8187635.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- icedtea-3.8.0/openjdk/jdk/src/windows/native/sun/windows/awt_Component.cpp 2018-09-18 09:36:56.656222554 +0200 -+++ icedtea-3.8.0/openjdk/jdk/src/windows/native/sun/windows/awt_Component.cpp 2018-09-18 09:40:29.073376896 +0200 -@@ -1809,6 +1809,7 @@ - "new = 0x%08X", - GetHWnd(), GetClassName(), (UINT)lParam); - mr = WmInputLangChange(static_cast(wParam), reinterpret_cast(lParam)); -+ g_bUserHasChangedInputLang = TRUE; - CallProxyDefWindowProc(message, wParam, lParam, retValue, mr); - // should return non-zero if we process this message - retValue = 1; diff --git a/8188223.patch b/8188223.patch deleted file mode 100644 index 2d7ff1e..0000000 --- a/8188223.patch +++ /dev/null @@ -1,12 +0,0 @@ ---- icedtea-3.8.0/openjdk/hotspot/src/share/vm/opto/ifnode.cpp 2018-09-18 09:41:17.285638920 +0200 -+++ icedtea-3.8.0/openjdk/hotspot/src/share/vm/opto/ifnode.cpp 2018-09-18 09:42:24.554004489 +0200 -@@ -453,6 +453,9 @@ - // offset. Return 2 if we had to negate the test. Index is NULL if the check - // is versus a constant. - int IfNode::is_range_check(Node* &range, Node* &index, jint &offset) { -+ if (outcnt() != 2) { -+ return 0; -+ } - Node* b = in(1); - if (b == NULL || !b->is_Bool()) return 0; - BoolNode* bn = b->as_Bool(); diff --git a/8191239.patch b/8191239.patch deleted file mode 100644 index 6c7fd53..0000000 --- a/8191239.patch +++ /dev/null @@ -1,41 +0,0 @@ ---- icedtea-3.8.0/openjdk/jdk/src/share/classes/java/awt/Desktop.java 2018-09-18 09:42:59.506194441 +0200 -+++ icedtea-3.8.0/openjdk/jdk/src/share/classes/java/awt/Desktop.java 2018-09-18 09:43:52.086480202 +0200 -@@ -203,14 +203,10 @@ - * @throws IllegalArgumentException if file doesn't exist - */ - private static void checkFileValidation(File file){ -- if (file == null) throw new NullPointerException("File must not be null"); -- - if (!file.exists()) { - throw new IllegalArgumentException("The file: " - + file.getPath() + " doesn't exist."); - } -- -- file.canRead(); - } - - /** -@@ -264,6 +260,7 @@ - * @see java.awt.AWTPermission - */ - public void open(File file) throws IOException { -+ file = new File(file.getPath()); - checkAWTPermission(); - checkExec(); - checkActionSupport(Action.OPEN); -@@ -295,6 +292,7 @@ - * @see java.awt.AWTPermission - */ - public void edit(File file) throws IOException { -+ file = new File(file.getPath()); - checkAWTPermission(); - checkExec(); - checkActionSupport(Action.EDIT); -@@ -325,6 +323,7 @@ - * allowed to create a subprocess - */ - public void print(File file) throws IOException { -+ file = new File(file.getPath()); - checkExec(); - SecurityManager sm = System.getSecurityManager(); - if (sm != null) { diff --git a/8193419.patch b/8193419.patch deleted file mode 100644 index a57f214..0000000 --- a/8193419.patch +++ /dev/null @@ -1,600 +0,0 @@ ---- icedtea-3.8.0/openjdk/jdk/src/share/native/common/jni_util.h 2018-09-18 09:42:59.678195376 +0200 -+++ icedtea-3.8.0/openjdk/jdk/src/share/native/common/jni_util.h 2018-09-18 09:45:28.239002753 +0200 -@@ -297,6 +297,22 @@ - } \ - } while (0) \ - -+#define CHECK_NULL_THROW_NPE(env, x, msg) \ -+ do { \ -+ if ((x) == NULL) { \ -+ JNU_ThrowNullPointerException((env), (msg));\ -+ return; \ -+ } \ -+ } while(0) \ -+ -+#define CHECK_NULL_THROW_NPE_RETURN(env, x, msg, z)\ -+ do { \ -+ if ((x) == NULL) { \ -+ JNU_ThrowNullPointerException((env), (msg));\ -+ return (z); \ -+ } \ -+ } while(0) \ -+ - #define CHECK_NULL_RETURN(x, y) \ - do { \ - if ((x) == NULL) { \ ---- icedtea-3.8.0/openjdk/jdk/src/share/native/java/net/net_util.c 2018-09-18 09:42:59.682195399 +0200 -+++ icedtea-3.8.0/openjdk/jdk/src/share/native/java/net/net_util.c 2018-09-18 09:45:28.239002753 +0200 -@@ -163,32 +163,38 @@ - - void setInetAddress_addr(JNIEnv *env, jobject iaObj, int address) { - jobject holder = (*env)->GetObjectField(env, iaObj, ia_holderID); -+ CHECK_NULL_THROW_NPE(env, holder, "InetAddress holder is null"); - (*env)->SetIntField(env, holder, iac_addressID, address); - } - - void setInetAddress_family(JNIEnv *env, jobject iaObj, int family) { - jobject holder = (*env)->GetObjectField(env, iaObj, ia_holderID); -+ CHECK_NULL_THROW_NPE(env, holder, "InetAddress holder is null"); - (*env)->SetIntField(env, holder, iac_familyID, family); - } - - void setInetAddress_hostName(JNIEnv *env, jobject iaObj, jobject host) { - jobject holder = (*env)->GetObjectField(env, iaObj, ia_holderID); -+ CHECK_NULL_THROW_NPE(env, holder, "InetAddress holder is null"); - (*env)->SetObjectField(env, holder, iac_hostNameID, host); - (*env)->SetObjectField(env, holder, iac_origHostNameID, host); - } - - int getInetAddress_addr(JNIEnv *env, jobject iaObj) { - jobject holder = (*env)->GetObjectField(env, iaObj, ia_holderID); -+ CHECK_NULL_THROW_NPE_RETURN(env, holder, "InetAddress holder is null", -1); - return (*env)->GetIntField(env, holder, iac_addressID); - } - - int getInetAddress_family(JNIEnv *env, jobject iaObj) { - jobject holder = (*env)->GetObjectField(env, iaObj, ia_holderID); -+ CHECK_NULL_THROW_NPE_RETURN(env, holder, "InetAddress holder is null", -1); - return (*env)->GetIntField(env, holder, iac_familyID); - } - - jobject getInetAddress_hostName(JNIEnv *env, jobject iaObj) { - jobject holder = (*env)->GetObjectField(env, iaObj, ia_holderID); -+ CHECK_NULL_THROW_NPE_RETURN(env, holder, "InetAddress holder is null", NULL); - return (*env)->GetObjectField(env, holder, iac_hostNameID); - } - -@@ -209,7 +215,9 @@ - CHECK_NULL_RETURN(iaObj, NULL); - address = NET_IPv4MappedToIPv4(caddr); - setInetAddress_addr(env, iaObj, address); -+ JNU_CHECK_EXCEPTION_RETURN(env, NULL); - setInetAddress_family(env, iaObj, IPv4); -+ JNU_CHECK_EXCEPTION_RETURN(env, NULL); - } else { - jint scope; - jboolean ret; -@@ -219,6 +227,7 @@ - if (ret == JNI_FALSE) - return NULL; - setInetAddress_family(env, iaObj, IPv6); -+ JNU_CHECK_EXCEPTION_RETURN(env, NULL); - scope = getScopeID(him); - setInet6Address_scopeid(env, iaObj, scope); - } -@@ -230,7 +239,9 @@ - iaObj = (*env)->NewObject(env, ia4_class, ia4_ctrID); - CHECK_NULL_RETURN(iaObj, NULL); - setInetAddress_family(env, iaObj, IPv4); -+ JNU_CHECK_EXCEPTION_RETURN(env, NULL); - setInetAddress_addr(env, iaObj, ntohl(him4->sin_addr.s_addr)); -+ JNU_CHECK_EXCEPTION_RETURN(env, NULL); - *port = ntohs(him4->sin_port); - } - return iaObj; -@@ -243,6 +254,7 @@ - - #ifdef AF_INET6 - family = getInetAddress_family(env, iaObj) == IPv4? AF_INET : AF_INET6; -+ JNU_CHECK_EXCEPTION_RETURN(env, JNI_FALSE); - if (him->sa_family == AF_INET6) { - #ifdef WIN32 - struct SOCKADDR_IN6 *him6 = (struct SOCKADDR_IN6 *)him; -@@ -258,6 +270,7 @@ - } - addrNew = NET_IPv4MappedToIPv4(caddrNew); - addrCur = getInetAddress_addr(env, iaObj); -+ JNU_CHECK_EXCEPTION_RETURN(env, JNI_FALSE); - if (addrNew == addrCur) { - return JNI_TRUE; - } else { -@@ -288,6 +301,7 @@ - } - addrNew = ntohl(him4->sin_addr.s_addr); - addrCur = getInetAddress_addr(env, iaObj); -+ JNU_CHECK_EXCEPTION_RETURN(env, JNI_FALSE); - if (addrNew == addrCur) { - return JNI_TRUE; - } else { ---- icedtea-3.8.0/openjdk/jdk/src/solaris/native/java/net/Inet4AddressImpl.c 2018-09-18 09:42:59.458194181 +0200 -+++ icedtea-3.8.0/openjdk/jdk/src/solaris/native/java/net/Inet4AddressImpl.c 2018-09-18 09:45:28.239002753 +0200 -@@ -236,7 +236,11 @@ - goto cleanupAndReturn; - } - setInetAddress_addr(env, iaObj, ntohl(((struct sockaddr_in*)(iterator->ai_addr))->sin_addr.s_addr)); -+ if ((*env)->ExceptionCheck(env)) -+ goto cleanupAndReturn; - setInetAddress_hostName(env, iaObj, name); -+ if ((*env)->ExceptionCheck(env)) -+ goto cleanupAndReturn; - (*env)->SetObjectArrayElement(env, ret, retLen - i -1, iaObj); - i++; - iterator = iterator->ai_next; -@@ -479,7 +483,11 @@ - goto cleanupAndReturn; - } - setInetAddress_addr(env, iaObj, ntohl(((struct sockaddr_in*)iterator->ai_addr)->sin_addr.s_addr)); -+ if ((*env)->ExceptionCheck(env)) -+ goto cleanupAndReturn; - setInetAddress_hostName(env, iaObj, host); -+ if ((*env)->ExceptionCheck(env)) -+ goto cleanupAndReturn; - (*env)->SetObjectArrayElement(env, ret, i++, iaObj); - iterator = iterator->ai_next; - } ---- icedtea-3.8.0/openjdk/jdk/src/solaris/native/java/net/Inet6AddressImpl.c 2018-09-18 09:42:59.458194181 +0200 -+++ icedtea-3.8.0/openjdk/jdk/src/solaris/native/java/net/Inet6AddressImpl.c 2018-09-18 09:45:28.239002753 +0200 -@@ -226,6 +226,8 @@ - return NULL; - } - setInetAddress_hostName(env, o, name); -+ if ((*env)->ExceptionCheck(env)) -+ goto done; - (*env)->SetObjectArrayElement(env, result, index, o); - (*env)->DeleteLocalRef(env, o); - } -@@ -416,7 +418,11 @@ - goto cleanupAndReturn; - } - setInetAddress_addr(env, iaObj, ntohl(((struct sockaddr_in*)iterator->ai_addr)->sin_addr.s_addr)); -+ if ((*env)->ExceptionCheck(env)) -+ goto cleanupAndReturn; - setInetAddress_hostName(env, iaObj, host); -+ if ((*env)->ExceptionCheck(env)) -+ goto cleanupAndReturn; - (*env)->SetObjectArrayElement(env, ret, inetIndex, iaObj); - inetIndex++; - } else if (iterator->ai_family == AF_INET6) { -@@ -438,6 +444,8 @@ - setInet6Address_scopeid(env, iaObj, scope); - } - setInetAddress_hostName(env, iaObj, host); -+ if ((*env)->ExceptionCheck(env)) -+ goto cleanupAndReturn; - (*env)->SetObjectArrayElement(env, ret, inet6Index, iaObj); - inet6Index++; - } ---- icedtea-3.8.0/openjdk/jdk/src/solaris/native/java/net/net_util_md.c 2018-09-18 09:42:59.458194181 +0200 -+++ icedtea-3.8.0/openjdk/jdk/src/solaris/native/java/net/net_util_md.c 2018-09-18 09:45:28.243002775 +0200 -@@ -807,6 +807,7 @@ - int *len, jboolean v4MappedAddress) { - jint family; - family = getInetAddress_family(env, iaObj); -+ JNU_CHECK_EXCEPTION_RETURN(env, -1); - #ifdef AF_INET6 - /* needs work. 1. family 2. clean up him6 etc deallocate memory */ - if (ipv6_available() && !(family == IPv4 && v4MappedAddress == JNI_FALSE)) { -@@ -818,6 +819,7 @@ - if (family == IPv4) { /* will convert to IPv4-mapped address */ - memset((char *) caddr, 0, 16); - address = getInetAddress_addr(env, iaObj); -+ JNU_CHECK_EXCEPTION_RETURN(env, -1); - if (address == INADDR_ANY) { - /* we would always prefer IPv6 wildcard address - caddr[10] = 0xff; -@@ -926,6 +928,7 @@ - } - memset((char *) him4, 0, sizeof(struct sockaddr_in)); - address = getInetAddress_addr(env, iaObj); -+ JNU_CHECK_EXCEPTION_RETURN(env, -1); - him4->sin_port = htons((short) port); - him4->sin_addr.s_addr = (uint32_t) htonl(address); - him4->sin_family = AF_INET; ---- icedtea-3.8.0/openjdk/jdk/src/solaris/native/java/net/NetworkInterface.c 2018-09-18 09:42:59.458194181 +0200 -+++ icedtea-3.8.0/openjdk/jdk/src/solaris/native/java/net/NetworkInterface.c 2018-09-18 09:45:28.239002753 +0200 -@@ -332,14 +332,14 @@ - (JNIEnv *env, jclass cls, jobject iaObj) - { - netif *ifs, *curr; -+ jobject obj = NULL; -+ jboolean match = JNI_FALSE; - #if defined(AF_INET6) - int family = (getInetAddress_family(env, iaObj) == IPv4) ? AF_INET : AF_INET6; -+ JNU_CHECK_EXCEPTION_RETURN(env, NULL); - #else - int family = AF_INET; - #endif -- jobject obj = NULL; -- jboolean match = JNI_FALSE; -- - ifs = enumInterfaces(env); - if (ifs == NULL) { - return NULL; -@@ -357,7 +357,7 @@ - int address1 = htonl( - ((struct sockaddr_in *)addrP->addr)->sin_addr.s_addr); - int address2 = getInetAddress_addr(env, iaObj); -- -+ JNU_CHECK_EXCEPTION_RETURN(env, NULL); - if (address1 == address2) { - match = JNI_TRUE; - break; -@@ -703,6 +703,7 @@ - if (iaObj) { - setInetAddress_addr(env, iaObj, htonl( - ((struct sockaddr_in*)addrP->addr)->sin_addr.s_addr)); -+ JNU_CHECK_EXCEPTION_RETURN(env, NULL); - } else { - return NULL; - } -@@ -715,6 +716,7 @@ - if (ia2Obj) { - setInetAddress_addr(env, ia2Obj, htonl( - ((struct sockaddr_in*)addrP->brdcast)->sin_addr.s_addr)); -+ JNU_CHECK_EXCEPTION_RETURN(env, NULL); - (*env)->SetObjectField(env, ibObj, ni_ib4broadcastID, ia2Obj); - } else { - return NULL; ---- icedtea-3.8.0/openjdk/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c 2018-09-18 09:42:59.458194181 +0200 -+++ icedtea-3.8.0/openjdk/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c 2018-09-18 09:46:37.219377628 +0200 -@@ -552,12 +552,15 @@ - iaObj = NET_SockaddrToInetAddress(env, (struct sockaddr *)&remote_addr, &port); - #ifdef AF_INET6 - family = getInetAddress_family(env, iaObj) == IPv4? AF_INET : AF_INET6; -+ JNU_CHECK_EXCEPTION_RETURN(env, -1); - #else - family = AF_INET; - #endif - if (family == AF_INET) { /* this API can't handle IPV6 addresses */ - int address = getInetAddress_addr(env, iaObj); -+ JNU_CHECK_EXCEPTION_RETURN(env, -1); - setInetAddress_addr(env, addressObj, address); -+ JNU_CHECK_EXCEPTION_RETURN(env, -1); - } - return port; - } -@@ -1072,7 +1075,9 @@ - for (i = 0; i < len; i++) { - addr = (*env)->GetObjectArrayElement(env, addrArray, i); - if (getInetAddress_family(env, addr) == IPv4) { -+ JNU_CHECK_EXCEPTION(env); - in.s_addr = htonl(getInetAddress_addr(env, addr)); -+ JNU_CHECK_EXCEPTION(env); - break; - } - } -@@ -1126,6 +1131,7 @@ - - in.s_addr = htonl( getInetAddress_addr(env, value) ); - -+ JNU_CHECK_EXCEPTION(env); - if (setsockopt(fd, IPPROTO_IP, IP_MULTICAST_IF, - (const char*)&in, sizeof(in)) < 0) { - NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", -@@ -1492,6 +1498,7 @@ - CHECK_NULL_RETURN(addr, NULL); - - setInetAddress_addr(env, addr, ntohl(in.s_addr)); -+ JNU_CHECK_EXCEPTION_RETURN(env, NULL); - - /* - * For IP_MULTICAST_IF return InetAddress -@@ -1954,6 +1961,7 @@ - - #ifdef __linux__ - if (getInetAddress_family(env, iaObj) == IPv4) { -+ JNU_CHECK_EXCEPTION(env); - ipv6_join_leave = JNI_FALSE; - } - #endif -@@ -2001,6 +2009,7 @@ - } - - mname.imr_multiaddr.s_addr = htonl(getInetAddress_addr(env, iaObj)); -+ JNU_CHECK_EXCEPTION(env); - mname.imr_address.s_addr = 0; - mname.imr_ifindex = (*env)->GetIntField(env, niObj, ni_indexID); - mname_len = sizeof(struct ip_mreqn); -@@ -2019,10 +2028,13 @@ - addr = (*env)->GetObjectArrayElement(env, addrArray, 0); - - mname.imr_multiaddr.s_addr = htonl(getInetAddress_addr(env, iaObj)); -+ JNU_CHECK_EXCEPTION(env); - #ifdef __linux__ - mname.imr_address.s_addr = htonl(getInetAddress_addr(env, addr)); -+ JNU_CHECK_EXCEPTION(env); - #else - mname.imr_interface.s_addr = htonl(getInetAddress_addr(env, addr)); -+ JNU_CHECK_EXCEPTION(env); - #endif - mname_len = sizeof(struct ip_mreq); - } -@@ -2058,6 +2070,7 @@ - } - - mname.imr_multiaddr.s_addr = htonl(getInetAddress_addr(env, iaObj)); -+ JNU_CHECK_EXCEPTION(env); - mname.imr_address.s_addr = 0 ; - mname.imr_ifindex = index; - mname_len = sizeof(struct ip_mreqn); -@@ -2080,6 +2093,7 @@ - mname.imr_interface.s_addr = in.s_addr; - #endif - mname.imr_multiaddr.s_addr = htonl(getInetAddress_addr(env, iaObj)); -+ JNU_CHECK_EXCEPTION(env); - mname_len = sizeof(struct ip_mreq); - } - } -@@ -2145,10 +2159,12 @@ - jint family; - jint address; - family = getInetAddress_family(env, iaObj) == IPv4? AF_INET : AF_INET6; -+ JNU_CHECK_EXCEPTION(env); - if (family == AF_INET) { /* will convert to IPv4-mapped address */ - memset((char *) caddr, 0, 16); - address = getInetAddress_addr(env, iaObj); - -+ JNU_CHECK_EXCEPTION(env); - caddr[10] = 0xff; - caddr[11] = 0xff; - ---- icedtea-3.8.0/openjdk/jdk/src/windows/native/java/net/Inet4AddressImpl.c 2018-09-18 09:42:59.698195486 +0200 -+++ icedtea-3.8.0/openjdk/jdk/src/windows/native/java/net/Inet4AddressImpl.c 2018-09-18 09:45:28.243002775 +0200 -@@ -195,6 +195,8 @@ - goto cleanupAndReturn; - } - setInetAddress_addr(env, iaObj, ntohl(address)); -+ if ((*env)->ExceptionCheck(env)) -+ goto cleanupAndReturn; - (*env)->SetObjectArrayElement(env, ret, 0, iaObj); - JNU_ReleaseStringPlatformChars(env, host, hostname); - return ret; -@@ -228,7 +230,11 @@ - goto cleanupAndReturn; - } - setInetAddress_addr(env, iaObj, ntohl((*addrp)->s_addr)); -+ if ((*env)->ExceptionCheck(env)) -+ goto cleanupAndReturn; - setInetAddress_hostName(env, iaObj, host); -+ if ((*env)->ExceptionCheck(env)) -+ goto cleanupAndReturn; - (*env)->SetObjectArrayElement(env, ret, i, iaObj); - addrp++; - i++; ---- icedtea-3.8.0/openjdk/jdk/src/windows/native/java/net/Inet6AddressImpl.c 2018-09-18 09:42:59.698195486 +0200 -+++ icedtea-3.8.0/openjdk/jdk/src/windows/native/java/net/Inet6AddressImpl.c 2018-09-18 09:45:28.243002775 +0200 -@@ -219,7 +219,11 @@ - goto cleanupAndReturn; - } - setInetAddress_addr(env, iaObj, ntohl(((struct sockaddr_in*)iterator->ai_addr)->sin_addr.s_addr)); -+ if ((*env)->ExceptionCheck(env)) -+ goto cleanupAndReturn; - setInetAddress_hostName(env, iaObj, host); -+ if ((*env)->ExceptionCheck(env)) -+ goto cleanupAndReturn; - (*env)->SetObjectArrayElement(env, ret, inetIndex, iaObj); - inetIndex ++; - } else if (iterator->ai_family == AF_INET6) { -@@ -240,6 +244,8 @@ - setInet6Address_scopeid(env, iaObj, scope); - } - setInetAddress_hostName(env, iaObj, host); -+ if ((*env)->ExceptionCheck(env)) -+ goto cleanupAndReturn; - (*env)->SetObjectArrayElement(env, ret, inet6Index, iaObj); - inet6Index ++; - } ---- icedtea-3.8.0/openjdk/jdk/src/windows/native/java/net/net_util_md.c 2018-09-18 09:42:59.698195486 +0200 -+++ icedtea-3.8.0/openjdk/jdk/src/windows/native/java/net/net_util_md.c 2018-09-18 09:45:28.247002797 +0200 -@@ -875,6 +875,7 @@ - int *len, jboolean v4MappedAddress) { - jint family, iafam; - iafam = getInetAddress_family(env, iaObj); -+ JNU_CHECK_EXCEPTION_RETURN(env, -1); - family = (iafam == IPv4)? AF_INET : AF_INET6; - if (ipv6_available() && !(family == AF_INET && v4MappedAddress == JNI_FALSE)) { - struct SOCKADDR_IN6 *him6 = (struct SOCKADDR_IN6 *)him; -@@ -885,6 +886,7 @@ - if (family == AF_INET) { /* will convert to IPv4-mapped address */ - memset((char *) caddr, 0, 16); - address = getInetAddress_addr(env, iaObj); -+ JNU_CHECK_EXCEPTION_RETURN(env, -1); - if (address == INADDR_ANY) { - /* we would always prefer IPv6 wildcard address - caddr[10] = 0xff; -@@ -923,6 +925,7 @@ - } - memset((char *) him4, 0, sizeof(struct sockaddr_in)); - address = getInetAddress_addr(env, iaObj); -+ JNU_CHECK_EXCEPTION_RETURN(env, -1); - him4->sin_port = htons((short) port); - him4->sin_addr.s_addr = (u_long) htonl(address); - him4->sin_family = AF_INET; ---- icedtea-3.8.0/openjdk/jdk/src/windows/native/java/net/NetworkInterface.c 2018-09-18 09:42:59.698195486 +0200 -+++ icedtea-3.8.0/openjdk/jdk/src/windows/native/java/net/NetworkInterface.c 2018-09-18 09:45:28.243002775 +0200 -@@ -593,6 +593,7 @@ - /* default ctor will set family to AF_INET */ - - setInetAddress_addr(env, iaObj, ntohl(addrs->addr.him4.sin_addr.s_addr)); -+ JNU_CHECK_EXCEPTION_RETURN(env, NULL); - if (addrs->mask != -1) { - ibObj = (*env)->NewObject(env, ni_ibcls, ni_ibctrID); - if (ibObj == NULL) { -@@ -606,6 +607,7 @@ - return NULL; - } - setInetAddress_addr(env, ia2Obj, ntohl(addrs->brdcast.him4.sin_addr.s_addr)); -+ JNU_CHECK_EXCEPTION_RETURN(env, NULL); - (*env)->SetObjectField(env, ibObj, ni_ibbroadcastID, ia2Obj); - (*env)->SetShortField(env, ibObj, ni_ibmaskID, addrs->mask); - (*env)->SetObjectArrayElement(env, bindsArr, bind_index++, ibObj); -@@ -761,8 +763,9 @@ - (JNIEnv *env, jclass cls, jobject iaObj) - { - netif *ifList, *curr; -- jint addr = getInetAddress_addr(env, iaObj); - jobject netifObj = NULL; -+ jint addr = getInetAddress_addr(env, iaObj); -+ JNU_CHECK_EXCEPTION_RETURN(env, NULL); - - // Retained for now to support IPv4 only stack, java.net.preferIPv4Stack - if (ipv6_available()) { ---- icedtea-3.8.0/openjdk/jdk/src/windows/native/java/net/NetworkInterface_winXP.c 2018-09-18 09:42:59.698195486 +0200 -+++ icedtea-3.8.0/openjdk/jdk/src/windows/native/java/net/NetworkInterface_winXP.c 2018-09-18 09:45:28.243002775 +0200 -@@ -545,6 +545,7 @@ - - setInetAddress_addr(env, iaObj, ntohl(addrs->addr.him4.sin_addr.s_addr)); - -+ JNU_CHECK_EXCEPTION_RETURN(env, NULL); - ibObj = (*env)->NewObject(env, ni_ibcls, ni_ibctrID); - if (ibObj == NULL) { - free_netaddr(netaddrP); -@@ -557,6 +558,7 @@ - return NULL; - } - setInetAddress_addr(env, ia2Obj, ntohl(addrs->brdcast.him4.sin_addr.s_addr)); -+ JNU_CHECK_EXCEPTION_RETURN(env, NULL); - (*env)->SetObjectField(env, ibObj, ni_ibbroadcastID, ia2Obj); - (*env)->SetShortField(env, ibObj, ni_ibmaskID, addrs->mask); - (*env)->SetObjectArrayElement(env, bindsArr, bind_index++, ibObj); ---- icedtea-3.8.0/openjdk/jdk/src/windows/native/java/net/TwoStacksPlainDatagramSocketImpl.c 2018-09-18 09:42:59.698195486 +0200 -+++ icedtea-3.8.0/openjdk/jdk/src/windows/native/java/net/TwoStacksPlainDatagramSocketImpl.c 2018-09-18 09:45:28.247002797 +0200 -@@ -439,12 +439,13 @@ - memset((char *)&lcladdr, 0, sizeof(lcladdr)); - - family = getInetAddress_family(env, addressObj); -+ JNU_CHECK_EXCEPTION(env); - if (family == IPv6 && !ipv6_supported) { - JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", - "Protocol family not supported"); - return; - } -- -+ JNU_CHECK_EXCEPTION(env); - if (IS_NULL(fdObj) || (ipv6_supported && IS_NULL(fd1Obj))) { - JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", "socket closed"); - return; -@@ -459,6 +460,7 @@ - return; - } else { - address = getInetAddress_addr(env, addressObj); -+ JNU_CHECK_EXCEPTION(env); - } - - if (NET_InetAddressToSockaddr(env, addressObj, port, (struct sockaddr *)&lcladdr, &lcladdrlen, JNI_FALSE) != 0) { -@@ -562,8 +564,9 @@ - } - - addr = getInetAddress_addr(env, address); -- -+ JNU_CHECK_EXCEPTION(env); - family = getInetAddress_family(env, address); -+ JNU_CHECK_EXCEPTION(env); - if (family == IPv6 && !ipv6_supported) { - JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", - "Protocol family not supported"); -@@ -681,6 +684,7 @@ - } - - family = getInetAddress_family(env, iaObj); -+ JNU_CHECK_EXCEPTION(env); - if (family == IPv4) { - fdObj = (*env)->GetObjectField(env, this, pdsi_fdID); - } else { -@@ -731,6 +735,7 @@ - * Check is not necessary on these OSes */ - if (connected) { - address = getInetAddress_addr(env, iaObj); -+ JNU_CHECK_EXCEPTION(env); - } else { - address = ntohl(rmtaddr.him4.sin_addr.s_addr); - } -@@ -835,6 +840,7 @@ - return -1; - } else { - address = getInetAddress_addr(env, addressObj); -+ JNU_CHECK_EXCEPTION_RETURN(env, -1); - /* We only handle IPv4 for now. Will support IPv6 once its in the os */ - family = AF_INET; - } -@@ -909,7 +915,9 @@ - return 0; - } - setInetAddress_addr(env, addressObj, ntohl(remote_addr.sin_addr.s_addr)); -+ JNU_CHECK_EXCEPTION_RETURN(env, -1); - setInetAddress_family(env, addressObj, IPv4); -+ JNU_CHECK_EXCEPTION_RETURN(env, -1); - - /* return port */ - return ntohs(remote_addr.sin_port); -@@ -1601,6 +1609,7 @@ - int fam; - addr = (*env)->GetObjectArrayElement(env, addrArray, i); - fam = getInetAddress_family(env, addr); -+ JNU_CHECK_EXCEPTION_RETURN(env, -1); - if (fam == family) { - *iaddr = addr; - return 0; -@@ -1619,6 +1628,7 @@ - } - - iaddr->s_addr = htonl(getInetAddress_addr(env, addr)); -+ JNU_CHECK_EXCEPTION_RETURN(env, -1); - return 0; - } - -@@ -1724,6 +1734,7 @@ - struct in_addr in; - - in.s_addr = htonl(getInetAddress_addr(env, value)); -+ JNU_CHECK_EXCEPTION(env); - if (setsockopt(fd, IPPROTO_IP, IP_MULTICAST_IF, - (const char*)&in, sizeof(in)) < 0) { - NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", -@@ -1965,7 +1976,7 @@ - CHECK_NULL_RETURN(addr, NULL); - - setInetAddress_addr(env, addr, ntohl(in.s_addr)); -- -+ JNU_CHECK_EXCEPTION_RETURN(env, NULL); - /* - * For IP_MULTICAST_IF return InetAddress - */ ---- icedtea-3.8.0/openjdk/jdk/src/windows/native/java/net/TwoStacksPlainSocketImpl.c 2018-09-18 09:42:59.698195486 +0200 -+++ icedtea-3.8.0/openjdk/jdk/src/windows/native/java/net/TwoStacksPlainSocketImpl.c 2018-09-18 09:45:28.247002797 +0200 -@@ -413,6 +413,7 @@ - fd1Obj = (*env)->GetObjectField(env, this, psi_fd1ID); - - family = getInetAddress_family(env, iaObj); -+ JNU_CHECK_EXCEPTION(env); - - if (family == IPv6 && !ipv6_supported) { - JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", -@@ -729,7 +730,9 @@ - } - - setInetAddress_addr(env, socketAddressObj, ntohl(him.him4.sin_addr.s_addr)); -+ JNU_CHECK_EXCEPTION(env); - setInetAddress_family(env, socketAddressObj, IPv4); -+ JNU_CHECK_EXCEPTION(env); - (*env)->SetObjectField(env, socket, psi_addressID, socketAddressObj); - } else { - /* AF_INET6 -> Inet6Address */ -@@ -756,6 +759,7 @@ - } - setInet6Address_ipaddress(env, socketAddressObj, (char *)&him.him6.sin6_addr); - setInetAddress_family(env, socketAddressObj, IPv6); -+ JNU_CHECK_EXCEPTION(env); - setInet6Address_scopeid(env, socketAddressObj, him.him6.sin6_scope_id); - - } diff --git a/8196224.patch b/8196224.patch deleted file mode 100644 index 08a4b00..0000000 --- a/8196224.patch +++ /dev/null @@ -1,40 +0,0 @@ ---- icedtea-3.8.0/openjdk/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c 2018-09-18 09:49:08.188198047 +0200 -+++ icedtea-3.8.0/openjdk/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c 2018-09-18 09:49:25.544292368 +0200 -@@ -1045,6 +1045,7 @@ - struct in_addr in; - jobjectArray addrArray; - jsize len; -+ jint family; - jobject addr; - int i; - -@@ -1074,7 +1075,9 @@ - */ - for (i = 0; i < len; i++) { - addr = (*env)->GetObjectArrayElement(env, addrArray, i); -- if (getInetAddress_family(env, addr) == IPv4) { -+ family = getInetAddress_family(env, addr); -+ JNU_CHECK_EXCEPTION(env); -+ if (family == IPv4) { - JNU_CHECK_EXCEPTION(env); - in.s_addr = htonl(getInetAddress_addr(env, addr)); - JNU_CHECK_EXCEPTION(env); -@@ -1939,6 +1942,7 @@ - - jobject fdObj = (*env)->GetObjectField(env, this, pdsi_fdID); - jint fd; -+ jint family; - jint ipv6_join_leave; - - if (IS_NULL(fdObj)) { -@@ -1960,7 +1964,9 @@ - ipv6_join_leave = ipv6_available(); - - #ifdef __linux__ -- if (getInetAddress_family(env, iaObj) == IPv4) { -+ family = getInetAddress_family(env, iaObj); -+ JNU_CHECK_EXCEPTION(env); -+ if (family == IPv4) { - JNU_CHECK_EXCEPTION(env); - ipv6_join_leave = JNI_FALSE; - } diff --git a/8196491.patch b/8196491.patch deleted file mode 100644 index fae791c..0000000 --- a/8196491.patch +++ /dev/null @@ -1,239 +0,0 @@ ---- icedtea-3.8.0/openjdk/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/output/XMLStreamWriterOutput.java 2018-09-18 09:50:10.008533991 +0200 -+++ icedtea-3.8.0/openjdk/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/output/XMLStreamWriterOutput.java 2018-09-18 09:50:56.928788967 +0200 -@@ -33,6 +33,7 @@ - import javax.xml.stream.XMLStreamWriter; - - import com.sun.xml.internal.bind.marshaller.CharacterEscapeHandler; -+import com.sun.xml.internal.bind.marshaller.NoEscapeHandler; - import com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl; - import com.sun.xml.internal.bind.v2.runtime.XMLSerializer; - -@@ -71,7 +72,7 @@ - } - - CharacterEscapeHandler xmlStreamEscapeHandler = escapeHandler != null ? -- escapeHandler : NewLineEscapeHandler.theInstance; -+ escapeHandler : NoEscapeHandler.theInstance; - - // otherwise the normal writer. - return new XMLStreamWriterOutput(out, xmlStreamEscapeHandler); -@@ -217,45 +218,6 @@ - } - } - -- -- /** -- * Performs character escaping only for new lines. -- */ -- private static class NewLineEscapeHandler implements CharacterEscapeHandler { -- -- public static final NewLineEscapeHandler theInstance = new NewLineEscapeHandler(); -- -- @Override -- public void escape(char[] ch, int start, int length, boolean isAttVal, Writer out) throws IOException { -- int limit = start+length; -- int lastEscaped = start; -- -- for (int i = start; i < limit; i++) { -- char c = ch[i]; -- if (c == '\r' || c == '\n') { -- if (i != lastEscaped) { -- out.write(ch, lastEscaped, i - lastEscaped); -- } -- lastEscaped = i + 1; -- if (out instanceof XmlStreamOutWriterAdapter) { -- try { -- ((XmlStreamOutWriterAdapter)out).writeEntityRef("#x" + Integer.toHexString(c)); -- } catch (XMLStreamException e) { -- throw new IOException("Error writing xml stream", e); -- } -- } else { -- out.write("&#x"); -- out.write(Integer.toHexString(c)); -- out.write(';'); -- } -- } -- } -- if (lastEscaped != limit) { -- out.write(ch, lastEscaped, length - lastEscaped); -- } -- } -- } -- - private static final class XmlStreamOutWriterAdapter extends Writer { - - private final XMLStreamWriter writer; ---- icedtea-3.8.0/openjdk/jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/api/streaming/XMLStreamWriterFactory.java 2018-09-18 09:50:10.028534099 +0200 -+++ icedtea-3.8.0/openjdk/jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/api/streaming/XMLStreamWriterFactory.java 2018-09-18 09:50:56.928788967 +0200 -@@ -386,7 +386,7 @@ - - } - -- private static class HasEncodingWriter extends XMLStreamWriterFilter implements HasEncoding { -+ public static class HasEncodingWriter extends XMLStreamWriterFilter implements HasEncoding { - private final String encoding; - - HasEncodingWriter(XMLStreamWriter writer, String encoding) { -@@ -399,7 +399,7 @@ - return encoding; - } - -- XMLStreamWriter getWriter() { -+ public XMLStreamWriter getWriter() { - return writer; - } - } ---- icedtea-3.8.0/openjdk/jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/streaming/XMLStreamWriterUtil.java 2018-09-18 09:50:10.044534187 +0200 -+++ icedtea-3.8.0/openjdk/jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/streaming/XMLStreamWriterUtil.java 2018-09-18 09:50:56.928788967 +0200 -@@ -26,6 +26,7 @@ - package com.sun.xml.internal.ws.streaming; - - import com.sun.istack.internal.Nullable; -+import com.sun.xml.internal.ws.api.streaming.XMLStreamWriterFactory; - import com.sun.xml.internal.ws.encoding.HasEncoding; - import com.sun.xml.internal.ws.encoding.SOAPBindingCodec; - -@@ -57,9 +58,15 @@ - public static @Nullable OutputStream getOutputStream(XMLStreamWriter writer) throws XMLStreamException { - Object obj = null; - -+ XMLStreamWriter xmlStreamWriter = -+ writer instanceof XMLStreamWriterFactory.HasEncodingWriter ? -+ ((XMLStreamWriterFactory.HasEncodingWriter) writer).getWriter() -+ : writer; -+ -+ - // Hack for JDK6's SJSXP -- if (writer instanceof Map) { -- obj = ((Map) writer).get("sjsxp-outputstream"); -+ if (xmlStreamWriter instanceof Map) { -+ obj = ((Map) xmlStreamWriter).get("sjsxp-outputstream"); - } - - // woodstox ---- icedtea-3.8.0/openjdk/jdk/test/javax/xml/ws/8172297/Main.java 2018-09-18 09:50:09.468531057 +0200 -+++ icedtea-3.8.0/openjdk/jdk/test/javax/xml/ws/8172297/Main.java 2018-09-18 09:51:20.328916131 +0200 -@@ -23,7 +23,7 @@ - - /* - * @test -- * @bug 8172297 -+ * @bug 8172297 8196491 - * @summary Test that carriage-return and new-line characters - * are preserved in webservice parameters - * @compile ws/HelloWorld.java ws/HelloWorldImpl.java Main.java -@@ -33,13 +33,21 @@ - import java.io.IOException; - import java.net.ServerSocket; - import java.net.URL; -+import java.util.Collections; -+import java.util.Set; - import java.util.concurrent.CountDownLatch; - - import javax.xml.namespace.QName; -+import javax.xml.soap.SOAPMessage; - import javax.xml.ws.Endpoint; - import javax.xml.ws.Service; -+import javax.xml.ws.handler.Handler; -+import javax.xml.ws.handler.MessageContext; -+import javax.xml.ws.handler.soap.SOAPHandler; -+import javax.xml.ws.handler.soap.SOAPMessageContext; - - import org.testng.Assert; -+import org.testng.annotations.DataProvider; - import org.testng.annotations.Test; - - import ws.HelloWorld; -@@ -47,9 +55,8 @@ - - public class Main { - -- @Test -- public void runTest() throws Exception { -- // -+ @Test(dataProvider="callHandlerDataProvider") -+ public void runTest(boolean callGetMessageInHandler) throws Exception { - CountDownLatch serverInitSignal = new CountDownLatch(1); - CountDownLatch testDoneSignal = new CountDownLatch(1); - -@@ -58,23 +65,31 @@ - - serverInitSignal.await(); - -- boolean paramModified = runClientCode(serverThread.getPort()); -+ boolean paramModified = runClientCode(serverThread.getPort(), callGetMessageInHandler); - - testDoneSignal.countDown(); - -- Assert.assertFalse(paramModified, "WS parameter was modified during round trip."); -+ Assert.assertEquals(callGetMessageInHandler, paramModified, -+ "WS parameter has not been processed as expected"); -+ } -+ -+ @DataProvider -+ public Object[][] callHandlerDataProvider() { -+ return new Object[][]{{true}, {false}}; - } - - /* - * Connects to launched web service endpoint, sends message with CR/NL symbols and - * checks if it was modified during the round trip client/server communication. - */ -- private boolean runClientCode(int port) throws Exception { -+ private boolean runClientCode(int port, boolean callGetMessage) throws Exception { - System.out.println("Launching WS client connection on " + port + " port"); - URL url = new URL("http://localhost:" + port + "/ws/hello?wsdl"); - QName qname = new QName("http://ws/", "HelloWorldImplService"); - Service service = Service.create(url, qname); - -+ registerHandler(service, callGetMessage); -+ - HelloWorld hello = (HelloWorld) service.getPort(HelloWorld.class); - - logStringContent("Client input parameter", WS_PARAM_VALUE); -@@ -86,6 +101,45 @@ - } - - /* -+ * Register message handler and call SOAPMessageContext.getMessage -+ * to emulate issue reported in JDK-8196491 -+ */ -+ private void registerHandler(Service service, final boolean callGetMessage) { -+ System.out.printf( "Client %s call getMessage inside message handler%n", -+ callGetMessage ? "will" : "will not" ); -+ // Set custom SOAP message handler resolver -+ service.setHandlerResolver(portInfo -> { -+ Handler h = new SOAPHandler() { -+ -+ @Override -+ public boolean handleMessage(SOAPMessageContext context) { -+ if (callGetMessage) { -+ // Trigger exception from JDK-8196491 -+ SOAPMessage msg = context.getMessage(); -+ } -+ return true; -+ } -+ -+ @Override -+ public boolean handleFault(SOAPMessageContext context) { -+ return true; -+ } -+ -+ @Override -+ public void close(MessageContext context) { -+ } -+ -+ @Override -+ public Set getHeaders() { -+ return null; -+ } -+ -+ }; -+ return Collections.singletonList(h); -+ }); -+ } -+ -+ /* - * Outputs the parameter value with newline and carriage-return symbols - * replaced with #CR and #NL text abbreviations. - */ diff --git a/8196854.patch b/8196854.patch deleted file mode 100644 index c705b25..0000000 --- a/8196854.patch +++ /dev/null @@ -1,28 +0,0 @@ ---- icedtea-3.8.0/openjdk/jdk/test/java/util/zip/InflateIn_DeflateOut.java 2018-09-18 09:55:59.118433163 +0200 -+++ icedtea-3.8.0/openjdk/jdk/test/java/util/zip/InflateIn_DeflateOut.java 2018-09-18 09:56:21.186553300 +0200 -@@ -23,7 +23,7 @@ - - /** - * @test -- * @bug 4206909 4813885 8189789 -+ * @bug 4206909 4813885 8189789 8196854 - * @summary Test basic functionality of DeflaterOutputStream/InflaterInputStream and GZIPOutputStream/GZIPInputStream, including flush - * @key randomness - */ -@@ -154,7 +154,6 @@ - OutputStream output = new FlushableGZIPOutputStream(byteOutStream); - - byte[] data = new byte[random.nextInt(1024 * 1024)]; -- byte[] buf = new byte[data.length]; - random.nextBytes(data); - - output.write(data); -@@ -176,7 +175,7 @@ - int numRead; - byte[] b = new byte[4 * 1024]; - try { -- while ((numRead = gzis.read(buf)) >= 0) { -+ while ((numRead = gzis.read(b)) >= 0) { - baos.write(b, 0, numRead); - } - } finally { diff --git a/8197871.patch b/8197871.patch deleted file mode 100644 index 0d3a488..0000000 --- a/8197871.patch +++ /dev/null @@ -1,72 +0,0 @@ ---- icedtea-3.8.0/openjdk/jdk/make/CompileDemos.gmk 2018-09-18 09:57:38.246972802 +0200 -+++ icedtea-3.8.0/openjdk/jdk/make/CompileDemos.gmk 2018-09-18 09:58:10.947150824 +0200 -@@ -455,29 +455,6 @@ - - ################################################################################################## - --ifndef OPENJDK -- DB_DEMO_ZIPFILE := $(wildcard $(JDK_TOPDIR)/src/closed/share/db/db-derby-*-bin.zip) -- -- $(JDK_OUTPUTDIR)/demo/_the.db.unzipped: $(DB_DEMO_ZIPFILE) -- $(MKDIR) -p $(@D) -- $(RM) -r $(JDK_OUTPUTDIR)/demo/db $(JDK_OUTPUTDIR)/demo/demo -- $(CD) $(JDK_OUTPUTDIR)/demo && $(UNZIP) -q -o $< -- $(MV) $(JDK_OUTPUTDIR)/demo/db-derby-*-bin/demo $(JDK_OUTPUTDIR)/demo/db -- $(CD) $(JDK_OUTPUTDIR)/demo && $(RM) -r db-derby-*-bin -- $(TOUCH) $@ -- -- # Copy this after the unzip above to avoid race with directory creation and mv command. -- $(JDK_OUTPUTDIR)/demo/db/README-JDK-DEMOS.html: \ -- $(JDK_TOPDIR)/src/closed/share/db/README-JDK-DEMOS.html \ -- | $(JDK_OUTPUTDIR)/demo/_the.db.unzipped -- $(MKDIR) -p $(@D) -- $(CAT) $< | $(SED) "s/XXXX/$(shell cat $(JDK_TOPDIR)/src/closed/share/db/COPYRIGHTYEAR)/" > $@ -- -- BUILD_DEMOS += $(JDK_OUTPUTDIR)/demo/_the.db.unzipped $(JDK_OUTPUTDIR)/demo/db/README-JDK-DEMOS.html --endif -- --################################################################################################## -- - all: $(BUILD_DEMOS) - - .PHONY: all ---- icedtea-3.8.0/openjdk/jdk/make/Images.gmk 2018-09-18 09:57:38.246972802 +0200 -+++ icedtea-3.8.0/openjdk/jdk/make/Images.gmk 2018-09-18 09:58:11.103151672 +0200 -@@ -542,37 +542,6 @@ - $(eval $(call AddFileToCopy,$(JDK_OUTPUTDIR),$(JDK_IMAGE_DIR),$f,JDK_SAMPLE_TARGETS))) - - ################################################################################ --# /db dir -- --ifndef OPENJDK -- $(IMAGES_OUTPUTDIR)/_unzip/%.unzipped: $(JDK_TOPDIR)/src/closed/share/db/% -- $(ECHO) Unzipping $(patsubst $(SRC_ROOT)/%,%,$<) -- $(MKDIR) -p $(JDK_IMAGE_DIR)/db -- cd $(JDK_IMAGE_DIR)/db && $(UNZIP) -q -o $< -x */index.html */KEYS */test/* *javadoc/* */docs/* */demo/* 2> /dev/null -- cd $(JDK_IMAGE_DIR)/db && $(MV) db-derby-*-bin/* . && $(RM) -r db-derby-*-bin --ifneq ($(OPENJDK_TARGET_OS), windows) -- $(RM) $(JDK_IMAGE_DIR)/db/bin/*.bat --endif -- $(MKDIR) -p $(@D) -- $(TOUCH) $@ -- -- $(JDK_IMAGE_DIR)/db/README-JDK.html: $(JDK_TOPDIR)/src/closed/share/db/README-JDK.html -- $(ECHO) $(LOG_INFO) Copying '$(patsubst $(OUTPUT_ROOT)/%,%,$@)' -- $(MKDIR) -p $(@D) -- $(CAT) $< | $(SED) "s/XXXX/$(shell cat $(JDK_TOPDIR)/src/closed/share/db/COPYRIGHTYEAR)/" > $@ -- -- $(JDK_IMAGE_DIR)/db/3RDPARTY: $(JDK_TOPDIR)/src/closed/share/db/3RDPARTY -- $(ECHO) $(LOG_INFO) Copying '$(patsubst $(OUTPUT_ROOT)/%,%,$@)' -- $(MKDIR) -p $(@D) -- $(CAT) $< | $(SED) "s/XXXX/$(shell cat $(JDK_TOPDIR)/src/closed/share/db/COPYRIGHTYEAR)/" > $@ -- -- JDK_DB_TARGETS := $(patsubst $(JDK_TOPDIR)/src/closed/share/db/%, $(IMAGES_OUTPUTDIR)/_unzip/%.unzipped, \ -- $(wildcard $(JDK_TOPDIR)/src/closed/share/db/db-derby-*-bin.zip)) \ -- $(JDK_IMAGE_DIR)/db/README-JDK.html $(JDK_IMAGE_DIR)/db/3RDPARTY -- --endif -- --################################################################################ - # /include dir - - $(foreach f,$(call CacheFind,$(JDK_OUTPUTDIR)/include), \ diff --git a/8197925.patch b/8197925.patch deleted file mode 100644 index 4225ee6..0000000 --- a/8197925.patch +++ /dev/null @@ -1,79 +0,0 @@ ---- icedtea-3.8.0/openjdk/jdk/src/share/classes/java/io/ObjectStreamClass.java 2018-09-18 09:59:41.495643758 +0200 -+++ icedtea-3.8.0/openjdk/jdk/src/share/classes/java/io/ObjectStreamClass.java 2018-09-18 09:59:57.923733188 +0200 -@@ -86,6 +86,18 @@ - private static final ObjectStreamField[] serialPersistentFields = - NO_FIELDS; - -+ /** true if deserialization constructor checking is disabled */ -+ private static boolean disableSerialConstructorChecks = -+ AccessController.doPrivileged( -+ new PrivilegedAction() { -+ public Boolean run() { -+ String prop = "jdk.disableSerialConstructorChecks"; -+ return "true".equals(System.getProperty(prop)) -+ ? Boolean.TRUE : Boolean.FALSE; -+ } -+ } -+ ).booleanValue(); -+ - /** reflection factory for obtaining serialization constructors */ - private static final ReflectionFactory reflFactory = - AccessController.doPrivileged( -@@ -1497,6 +1509,46 @@ - } - - /** -+ * Given a class, determines whether its superclass has -+ * any constructors that are accessible from the class. -+ * This is a special purpose method intended to do access -+ * checking for a serializable class and its superclasses -+ * up to, but not including, the first non-serializable -+ * superclass. This also implies that the superclass is -+ * always non-null, because a serializable class must be a -+ * class (not an interface) and Object is not serializable. -+ * -+ * @param cl the class from which access is checked -+ * @return whether the superclass has a constructor accessible from cl -+ */ -+ private static boolean superHasAccessibleConstructor(Class cl) { -+ Class superCl = cl.getSuperclass(); -+ assert Serializable.class.isAssignableFrom(cl); -+ assert superCl != null; -+ if (packageEquals(cl, superCl)) { -+ // accessible if any non-private constructor is found -+ for (Constructor ctor : superCl.getDeclaredConstructors()) { -+ if ((ctor.getModifiers() & Modifier.PRIVATE) == 0) { -+ return true; -+ } -+ } -+ return false; -+ } else { -+ // accessible if the parent is public and any constructor -+ // is protected or public -+ if ((superCl.getModifiers() & Modifier.PUBLIC) == 0) { -+ return false; -+ } -+ for (Constructor ctor : superCl.getDeclaredConstructors()) { -+ if ((ctor.getModifiers() & (Modifier.PROTECTED | Modifier.PUBLIC)) != 0) { -+ return true; -+ } -+ } -+ return false; -+ } -+ } -+ -+ /** - * Returns subclass-accessible no-arg constructor of first non-serializable - * superclass, or null if none found. Access checks are disabled on the - * returned constructor (if any). -@@ -1504,7 +1556,9 @@ - private static Constructor getSerializableConstructor(Class cl) { - Class initCl = cl; - while (Serializable.class.isAssignableFrom(initCl)) { -- if ((initCl = initCl.getSuperclass()) == null) { -+ Class prev = initCl; -+ if ((initCl = initCl.getSuperclass()) == null || -+ (!disableSerialConstructorChecks && !superHasAccessibleConstructor(prev))) { - return null; - } - } diff --git a/8197943.patch b/8197943.patch deleted file mode 100644 index 02474e3..0000000 --- a/8197943.patch +++ /dev/null @@ -1,45 +0,0 @@ ---- icedtea-3.8.0/openjdk/jdk/src/share/classes/com/sun/tools/jdi/VirtualMachineImpl.java 2018-09-18 10:01:25.012207276 +0200 -+++ icedtea-3.8.0/openjdk/jdk/src/share/classes/com/sun/tools/jdi/VirtualMachineImpl.java 2018-09-18 10:01:45.616319435 +0200 -@@ -674,20 +674,18 @@ - versionInfo().jdwpMinor >= 6; - } - public boolean canGetInstanceInfo() { -- if (versionInfo().jdwpMajor < 1 || -- versionInfo().jdwpMinor < 6) { -- return false; -- } -+ if (versionInfo().jdwpMajor > 1 || -+ versionInfo().jdwpMinor >= 6) { - validateVM(); - return hasNewCapabilities() && - capabilitiesNew().canGetInstanceInfo; -- } -- public boolean canUseSourceNameFilters() { -- if (versionInfo().jdwpMajor < 1 || -- versionInfo().jdwpMinor < 6) { -+ } else { - return false; - } -- return true; -+ } -+ public boolean canUseSourceNameFilters() { -+ return versionInfo().jdwpMajor > 1 || -+ versionInfo().jdwpMinor >= 6; - } - public boolean canForceEarlyReturn() { - validateVM(); -@@ -703,12 +701,8 @@ - capabilitiesNew().canGetSourceDebugExtension; - } - public boolean canGetClassFileVersion() { -- if ( versionInfo().jdwpMajor < 1 && -- versionInfo().jdwpMinor < 6) { -- return false; -- } else { -- return true; -- } -+ return versionInfo().jdwpMajor > 1 || -+ versionInfo().jdwpMinor >= 6; - } - public boolean canGetConstantPool() { - validateVM(); diff --git a/8198794.patch b/8198794.patch deleted file mode 100644 index cbfd167..0000000 --- a/8198794.patch +++ /dev/null @@ -1,32 +0,0 @@ ---- icedtea-3.8.0/openjdk/hotspot/src/os/linux/vm/os_linux.hpp 2018-09-18 10:03:21.160839536 +0200 -+++ icedtea-3.8.0/openjdk/hotspot/src/os/linux/vm/os_linux.hpp 2018-09-18 10:16:17.285065419 +0200 -@@ -287,8 +287,8 @@ - static void set_numa_bitmask_isbitset(numa_bitmask_isbitset_func_t func) { _numa_bitmask_isbitset = func; } - static void set_numa_distance(numa_distance_func_t func) { _numa_distance = func; } - static void set_numa_all_nodes(unsigned long* ptr) { _numa_all_nodes = ptr; } -- static void set_numa_all_nodes_ptr(struct bitmask **ptr) { _numa_all_nodes_ptr = *ptr; } -- static void set_numa_nodes_ptr(struct bitmask **ptr) { _numa_nodes_ptr = *ptr; } -+ static void set_numa_all_nodes_ptr(struct bitmask **ptr) { _numa_all_nodes_ptr = (ptr == NULL ? NULL : *ptr); } -+ static void set_numa_nodes_ptr(struct bitmask **ptr) { _numa_nodes_ptr = (ptr == NULL ? NULL : *ptr); } - static int sched_getcpu_syscall(void); - public: - static int sched_getcpu() { return _sched_getcpu != NULL ? _sched_getcpu() : -1; } -@@ -332,6 +332,18 @@ - static bool isnode_in_existing_nodes(unsigned int n) { - if (_numa_bitmask_isbitset != NULL && _numa_nodes_ptr != NULL) { - return _numa_bitmask_isbitset(_numa_nodes_ptr, n); -+ } else if (_numa_bitmask_isbitset != NULL && _numa_all_nodes_ptr != NULL) { -+ // Not all libnuma API v2 implement numa_nodes_ptr, so it's not possible -+ // to trust the API version for checking its absence. On the other hand, -+ // numa_nodes_ptr found in libnuma 2.0.9 and above is the only way to get -+ // a complete view of all numa nodes in the system, hence numa_nodes_ptr -+ // is used to handle CPU and nodes on architectures (like PowerPC) where -+ // there can exist nodes with CPUs but no memory or vice-versa and the -+ // nodes may be non-contiguous. For most of the architectures, like -+ // x86_64, numa_node_ptr presents the same node set as found in -+ // numa_all_nodes_ptr so it's possible to use numa_all_nodes_ptr as a -+ // substitute. -+ return _numa_bitmask_isbitset(_numa_all_nodes_ptr, n); - } else - return 0; - } diff --git a/8199406.patch b/8199406.patch deleted file mode 100644 index 1ae132c..0000000 --- a/8199406.patch +++ /dev/null @@ -1,223 +0,0 @@ ---- icedtea-3.8.0/openjdk/hotspot/src/share/vm/code/codeBlob.cpp 2018-09-18 10:17:46.065548902 +0200 -+++ icedtea-3.8.0/openjdk/hotspot/src/share/vm/code/codeBlob.cpp 2018-09-18 10:18:04.537649500 +0200 -@@ -292,6 +292,28 @@ - return blob; - } - -+VtableBlob::VtableBlob(const char* name, int size) : -+ BufferBlob(name, size) { -+} -+ -+VtableBlob* VtableBlob::create(const char* name, int buffer_size) { -+ ThreadInVMfromUnknown __tiv; // get to VM state in case we block on CodeCache_lock -+ -+ VtableBlob* blob = NULL; -+ unsigned int size = sizeof(VtableBlob); -+ // align the size to CodeEntryAlignment -+ size = align_code_offset(size); -+ size += round_to(buffer_size, oopSize); -+ assert(name != NULL, "must provide a name"); -+ { -+ MutexLockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag); -+ blob = new (size) VtableBlob(name, size); -+ } -+ // Track memory usage statistic after releasing CodeCache_lock -+ MemoryService::track_code_cache_memory_usage(); -+ -+ return blob; -+} - - //---------------------------------------------------------------------------------------------------- - // Implementation of MethodHandlesAdapterBlob ---- icedtea-3.8.0/openjdk/hotspot/src/share/vm/code/codeBlob.hpp 2018-09-18 10:17:46.065548902 +0200 -+++ icedtea-3.8.0/openjdk/hotspot/src/share/vm/code/codeBlob.hpp 2018-09-18 10:18:04.537649500 +0200 -@@ -101,6 +101,7 @@ - virtual bool is_exception_stub() const { return false; } - virtual bool is_safepoint_stub() const { return false; } - virtual bool is_adapter_blob() const { return false; } -+ virtual bool is_vtable_blob() const { return false; } - virtual bool is_method_handles_adapter_blob() const { return false; } - - virtual bool is_compiled_by_c2() const { return false; } -@@ -202,6 +203,7 @@ - class BufferBlob: public CodeBlob { - friend class VMStructs; - friend class AdapterBlob; -+ friend class VtableBlob; - friend class MethodHandlesAdapterBlob; - - private: -@@ -246,6 +248,18 @@ - virtual bool is_adapter_blob() const { return true; } - }; - -+//--------------------------------------------------------------------------------------------------- -+class VtableBlob: public BufferBlob { -+private: -+ VtableBlob(const char*, int); -+ -+public: -+ // Creation -+ static VtableBlob* create(const char* name, int buffer_size); -+ -+ // Typing -+ virtual bool is_vtable_blob() const { return true; } -+}; - - //---------------------------------------------------------------------------------------------------- - // MethodHandlesAdapterBlob: used to hold MethodHandles adapters ---- icedtea-3.8.0/openjdk/hotspot/src/share/vm/code/compiledIC.cpp 2018-09-18 10:17:46.065548902 +0200 -+++ icedtea-3.8.0/openjdk/hotspot/src/share/vm/code/compiledIC.cpp 2018-09-18 10:18:04.585649761 +0200 -@@ -232,7 +232,7 @@ - assert(k->verify_itable_index(itable_index), "sanity check"); - #endif //ASSERT - CompiledICHolder* holder = new CompiledICHolder(call_info->resolved_method()->method_holder(), -- call_info->resolved_klass()()); -+ call_info->resolved_klass()(), false); - holder->claim(); - InlineCacheBuffer::create_transition_stub(this, holder, entry); - } else { -@@ -270,7 +270,7 @@ - assert(!is_optimized(), "an optimized call cannot be megamorphic"); - - // Cannot rely on cached_value. It is either an interface or a method. -- return VtableStubs::is_entry_point(ic_destination()); -+ return VtableStubs::entry_point(ic_destination()) != NULL; - } - - bool CompiledIC::is_call_to_compiled() const { -@@ -534,9 +534,11 @@ - return true; - } - // itable stubs also use CompiledICHolder -- if (VtableStubs::is_entry_point(entry) && VtableStubs::stub_containing(entry)->is_itable_stub()) { -- return true; -+ if (cb != NULL && cb->is_vtable_blob()) { -+ VtableStub* s = VtableStubs::entry_point(entry); -+ return (s != NULL) && s->is_itable_stub(); - } -+ - return false; - } - ---- icedtea-3.8.0/openjdk/hotspot/src/share/vm/code/vtableStubs.cpp 2018-09-18 10:17:46.065548902 +0200 -+++ icedtea-3.8.0/openjdk/hotspot/src/share/vm/code/vtableStubs.cpp 2018-09-18 10:18:04.585649761 +0200 -@@ -60,7 +60,7 @@ - - // There is a dependency on the name of the blob in src/share/vm/prims/jvmtiCodeBlobEvents.cpp - // If changing the name, update the other file accordingly. -- BufferBlob* blob = BufferBlob::create("vtable chunks", bytes); -+ VtableBlob* blob = VtableBlob::create("vtable chunks", bytes); - if (blob == NULL) { - return NULL; - } -@@ -167,16 +167,17 @@ - _number_of_vtable_stubs++; - } - -- --bool VtableStubs::is_entry_point(address pc) { -+VtableStub* VtableStubs::entry_point(address pc) { - MutexLocker ml(VtableStubs_lock); - VtableStub* stub = (VtableStub*)(pc - VtableStub::entry_offset()); - uint hash = VtableStubs::hash(stub->is_vtable_stub(), stub->index()); - VtableStub* s; - for (s = _table[hash]; s != NULL && s != stub; s = s->next()) {} -- return s == stub; -+ if (s == stub) { -+ return s; -+ } -+ return NULL; - } -- - - bool VtableStubs::contains(address pc) { - // simple solution for now - we may want to use ---- icedtea-3.8.0/openjdk/hotspot/src/share/vm/code/vtableStubs.hpp 2018-09-18 10:17:46.065548902 +0200 -+++ icedtea-3.8.0/openjdk/hotspot/src/share/vm/code/vtableStubs.hpp 2018-09-18 10:18:04.585649761 +0200 -@@ -126,7 +126,7 @@ - public: - static address find_vtable_stub(int vtable_index) { return find_stub(true, vtable_index); } - static address find_itable_stub(int itable_index) { return find_stub(false, itable_index); } -- static bool is_entry_point(address pc); // is pc a vtable stub entry point? -+ static VtableStub* entry_point(address pc); // vtable stub entry point for a pc - static bool contains(address pc); // is pc within any stub? - static VtableStub* stub_containing(address pc); // stub containing pc or NULL - static int number_of_vtable_stubs() { return _number_of_vtable_stubs; } ---- icedtea-3.8.0/openjdk/hotspot/src/share/vm/oops/compiledICHolder.cpp 2018-09-18 10:17:46.073548946 +0200 -+++ icedtea-3.8.0/openjdk/hotspot/src/share/vm/oops/compiledICHolder.cpp 2018-09-18 10:18:04.585649761 +0200 -@@ -24,30 +24,12 @@ - - #include "precompiled.hpp" - #include "oops/compiledICHolder.hpp" --#include "oops/klass.hpp" --#include "oops/method.hpp" - #include "oops/oop.inline2.hpp" - - volatile int CompiledICHolder::_live_count; - volatile int CompiledICHolder::_live_not_claimed_count; - - --bool CompiledICHolder::is_loader_alive(BoolObjectClosure* is_alive) { -- if (_holder_metadata->is_method()) { -- if (!((Method*)_holder_metadata)->method_holder()->is_loader_alive(is_alive)) { -- return false; -- } -- } else if (_holder_metadata->is_klass()) { -- if (!((Klass*)_holder_metadata)->is_loader_alive(is_alive)) { -- return false; -- } -- } -- if (!_holder_klass->is_loader_alive(is_alive)) { -- return false; -- } -- return true; --} -- - // Printing - - void CompiledICHolder::print_on(outputStream* st) const { ---- icedtea-3.8.0/openjdk/hotspot/src/share/vm/oops/compiledICHolder.hpp 2018-09-18 10:17:46.073548946 +0200 -+++ icedtea-3.8.0/openjdk/hotspot/src/share/vm/oops/compiledICHolder.hpp 2018-09-18 10:18:04.585649761 +0200 -@@ -26,6 +26,8 @@ - #define SHARE_VM_OOPS_COMPILEDICHOLDEROOP_HPP - - #include "oops/oop.hpp" -+#include "oops/klass.hpp" -+#include "oops/method.hpp" - - // A CompiledICHolder* is a helper object for the inline cache implementation. - // It holds: -@@ -48,11 +50,12 @@ - Metadata* _holder_metadata; - Klass* _holder_klass; // to avoid name conflict with oopDesc::_klass - CompiledICHolder* _next; -+ bool _is_metadata_method; - - public: - // Constructor -- CompiledICHolder(Metadata* metadata, Klass* klass) -- : _holder_metadata(metadata), _holder_klass(klass) { -+ CompiledICHolder(Metadata* metadata, Klass* klass, bool is_method = true) -+ : _holder_metadata(metadata), _holder_klass(klass), _is_metadata_method(is_method) { - #ifdef ASSERT - Atomic::inc(&_live_count); - Atomic::inc(&_live_not_claimed_count); -@@ -82,7 +85,16 @@ - CompiledICHolder* next() { return _next; } - void set_next(CompiledICHolder* n) { _next = n; } - -- bool is_loader_alive(BoolObjectClosure* is_alive); -+ inline bool is_loader_alive(BoolObjectClosure* is_alive) { -+ Klass* k = _is_metadata_method ? ((Method*)_holder_metadata)->method_holder() : (Klass*)_holder_metadata; -+ if (!k->is_loader_alive(is_alive)) { -+ return false; -+ } -+ if (!_holder_klass->is_loader_alive(is_alive)) { -+ return false; -+ } -+ return true; -+ } - - // Verify - void verify_on(outputStream* st); diff --git a/8199547.patch b/8199547.patch deleted file mode 100644 index f4d1719..0000000 --- a/8199547.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- icedtea-3.8.0/openjdk/jdk/src/share/classes/java/util/regex/PatternSyntaxException.java 2018-09-18 10:20:24.942414144 +0200 -+++ icedtea-3.8.0/openjdk/jdk/src/share/classes/java/util/regex/PatternSyntaxException.java 2018-09-18 10:21:21.026719597 +0200 -@@ -113,7 +113,7 @@ - } - sb.append(nl); - sb.append(pattern); -- if (index >= 0) { -+ if (index >= 0 && pattern != null && index < pattern.length()) { - sb.append(nl); - for (int i = 0; i < index; i++) sb.append(' '); - sb.append('^'); diff --git a/8200359.patch b/8200359.patch deleted file mode 100644 index b08ced9..0000000 --- a/8200359.patch +++ /dev/null @@ -1,3577 +0,0 @@ ---- icedtea-3.8.0/openjdk/jdk/make/data/tzdata/africa 2018-09-18 10:22:19.723039231 +0200 -+++ icedtea-3.8.0/openjdk/jdk/make/data/tzdata/africa 2018-09-18 10:25:01.663921124 +0200 -@@ -138,13 +138,13 @@ - - # Cape Verde / Cabo Verde - # -+# From Paul Eggert (2018-02-16): - # Shanks gives 1907 for the transition to +02. --# Perhaps the 1911-05-26 Portuguese decree --# https://dre.pt/pdf1sdip/1911/05/12500/23132313.pdf --# merely made it official? -+# For now, ignore that and follow the 1911-05-26 Portuguese decree -+# (see Europe/Lisbon). - # - # Zone NAME GMTOFF RULES FORMAT [UNTIL] --Zone Atlantic/Cape_Verde -1:34:04 - LMT 1907 # Praia -+Zone Atlantic/Cape_Verde -1:34:04 - LMT 1912 Jan 01 2:00u # Praia - -2:00 - -02 1942 Sep - -2:00 1:00 -01 1945 Oct 15 - -2:00 - -02 1975 Nov 25 2:00 -@@ -393,15 +393,34 @@ - # See Africa/Abidjan. - - # Ghana --# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -+ -+# From Paul Eggert (2018-01-30): - # Whitman says DST was observed from 1931 to "the present"; --# Shanks & Pottenger say 1936 to 1942; --# and September 1 to January 1 is given by: --# Scott Keltie J, Epstein M (eds), The Statesman's Year-Book, --# 57th ed. Macmillan, London (1920), OCLC 609408015, pp xxviii. --# For lack of better info, assume DST was observed from 1920 to 1942. --Rule Ghana 1920 1942 - Sep 1 0:00 0:20 GHST --Rule Ghana 1920 1942 - Dec 31 0:00 0 GMT -+# Shanks & Pottenger say 1936 to 1942 with 20 minutes of DST, -+# with transitions on 09-01 and 12-31 at 00:00. -+# Page 33 of Parish GCB, Colonial Reports - Annual. No. 1066. Gold -+# Coast. Report for 1919. (March 1921), OCLC 784024077 -+# http://libsysdigi.library.illinois.edu/ilharvest/africana/books2011-05/5530214/5530214_1919/5530214_1919_opt.pdf -+# lists the Determination of the Time Ordinance, 1919, No. 18, -+# "to advance the time observed locally by the space of twenty minutes -+# during the last four months of each year; the object in view being -+# to extend during those months the period of daylight-time available -+# for evening recreation after office hours." -+# Vanessa Ogle, The Global Transformation of Time, 1870-1950 (2015), p 33, -+# writes "In 1919, the Gold Coast (Ghana as of 1957) made Greenwich -+# time its legal time and simultaneously legalized a summer time of -+# UTC - 00:20 minutes from March to October."; a footnote lists -+# the ordinance as being dated 1919-11-24. -+# The Crown Colonist, Volume 12 (1942), p 176, says "the Government -+# intend advancing Gold Coast time half an hour ahead of G.M.T. -+# The actual date of the alteration has not yet been announced." -+# These sources are incomplete and contradictory. Possibly what is -+# 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 Ghana 1920 1942 - Sep 1 0:00 0:20 - -+Rule Ghana 1920 1942 - Dec 31 0:00 0 - - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone Africa/Accra -0:00:52 - LMT 1918 - 0:00 Ghana GMT/+0020 -@@ -411,13 +430,13 @@ - - # Guinea-Bissau - # -+# From Paul Eggert (2018-02-16): - # Shanks gives 1911-05-26 for the transition to WAT, - # evidently confusing the date of the Portuguese decree --# https://dre.pt/pdf1sdip/1911/05/12500/23132313.pdf --# with the date that it took effect, namely 1912-01-01. -+# (see Europe/Lisbon) with the date that it took effect. - # - # Zone NAME GMTOFF RULES FORMAT [UNTIL] --Zone Africa/Bissau -1:02:20 - LMT 1912 Jan 1 -+Zone Africa/Bissau -1:02:20 - LMT 1912 Jan 1 1:00u - -1:00 - -01 1975 - 0:00 - GMT - -@@ -613,9 +632,9 @@ - # at 2am (or 02:00) local time..." - - # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S --Rule Mauritius 1982 only - Oct 10 0:00 1:00 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 S -+Rule Mauritius 2008 only - Oct lastSun 2:00 1:00 - - Rule Mauritius 2009 only - Mar lastSun 2:00 0 - - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone Indian/Mauritius 3:50:00 - LMT 1907 # Port Louis -@@ -1060,6 +1079,8 @@ - - # São Tomé and Príncipe - -+# See Europe/Lisbon for info about the 1912 transition. -+ - # From Steffen Thorsen (2018-01-08): - # Multiple sources tell that São Tomé changed from UTC to UTC+1 as - # they entered the year 2018. -@@ -1068,7 +1089,7 @@ - # http://www.mnec.gov.st/index.php/publicacoes/documentos/file/90-decreto-lei-n-25-2017 - - Zone Africa/Sao_Tome 0:26:56 - LMT 1884 -- -0:36:45 - LMT 1912 # Lisbon Mean Time -+ -0:36:45 - LMT 1912 Jan 1 00:00u # Lisbon MT - 0:00 - GMT 2018 Jan 1 01:00 - 1:00 - WAT - ---- icedtea-3.8.0/openjdk/jdk/make/data/tzdata/antarctica 2018-09-18 10:22:19.723039231 +0200 -+++ icedtea-3.8.0/openjdk/jdk/make/data/tzdata/antarctica 2018-09-18 10:25:01.663921124 +0200 -@@ -98,7 +98,8 @@ - 8:00 - +08 2011 Oct 28 2:00 - 11:00 - +11 2012 Feb 21 17:00u - 8:00 - +08 2016 Oct 22 -- 11:00 - +11 -+ 11:00 - +11 2018 Mar 11 4:00 -+ 8:00 - +08 - Zone Antarctica/Davis 0 - -00 1957 Jan 13 - 7:00 - +07 1964 Nov - 0 - -00 1969 Feb ---- icedtea-3.8.0/openjdk/jdk/make/data/tzdata/asia 2018-09-18 10:22:19.723039231 +0200 -+++ icedtea-3.8.0/openjdk/jdk/make/data/tzdata/asia 2018-09-18 10:25:01.663921124 +0200 -@@ -92,13 +92,13 @@ - 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 - --Rule E-EurAsia 1981 max - Mar lastSun 0:00 1:00 S -+Rule E-EurAsia 1981 max - Mar lastSun 0:00 1:00 - - Rule E-EurAsia 1979 1995 - Sep lastSun 0:00 0 - - Rule E-EurAsia 1996 max - Oct lastSun 0:00 0 - --Rule RussiaAsia 1981 1984 - Apr 1 0:00 1:00 S -+Rule RussiaAsia 1981 1984 - Apr 1 0:00 1:00 - - Rule RussiaAsia 1981 1983 - Oct 1 0:00 0 - - Rule RussiaAsia 1984 1995 - Sep lastSun 2:00s 0 - --Rule RussiaAsia 1985 2010 - Mar lastSun 2:00s 1:00 S -+Rule RussiaAsia 1985 2010 - Mar lastSun 2:00s 1:00 - - Rule RussiaAsia 1996 2010 - Oct lastSun 2:00s 0 - - - # Afghanistan -@@ -133,7 +133,7 @@ - # (brief) - # http://www.worldtimezone.com/dst_news/dst_news_armenia03.html - # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S --Rule Armenia 2011 only - Mar lastSun 2:00s 1:00 S -+Rule Armenia 2011 only - Mar lastSun 2:00s 1:00 - - Rule Armenia 2011 only - Oct lastSun 2:00s 0 - - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone Asia/Yerevan 2:58:00 - LMT 1924 May 2 -@@ -159,7 +159,7 @@ - # http://en.apa.az/xeber_azerbaijan_abolishes_daylight_savings_ti_240862.html - - # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S --Rule Azer 1997 2015 - Mar lastSun 4:00 1:00 S -+Rule Azer 1997 2015 - Mar lastSun 4:00 1:00 - - Rule Azer 1997 2015 - Oct lastSun 5:00 0 - - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone Asia/Baku 3:19:24 - LMT 1924 May 2 -@@ -246,7 +246,7 @@ - # http://www.worldtimezone.com/dst_news/dst_news_bangladesh06.html - - # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S --Rule Dhaka 2009 only - Jun 19 23:00 1:00 S -+Rule Dhaka 2009 only - Jun 19 23:00 1:00 - - Rule Dhaka 2009 only - Dec 31 24:00 0 - - - # Zone NAME GMTOFF RULES FORMAT [UNTIL] -@@ -787,8 +787,9 @@ - Rule Macau 1975 1977 - Apr Sun>=15 3:30 1:00 D - Rule Macau 1978 1980 - Apr Sun>=15 0:00 1:00 D - Rule Macau 1978 1980 - Oct Sun>=15 0:00 0 S -+# See Europe/Lisbon for info about the 1912 transition. - # Zone NAME GMTOFF RULES FORMAT [UNTIL] --Zone Asia/Macau 7:34:20 - LMT 1912 Jan 1 -+Zone Asia/Macau 7:34:20 - LMT 1911 Dec 31 16:00u - 8:00 Macau C%sT - - -@@ -1129,61 +1130,61 @@ - # thirtieth day of Shahrivar. - # - # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S --Rule Iran 1978 1980 - Mar 21 0:00 1:00 D --Rule Iran 1978 only - Oct 21 0:00 0 S --Rule Iran 1979 only - Sep 19 0:00 0 S --Rule Iran 1980 only - Sep 23 0:00 0 S --Rule Iran 1991 only - May 3 0:00 1:00 D --Rule Iran 1992 1995 - Mar 22 0:00 1:00 D --Rule Iran 1991 1995 - Sep 22 0:00 0 S --Rule Iran 1996 only - Mar 21 0:00 1:00 D --Rule Iran 1996 only - Sep 21 0:00 0 S --Rule Iran 1997 1999 - Mar 22 0:00 1:00 D --Rule Iran 1997 1999 - Sep 22 0:00 0 S --Rule Iran 2000 only - Mar 21 0:00 1:00 D --Rule Iran 2000 only - Sep 21 0:00 0 S --Rule Iran 2001 2003 - Mar 22 0:00 1:00 D --Rule Iran 2001 2003 - Sep 22 0:00 0 S --Rule Iran 2004 only - Mar 21 0:00 1:00 D --Rule Iran 2004 only - Sep 21 0:00 0 S --Rule Iran 2005 only - Mar 22 0:00 1:00 D --Rule Iran 2005 only - Sep 22 0:00 0 S --Rule Iran 2008 only - Mar 21 0:00 1:00 D --Rule Iran 2008 only - Sep 21 0:00 0 S --Rule Iran 2009 2011 - Mar 22 0:00 1:00 D --Rule Iran 2009 2011 - Sep 22 0:00 0 S --Rule Iran 2012 only - Mar 21 0:00 1:00 D --Rule Iran 2012 only - Sep 21 0:00 0 S --Rule Iran 2013 2015 - Mar 22 0:00 1:00 D --Rule Iran 2013 2015 - Sep 22 0:00 0 S --Rule Iran 2016 only - Mar 21 0:00 1:00 D --Rule Iran 2016 only - Sep 21 0:00 0 S --Rule Iran 2017 2019 - Mar 22 0:00 1:00 D --Rule Iran 2017 2019 - Sep 22 0:00 0 S --Rule Iran 2020 only - Mar 21 0:00 1:00 D --Rule Iran 2020 only - Sep 21 0:00 0 S --Rule Iran 2021 2023 - Mar 22 0:00 1:00 D --Rule Iran 2021 2023 - Sep 22 0:00 0 S --Rule Iran 2024 only - Mar 21 0:00 1:00 D --Rule Iran 2024 only - Sep 21 0:00 0 S --Rule Iran 2025 2027 - Mar 22 0:00 1:00 D --Rule Iran 2025 2027 - Sep 22 0:00 0 S --Rule Iran 2028 2029 - Mar 21 0:00 1:00 D --Rule Iran 2028 2029 - Sep 21 0:00 0 S --Rule Iran 2030 2031 - Mar 22 0:00 1:00 D --Rule Iran 2030 2031 - Sep 22 0:00 0 S --Rule Iran 2032 2033 - Mar 21 0:00 1:00 D --Rule Iran 2032 2033 - Sep 21 0:00 0 S --Rule Iran 2034 2035 - Mar 22 0:00 1:00 D --Rule Iran 2034 2035 - Sep 22 0:00 0 S -+Rule Iran 1978 1980 - Mar 21 0:00 1:00 - -+Rule Iran 1978 only - Oct 21 0:00 0 - -+Rule Iran 1979 only - Sep 19 0:00 0 - -+Rule Iran 1980 only - Sep 23 0:00 0 - -+Rule Iran 1991 only - May 3 0:00 1:00 - -+Rule Iran 1992 1995 - Mar 22 0:00 1:00 - -+Rule Iran 1991 1995 - Sep 22 0:00 0 - -+Rule Iran 1996 only - Mar 21 0:00 1:00 - -+Rule Iran 1996 only - Sep 21 0:00 0 - -+Rule Iran 1997 1999 - Mar 22 0:00 1:00 - -+Rule Iran 1997 1999 - Sep 22 0:00 0 - -+Rule Iran 2000 only - Mar 21 0:00 1:00 - -+Rule Iran 2000 only - Sep 21 0:00 0 - -+Rule Iran 2001 2003 - Mar 22 0:00 1:00 - -+Rule Iran 2001 2003 - Sep 22 0:00 0 - -+Rule Iran 2004 only - Mar 21 0:00 1:00 - -+Rule Iran 2004 only - Sep 21 0:00 0 - -+Rule Iran 2005 only - Mar 22 0:00 1:00 - -+Rule Iran 2005 only - Sep 22 0:00 0 - -+Rule Iran 2008 only - Mar 21 0:00 1:00 - -+Rule Iran 2008 only - Sep 21 0:00 0 - -+Rule Iran 2009 2011 - Mar 22 0:00 1:00 - -+Rule Iran 2009 2011 - Sep 22 0:00 0 - -+Rule Iran 2012 only - Mar 21 0:00 1:00 - -+Rule Iran 2012 only - Sep 21 0:00 0 - -+Rule Iran 2013 2015 - Mar 22 0:00 1:00 - -+Rule Iran 2013 2015 - Sep 22 0:00 0 - -+Rule Iran 2016 only - Mar 21 0:00 1:00 - -+Rule Iran 2016 only - Sep 21 0:00 0 - -+Rule Iran 2017 2019 - Mar 22 0:00 1:00 - -+Rule Iran 2017 2019 - Sep 22 0:00 0 - -+Rule Iran 2020 only - Mar 21 0:00 1:00 - -+Rule Iran 2020 only - Sep 21 0:00 0 - -+Rule Iran 2021 2023 - Mar 22 0:00 1:00 - -+Rule Iran 2021 2023 - Sep 22 0:00 0 - -+Rule Iran 2024 only - Mar 21 0:00 1:00 - -+Rule Iran 2024 only - Sep 21 0:00 0 - -+Rule Iran 2025 2027 - Mar 22 0:00 1:00 - -+Rule Iran 2025 2027 - Sep 22 0:00 0 - -+Rule Iran 2028 2029 - Mar 21 0:00 1:00 - -+Rule Iran 2028 2029 - Sep 21 0:00 0 - -+Rule Iran 2030 2031 - Mar 22 0:00 1:00 - -+Rule Iran 2030 2031 - Sep 22 0:00 0 - -+Rule Iran 2032 2033 - Mar 21 0:00 1:00 - -+Rule Iran 2032 2033 - Sep 21 0:00 0 - -+Rule Iran 2034 2035 - Mar 22 0:00 1:00 - -+Rule Iran 2034 2035 - Sep 22 0:00 0 - - # - # The following rules are approximations starting in the year 2038. - # These are the best post-2037 approximations available, given the - # restrictions of a single rule using a Gregorian-based data format. - # At some point this table will need to be extended, though quite - # possibly Iran will change the rules first. --Rule Iran 2036 max - Mar 21 0:00 1:00 D --Rule Iran 2036 max - Sep 21 0:00 0 S -+Rule Iran 2036 max - Mar 21 0:00 1:00 - -+Rule Iran 2036 max - Sep 21 0:00 0 - - - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone Asia/Tehran 3:25:44 - LMT 1916 -@@ -1219,17 +1220,17 @@ - # https://www.timeanddate.com/news/time/iraq-dumps-daylight-saving.html - - # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S --Rule Iraq 1982 only - May 1 0:00 1:00 D --Rule Iraq 1982 1984 - Oct 1 0:00 0 S --Rule Iraq 1983 only - Mar 31 0:00 1:00 D --Rule Iraq 1984 1985 - Apr 1 0:00 1:00 D --Rule Iraq 1985 1990 - Sep lastSun 1:00s 0 S --Rule Iraq 1986 1990 - Mar lastSun 1:00s 1:00 D -+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 - -+Rule Iraq 1984 1985 - Apr 1 0:00 1:00 - -+Rule Iraq 1985 1990 - Sep lastSun 1:00s 0 - -+Rule Iraq 1986 1990 - Mar lastSun 1:00s 1:00 - - # IATA SSIM (1991/1996) says Apr 1 12:01am UTC; guess the ':01' is a typo. - # Shanks & Pottenger say Iraq did not observe DST 1992/1997; ignore this. - # --Rule Iraq 1991 2007 - Apr 1 3:00s 1:00 D --Rule Iraq 1991 2007 - Oct 1 3:00s 0 S -+Rule Iraq 1991 2007 - Apr 1 3:00s 1:00 - -+Rule Iraq 1991 2007 - Oct 1 3:00s 0 - - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone Asia/Baghdad 2:57:40 - LMT 1890 - 2:57:36 - BMT 1918 # Baghdad Mean Time? -@@ -1501,8 +1502,7 @@ - - # From Hideyuki Suzuki (1998-11-09): - # 'Tokyo' usually stands for the former location of Tokyo Astronomical --# Observatory: 139 degrees 44' 40.90" E (9h 18m 58.727s), --# 35 degrees 39' 16.0" N. -+# Observatory: 139° 44' 40.90" E (9h 18m 58.727s), 35° 39' 16.0" N. - # This data is from 'Rika Nenpyou (Chronological Scientific Tables) 1996' - # edited by National Astronomical Observatory of Japan.... - # JST (Japan Standard Time) has been used since 1888-01-01 00:00 (JST). -@@ -1510,10 +1510,10 @@ - - # From Hideyuki Suzuki (1998-11-16): - # The ordinance No. 51 (1886) established "standard time" in Japan, --# which stands for the time on 135 degrees E. -+# which stands for the time on 135° E. - # In the ordinance No. 167 (1895), "standard time" was renamed to "central - # standard time". And the same ordinance also established "western standard --# time", which stands for the time on 120 degrees E.... But "western standard -+# time", which stands for the time on 120° E.... But "western standard - # time" was abolished in the ordinance No. 529 (1937). In the ordinance No. - # 167, there is no mention regarding for what place western standard time is - # standard.... -@@ -1926,9 +1926,9 @@ - # 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 Kyrgyz 1992 1996 - Apr Sun>=7 0:00s 1:00 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 S -+Rule Kyrgyz 1997 2005 - Mar lastSun 2:30 1:00 - - Rule Kyrgyz 1997 2004 - Oct lastSun 2:30 0 - - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone Asia/Bishkek 4:58:24 - LMT 1924 May 2 -@@ -2060,7 +2060,7 @@ - - # Malaysia - # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S --Rule NBorneo 1935 1941 - Sep 14 0:00 0:20 TS # one-Third Summer -+Rule NBorneo 1935 1941 - Sep 14 0:00 0:20 - - Rule NBorneo 1935 1941 - Dec 14 0:00 0 - - # - # peninsular Malaysia -@@ -2205,7 +2205,7 @@ - # http://zasag.mn/news/view/8969 - - # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S --Rule Mongol 1983 1984 - Apr 1 0:00 1:00 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, - # but McDow says the 2001 switches occurred at 02:00. Also, IATA SSIM -@@ -2222,13 +2222,13 @@ - # Mongolian Government meeting has concluded today to cancel daylight - # saving time adoption in Mongolia. Source: http://zasag.mn/news/view/16192 - --Rule Mongol 1985 1998 - Mar lastSun 0:00 1:00 S -+Rule Mongol 1985 1998 - Mar lastSun 0:00 1:00 - - Rule Mongol 1984 1998 - Sep lastSun 0:00 0 - - # IATA SSIM (1999-09) says Mongolia no longer observes DST. --Rule Mongol 2001 only - Apr lastSat 2:00 1:00 S -+Rule Mongol 2001 only - Apr lastSat 2:00 1:00 - - Rule Mongol 2001 2006 - Sep lastSat 2:00 0 - --Rule Mongol 2002 2006 - Mar lastSat 2:00 1:00 S --Rule Mongol 2015 2016 - Mar lastSat 2:00 1:00 S -+Rule Mongol 2002 2006 - Mar lastSat 2:00 1:00 - -+Rule Mongol 2015 2016 - Mar lastSat 2:00 1:00 - - Rule Mongol 2015 2016 - Sep lastSat 0:00 0 - - - # Zone NAME GMTOFF RULES FORMAT [UNTIL] -@@ -2662,9 +2662,6 @@ - # [Google translation]: "The Council also decided to start daylight - # saving in Palestine as of one o'clock on Saturday morning, - # 2016-03-26, to provide the clock 60 minutes ahead." --# --# From Paul Eggert (2016-03-12): --# Predict spring transitions on March's last Saturday at 01:00 from now on. - - # From Sharef Mustafa (2016-10-19): - # [T]he Palestinian cabinet decision (Mar 8th 2016) published on -@@ -2681,6 +2678,16 @@ - # https://www.timeanddate.com/time/change/gaza-strip/gaza - # https://www.timeanddate.com/time/change/west-bank/hebron - -+# From Sharef Mustafa (2018-03-16): -+# Palestine summer time will start on Mar 24th 2018 by advancing the -+# clock by 60 minutes as per Palestinian cabinet decision published on -+# the offical website, though the decree did not specify the exact -+# time of the time shift. -+# http://www.palestinecabinet.gov.ps/Website/AR/NDecrees/ViewFile.ashx?ID=e7a42ab7-ee23-435a-b9c8-a4f7e81f3817 -+# -+# From Paul Eggert (2018-03-16): -+# For 2016 on, predict spring transitions on March's fourth Saturday at 01:00. -+ - # Rule NAME FROM TO TYPE 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 - -@@ -2710,7 +2717,7 @@ - Rule Palestine 2013 only - Sep Fri>=21 0:00 0 - - Rule Palestine 2014 2015 - Oct Fri>=21 0:00 0 - - Rule Palestine 2015 only - Mar lastFri 24:00 1:00 S --Rule Palestine 2016 max - Mar lastSat 1:00 1:00 S -+Rule Palestine 2016 max - Mar Sat>=22 1:00 1:00 S - Rule Palestine 2016 max - Oct lastSat 1:00 0 - - - # Zone NAME GMTOFF RULES FORMAT [UNTIL] -@@ -2760,11 +2767,11 @@ - # http://www.philstar.com/headlines/2014/08/05/1354152/pnoy-urged-declare-use-daylight-saving-time - - # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S --Rule Phil 1936 only - Nov 1 0:00 1:00 S -+Rule Phil 1936 only - Nov 1 0:00 1:00 - - Rule Phil 1937 only - Feb 1 0:00 0 - --Rule Phil 1954 only - Apr 12 0:00 1:00 S -+Rule Phil 1954 only - Apr 12 0:00 1:00 - - Rule Phil 1954 only - Jul 1 0:00 0 - --Rule Phil 1978 only - Mar 22 0:00 1:00 S -+Rule Phil 1978 only - Mar 22 0:00 1:00 - - Rule Phil 1978 only - Sep 21 0:00 0 - - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone Asia/Manila -15:56:00 - LMT 1844 Dec 31 -@@ -3120,9 +3127,9 @@ - # and is the basis for the information below. - # - # The 1906 transition was effective July 1 and standardized Indochina to --# Phù Liễn Observatory, legally 104 deg. 17'17" east of Paris. -+# Phù Liễn Observatory, legally 104° 17' 17" east of Paris. - # It's unclear whether this meant legal Paris Mean Time (00:09:21) or --# the Paris Meridian (2 deg. 20'14.03" E); the former yields 07:06:30.1333... -+# the Paris Meridian (2° 20' 14.03" E); the former yields 07:06:30.1333... - # and the latter 07:06:29.333... so either way it rounds to 07:06:30, - # which is used below even though the modern-day Phù Liễn Observatory - # is closer to 07:06:31. Abbreviate Phù Liễn Mean Time as PLMT. ---- icedtea-3.8.0/openjdk/jdk/make/data/tzdata/australasia 2018-09-18 10:22:19.723039231 +0200 -+++ icedtea-3.8.0/openjdk/jdk/make/data/tzdata/australasia 2018-09-18 10:25:01.667921146 +0200 -@@ -219,20 +219,20 @@ - - # Lord Howe Island - # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S --Rule LH 1981 1984 - Oct lastSun 2:00 1:00 D --Rule LH 1982 1985 - Mar Sun>=1 2:00 0 S --Rule LH 1985 only - Oct lastSun 2:00 0:30 D --Rule LH 1986 1989 - Mar Sun>=15 2:00 0 S --Rule LH 1986 only - Oct 19 2:00 0:30 D --Rule LH 1987 1999 - Oct lastSun 2:00 0:30 D --Rule LH 1990 1995 - Mar Sun>=1 2:00 0 S --Rule LH 1996 2005 - Mar lastSun 2:00 0 S --Rule LH 2000 only - Aug lastSun 2:00 0:30 D --Rule LH 2001 2007 - Oct lastSun 2:00 0:30 D --Rule LH 2006 only - Apr Sun>=1 2:00 0 S --Rule LH 2007 only - Mar lastSun 2:00 0 S --Rule LH 2008 max - Apr Sun>=1 2:00 0 S --Rule LH 2008 max - Oct Sun>=1 2:00 0:30 D -+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 - -+Rule LH 1986 1989 - Mar Sun>=15 2:00 0 - -+Rule LH 1986 only - Oct 19 2:00 0:30 - -+Rule LH 1987 1999 - Oct lastSun 2:00 0:30 - -+Rule LH 1990 1995 - Mar Sun>=1 2:00 0 - -+Rule LH 1996 2005 - Mar lastSun 2:00 0 - -+Rule LH 2000 only - Aug lastSun 2:00 0:30 - -+Rule LH 2001 2007 - Oct lastSun 2:00 0:30 - -+Rule LH 2006 only - Apr Sun>=1 2:00 0 - -+Rule LH 2007 only - Mar lastSun 2:00 0 - -+Rule LH 2008 max - Apr Sun>=1 2:00 0 - -+Rule LH 2008 max - Oct Sun>=1 2:00 0:30 - - Zone Australia/Lord_Howe 10:36:20 - LMT 1895 Feb - 10:00 - AEST 1981 Mar - 10:30 LH +1030/+1130 1985 Jul -@@ -390,15 +390,15 @@ - # practice than guessing no DST. - - # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S --Rule Fiji 1998 1999 - Nov Sun>=1 2:00 1:00 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 S -+Rule Fiji 2009 only - Nov 29 2:00 1:00 - - Rule Fiji 2010 only - Mar lastSun 3:00 0 - --Rule Fiji 2010 2013 - Oct Sun>=21 2:00 1:00 S -+Rule Fiji 2010 2013 - Oct Sun>=21 2:00 1:00 - - Rule Fiji 2011 only - Mar Sun>=1 3:00 0 - - Rule Fiji 2012 2013 - Jan Sun>=18 3:00 0 - - Rule Fiji 2014 only - Jan Sun>=18 2:00 0 - --Rule Fiji 2014 max - Nov Sun>=1 2:00 1:00 S -+Rule Fiji 2014 max - Nov Sun>=1 2:00 1:00 - - Rule Fiji 2015 max - Jan Sun>=14 3:00 0 - - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone Pacific/Fiji 11:55:44 - LMT 1915 Oct 26 # Suva -@@ -429,11 +429,11 @@ - 12:00 - +12 - Zone Pacific/Enderbury -11:24:20 - LMT 1901 - -12:00 - -12 1979 Oct -- -11:00 - -11 1995 -+ -11:00 - -11 1994 Dec 31 - 13:00 - +13 - Zone Pacific/Kiritimati -10:29:20 - LMT 1901 - -10:40 - -1040 1979 Oct -- -10:00 - -10 1995 -+ -10:00 - -10 1994 Dec 31 - 14:00 - +14 - - # N Mariana Is -@@ -470,9 +470,9 @@ - - # New Caledonia - # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S --Rule NC 1977 1978 - Dec Sun>=1 0:00 1:00 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 S -+Rule NC 1996 only - Dec 1 2:00s 1:00 - - # Shanks & Pottenger say the following was at 2:00; go with IATA. - Rule NC 1997 only - Mar 2 2:00s 0 - - # Zone NAME GMTOFF RULES FORMAT [UNTIL] -@@ -492,27 +492,28 @@ - Rule NZ 1934 1940 - Apr lastSun 2:00 0 M - Rule NZ 1934 1940 - Sep lastSun 2:00 0:30 S - Rule NZ 1946 only - Jan 1 0:00 0 S --# Since 1957 Chatham has been 45 minutes ahead of NZ, but there's no --# convenient single notation for the date and time of this transition --# so we must duplicate the Rule lines. -+# Since 1957 Chatham has been 45 minutes ahead of NZ, but until 2018a -+# there was no documented single notation for the date and time of this -+# transition. Duplicate the Rule lines for now, to give the 2018a change -+# time to percolate out. - Rule NZ 1974 only - Nov Sun>=1 2:00s 1:00 D --Rule Chatham 1974 only - Nov Sun>=1 2:45s 1:00 D -+Rule Chatham 1974 only - Nov Sun>=1 2:45s 1:00 - - Rule NZ 1975 only - Feb lastSun 2:00s 0 S --Rule Chatham 1975 only - Feb lastSun 2:45s 0 S -+Rule Chatham 1975 only - Feb lastSun 2:45s 0 - - Rule NZ 1975 1988 - Oct lastSun 2:00s 1:00 D --Rule Chatham 1975 1988 - Oct lastSun 2:45s 1:00 D -+Rule Chatham 1975 1988 - Oct lastSun 2:45s 1:00 - - Rule NZ 1976 1989 - Mar Sun>=1 2:00s 0 S --Rule Chatham 1976 1989 - Mar Sun>=1 2:45s 0 S -+Rule Chatham 1976 1989 - Mar Sun>=1 2:45s 0 - - Rule NZ 1989 only - Oct Sun>=8 2:00s 1:00 D --Rule Chatham 1989 only - Oct Sun>=8 2:45s 1:00 D -+Rule Chatham 1989 only - Oct Sun>=8 2:45s 1:00 - - Rule NZ 1990 2006 - Oct Sun>=1 2:00s 1:00 D --Rule Chatham 1990 2006 - Oct Sun>=1 2:45s 1:00 D -+Rule Chatham 1990 2006 - Oct Sun>=1 2:45s 1:00 - - Rule NZ 1990 2007 - Mar Sun>=15 2:00s 0 S --Rule Chatham 1990 2007 - Mar Sun>=15 2:45s 0 S -+Rule Chatham 1990 2007 - Mar Sun>=15 2:45s 0 - - Rule NZ 2007 max - Sep lastSun 2:00s 1:00 D --Rule Chatham 2007 max - Sep lastSun 2:45s 1:00 D -+Rule Chatham 2007 max - Sep lastSun 2:45s 1:00 - - Rule NZ 2008 max - Apr Sun>=1 2:00s 0 S --Rule Chatham 2008 max - Apr Sun>=1 2:45s 0 S -+Rule Chatham 2008 max - Apr Sun>=1 2:45s 0 - - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone Pacific/Auckland 11:39:04 - LMT 1868 Nov 2 - 11:30 NZ NZ%sT 1946 Jan 1 -@@ -536,9 +537,9 @@ - # Cook Is - # From Shanks & Pottenger: - # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S --Rule Cook 1978 only - Nov 12 0:00 0:30 HS -+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 HS -+Rule Cook 1979 1990 - Oct lastSun 0:00 0:30 - - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone Pacific/Rarotonga -10:39:04 - LMT 1901 # Avarua - -10:30 - -1030 1978 Nov 12 -@@ -679,11 +680,11 @@ - # Assume the pattern instituted in 2012 will continue indefinitely. - - # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S --Rule WS 2010 only - Sep lastSun 0:00 1 D --Rule WS 2011 only - Apr Sat>=1 4:00 0 S --Rule WS 2011 only - Sep lastSat 3:00 1 D --Rule WS 2012 max - Apr Sun>=1 4:00 0 S --Rule WS 2012 max - Sep lastSun 3:00 1 D -+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 - -+Rule WS 2012 max - Apr Sun>=1 4:00 0 - -+Rule WS 2012 max - Sep lastSun 3:00 1 - - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone Pacific/Apia 12:33:04 - LMT 1892 Jul 5 - -11:26:56 - LMT 1911 -@@ -723,11 +724,11 @@ - - # Tonga - # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S --Rule Tonga 1999 only - Oct 7 2:00s 1:00 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 S -+Rule Tonga 2000 2001 - Nov Sun>=1 2:00 1:00 - - Rule Tonga 2001 2002 - Jan lastSun 2:00 0 - --Rule Tonga 2016 only - Nov Sun>=1 2:00 1:00 S -+Rule Tonga 2016 only - Nov Sun>=1 2:00 1:00 - - Rule Tonga 2017 only - Jan Sun>=15 3:00 0 - - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone Pacific/Tongatapu 12:19:20 - LMT 1901 -@@ -804,12 +805,12 @@ - - # Vanuatu - # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S --Rule Vanuatu 1983 only - Sep 25 0:00 1:00 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 S --Rule Vanuatu 1985 1991 - Sep Sun>=23 0:00 1:00 S -+Rule Vanuatu 1984 only - Oct 23 0:00 1:00 - -+Rule Vanuatu 1985 1991 - Sep Sun>=23 0:00 1:00 - - Rule Vanuatu 1992 1993 - Jan Sun>=23 0:00 0 - --Rule Vanuatu 1992 only - Oct Sun>=23 0:00 1:00 S -+Rule Vanuatu 1992 only - Oct Sun>=23 0:00 1:00 - - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone Pacific/Efate 11:13:16 - LMT 1912 Jan 13 # Vila - 11:00 Vanuatu +11/+12 -@@ -1108,6 +1109,13 @@ - # South Australian time even though it's located in Western Australia. - - # Queensland -+ -+# From Paul Eggert (2018-02-26): -+# I lack access to the following source for Queensland DST: -+# Pearce C. History of daylight saving time in Queensland. -+# Queensland Hist J. 2017 Aug;23(6):389-403 -+# https://search.informit.com.au/documentSummary;dn=994682348436426;res=IELHSS -+ - # From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06): - # # The state of QUEENSLAND.. [ Courtesy Qld. Dept Premier Econ&Trade Devel ] - # # [ Dec 1990 ] -@@ -1534,6 +1542,12 @@ - # "declared it the same day [throughout] the country as of Jan. 1, 1995" - # as part of the competition to be first into the 21st century. - -+# From Kerry Shetline (2018-02-03): -+# December 31 was the day that was skipped, so that the transition -+# would be from Friday December 30, 1994 to Sunday January 1, 1995. -+# From Paul Eggert (2018-02-04): -+# One source for this is page 202 of: Bartky IR. One Time Fits All: -+# The Campaigns for Global Uniformity (2007). - - # Kwajalein - -@@ -1626,7 +1640,7 @@ - - # From Howie Phelps (1999-11-10), who talked to a Pitcairner via shortwave: - # Betty Christian told me yesterday that their local time is the same as --# Pacific Standard Time. They used to be 1/2 hour different from us here in -+# Pacific Standard Time. They used to be ½ hour different from us here in - # Sacramento but it was changed a couple of years ago. - - -@@ -1665,7 +1679,7 @@ - # 12 hours and 20 minutes ahead of GMT. When New Zealand adjusted its - # standard time in 1940s, Tonga had the choice of subtracting from its - # local time to come on the same standard time as New Zealand or of --# advancing its time to maintain the differential of 13 degrees -+# advancing its time to maintain the differential of 13° - # (approximately 50 minutes ahead of New Zealand time). - # - # Because His Majesty King Tāufaʻāhau Tupou IV, then Crown Prince ---- icedtea-3.8.0/openjdk/jdk/make/data/tzdata/europe 2018-09-18 10:22:19.723039231 +0200 -+++ icedtea-3.8.0/openjdk/jdk/make/data/tzdata/europe 2018-09-18 10:25:01.667921146 +0200 -@@ -140,8 +140,8 @@ - # along the towpath within a few yards of it.' - # - # I have a one inch to one mile map of London and my estimate of the stone's --# position is 51 degrees 28' 30" N, 0 degrees 18' 45" W. The longitude should --# be within about +-2". The Ordnance Survey grid reference is TQ172761. -+# position is 51° 28' 30" N, 0° 18' 45" W. The longitude should -+# be within about ±2". The Ordnance Survey grid reference is TQ172761. - # - # [This yields GMTOFF = -0:01:15 for London LMT in the 18th century.] - -@@ -181,7 +181,7 @@ - # after-hours daylight in which to pursue his research. - # In 1895 he presented a paper to the Wellington Philosophical Society - # that proposed a two-hour daylight-saving shift. See: --# Hudson GV. On seasonal time-adjustment in countries south of lat. 30 deg. -+# Hudson GV. On seasonal time-adjustment in countries south of lat. 30°. - # Transactions and Proceedings of the New Zealand Institute. 1895;28:734 - # http://rsnz.natlib.govt.nz/volume/rsnz_28/rsnz_28_00_006110.html - # Although some interest was expressed in New Zealand, his proposal -@@ -531,11 +531,25 @@ - Link Europe/London Europe/Guernsey - Link Europe/London Europe/Isle_of_Man - --# From Paul Eggert (2018-01-19): -+# From Paul Eggert (2018-02-15): -+# In January 2018 we discovered that the negative SAVE values in the -+# Eire rules cause problems with tests for ICU: -+# https://mm.icann.org/pipermail/tz/2018-January/025825.html -+# and with tests for OpenJDK: -+# https://mm.icann.org/pipermail/tz/2018-January/025822.html -+# -+# To work around this problem, the build procedure can translate the -+# following data into two forms, one with negative SAVE values and the -+# other form with a traditional approximation for Irish time stamps -+# after 1971-10-31 02:00 UTC; although this approximation has tm_isdst -+# flags that are reversed, its UTC offsets are correct and this often -+# suffices. This source file currently uses only nonnegative SAVE -+# values, but this is intended to change and downstream code should -+# not rely on it. -+# - # The following is like GB-Eire and EU, except with standard time in --# summer and negative daylight saving time in winter. --# Although currently commented out, this will need to become uncommented --# once the ICU/OpenJDK workaround is removed; see below. -+# 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 Eire 1971 only - Oct 31 2:00u -1:00 GMT - #Rule Eire 1972 1980 - Mar Sun>=16 2:00u 0 IST -@@ -556,24 +570,12 @@ - 0:00 1:00 IST 1947 Nov 2 2:00s - 0:00 - GMT 1948 Apr 18 2:00s - 0:00 GB-Eire GMT/IST 1968 Oct 27 --# From Paul Eggert (2018-01-18): --# The next line should look like this: -+# The next line is for when negative SAVE values are used. - # 1:00 Eire IST/GMT --# However, in January 2018 we discovered that the Eire rules cause --# problems with tests for ICU: --# https://mm.icann.org/pipermail/tz/2018-January/025825.html --# and with tests for OpenJDK: --# https://mm.icann.org/pipermail/tz/2018-January/025822.html --# To work around this problem, use a traditional approximation for --# time stamps after 1971-10-31 02:00 UTC, to give ICU and OpenJDK --# developers breathing room to fix bugs. This approximation has --# correct UTC offsets, but results in tm_isdst flags are the reverse --# of what they should be. This workaround is temporary and should be --# removed reasonably soon. -+# These three lines are for when SAVE values are always nonnegative. - 1:00 - IST 1971 Oct 31 2:00u - 0:00 GB-Eire GMT/IST 1996 - 0:00 EU GMT/IST --# End of workaround for ICU and OpenJDK bugs. - - - ############################################################################### -@@ -1557,21 +1559,21 @@ - # http://www.almanak.hi.is/klukkan.html - # - # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S --Rule Iceland 1917 1919 - Feb 19 23:00 1:00 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 - --Rule Iceland 1921 only - Mar 19 23:00 1:00 S -+Rule Iceland 1921 only - Mar 19 23:00 1:00 - - Rule Iceland 1921 only - Jun 23 1:00 0 - --Rule Iceland 1939 only - Apr 29 23:00 1:00 S -+Rule Iceland 1939 only - Apr 29 23:00 1:00 - - Rule Iceland 1939 only - Oct 29 2:00 0 - --Rule Iceland 1940 only - Feb 25 2:00 1:00 S -+Rule Iceland 1940 only - Feb 25 2:00 1:00 - - Rule Iceland 1940 1941 - Nov Sun>=2 1:00s 0 - --Rule Iceland 1941 1942 - Mar Sun>=2 1:00s 1:00 S -+Rule Iceland 1941 1942 - Mar Sun>=2 1:00s 1:00 - - # 1943-1946 - first Sunday in March until first Sunday in winter --Rule Iceland 1943 1946 - Mar Sun>=1 1:00s 1:00 S -+Rule Iceland 1943 1946 - Mar Sun>=1 1:00s 1:00 - - Rule Iceland 1942 1948 - Oct Sun>=22 1:00s 0 - - # 1947-1967 - first Sunday in April until first Sunday in winter --Rule Iceland 1947 1967 - Apr Sun>=1 1:00s 1:00 S -+Rule Iceland 1947 1967 - Apr Sun>=1 1:00s 1:00 - - # 1949 and 1967 Oct transitions delayed by 1 week - Rule Iceland 1949 only - Oct 30 1:00s 0 - - Rule Iceland 1950 1966 - Oct Sun>=22 1:00s 0 - -@@ -2161,15 +2163,19 @@ - 1:00 EU CE%sT - - # Portugal --# -+ - # From Paul Eggert (2014-08-11), after a heads-up from Stephen Colebourne: - # According to a Portuguese decree (1911-05-26) - # https://dre.pt/application/dir/pdf1sdip/1911/05/12500/23132313.pdf - # Lisbon was at -0:36:44.68, but switched to GMT on 1912-01-01 at 00:00. --# Round the old offset to -0:36:45. This agrees with Willett but disagrees --# with Shanks, who says the transition occurred on 1911-05-24 at 00:00 for --# Europe/Lisbon, Atlantic/Azores, and Atlantic/Madeira. -+# Round the old offset to -0:36:45. This agrees with Willett.... - # -+# From Michael Deckers (2018-02-15): -+# article 5 [of the 1911 decree; Deckers's translation] ...: -+# These dispositions shall enter into force at the instant at which, -+# according to the 2nd article, the civil day January 1, 1912 begins, -+# all clocks therefore having to be advanced or set back correspondingly ... -+ - # From Rui Pedro Salgueiro (1992-11-12): - # Portugal has recently (September, 27) changed timezone - # (from WET to MET or CET) to harmonize with EEC. -@@ -2252,7 +2258,7 @@ - # - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone Europe/Lisbon -0:36:45 - LMT 1884 -- -0:36:45 - LMT 1912 Jan 1 # Lisbon Mean Time -+ -0:36:45 - LMT 1912 Jan 1 0:00u # Lisbon MT - 0:00 Port WE%sT 1966 Apr 3 2:00 - 1:00 - CET 1976 Sep 26 1:00 - 0:00 Port WE%sT 1983 Sep 25 1:00s -@@ -2261,7 +2267,7 @@ - 0:00 EU WE%sT - # This Zone can be simplified once we assume zic %z. - Zone Atlantic/Azores -1:42:40 - LMT 1884 # Ponta Delgada -- -1:54:32 - HMT 1912 Jan 1 # Horta Mean Time -+ -1:54:32 - HMT 1912 Jan 1 2:00u # Horta MT - -2:00 Port -02/-01 1942 Apr 25 22:00s - -2:00 Port +00 1942 Aug 15 22:00s - -2:00 Port -02/-01 1943 Apr 17 22:00s -@@ -2277,7 +2283,7 @@ - -1:00 EU -01/+00 - # This Zone can be simplified once we assume zic %z. - Zone Atlantic/Madeira -1:07:36 - LMT 1884 # Funchal -- -1:07:36 - FMT 1912 Jan 1 # Funchal Mean Time -+ -1:07:36 - FMT 1912 Jan 1 1:00u # Funchal MT - -1:00 Port -01/+00 1942 Apr 25 22:00s - -1:00 Port +01 1942 Aug 15 22:00s - -1:00 Port -01/+00 1943 Apr 17 22:00s -@@ -2615,13 +2621,13 @@ - - # From Vladimir Karpinsky (2014-07-08): - # LMT in Moscow (before Jul 3, 1916) is 2:30:17, that was defined by Moscow --# Observatory (coordinates: 55 deg. 45'29.70", 37 deg. 34'05.30").... -+# Observatory (coordinates: 55° 45' 29.70", 37° 34' 05.30").... - # LMT in Moscow since Jul 3, 1916 is 2:31:01 as a result of new standard. - # (The info is from the book by Byalokoz ... p. 18.) - # The time in St. Petersburg as capital of Russia was defined by - # Pulkov observatory, near St. Petersburg. In 1916 LMT Moscow - # was synchronized with LMT St. Petersburg (+30 minutes), (Pulkov observatory --# coordinates: 59 deg. 46'18.70", 30 deg. 19'40.70") so 30 deg. 19'40.70" > -+# coordinates: 59° 46' 18.70", 30° 19' 40.70") so 30° 19' 40.70" > - # 2h01m18.7s = 2:01:19. LMT Moscow = LMT St.Petersburg + 30m 2:01:19 + 0:30 = - # 2:31:19 ... - # -@@ -3450,7 +3456,7 @@ - # three degrees, or twelve minutes of time, to the west of the - # meridian of the Observatory of Stockholm". The law is dated 1878-05-31. - # --# The observatory at that time had the meridian 18 degrees 03' 30" -+# The observatory at that time had the meridian 18° 03' 30" - # eastern longitude = 01:12:14 in time. Less 12 minutes gives the - # national standard time as 01:00:14 ahead of GMT.... - # -@@ -3554,7 +3560,7 @@ - # From Alois Treindl (2013-09-11): - # The Federal regulations say - # https://www.admin.ch/opc/de/classified-compilation/20071096/index.html --# ... the meridian for Bern mean time ... is 7 degrees 26' 22.50". -+# ... the meridian for Bern mean time ... is 7° 26' 22.50". - # Expressed in time, it is 0h29m45.5s. - - # From Pierre-Yves Berger (2013-09-11): ---- icedtea-3.8.0/openjdk/jdk/make/data/tzdata/northamerica 2018-09-18 10:22:19.723039231 +0200 -+++ icedtea-3.8.0/openjdk/jdk/make/data/tzdata/northamerica 2018-09-18 10:25:01.667921146 +0200 -@@ -48,7 +48,7 @@ - # in New York City (1869-10). His 1870 proposal was based on Washington, DC, - # but in 1872-05 he moved the proposed origin to Greenwich. - --# From Paul Eggert (2016-09-21): -+# From Paul Eggert (2018-03-20): - # Dowd's proposal left many details unresolved, such as where to draw - # lines between time zones. The key individual who made time zones - # work in the US was William Frederick Allen - railway engineer, -@@ -59,10 +59,9 @@ - # to the General Time Convention on 1883-04-11, saying that his plan - # meant "local time would be practically abolished" - a plus for - # railway scheduling. By the next convention on 1883-10-11 nearly all --# railroads had agreed and it took effect on 1883-11-18 at 12:00. --# That Sunday was called the "day of two noons", as the eastern parts --# of the new zones observed noon twice. Allen witnessed the --# transition in New York City, writing: -+# railroads had agreed and it took effect on 1883-11-18. That Sunday -+# was called the "day of two noons", as some locations observed noon -+# twice. Allen witnessed the transition in New York City, writing: - # - # I heard the bells of St. Paul's strike on the old time. Four - # minutes later, obedient to the electrical signal from the Naval -@@ -447,8 +446,7 @@ - # ...according to the Census Bureau, the largest city is Beulah (although - # it's commonly referred to as Beulah-Hazen, with Hazen being the next - # largest city in Mercer County). Google Maps places Beulah's city hall --# at 47 degrees 15' 51" N, 101 degrees 46' 40" W, which yields an offset --# of 6h47'07". -+# at 47° 15' 51" N, 101° 46' 40" W, which yields an offset of 6h47'07". - - Zone America/North_Dakota/Beulah -6:47:07 - LMT 1883 Nov 18 12:12:53 - -7:00 US M%sT 2010 Nov 7 2:00 -@@ -481,7 +479,7 @@ - # California, northern Idaho (Benewah, Bonner, Boundary, Clearwater, - # Kootenai, Latah, Lewis, Nez Perce, and Shoshone counties, Idaho county - # north of the Salmon River, and the towns of Burgdorf and Warren), --# Nevada (except West Wendover), Oregon (except the northern 3/4 of -+# Nevada (except West Wendover), Oregon (except the northern ¾ of - # Malheur county), and Washington - - # From Paul Eggert (2016-08-20): -@@ -979,6 +977,13 @@ - -5:00 - EST 2006 - -5:00 US E%sT - -+# From Paul Eggert (2018-03-20): -+# The Louisville & Nashville Railroad's 1883-11-18 change occurred at -+# 10:00 old local time; train were supposed to come to a standstill -+# for precisely 18 minutes. See Bartky Fig. 1 (page 50). It is not -+# clear how this matched civil time in Louisville, so for now continue -+# to assume Louisville switched at noon new local time, like New York. -+# - # 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 -@@ -3287,8 +3292,8 @@ - # http://www.jamaicaobserver.com/columns/The-politician-in-all-of-us_17573647 - # - # Zone NAME GMTOFF RULES FORMAT [UNTIL] --Zone America/Jamaica -5:07:11 - LMT 1890 # Kingston -- -5:07:11 - KMT 1912 Feb # Kingston Mean Time -+Zone America/Jamaica -5:07:10 - LMT 1890 # Kingston -+ -5:07:10 - KMT 1912 Feb # Kingston Mean Time - -5:00 - EST 1974 - -5:00 US E%sT 1984 - -5:00 - EST -@@ -3438,7 +3443,7 @@ - # - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone America/Grand_Turk -4:44:32 - LMT 1890 -- -5:07:11 - KMT 1912 Feb # Kingston Mean Time -+ -5:07:10 - KMT 1912 Feb # Kingston Mean Time - -5:00 - EST 1979 - -5:00 US E%sT 2015 Nov Sun>=1 2:00 - -4:00 - AST 2018 Mar 11 3:00 ---- icedtea-3.8.0/openjdk/jdk/make/data/tzdata/southamerica 2018-09-18 10:22:19.723039231 +0200 -+++ icedtea-3.8.0/openjdk/jdk/make/data/tzdata/southamerica 2018-09-18 10:25:01.667921146 +0200 -@@ -70,28 +70,28 @@ - # AR was chosen because they are the ISO letters that represent Argentina. - - # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S --Rule Arg 1930 only - Dec 1 0:00 1:00 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 S -+Rule Arg 1931 only - Oct 15 0:00 1:00 - - Rule Arg 1932 1940 - Mar 1 0:00 0 - --Rule Arg 1932 1939 - Nov 1 0:00 1:00 S --Rule Arg 1940 only - Jul 1 0:00 1:00 S -+Rule Arg 1932 1939 - Nov 1 0:00 1:00 - -+Rule Arg 1940 only - Jul 1 0:00 1:00 - - Rule Arg 1941 only - Jun 15 0:00 0 - --Rule Arg 1941 only - Oct 15 0:00 1:00 S -+Rule Arg 1941 only - Oct 15 0:00 1:00 - - Rule Arg 1943 only - Aug 1 0:00 0 - --Rule Arg 1943 only - Oct 15 0:00 1:00 S -+Rule Arg 1943 only - Oct 15 0:00 1:00 - - Rule Arg 1946 only - Mar 1 0:00 0 - --Rule Arg 1946 only - Oct 1 0:00 1:00 S -+Rule Arg 1946 only - Oct 1 0:00 1:00 - - Rule Arg 1963 only - Oct 1 0:00 0 - --Rule Arg 1963 only - Dec 15 0:00 1:00 S -+Rule Arg 1963 only - Dec 15 0:00 1:00 - - Rule Arg 1964 1966 - Mar 1 0:00 0 - --Rule Arg 1964 1966 - Oct 15 0:00 1:00 S -+Rule Arg 1964 1966 - Oct 15 0:00 1:00 - - Rule Arg 1967 only - Apr 2 0:00 0 - --Rule Arg 1967 1968 - Oct Sun>=1 0:00 1:00 S -+Rule Arg 1967 1968 - Oct Sun>=1 0:00 1:00 - - Rule Arg 1968 1969 - Apr Sun>=1 0:00 0 - --Rule Arg 1974 only - Jan 23 0:00 1:00 S -+Rule Arg 1974 only - Jan 23 0:00 1:00 - - Rule Arg 1974 only - May 1 0:00 0 - --Rule Arg 1988 only - Dec 1 0:00 1:00 S -+Rule Arg 1988 only - Dec 1 0:00 1:00 - - # - # From Hernan G. Otero (1995-06-26): - # These corrections were contributed by InterSoft Argentina S.A., -@@ -99,7 +99,7 @@ - # Talleres de Hidrografía Naval Argentina - # (Argentine Naval Hydrography Institute) - Rule Arg 1989 1993 - Mar Sun>=1 0:00 0 - --Rule Arg 1989 1992 - Oct Sun>=15 0:00 1:00 S -+Rule Arg 1989 1992 - Oct Sun>=15 0:00 1:00 - - # - # From Hernan G. Otero (1995-06-26): - # From this moment on, the law that mandated the daylight saving -@@ -110,7 +110,7 @@ - # On October 3, 1999, 0:00 local, Argentina implemented daylight savings time, - # which did not result in the switch of a time zone, as they stayed 9 hours - # from the International Date Line. --Rule Arg 1999 only - Oct Sun>=1 0:00 1:00 S -+Rule Arg 1999 only - Oct Sun>=1 0:00 1:00 - - # From Paul Eggert (2007-12-28): - # DST was set to expire on March 5, not March 3, but since it was converted - # to standard time on March 3 it's more convenient for us to pretend that -@@ -213,9 +213,9 @@ - # la modificación del huso horario, ya que 2009 nos encuentra con - # crecimiento en la producción y distribución energética." - --Rule Arg 2007 only - Dec 30 0:00 1:00 S -+Rule Arg 2007 only - Dec 30 0:00 1:00 - - Rule Arg 2008 2009 - Mar Sun>=15 0:00 0 - --Rule Arg 2008 only - Oct Sun>=15 0:00 1:00 S -+Rule Arg 2008 only - Oct Sun>=15 0:00 1:00 - - - # From Mariano Absatz (2004-05-21): - # Today it was officially published that the Province of Mendoza is changing -@@ -225,12 +225,14 @@ - # It's Law No. 7,210. This change is due to a public power emergency, so for - # now we'll assume it's for this year only. - # --# From Paul Eggert (2014-08-09): -+# From Paul Eggert (2018-01-31): - # Hora de verano para la República Argentina - # http://buenasiembra.com.ar/esoterismo/astrologia/hora-de-verano-de-la-republica-argentina-27.html - # says that standard time in Argentina from 1894-10-31 - # to 1920-05-01 was -4:16:48.25. Go with this more-precise value --# over Shanks & Pottenger. -+# over Shanks & Pottenger. It is upward compatible with Milne, who -+# says Córdoba time was -4:16:48.2. -+ - # - # From Mariano Absatz (2004-06-05): - # These media articles from a major newspaper mostly cover the current state: -@@ -404,9 +406,9 @@ - # rules...San Luis is still using "Western ARgentina Time" and it got - # stuck on Summer daylight savings time even though the summer is over. - --# From Paul Eggert (2013-09-05): -+# From Paul Eggert (2018-01-23): - # Perhaps San Luis operates on the legal fiction that it is at -04 --# with perpetual summer time, but ordinary usage typically seems to -+# with perpetual daylight saving time, but ordinary usage typically seems to - # just say it's at -03; see, for example, - # https://es.wikipedia.org/wiki/Hora_oficial_argentina - # We've documented similar situations as being plain changes to -@@ -415,9 +417,6 @@ - # plus is that this silences a zic complaint that there's no POSIX TZ - # setting for time stamps past 2038. - --# From Paul Eggert (2013-02-21): --# Milne says Córdoba time was -4:16:48.2. Round to the nearest second. -- - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - # - # Buenos Aires (BA), Capital Federal (CF), -@@ -552,7 +551,7 @@ - # San Luis (SL) - - Rule SanLuis 2008 2009 - Mar Sun>=8 0:00 0 - --Rule SanLuis 2007 2008 - Oct Sun>=8 0:00 1:00 S -+Rule SanLuis 2007 2008 - Oct Sun>=8 0:00 1:00 - - - Zone America/Argentina/San_Luis -4:25:24 - LMT 1894 Oct 31 - -4:16:48 - CMT 1920 May -@@ -794,14 +793,14 @@ - # Rule NAME FROM TO TYPE 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 S -+Rule Brazil 1931 only - Oct 3 11:00 1:00 - - Rule Brazil 1932 1933 - Apr 1 0:00 0 - --Rule Brazil 1932 only - Oct 3 0:00 1:00 S -+Rule Brazil 1932 only - Oct 3 0:00 1:00 - - # Decree 23,195 (1933-10-10) - # revoked DST. - # Decree 27,496 (1949-11-24) - # Decree 27,998 (1950-04-13) --Rule Brazil 1949 1952 - Dec 1 0:00 1:00 S -+Rule Brazil 1949 1952 - Dec 1 0:00 1:00 - - Rule Brazil 1950 only - Apr 16 1:00 0 - - Rule Brazil 1951 1952 - Apr 1 0:00 0 - - # Decree 32,308 (1953-02-24) -@@ -813,51 +812,51 @@ - # in SP, RJ, GB, MG, ES, due to the prolongation of the drought. - # Decree 53,071 (1963-12-03) - # extended the above decree to all of the national territory on 12-09. --Rule Brazil 1963 only - Dec 9 0:00 1:00 S -+Rule Brazil 1963 only - Dec 9 0:00 1:00 - - # Decree 53,604 (1964-02-25) - # extended summer time by one day to 1964-03-01 00:00 (start of school). - Rule Brazil 1964 only - Mar 1 0:00 0 - - # Decree 55,639 (1965-01-27) --Rule Brazil 1965 only - Jan 31 0:00 1:00 S -+Rule Brazil 1965 only - Jan 31 0:00 1:00 - - Rule Brazil 1965 only - Mar 31 0:00 0 - - # Decree 57,303 (1965-11-22) --Rule Brazil 1965 only - Dec 1 0:00 1:00 S -+Rule Brazil 1965 only - Dec 1 0:00 1:00 - - # Decree 57,843 (1966-02-18) - Rule Brazil 1966 1968 - Mar 1 0:00 0 - --Rule Brazil 1966 1967 - Nov 1 0:00 1:00 S -+Rule Brazil 1966 1967 - Nov 1 0:00 1:00 - - # Decree 63,429 (1968-10-15) - # revoked DST. - # Decree 91,698 (1985-09-27) --Rule Brazil 1985 only - Nov 2 0:00 1:00 S -+Rule Brazil 1985 only - Nov 2 0:00 1:00 - - # Decree 92,310 (1986-01-21) - # Decree 92,463 (1986-03-13) - Rule Brazil 1986 only - Mar 15 0:00 0 - - # Decree 93,316 (1986-10-01) --Rule Brazil 1986 only - Oct 25 0:00 1:00 S -+Rule Brazil 1986 only - Oct 25 0:00 1:00 - - Rule Brazil 1987 only - Feb 14 0:00 0 - - # Decree 94,922 (1987-09-22) --Rule Brazil 1987 only - Oct 25 0:00 1:00 S -+Rule Brazil 1987 only - Oct 25 0:00 1:00 - - Rule Brazil 1988 only - Feb 7 0:00 0 - - # Decree 96,676 (1988-09-12) - # except for the states of AC, AM, PA, RR, RO, and AP (then a territory) --Rule Brazil 1988 only - Oct 16 0:00 1:00 S -+Rule Brazil 1988 only - Oct 16 0:00 1:00 - - Rule Brazil 1989 only - Jan 29 0:00 0 - - # Decree 98,077 (1989-08-21) - # with the same exceptions --Rule Brazil 1989 only - Oct 15 0:00 1:00 S -+Rule Brazil 1989 only - Oct 15 0:00 1:00 - - Rule Brazil 1990 only - Feb 11 0:00 0 - - # Decree 99,530 (1990-09-17) - # adopted by RS, SC, PR, SP, RJ, ES, MG, GO, MS, DF. - # Decree 99,629 (1990-10-19) adds BA, MT. --Rule Brazil 1990 only - Oct 21 0:00 1:00 S -+Rule Brazil 1990 only - Oct 21 0:00 1:00 - - Rule Brazil 1991 only - Feb 17 0:00 0 - - # Unnumbered decree (1991-09-25) - # adopted by RS, SC, PR, SP, RJ, ES, MG, BA, GO, MT, MS, DF. --Rule Brazil 1991 only - Oct 20 0:00 1:00 S -+Rule Brazil 1991 only - Oct 20 0:00 1:00 - - Rule Brazil 1992 only - Feb 9 0:00 0 - - # Unnumbered decree (1992-10-16) - # adopted by same states. --Rule Brazil 1992 only - Oct 25 0:00 1:00 S -+Rule Brazil 1992 only - Oct 25 0:00 1:00 - - Rule Brazil 1993 only - Jan 31 0:00 0 - - # Decree 942 (1993-09-28) - # adopted by same states, plus AM. -@@ -867,12 +866,12 @@ - # adopted by same states, plus MT and TO. - # Decree 1,674 (1995-10-13) - # adds AL, SE. --Rule Brazil 1993 1995 - Oct Sun>=11 0:00 1:00 S -+Rule Brazil 1993 1995 - Oct Sun>=11 0:00 1:00 - - Rule Brazil 1994 1995 - Feb Sun>=15 0:00 0 - - Rule Brazil 1996 only - Feb 11 0:00 0 - - # Decree 2,000 (1996-09-04) - # adopted by same states, minus AL, SE. --Rule Brazil 1996 only - Oct 6 0:00 1:00 S -+Rule Brazil 1996 only - Oct 6 0:00 1:00 - - Rule Brazil 1997 only - Feb 16 0:00 0 - - # From Daniel C. Sobral (1998-02-12): - # In 1997, the DS began on October 6. The stated reason was that -@@ -882,19 +881,19 @@ - # to help dealing with the shortages of electric power. - # - # Decree 2,317 (1997-09-04), adopted by same states. --Rule Brazil 1997 only - Oct 6 0:00 1:00 S -+Rule Brazil 1997 only - Oct 6 0:00 1:00 - - # Decree 2,495 - # (1998-02-10) - Rule Brazil 1998 only - Mar 1 0:00 0 - - # Decree 2,780 (1998-09-11) - # adopted by the same states as before. --Rule Brazil 1998 only - Oct 11 0:00 1:00 S -+Rule Brazil 1998 only - Oct 11 0:00 1:00 - - Rule Brazil 1999 only - Feb 21 0:00 0 - - # Decree 3,150 - # (1999-08-23) adopted by same states. - # Decree 3,188 (1999-09-30) - # adds SE, AL, PB, PE, RN, CE, PI, MA and RR. --Rule Brazil 1999 only - Oct 3 0:00 1:00 S -+Rule Brazil 1999 only - Oct 3 0:00 1:00 - - Rule Brazil 2000 only - Feb 27 0:00 0 - - # Decree 3,592 (2000-09-06) - # adopted by the same states as before. -@@ -904,34 +903,34 @@ - # repeals DST in SE, AL, PB, RN, CE, PI and MA, effective 2000-10-22 00:00. - # Decree 3,916 - # (2001-09-13) reestablishes DST in AL, CE, MA, PB, PE, PI, RN, SE. --Rule Brazil 2000 2001 - Oct Sun>=8 0:00 1:00 S -+Rule Brazil 2000 2001 - Oct Sun>=8 0:00 1:00 - - Rule Brazil 2001 2006 - Feb Sun>=15 0:00 0 - - # Decree 4,399 (2002-10-01) repeals DST in AL, CE, MA, PB, PE, PI, RN, SE. - # 4,399 --Rule Brazil 2002 only - Nov 3 0:00 1:00 S -+Rule Brazil 2002 only - Nov 3 0:00 1:00 - - # Decree 4,844 (2003-09-24; corrected 2003-09-26) repeals DST in BA, MT, TO. - # 4,844 --Rule Brazil 2003 only - Oct 19 0:00 1:00 S -+Rule Brazil 2003 only - Oct 19 0:00 1:00 - - # Decree 5,223 (2004-10-01) reestablishes DST in MT. - # 5,223 --Rule Brazil 2004 only - Nov 2 0:00 1:00 S -+Rule Brazil 2004 only - Nov 2 0:00 1:00 - - # Decree 5,539 (2005-09-19), - # adopted by the same states as before. --Rule Brazil 2005 only - Oct 16 0:00 1:00 S -+Rule Brazil 2005 only - Oct 16 0:00 1:00 - - # Decree 5,920 (2006-10-03), - # adopted by the same states as before. --Rule Brazil 2006 only - Nov 5 0:00 1:00 S -+Rule Brazil 2006 only - Nov 5 0:00 1:00 - - Rule Brazil 2007 only - Feb 25 0:00 0 - - # Decree 6,212 (2007-09-26), - # adopted by the same states as before. --Rule Brazil 2007 only - Oct Sun>=8 0:00 1:00 S -+Rule Brazil 2007 only - Oct Sun>=8 0:00 1:00 - - # From Frederico A. C. Neves (2008-09-10): - # According to this decree - # http://www.planalto.gov.br/ccivil_03/_Ato2007-2010/2008/Decreto/D6558.htm - # [t]he DST period in Brazil now on will be from the 3rd Oct Sunday to the - # 3rd Feb Sunday. There is an exception on the return date when this is - # the Carnival Sunday then the return date will be the next Sunday... --Rule Brazil 2008 2017 - Oct Sun>=15 0:00 1:00 S -+Rule Brazil 2008 2017 - Oct Sun>=15 0:00 1:00 - - Rule Brazil 2008 2011 - Feb Sun>=15 0:00 0 - - # Decree 7,584 (2011-10-13) - # added Bahia. -@@ -949,7 +948,7 @@ - # ... https://www.timeanddate.com/news/time/brazil-delays-dst-2018.html - # From Steffen Thorsen (2017-12-20): - # http://www.planalto.gov.br/ccivil_03/_ato2015-2018/2017/decreto/D9242.htm --Rule Brazil 2018 max - Nov Sun>=1 0:00 1:00 S -+Rule Brazil 2018 max - Nov Sun>=1 0:00 1:00 - - Rule Brazil 2023 only - Feb Sun>=22 0:00 0 - - Rule Brazil 2024 2025 - Feb Sun>=15 0:00 0 - - Rule Brazil 2026 only - Feb Sun>=22 0:00 0 - -@@ -1256,28 +1255,28 @@ - # For now, assume that they will not revert. - - # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S --Rule Chile 1927 1931 - Sep 1 0:00 1:00 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 S -+Rule Chile 1968 only - Nov 3 4:00u 1:00 - - Rule Chile 1969 only - Mar 30 3:00u 0 - --Rule Chile 1969 only - Nov 23 4:00u 1:00 S -+Rule Chile 1969 only - Nov 23 4:00u 1:00 - - Rule Chile 1970 only - Mar 29 3:00u 0 - - Rule Chile 1971 only - Mar 14 3:00u 0 - --Rule Chile 1970 1972 - Oct Sun>=9 4:00u 1:00 S -+Rule Chile 1970 1972 - Oct Sun>=9 4:00u 1:00 - - Rule Chile 1972 1986 - Mar Sun>=9 3:00u 0 - --Rule Chile 1973 only - Sep 30 4:00u 1:00 S --Rule Chile 1974 1987 - Oct Sun>=9 4:00u 1:00 S -+Rule Chile 1973 only - Sep 30 4:00u 1:00 - -+Rule Chile 1974 1987 - Oct Sun>=9 4:00u 1:00 - - Rule Chile 1987 only - Apr 12 3:00u 0 - - Rule Chile 1988 1990 - Mar Sun>=9 3:00u 0 - --Rule Chile 1988 1989 - Oct Sun>=9 4:00u 1:00 S --Rule Chile 1990 only - Sep 16 4:00u 1:00 S -+Rule Chile 1988 1989 - Oct Sun>=9 4:00u 1:00 - -+Rule Chile 1990 only - Sep 16 4:00u 1:00 - - Rule Chile 1991 1996 - Mar Sun>=9 3:00u 0 - --Rule Chile 1991 1997 - Oct Sun>=9 4:00u 1:00 S -+Rule Chile 1991 1997 - Oct Sun>=9 4:00u 1:00 - - Rule Chile 1997 only - Mar 30 3:00u 0 - - Rule Chile 1998 only - Mar Sun>=9 3:00u 0 - --Rule Chile 1998 only - Sep 27 4:00u 1:00 S -+Rule Chile 1998 only - Sep 27 4:00u 1:00 - - Rule Chile 1999 only - Apr 4 3:00u 0 - --Rule Chile 1999 2010 - Oct Sun>=9 4:00u 1:00 S -+Rule Chile 1999 2010 - Oct Sun>=9 4:00u 1:00 - - Rule Chile 2000 2007 - Mar Sun>=9 3:00u 0 - - # N.B.: the end of March 29 in Chile is March 30 in Universal time, - # which is used below in specifying the transition. -@@ -1285,11 +1284,11 @@ - Rule Chile 2009 only - Mar Sun>=9 3:00u 0 - - Rule Chile 2010 only - Apr Sun>=1 3:00u 0 - - Rule Chile 2011 only - May Sun>=2 3:00u 0 - --Rule Chile 2011 only - Aug Sun>=16 4:00u 1:00 S -+Rule Chile 2011 only - Aug Sun>=16 4:00u 1:00 - - Rule Chile 2012 2014 - Apr Sun>=23 3:00u 0 - --Rule Chile 2012 2014 - Sep Sun>=2 4:00u 1:00 S -+Rule Chile 2012 2014 - Sep Sun>=2 4:00u 1:00 - - Rule Chile 2016 max - May Sun>=9 3:00u 0 - --Rule Chile 2016 max - Aug Sun>=9 4:00u 1:00 S -+Rule Chile 2016 max - Aug Sun>=9 4:00u 1:00 - - # IATA SSIM anomalies: (1992-02) says 1992-03-14; - # (1996-09) says 1998-03-08. Ignore these. - # Zone NAME GMTOFF RULES FORMAT [UNTIL] -@@ -1354,7 +1353,7 @@ - # "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 CO 1992 only - May 3 0:00 1:00 S -+Rule CO 1992 only - May 3 0:00 1:00 - - Rule CO 1993 only - Apr 4 0:00 0 - - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone America/Bogota -4:56:16 - LMT 1884 Mar 13 -@@ -1414,7 +1413,7 @@ - # 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 Ecuador 1992 only - Nov 28 0:00 1:00 S -+Rule Ecuador 1992 only - Nov 28 0:00 1:00 - - Rule Ecuador 1993 only - Feb 5 0:00 0 - - # - # Zone NAME GMTOFF RULES FORMAT [UNTIL] -@@ -1504,22 +1503,22 @@ - # the maintainers of the database to inform them we're adopting - # the same policy this year and suggest recommendations for future years. - # --# For now we will assume permanent summer time for the Falklands -+# 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 Falk 1937 1938 - Sep lastSun 0:00 1:00 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 S --Rule Falk 1940 1942 - Sep lastSun 0:00 1:00 S -+Rule Falk 1939 only - Oct 1 0:00 1:00 - -+Rule Falk 1940 1942 - Sep lastSun 0:00 1:00 - - Rule Falk 1943 only - Jan 1 0:00 0 - --Rule Falk 1983 only - Sep lastSun 0:00 1:00 S -+Rule Falk 1983 only - Sep lastSun 0:00 1:00 - - Rule Falk 1984 1985 - Apr lastSun 0:00 0 - --Rule Falk 1984 only - Sep 16 0:00 1:00 S --Rule Falk 1985 2000 - Sep Sun>=9 0:00 1:00 S -+Rule Falk 1984 only - Sep 16 0:00 1:00 - -+Rule Falk 1985 2000 - Sep Sun>=9 0:00 1:00 - - Rule Falk 1986 2000 - Apr Sun>=16 0:00 0 - - Rule Falk 2001 2010 - Apr Sun>=15 2:00 0 - --Rule Falk 2001 2010 - Sep Sun>=1 2:00 1:00 S -+Rule Falk 2001 2010 - Sep Sun>=1 2:00 1:00 - - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone Atlantic/Stanley -3:51:24 - LMT 1890 - -3:51:24 - SMT 1912 Mar 12 # Stanley Mean Time -@@ -1554,16 +1553,16 @@ - # adjust their clocks at 0 hour of the given dates. - # - # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S --Rule Para 1975 1988 - Oct 1 0:00 1:00 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 - --Rule Para 1989 only - Oct 22 0:00 1:00 S --Rule Para 1990 only - Oct 1 0:00 1:00 S --Rule Para 1991 only - Oct 6 0:00 1:00 S -+Rule Para 1989 only - Oct 22 0:00 1:00 - -+Rule Para 1990 only - Oct 1 0:00 1:00 - -+Rule Para 1991 only - Oct 6 0:00 1:00 - - Rule Para 1992 only - Mar 1 0:00 0 - --Rule Para 1992 only - Oct 5 0:00 1:00 S -+Rule Para 1992 only - Oct 5 0:00 1:00 - - Rule Para 1993 only - Mar 31 0:00 0 - --Rule Para 1993 1995 - Oct 1 0:00 1:00 S -+Rule Para 1993 1995 - Oct 1 0:00 1:00 - - Rule Para 1994 1995 - Feb lastSun 0:00 0 - - Rule Para 1996 only - Mar 1 0:00 0 - - # IATA SSIM (2000-02) says 1999-10-10; ignore this for now. -@@ -1581,7 +1580,7 @@ - # year, the time will change on the first Sunday of October; likewise, the - # clock will be set back on the first Sunday of March. - # --Rule Para 1996 2001 - Oct Sun>=1 0:00 1:00 S -+Rule Para 1996 2001 - Oct Sun>=1 0:00 1:00 - - # IATA SSIM (1997-09) says Mar 1; go with Shanks & Pottenger. - Rule Para 1997 only - Feb lastSun 0:00 0 - - # Shanks & Pottenger say 1999-02-28; IATA SSIM (1999-02) says 1999-02-27, but -@@ -1592,7 +1591,7 @@ - # dst method to be from the first Sunday in September to the first Sunday in - # April. - Rule Para 2002 2004 - Apr Sun>=1 0:00 0 - --Rule Para 2002 2003 - Sep Sun>=1 0:00 1:00 S -+Rule Para 2002 2003 - Sep Sun>=1 0:00 1:00 - - # - # From Jesper Nørgaard Welen (2005-01-02): - # There are several sources that claim that Paraguay made -@@ -1601,7 +1600,7 @@ - # Decree 1,867 (2004-03-05) - # From Carlos Raúl Perasso via Jesper Nørgaard Welen (2006-10-13) - # http://www.presidencia.gov.py/decretos/D1867.pdf --Rule Para 2004 2009 - Oct Sun>=15 0:00 1:00 S -+Rule Para 2004 2009 - Oct Sun>=15 0:00 1:00 - - Rule Para 2005 2009 - Mar Sun>=8 0:00 0 - - # From Carlos Raúl Perasso (2010-02-18): - # By decree number 3958 issued yesterday -@@ -1614,7 +1613,7 @@ - # and that on the first Sunday of the month of October, it is to be set - # forward 60 minutes, in all the territory of the Paraguayan Republic. - # ... --Rule Para 2010 max - Oct Sun>=1 0:00 1:00 S -+Rule Para 2010 max - Oct Sun>=1 0:00 1:00 - - Rule Para 2010 2012 - Apr Sun>=8 0:00 0 - - # - # From Steffen Thorsen (2013-03-07): -@@ -1647,16 +1646,16 @@ - # Shanks & Pottenger don't have this transition. Assume 1986 was like 1987. - - # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S --Rule Peru 1938 only - Jan 1 0:00 1:00 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 S -+Rule Peru 1938 1939 - Sep lastSun 0:00 1:00 - - Rule Peru 1939 1940 - Mar Sun>=24 0:00 0 - --Rule Peru 1986 1987 - Jan 1 0:00 1:00 S -+Rule Peru 1986 1987 - Jan 1 0:00 1:00 - - Rule Peru 1986 1987 - Apr 1 0:00 0 - --Rule Peru 1990 only - Jan 1 0:00 1:00 S -+Rule Peru 1990 only - Jan 1 0:00 1:00 - - Rule Peru 1990 only - Apr 1 0:00 0 - - # IATA is ambiguous for 1993/1995; go with Shanks & Pottenger. --Rule Peru 1994 only - Jan 1 0:00 1:00 S -+Rule Peru 1994 only - Jan 1 0:00 1:00 - - Rule Peru 1994 only - Apr 1 0:00 0 - - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone America/Lima -5:08:12 - LMT 1890 -@@ -1702,72 +1701,201 @@ - # Uruguay - # From Paul Eggert (1993-11-18): - # Uruguay wins the prize for the strangest peacetime manipulation of the rules. --# From Shanks & Pottenger: -+# -+# From Tim Parenti (2018-02-20), per Jeremie Bonjour (2018-01-31) and Michael -+# Deckers (2018-02-20): -+# ... At least they kept good records... -+# -+# http://www.armada.mil.uy/ContenidosPDFs/sohma/web/almanaque/almanaque_2018.pdf#page=36 -+# Page 36 of Almanaque 2018, published by the Oceanography, Hydrography, and -+# Meteorology Service of the Uruguayan Navy, seems to give many transitions -+# with greater clarity than we've had before. It directly references many laws -+# and decrees which are, in turn, referenced below. They can be viewed in the -+# public archives of the Diario Oficial (in Spanish) at -+# http://www.impo.com.uy/diariooficial/ -+# -+# Ley No. 3920 of 1908-06-10 placed the determination of legal time under the -+# auspices of the National Institute for the Prediction of Time. It is unclear -+# exactly what offset was used during this period, though Ley No. 7200 of -+# 1920-04-23 used the Observatory of the National Meteorological Institute in -+# Montevideo (34° 54' 33" S, 56° 12' 45" W) as its reference meridian, -+# retarding legal time by 15 minutes 9 seconds from 1920-04-30 24:00, -+# resulting in UT-04. Assume the corresponding LMT of UT-03:44:51 (given on -+# page 725 of the Proceedings of the Second Pan-American Scientific Congress, -+# 1915-1916) was in use, and merely became official from 1908-06-10. -+# https://www.impo.com.uy/diariooficial/1908/06/18/12 -+# https://www.impo.com.uy/diariooficial/1920/04/27/9 -+# -+# Ley No. 7594 of 1923-06-28 specified legal time as Observatory time advanced -+# by 44 minutes 51 seconds (UT-03) "from 30 September to 31 March", and by 14 -+# minutes 51 seconds (UT-03:30) "the rest of the year"; a message from the -+# National Council of Administration the same day, published directly below the -+# law in the Diario Oficial, specified the first transition to be 1923-09-30 -+# 24:00. This effectively established standard time at UT-03:30 with 30 -+# minutes DST. Assume transitions at 24:00 on the specified days until Ley No. -+# 7919 of 1926-03-05 ended this arrangement, repealing all "laws and other -+# provisions which oppose" it, resulting in year-round UT-03:30; a Resolución -+# of 1926-03-11 puts the final transition at 1926-03-31 24:00, the same as it -+# would have been under the previous law. -+# https://www.impo.com.uy/diariooficial/1923/07/02/2 -+# 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 --# Whitman gives 1923 Oct 1; go with Shanks & Pottenger. --Rule Uruguay 1923 only - Oct 2 0:00 0:30 HS -+Rule Uruguay 1923 1925 - Oct 1 0:00 0:30 - - Rule Uruguay 1924 1926 - Apr 1 0:00 0 - --Rule Uruguay 1924 1925 - Oct 1 0:00 0:30 HS --Rule Uruguay 1933 1935 - Oct lastSun 0:00 0:30 HS --# Shanks & Pottenger give 1935 Apr 1 0:00 & 1936 Mar 30 0:00; go with Whitman. --Rule Uruguay 1934 1936 - Mar Sat>=25 23:30s 0 - --Rule Uruguay 1936 only - Nov 1 0:00 0:30 HS --Rule Uruguay 1937 1941 - Mar lastSun 0:00 0 - --# Whitman gives 1937 Oct 3; go with Shanks & Pottenger. --Rule Uruguay 1937 1940 - Oct lastSun 0:00 0:30 HS --# Whitman gives 1941 Oct 24 - 1942 Mar 27, 1942 Dec 14 - 1943 Apr 13, --# and 1943 Apr 13 "to present time"; go with Shanks & Pottenger. --Rule Uruguay 1941 only - Aug 1 0:00 0:30 HS --Rule Uruguay 1942 only - Jan 1 0:00 0 - --Rule Uruguay 1942 only - Dec 14 0:00 1:00 S -+# From Tim Parenti (2018-02-15): -+# http://www.impo.com.uy/diariooficial/1933/10/27/6 -+# -+# It appears Ley No. 9122 of 1933 was never published as such in the Diario -+# Oficial, but instead appeared as Document 26 in the Diario on Friday -+# 1933-10-27 as a decree made Monday 1933-10-23 and filed under the Ministry of -+# National Defense. It reinstituted a DST of 30 minutes (to UT-03) "from the -+# last Sunday of October...until the last Saturday of March." In accordance -+# with this provision, the first transition was explicitly specified in Article -+# 2 of the decree as Saturday 1933-10-28 at 24:00; that is, Sunday 1933-10-29 -+# at 00:00. Assume transitions at 00:00 Sunday throughout. -+# -+# Departing from the matter-of-fact nature of previous timekeeping laws, the -+# 1933 decree "consider[s] the advantages of...the advance of legal time": -+# -+# "Whereas: The measure adopted by almost all nations at the time of the last -+# World War still persists in North America and Europe, precisely because of -+# the economic, hygienic, and social advantages derived from such an -+# emergency measure... -+# -+# Whereas: The advance of the legal time during the summer seasons, by -+# displacing social activity near sunrise, favors the citizen populations -+# and especially the society that creates and works..." -+# -+# It further specified that "necessary measures" be taken to ensure that -+# "public spectacles finish, in general, before [01:00]." -+Rule Uruguay 1933 1938 - Oct lastSun 0:00 0:30 - -+Rule Uruguay 1934 1941 - Mar lastSat 24:00 0 - -+# From Tim Parenti (2018-02-15): -+# Most of the Rules below, and their contemporaneous Zone lines, have been -+# updated simply to match the Almanaque 2018. Although the document does not -+# list exact transition times, midnight transitions were already present in our -+# data here for all transitions through 2004-09, and this is both consistent -+# with prior transitions and verified in several decrees marked below between -+# 1939-09 and 2004-09, wherein the relevant text was typically of the form: -+# -+# "From 0 hours on [date], the legal time of the entire Republic will be... -+# -+# In accordance with [the preceding], on [previous date] at 24 hours, all -+# clocks throughout the Republic will be [advanced/retarded] by..." -+# -+# It is possible that there is greater specificity to be found for the Rules -+# below, but it is buried in no fewer than 40 different decrees individually -+# referenced by the Almanaque for the period from 1939-09 to 2014-09. -+# Four-fifths of these were promulgated less than two weeks before taking -+# effect; more than half within a week and none more than 5 weeks. Only the -+# handful with comments below have been checked with any thoroughness. -+Rule Uruguay 1939 only - Oct 1 0:00 0:30 - -+Rule Uruguay 1940 only - Oct 27 0:00 0:30 - -+# From Tim Parenti (2018-02-15): -+# Decreto 1145 of the Ministry of National Defense, dated 1941-07-26, specified -+# UT-03 from Friday 1941-08-01 00:00, citing an "urgent...need to save fuel". -+# http://www.impo.com.uy/diariooficial/1941/08/04/1 -+Rule Uruguay 1941 only - Aug 1 0:00 0:30 - -+# From Tim Parenti (2018-02-15): -+# Decreto 1866 of the Ministry of National Defense, dated 1942-12-09, specified -+# further advancement (to UT-02:30) from Sunday 1942-12-13 24:00. Since clocks -+# never went back to UT-03:30 thereafter, this is modeled as advancing standard -+# time by 30 minutes to UT-03, while retaining 30 minutes of DST. -+# http://www.impo.com.uy/diariooficial/1942/12/16/3 -+Rule Uruguay 1942 only - Dec 14 0:00 0:30 - - Rule Uruguay 1943 only - Mar 14 0:00 0 - --Rule Uruguay 1959 only - May 24 0:00 1:00 S -+Rule Uruguay 1959 only - May 24 0:00 0:30 - - Rule Uruguay 1959 only - Nov 15 0:00 0 - --Rule Uruguay 1960 only - Jan 17 0:00 1:00 S -+Rule Uruguay 1960 only - Jan 17 0:00 1:00 - - Rule Uruguay 1960 only - Mar 6 0:00 0 - --Rule Uruguay 1965 1967 - Apr Sun>=1 0:00 1:00 S -+Rule Uruguay 1965 only - Apr 4 0:00 1:00 - - Rule Uruguay 1965 only - Sep 26 0:00 0 - --Rule Uruguay 1966 1967 - Oct 31 0:00 0 - --Rule Uruguay 1968 1970 - May 27 0:00 0:30 HS --Rule Uruguay 1968 1970 - Dec 2 0:00 0 - --Rule Uruguay 1972 only - Apr 24 0:00 1:00 S --Rule Uruguay 1972 only - Aug 15 0:00 0 - --Rule Uruguay 1974 only - Mar 10 0:00 0:30 HS --Rule Uruguay 1974 only - Dec 22 0:00 1:00 S --Rule Uruguay 1976 only - Oct 1 0:00 0 - --Rule Uruguay 1977 only - Dec 4 0:00 1:00 S --Rule Uruguay 1978 only - Apr 1 0:00 0 - --Rule Uruguay 1979 only - Oct 1 0:00 1:00 S --Rule Uruguay 1980 only - May 1 0:00 0 - --Rule Uruguay 1987 only - Dec 14 0:00 1:00 S --Rule Uruguay 1988 only - Mar 14 0:00 0 - --Rule Uruguay 1988 only - Dec 11 0:00 1:00 S --Rule Uruguay 1989 only - Mar 12 0:00 0 - --Rule Uruguay 1989 only - Oct 29 0:00 1:00 S --# Shanks & Pottenger say no DST was observed in 1990/1 and 1991/2, --# and that 1992/3's DST was from 10-25 to 03-01. Go with IATA. --Rule Uruguay 1990 1992 - Mar Sun>=1 0:00 0 - --Rule Uruguay 1990 1991 - Oct Sun>=21 0:00 1:00 S --Rule Uruguay 1992 only - Oct 18 0:00 1:00 S -+# From Tim Parenti (2018-02-15): -+# Decreto 321/968 of 1968-05-25, citing emergency drought measures decreed the -+# day before, brought clocks forward 30 minutes from Monday 1968-05-27 00:00. -+# http://www.impo.com.uy/diariooficial/1968/05/30/5 -+Rule Uruguay 1968 only - May 27 0:00 0:30 - -+Rule Uruguay 1968 only - Dec 1 0:00 0 - -+# From Tim Parenti (2018-02-15): -+# Decreto 188/970 of 1970-04-23 instituted restrictions on electricity -+# consumption "as a consequence of the current rainfall regime in the country". -+# Articles 13 and 14 advanced clocks by an hour from Saturday 1970-04-25 00:00. -+# http://www.impo.com.uy/diariooficial/1970/04/29/4 -+Rule Uruguay 1970 only - Apr 25 0:00 1:00 - -+Rule Uruguay 1970 only - Jun 14 0:00 0 - -+Rule Uruguay 1972 only - Apr 23 0:00 1:00 - -+Rule Uruguay 1972 only - Jul 16 0:00 0 - -+# From Tim Parenti (2018-02-15): -+# Decreto 29/974 of 1974-01-11, citing "the international rise in the price of -+# oil", advanced clocks by 90 minutes (to UT-01:30). Decreto 163/974 of -+# 1974-03-04 returned 60 of those minutes (to UT-02:30), and the remaining 30 -+# minutes followed in Decreto 679/974 of 1974-08-29. -+# http://www.impo.com.uy/diariooficial/1974/01/22/11 -+# http://www.impo.com.uy/diariooficial/1974/03/14/3 -+# http://www.impo.com.uy/diariooficial/1974/09/04/6 -+Rule Uruguay 1974 only - Jan 13 0:00 1:30 - -+Rule Uruguay 1974 only - Mar 10 0:00 0:30 - -+Rule Uruguay 1974 only - Sep 1 0:00 0 - -+Rule Uruguay 1974 only - Dec 22 0:00 1:00 - -+Rule Uruguay 1975 only - Mar 30 0:00 0 - -+Rule Uruguay 1976 only - Dec 19 0:00 1:00 - -+Rule Uruguay 1977 only - Mar 6 0:00 0 - -+Rule Uruguay 1977 only - Dec 4 0:00 1:00 - -+Rule Uruguay 1978 1979 - Mar Sun>=1 0:00 0 - -+Rule Uruguay 1978 only - Dec 17 0:00 1:00 - -+Rule Uruguay 1979 only - Apr 29 0:00 1:00 - -+Rule Uruguay 1980 only - Mar 16 0:00 0 - -+# From Tim Parenti (2018-02-15): -+# Decreto 725/987 of 1987-12-04 cited "better use of national tourist -+# attractions" to advance clocks one hour from Monday 1987-12-14 00:00. -+# http://www.impo.com.uy/diariooficial/1988/01/25/1 -+Rule Uruguay 1987 only - Dec 14 0:00 1:00 - -+Rule Uruguay 1988 only - Feb 28 0:00 0 - -+Rule Uruguay 1988 only - Dec 11 0:00 1:00 - -+Rule Uruguay 1989 only - Mar 5 0:00 0 - -+Rule Uruguay 1989 only - Oct 29 0:00 1:00 - -+Rule Uruguay 1990 only - Feb 25 0:00 0 - -+# From Tim Parenti (2018-02-15), per Paul Eggert (1999-11-04): -+# IATA agrees as below for 1990-10 through 1993-02. Per Almanaque 2018, the -+# 1992/1993 season appears to be the first in over half a century where DST -+# both began and ended pursuant to the same decree. -+Rule Uruguay 1990 1991 - Oct Sun>=21 0:00 1:00 - -+Rule Uruguay 1991 1992 - Mar Sun>=1 0:00 0 - -+Rule Uruguay 1992 only - Oct 18 0:00 1:00 - - Rule Uruguay 1993 only - Feb 28 0:00 0 - - # From Eduardo Cota (2004-09-20): - # The Uruguayan government has decreed a change in the local time.... --# http://www.presidencia.gub.uy/decretos/2004091502.htm --Rule Uruguay 2004 only - Sep 19 0:00 1:00 S -+# From Tim Parenti (2018-02-15): -+# Decreto 328/004 of 2004-09-15. -+# http://www.impo.com.uy/diariooficial/2004/09/23/documentos.pdf#page=1 -+Rule Uruguay 2004 only - Sep 19 0:00 1:00 - - # From Steffen Thorsen (2005-03-11): - # Uruguay's DST was scheduled to end on Sunday, 2005-03-13, but in order to - # save energy ... it was postponed two weeks.... --# http://www.presidencia.gub.uy/_Web/noticias/2005/03/2005031005.htm -+# From Tim Parenti (2018-02-15): -+# This 2005 postponement is not in Almanaque 2018. Go with the contemporaneous -+# reporting, which is confirmed by Decreto 107/005 of 2005-03-10 amending -+# Decreto 328/004: -+# http://www.impo.com.uy/diariooficial/2005/03/15/documentos.pdf#page=1 -+# The original decree specified a transition of 2005-03-12 24:00, but the new -+# one specified 2005-03-27 02:00. - Rule Uruguay 2005 only - Mar 27 2:00 0 - - # From Eduardo Cota (2005-09-27): --# http://www.presidencia.gub.uy/_Web/decretos/2005/09/CM%20119_09%2009%202005_00001.PDF --# This means that from 2005-10-09 at 02:00 local time, until 2006-03-12 at --# 02:00 local time, official time in Uruguay will be at GMT -2. --Rule Uruguay 2005 only - Oct 9 2:00 1:00 S --Rule Uruguay 2006 only - Mar 12 2:00 0 - --# From Jesper Nørgaard Welen (2006-09-06): --# http://www.presidencia.gub.uy/_web/decretos/2006/09/CM%20210_08%2006%202006_00001.PDF --# -+# ...from 2005-10-09 at 02:00 local time, until 2006-03-12 at 02:00 local time, -+# official time in Uruguay will be at GMT -2. -+# From Tim Parenti (2018-02-15): -+# Decreto 318/005 of 2005-09-19. -+# http://www.impo.com.uy/diariooficial/2005/09/23/documentos.pdf#page=1 -+Rule Uruguay 2005 only - Oct 9 2:00 1:00 - -+Rule Uruguay 2006 2015 - Mar Sun>=8 2:00 0 - -+# From Tim Parenti (2018-02-15), per Jesper Nørgaard Welen (2006-09-06): -+# Decreto 311/006 of 2006-09-04 established regular DST from the first Sunday -+# of October at 02:00 through the second Sunday of March at 02:00. Almanaque -+# 2018 appears to have a few typoed dates through this period; ignore them. -+# http://www.impo.com.uy/diariooficial/2006/09/08/documentos.pdf#page=1 -+Rule Uruguay 2006 2014 - Oct Sun>=1 2:00 1:00 - - # From Steffen Thorsen (2015-06-30): - # ... it looks like they will not be using DST the coming summer: - # http://www.elobservador.com.uy/gobierno-resolvio-que-no-habra-cambio-horario-verano-n656787 -@@ -1777,17 +1905,19 @@ - # instead of out to dinner. - # From Pablo Camargo (2015-07-13): - # http://archivo.presidencia.gub.uy/sci/decretos/2015/06/cons_min_201.pdf --# [dated 2015-06-29; repeals Decree 311/006 dated 2006-09-04] --Rule Uruguay 2006 2014 - Oct Sun>=1 2:00 1:00 S --Rule Uruguay 2007 2015 - Mar Sun>=8 2:00 0 - -+# From Tim Parenti (2018-02-15): -+# Decreto 178/015 of 2015-06-29; repeals Decreto 311/006. - - # This Zone can be simplified once we assume zic %z. --Zone America/Montevideo -3:44:44 - LMT 1898 Jun 28 -- -3:44:44 - MMT 1920 May 1 # Montevideo MT -+Zone America/Montevideo -3:44:51 - LMT 1908 Jun 10 -+ -3:44:51 - MMT 1920 May 1 # Montevideo MT -+ -4:00 - -04 1923 Oct 1 - -3:30 Uruguay -0330/-03 1942 Dec 14 -+ -3:00 Uruguay -03/-0230 1960 - -3:00 Uruguay -03/-02 1968 -- -3:00 Uruguay -03/-0230 1971 -+ -3:00 Uruguay -03/-0230 1970 - -3:00 Uruguay -03/-02 1974 -+ -3:00 Uruguay -03/-0130 1974 Mar 10 - -3:00 Uruguay -03/-0230 1974 Dec 22 - -3:00 Uruguay -03/-02 - ---- icedtea-3.8.0/openjdk/jdk/make/data/tzdata/VERSION 2018-09-18 10:22:19.723039231 +0200 -+++ icedtea-3.8.0/openjdk/jdk/make/data/tzdata/VERSION 2018-09-18 10:25:01.663921124 +0200 -@@ -21,4 +21,4 @@ - # or visit www.oracle.com if you need additional information or have any - # questions. - # --tzdata2018c -+tzdata2018d ---- icedtea-3.8.0/openjdk/jdk/make/data/tzdata/zone.tab 2018-09-18 10:22:19.723039231 +0200 -+++ icedtea-3.8.0/openjdk/jdk/make/data/tzdata/zone.tab 2018-09-18 10:25:01.667921146 +0200 -@@ -452,7 +452,7 @@ - US +643004-1652423 America/Nome Alaska (west) - US +515248-1763929 America/Adak Aleutian Islands - US +211825-1575130 Pacific/Honolulu Hawaii --UY -3453-05611 America/Montevideo -+UY -345433-0561245 America/Montevideo - UZ +3940+06648 Asia/Samarkand Uzbekistan (west) - UZ +4120+06918 Asia/Tashkent Uzbekistan (east) - VA +415408+0122711 Europe/Vatican ---- icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/util/resources/de/TimeZoneNames_de.java 2018-09-18 10:22:20.179041715 +0200 -+++ icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/util/resources/de/TimeZoneNames_de.java 2018-09-18 10:25:01.671921167 +0200 -@@ -446,7 +446,7 @@ - "Westgr\u00f6nl\u00e4ndische Sommerzeit", "WGST", - "Westgr\u00F6nl\u00E4ndische Zeit", "WGT"}}, - {"America/Goose_Bay", AST}, -- {"America/Grand_Turk", AST}, -+ {"America/Grand_Turk", EST}, - {"America/Grenada", AST}, - {"America/Guadeloupe", AST}, - {"America/Guatemala", CST}, ---- icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/util/resources/es/TimeZoneNames_es.java 2018-09-18 10:22:20.179041715 +0200 -+++ icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/util/resources/es/TimeZoneNames_es.java 2018-09-18 10:25:01.671921167 +0200 -@@ -446,7 +446,7 @@ - "Hora de verano de Groenlandia Occidental", "WGST", - "Hora de Groenlandia Occidental", "WGT"}}, - {"America/Goose_Bay", AST}, -- {"America/Grand_Turk", AST}, -+ {"America/Grand_Turk", EST}, - {"America/Grenada", AST}, - {"America/Guadeloupe", AST}, - {"America/Guatemala", CST}, ---- icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/util/resources/fr/TimeZoneNames_fr.java 2018-09-18 10:22:20.179041715 +0200 -+++ icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/util/resources/fr/TimeZoneNames_fr.java 2018-09-18 10:25:01.671921167 +0200 -@@ -446,7 +446,7 @@ - "Heure d'\u00e9t\u00e9 du Groenland de l'Ouest", "WGST", - "Heure du Groenland de l'Ouest", "WGT"}}, - {"America/Goose_Bay", AST}, -- {"America/Grand_Turk", AST}, -+ {"America/Grand_Turk", EST}, - {"America/Grenada", AST}, - {"America/Guadeloupe", AST}, - {"America/Guatemala", CST}, ---- icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/util/resources/it/TimeZoneNames_it.java 2018-09-18 10:22:20.179041715 +0200 -+++ icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/util/resources/it/TimeZoneNames_it.java 2018-09-18 10:25:01.671921167 +0200 -@@ -446,7 +446,7 @@ - "Ora estiva della Groenlandia occidentale", "WGST", - "Ora della Groenlandia occidentale", "WGT"}}, - {"America/Goose_Bay", AST}, -- {"America/Grand_Turk", AST}, -+ {"America/Grand_Turk", EST}, - {"America/Grenada", AST}, - {"America/Guadeloupe", AST}, - {"America/Guatemala", CST}, ---- icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/util/resources/ja/TimeZoneNames_ja.java 2018-09-18 10:22:20.183041737 +0200 -+++ icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/util/resources/ja/TimeZoneNames_ja.java 2018-09-18 10:25:01.671921167 +0200 -@@ -446,7 +446,7 @@ - "\u897f\u30b0\u30ea\u30fc\u30f3\u30e9\u30f3\u30c9\u590f\u6642\u9593", "WGST", - "\u897F\u90E8\u30B0\u30EA\u30FC\u30F3\u30E9\u30F3\u30C9\u6642\u9593", "WGT"}}, - {"America/Goose_Bay", AST}, -- {"America/Grand_Turk", AST}, -+ {"America/Grand_Turk", EST}, - {"America/Grenada", AST}, - {"America/Guadeloupe", AST}, - {"America/Guatemala", CST}, ---- icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/util/resources/ko/TimeZoneNames_ko.java 2018-09-18 10:22:20.183041737 +0200 -+++ icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/util/resources/ko/TimeZoneNames_ko.java 2018-09-18 10:25:01.671921167 +0200 -@@ -446,7 +446,7 @@ - "\uc11c\ubd80 \uadf8\ub9b0\ub79c\ub4dc \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "WGST", - "\uC11C\uBD80 \uADF8\uB9B0\uB780\uB4DC \uD45C\uC900\uC2DC", "WGT"}}, - {"America/Goose_Bay", AST}, -- {"America/Grand_Turk", AST}, -+ {"America/Grand_Turk", EST}, - {"America/Grenada", AST}, - {"America/Guadeloupe", AST}, - {"America/Guatemala", CST}, ---- icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/util/resources/pt/TimeZoneNames_pt_BR.java 2018-09-18 10:22:20.183041737 +0200 -+++ icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/util/resources/pt/TimeZoneNames_pt_BR.java 2018-09-18 10:25:01.671921167 +0200 -@@ -446,7 +446,7 @@ - "Fuso hor\u00e1rio de ver\u00e3o da Groenl\u00e2ndia Ocidental", "WGST", - "Hor\u00E1rio da Groenl\u00E2ndia Ocidental", "WGT"}}, - {"America/Goose_Bay", AST}, -- {"America/Grand_Turk", AST}, -+ {"America/Grand_Turk", EST}, - {"America/Grenada", AST}, - {"America/Guadeloupe", AST}, - {"America/Guatemala", CST}, ---- icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/util/resources/sv/TimeZoneNames_sv.java 2018-09-18 10:22:20.183041737 +0200 -+++ icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/util/resources/sv/TimeZoneNames_sv.java 2018-09-18 10:25:01.671921167 +0200 -@@ -446,7 +446,7 @@ - "V\u00e4stra Gr\u00f6nland, sommartid", "WGST", - "V\u00E4stgr\u00F6nl\u00E4ndsk tid", "WGT"}}, - {"America/Goose_Bay", AST}, -- {"America/Grand_Turk", AST}, -+ {"America/Grand_Turk", EST}, - {"America/Grenada", AST}, - {"America/Guadeloupe", AST}, - {"America/Guatemala", CST}, ---- icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames.java 2018-09-18 10:22:20.179041715 +0200 -+++ icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames.java 2018-09-18 10:25:01.667921146 +0200 -@@ -445,7 +445,7 @@ - "Western Greenland Summer Time", "WGST", - "Western Greenland Time", "WGT"}}, - {"America/Goose_Bay", AST}, -- {"America/Grand_Turk", AST}, -+ {"America/Grand_Turk", EST}, - {"America/Grenada", AST}, - {"America/Guadeloupe", AST}, - {"America/Guatemala", CST}, ---- icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/util/resources/zh/TimeZoneNames_zh_CN.java 2018-09-18 10:22:20.183041737 +0200 -+++ icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/util/resources/zh/TimeZoneNames_zh_CN.java 2018-09-18 10:25:01.671921167 +0200 -@@ -446,7 +446,7 @@ - "\u897f\u683c\u6797\u5170\u5c9b\u590f\u4ee4\u65f6", "WGST", - "\u897F\u683C\u6797\u5170\u5C9B\u65F6\u95F4", "WGT"}}, - {"America/Goose_Bay", AST}, -- {"America/Grand_Turk", AST}, -+ {"America/Grand_Turk", EST}, - {"America/Grenada", AST}, - {"America/Guadeloupe", AST}, - {"America/Guatemala", CST}, ---- icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/util/resources/zh/TimeZoneNames_zh_TW.java 2018-09-18 10:22:20.183041737 +0200 -+++ icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/util/resources/zh/TimeZoneNames_zh_TW.java 2018-09-18 10:25:01.671921167 +0200 -@@ -446,7 +446,7 @@ - "\u897f\u683c\u6797\u862d\u5cf6\u590f\u4ee4\u6642\u9593", "WGST", - "\u897F\u683C\u9675\u862D\u6642\u9593", "WGT"}}, - {"America/Goose_Bay", AST}, -- {"America/Grand_Turk", AST}, -+ {"America/Grand_Turk", EST}, - {"America/Grenada", AST}, - {"America/Guadeloupe", AST}, - {"America/Guatemala", CST}, ---- icedtea-3.8.0/openjdk/jdk/test/sun/util/calendar/zi/tzdata/africa 2018-09-18 10:22:19.807039690 +0200 -+++ icedtea-3.8.0/openjdk/jdk/test/sun/util/calendar/zi/tzdata/africa 2018-09-18 10:25:01.675921189 +0200 -@@ -138,13 +138,13 @@ - - # Cape Verde / Cabo Verde - # -+# From Paul Eggert (2018-02-16): - # Shanks gives 1907 for the transition to +02. --# Perhaps the 1911-05-26 Portuguese decree --# https://dre.pt/pdf1sdip/1911/05/12500/23132313.pdf --# merely made it official? -+# For now, ignore that and follow the 1911-05-26 Portuguese decree -+# (see Europe/Lisbon). - # - # Zone NAME GMTOFF RULES FORMAT [UNTIL] --Zone Atlantic/Cape_Verde -1:34:04 - LMT 1907 # Praia -+Zone Atlantic/Cape_Verde -1:34:04 - LMT 1912 Jan 01 2:00u # Praia - -2:00 - -02 1942 Sep - -2:00 1:00 -01 1945 Oct 15 - -2:00 - -02 1975 Nov 25 2:00 -@@ -393,15 +393,34 @@ - # See Africa/Abidjan. - - # Ghana --# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -+ -+# From Paul Eggert (2018-01-30): - # Whitman says DST was observed from 1931 to "the present"; --# Shanks & Pottenger say 1936 to 1942; --# and September 1 to January 1 is given by: --# Scott Keltie J, Epstein M (eds), The Statesman's Year-Book, --# 57th ed. Macmillan, London (1920), OCLC 609408015, pp xxviii. --# For lack of better info, assume DST was observed from 1920 to 1942. --Rule Ghana 1920 1942 - Sep 1 0:00 0:20 GHST --Rule Ghana 1920 1942 - Dec 31 0:00 0 GMT -+# Shanks & Pottenger say 1936 to 1942 with 20 minutes of DST, -+# with transitions on 09-01 and 12-31 at 00:00. -+# Page 33 of Parish GCB, Colonial Reports - Annual. No. 1066. Gold -+# Coast. Report for 1919. (March 1921), OCLC 784024077 -+# http://libsysdigi.library.illinois.edu/ilharvest/africana/books2011-05/5530214/5530214_1919/5530214_1919_opt.pdf -+# lists the Determination of the Time Ordinance, 1919, No. 18, -+# "to advance the time observed locally by the space of twenty minutes -+# during the last four months of each year; the object in view being -+# to extend during those months the period of daylight-time available -+# for evening recreation after office hours." -+# Vanessa Ogle, The Global Transformation of Time, 1870-1950 (2015), p 33, -+# writes "In 1919, the Gold Coast (Ghana as of 1957) made Greenwich -+# time its legal time and simultaneously legalized a summer time of -+# UTC - 00:20 minutes from March to October."; a footnote lists -+# the ordinance as being dated 1919-11-24. -+# The Crown Colonist, Volume 12 (1942), p 176, says "the Government -+# intend advancing Gold Coast time half an hour ahead of G.M.T. -+# The actual date of the alteration has not yet been announced." -+# These sources are incomplete and contradictory. Possibly what is -+# 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 Ghana 1920 1942 - Sep 1 0:00 0:20 - -+Rule Ghana 1920 1942 - Dec 31 0:00 0 - - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone Africa/Accra -0:00:52 - LMT 1918 - 0:00 Ghana GMT/+0020 -@@ -411,13 +430,13 @@ - - # Guinea-Bissau - # -+# From Paul Eggert (2018-02-16): - # Shanks gives 1911-05-26 for the transition to WAT, - # evidently confusing the date of the Portuguese decree --# https://dre.pt/pdf1sdip/1911/05/12500/23132313.pdf --# with the date that it took effect, namely 1912-01-01. -+# (see Europe/Lisbon) with the date that it took effect. - # - # Zone NAME GMTOFF RULES FORMAT [UNTIL] --Zone Africa/Bissau -1:02:20 - LMT 1912 Jan 1 -+Zone Africa/Bissau -1:02:20 - LMT 1912 Jan 1 1:00u - -1:00 - -01 1975 - 0:00 - GMT - -@@ -613,9 +632,9 @@ - # at 2am (or 02:00) local time..." - - # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S --Rule Mauritius 1982 only - Oct 10 0:00 1:00 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 S -+Rule Mauritius 2008 only - Oct lastSun 2:00 1:00 - - Rule Mauritius 2009 only - Mar lastSun 2:00 0 - - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone Indian/Mauritius 3:50:00 - LMT 1907 # Port Louis -@@ -1060,6 +1079,8 @@ - - # São Tomé and Príncipe - -+# See Europe/Lisbon for info about the 1912 transition. -+ - # From Steffen Thorsen (2018-01-08): - # Multiple sources tell that São Tomé changed from UTC to UTC+1 as - # they entered the year 2018. -@@ -1068,7 +1089,7 @@ - # http://www.mnec.gov.st/index.php/publicacoes/documentos/file/90-decreto-lei-n-25-2017 - - Zone Africa/Sao_Tome 0:26:56 - LMT 1884 -- -0:36:45 - LMT 1912 # Lisbon Mean Time -+ -0:36:45 - LMT 1912 Jan 1 00:00u # Lisbon MT - 0:00 - GMT 2018 Jan 1 01:00 - 1:00 - WAT - ---- icedtea-3.8.0/openjdk/jdk/test/sun/util/calendar/zi/tzdata/antarctica 2018-09-18 10:22:19.807039690 +0200 -+++ icedtea-3.8.0/openjdk/jdk/test/sun/util/calendar/zi/tzdata/antarctica 2018-09-18 10:25:01.675921189 +0200 -@@ -98,7 +98,8 @@ - 8:00 - +08 2011 Oct 28 2:00 - 11:00 - +11 2012 Feb 21 17:00u - 8:00 - +08 2016 Oct 22 -- 11:00 - +11 -+ 11:00 - +11 2018 Mar 11 4:00 -+ 8:00 - +08 - Zone Antarctica/Davis 0 - -00 1957 Jan 13 - 7:00 - +07 1964 Nov - 0 - -00 1969 Feb ---- icedtea-3.8.0/openjdk/jdk/test/sun/util/calendar/zi/tzdata/asia 2018-09-18 10:22:19.811039711 +0200 -+++ icedtea-3.8.0/openjdk/jdk/test/sun/util/calendar/zi/tzdata/asia 2018-09-18 10:25:01.675921189 +0200 -@@ -92,13 +92,13 @@ - 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 - --Rule E-EurAsia 1981 max - Mar lastSun 0:00 1:00 S -+Rule E-EurAsia 1981 max - Mar lastSun 0:00 1:00 - - Rule E-EurAsia 1979 1995 - Sep lastSun 0:00 0 - - Rule E-EurAsia 1996 max - Oct lastSun 0:00 0 - --Rule RussiaAsia 1981 1984 - Apr 1 0:00 1:00 S -+Rule RussiaAsia 1981 1984 - Apr 1 0:00 1:00 - - Rule RussiaAsia 1981 1983 - Oct 1 0:00 0 - - Rule RussiaAsia 1984 1995 - Sep lastSun 2:00s 0 - --Rule RussiaAsia 1985 2010 - Mar lastSun 2:00s 1:00 S -+Rule RussiaAsia 1985 2010 - Mar lastSun 2:00s 1:00 - - Rule RussiaAsia 1996 2010 - Oct lastSun 2:00s 0 - - - # Afghanistan -@@ -133,7 +133,7 @@ - # (brief) - # http://www.worldtimezone.com/dst_news/dst_news_armenia03.html - # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S --Rule Armenia 2011 only - Mar lastSun 2:00s 1:00 S -+Rule Armenia 2011 only - Mar lastSun 2:00s 1:00 - - Rule Armenia 2011 only - Oct lastSun 2:00s 0 - - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone Asia/Yerevan 2:58:00 - LMT 1924 May 2 -@@ -159,7 +159,7 @@ - # http://en.apa.az/xeber_azerbaijan_abolishes_daylight_savings_ti_240862.html - - # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S --Rule Azer 1997 2015 - Mar lastSun 4:00 1:00 S -+Rule Azer 1997 2015 - Mar lastSun 4:00 1:00 - - Rule Azer 1997 2015 - Oct lastSun 5:00 0 - - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone Asia/Baku 3:19:24 - LMT 1924 May 2 -@@ -246,7 +246,7 @@ - # http://www.worldtimezone.com/dst_news/dst_news_bangladesh06.html - - # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S --Rule Dhaka 2009 only - Jun 19 23:00 1:00 S -+Rule Dhaka 2009 only - Jun 19 23:00 1:00 - - Rule Dhaka 2009 only - Dec 31 24:00 0 - - - # Zone NAME GMTOFF RULES FORMAT [UNTIL] -@@ -787,8 +787,9 @@ - Rule Macau 1975 1977 - Apr Sun>=15 3:30 1:00 D - Rule Macau 1978 1980 - Apr Sun>=15 0:00 1:00 D - Rule Macau 1978 1980 - Oct Sun>=15 0:00 0 S -+# See Europe/Lisbon for info about the 1912 transition. - # Zone NAME GMTOFF RULES FORMAT [UNTIL] --Zone Asia/Macau 7:34:20 - LMT 1912 Jan 1 -+Zone Asia/Macau 7:34:20 - LMT 1911 Dec 31 16:00u - 8:00 Macau C%sT - - -@@ -1129,61 +1130,61 @@ - # thirtieth day of Shahrivar. - # - # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S --Rule Iran 1978 1980 - Mar 21 0:00 1:00 D --Rule Iran 1978 only - Oct 21 0:00 0 S --Rule Iran 1979 only - Sep 19 0:00 0 S --Rule Iran 1980 only - Sep 23 0:00 0 S --Rule Iran 1991 only - May 3 0:00 1:00 D --Rule Iran 1992 1995 - Mar 22 0:00 1:00 D --Rule Iran 1991 1995 - Sep 22 0:00 0 S --Rule Iran 1996 only - Mar 21 0:00 1:00 D --Rule Iran 1996 only - Sep 21 0:00 0 S --Rule Iran 1997 1999 - Mar 22 0:00 1:00 D --Rule Iran 1997 1999 - Sep 22 0:00 0 S --Rule Iran 2000 only - Mar 21 0:00 1:00 D --Rule Iran 2000 only - Sep 21 0:00 0 S --Rule Iran 2001 2003 - Mar 22 0:00 1:00 D --Rule Iran 2001 2003 - Sep 22 0:00 0 S --Rule Iran 2004 only - Mar 21 0:00 1:00 D --Rule Iran 2004 only - Sep 21 0:00 0 S --Rule Iran 2005 only - Mar 22 0:00 1:00 D --Rule Iran 2005 only - Sep 22 0:00 0 S --Rule Iran 2008 only - Mar 21 0:00 1:00 D --Rule Iran 2008 only - Sep 21 0:00 0 S --Rule Iran 2009 2011 - Mar 22 0:00 1:00 D --Rule Iran 2009 2011 - Sep 22 0:00 0 S --Rule Iran 2012 only - Mar 21 0:00 1:00 D --Rule Iran 2012 only - Sep 21 0:00 0 S --Rule Iran 2013 2015 - Mar 22 0:00 1:00 D --Rule Iran 2013 2015 - Sep 22 0:00 0 S --Rule Iran 2016 only - Mar 21 0:00 1:00 D --Rule Iran 2016 only - Sep 21 0:00 0 S --Rule Iran 2017 2019 - Mar 22 0:00 1:00 D --Rule Iran 2017 2019 - Sep 22 0:00 0 S --Rule Iran 2020 only - Mar 21 0:00 1:00 D --Rule Iran 2020 only - Sep 21 0:00 0 S --Rule Iran 2021 2023 - Mar 22 0:00 1:00 D --Rule Iran 2021 2023 - Sep 22 0:00 0 S --Rule Iran 2024 only - Mar 21 0:00 1:00 D --Rule Iran 2024 only - Sep 21 0:00 0 S --Rule Iran 2025 2027 - Mar 22 0:00 1:00 D --Rule Iran 2025 2027 - Sep 22 0:00 0 S --Rule Iran 2028 2029 - Mar 21 0:00 1:00 D --Rule Iran 2028 2029 - Sep 21 0:00 0 S --Rule Iran 2030 2031 - Mar 22 0:00 1:00 D --Rule Iran 2030 2031 - Sep 22 0:00 0 S --Rule Iran 2032 2033 - Mar 21 0:00 1:00 D --Rule Iran 2032 2033 - Sep 21 0:00 0 S --Rule Iran 2034 2035 - Mar 22 0:00 1:00 D --Rule Iran 2034 2035 - Sep 22 0:00 0 S -+Rule Iran 1978 1980 - Mar 21 0:00 1:00 - -+Rule Iran 1978 only - Oct 21 0:00 0 - -+Rule Iran 1979 only - Sep 19 0:00 0 - -+Rule Iran 1980 only - Sep 23 0:00 0 - -+Rule Iran 1991 only - May 3 0:00 1:00 - -+Rule Iran 1992 1995 - Mar 22 0:00 1:00 - -+Rule Iran 1991 1995 - Sep 22 0:00 0 - -+Rule Iran 1996 only - Mar 21 0:00 1:00 - -+Rule Iran 1996 only - Sep 21 0:00 0 - -+Rule Iran 1997 1999 - Mar 22 0:00 1:00 - -+Rule Iran 1997 1999 - Sep 22 0:00 0 - -+Rule Iran 2000 only - Mar 21 0:00 1:00 - -+Rule Iran 2000 only - Sep 21 0:00 0 - -+Rule Iran 2001 2003 - Mar 22 0:00 1:00 - -+Rule Iran 2001 2003 - Sep 22 0:00 0 - -+Rule Iran 2004 only - Mar 21 0:00 1:00 - -+Rule Iran 2004 only - Sep 21 0:00 0 - -+Rule Iran 2005 only - Mar 22 0:00 1:00 - -+Rule Iran 2005 only - Sep 22 0:00 0 - -+Rule Iran 2008 only - Mar 21 0:00 1:00 - -+Rule Iran 2008 only - Sep 21 0:00 0 - -+Rule Iran 2009 2011 - Mar 22 0:00 1:00 - -+Rule Iran 2009 2011 - Sep 22 0:00 0 - -+Rule Iran 2012 only - Mar 21 0:00 1:00 - -+Rule Iran 2012 only - Sep 21 0:00 0 - -+Rule Iran 2013 2015 - Mar 22 0:00 1:00 - -+Rule Iran 2013 2015 - Sep 22 0:00 0 - -+Rule Iran 2016 only - Mar 21 0:00 1:00 - -+Rule Iran 2016 only - Sep 21 0:00 0 - -+Rule Iran 2017 2019 - Mar 22 0:00 1:00 - -+Rule Iran 2017 2019 - Sep 22 0:00 0 - -+Rule Iran 2020 only - Mar 21 0:00 1:00 - -+Rule Iran 2020 only - Sep 21 0:00 0 - -+Rule Iran 2021 2023 - Mar 22 0:00 1:00 - -+Rule Iran 2021 2023 - Sep 22 0:00 0 - -+Rule Iran 2024 only - Mar 21 0:00 1:00 - -+Rule Iran 2024 only - Sep 21 0:00 0 - -+Rule Iran 2025 2027 - Mar 22 0:00 1:00 - -+Rule Iran 2025 2027 - Sep 22 0:00 0 - -+Rule Iran 2028 2029 - Mar 21 0:00 1:00 - -+Rule Iran 2028 2029 - Sep 21 0:00 0 - -+Rule Iran 2030 2031 - Mar 22 0:00 1:00 - -+Rule Iran 2030 2031 - Sep 22 0:00 0 - -+Rule Iran 2032 2033 - Mar 21 0:00 1:00 - -+Rule Iran 2032 2033 - Sep 21 0:00 0 - -+Rule Iran 2034 2035 - Mar 22 0:00 1:00 - -+Rule Iran 2034 2035 - Sep 22 0:00 0 - - # - # The following rules are approximations starting in the year 2038. - # These are the best post-2037 approximations available, given the - # restrictions of a single rule using a Gregorian-based data format. - # At some point this table will need to be extended, though quite - # possibly Iran will change the rules first. --Rule Iran 2036 max - Mar 21 0:00 1:00 D --Rule Iran 2036 max - Sep 21 0:00 0 S -+Rule Iran 2036 max - Mar 21 0:00 1:00 - -+Rule Iran 2036 max - Sep 21 0:00 0 - - - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone Asia/Tehran 3:25:44 - LMT 1916 -@@ -1219,17 +1220,17 @@ - # https://www.timeanddate.com/news/time/iraq-dumps-daylight-saving.html - - # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S --Rule Iraq 1982 only - May 1 0:00 1:00 D --Rule Iraq 1982 1984 - Oct 1 0:00 0 S --Rule Iraq 1983 only - Mar 31 0:00 1:00 D --Rule Iraq 1984 1985 - Apr 1 0:00 1:00 D --Rule Iraq 1985 1990 - Sep lastSun 1:00s 0 S --Rule Iraq 1986 1990 - Mar lastSun 1:00s 1:00 D -+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 - -+Rule Iraq 1984 1985 - Apr 1 0:00 1:00 - -+Rule Iraq 1985 1990 - Sep lastSun 1:00s 0 - -+Rule Iraq 1986 1990 - Mar lastSun 1:00s 1:00 - - # IATA SSIM (1991/1996) says Apr 1 12:01am UTC; guess the ':01' is a typo. - # Shanks & Pottenger say Iraq did not observe DST 1992/1997; ignore this. - # --Rule Iraq 1991 2007 - Apr 1 3:00s 1:00 D --Rule Iraq 1991 2007 - Oct 1 3:00s 0 S -+Rule Iraq 1991 2007 - Apr 1 3:00s 1:00 - -+Rule Iraq 1991 2007 - Oct 1 3:00s 0 - - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone Asia/Baghdad 2:57:40 - LMT 1890 - 2:57:36 - BMT 1918 # Baghdad Mean Time? -@@ -1501,8 +1502,7 @@ - - # From Hideyuki Suzuki (1998-11-09): - # 'Tokyo' usually stands for the former location of Tokyo Astronomical --# Observatory: 139 degrees 44' 40.90" E (9h 18m 58.727s), --# 35 degrees 39' 16.0" N. -+# Observatory: 139° 44' 40.90" E (9h 18m 58.727s), 35° 39' 16.0" N. - # This data is from 'Rika Nenpyou (Chronological Scientific Tables) 1996' - # edited by National Astronomical Observatory of Japan.... - # JST (Japan Standard Time) has been used since 1888-01-01 00:00 (JST). -@@ -1510,10 +1510,10 @@ - - # From Hideyuki Suzuki (1998-11-16): - # The ordinance No. 51 (1886) established "standard time" in Japan, --# which stands for the time on 135 degrees E. -+# which stands for the time on 135° E. - # In the ordinance No. 167 (1895), "standard time" was renamed to "central - # standard time". And the same ordinance also established "western standard --# time", which stands for the time on 120 degrees E.... But "western standard -+# time", which stands for the time on 120° E.... But "western standard - # time" was abolished in the ordinance No. 529 (1937). In the ordinance No. - # 167, there is no mention regarding for what place western standard time is - # standard.... -@@ -1926,9 +1926,9 @@ - # 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 Kyrgyz 1992 1996 - Apr Sun>=7 0:00s 1:00 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 S -+Rule Kyrgyz 1997 2005 - Mar lastSun 2:30 1:00 - - Rule Kyrgyz 1997 2004 - Oct lastSun 2:30 0 - - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone Asia/Bishkek 4:58:24 - LMT 1924 May 2 -@@ -2060,7 +2060,7 @@ - - # Malaysia - # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S --Rule NBorneo 1935 1941 - Sep 14 0:00 0:20 TS # one-Third Summer -+Rule NBorneo 1935 1941 - Sep 14 0:00 0:20 - - Rule NBorneo 1935 1941 - Dec 14 0:00 0 - - # - # peninsular Malaysia -@@ -2205,7 +2205,7 @@ - # http://zasag.mn/news/view/8969 - - # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S --Rule Mongol 1983 1984 - Apr 1 0:00 1:00 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, - # but McDow says the 2001 switches occurred at 02:00. Also, IATA SSIM -@@ -2222,13 +2222,13 @@ - # Mongolian Government meeting has concluded today to cancel daylight - # saving time adoption in Mongolia. Source: http://zasag.mn/news/view/16192 - --Rule Mongol 1985 1998 - Mar lastSun 0:00 1:00 S -+Rule Mongol 1985 1998 - Mar lastSun 0:00 1:00 - - Rule Mongol 1984 1998 - Sep lastSun 0:00 0 - - # IATA SSIM (1999-09) says Mongolia no longer observes DST. --Rule Mongol 2001 only - Apr lastSat 2:00 1:00 S -+Rule Mongol 2001 only - Apr lastSat 2:00 1:00 - - Rule Mongol 2001 2006 - Sep lastSat 2:00 0 - --Rule Mongol 2002 2006 - Mar lastSat 2:00 1:00 S --Rule Mongol 2015 2016 - Mar lastSat 2:00 1:00 S -+Rule Mongol 2002 2006 - Mar lastSat 2:00 1:00 - -+Rule Mongol 2015 2016 - Mar lastSat 2:00 1:00 - - Rule Mongol 2015 2016 - Sep lastSat 0:00 0 - - - # Zone NAME GMTOFF RULES FORMAT [UNTIL] -@@ -2662,9 +2662,6 @@ - # [Google translation]: "The Council also decided to start daylight - # saving in Palestine as of one o'clock on Saturday morning, - # 2016-03-26, to provide the clock 60 minutes ahead." --# --# From Paul Eggert (2016-03-12): --# Predict spring transitions on March's last Saturday at 01:00 from now on. - - # From Sharef Mustafa (2016-10-19): - # [T]he Palestinian cabinet decision (Mar 8th 2016) published on -@@ -2681,6 +2678,16 @@ - # https://www.timeanddate.com/time/change/gaza-strip/gaza - # https://www.timeanddate.com/time/change/west-bank/hebron - -+# From Sharef Mustafa (2018-03-16): -+# Palestine summer time will start on Mar 24th 2018 by advancing the -+# clock by 60 minutes as per Palestinian cabinet decision published on -+# the offical website, though the decree did not specify the exact -+# time of the time shift. -+# http://www.palestinecabinet.gov.ps/Website/AR/NDecrees/ViewFile.ashx?ID=e7a42ab7-ee23-435a-b9c8-a4f7e81f3817 -+# -+# From Paul Eggert (2018-03-16): -+# For 2016 on, predict spring transitions on March's fourth Saturday at 01:00. -+ - # Rule NAME FROM TO TYPE 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 - -@@ -2710,7 +2717,7 @@ - Rule Palestine 2013 only - Sep Fri>=21 0:00 0 - - Rule Palestine 2014 2015 - Oct Fri>=21 0:00 0 - - Rule Palestine 2015 only - Mar lastFri 24:00 1:00 S --Rule Palestine 2016 max - Mar lastSat 1:00 1:00 S -+Rule Palestine 2016 max - Mar Sat>=22 1:00 1:00 S - Rule Palestine 2016 max - Oct lastSat 1:00 0 - - - # Zone NAME GMTOFF RULES FORMAT [UNTIL] -@@ -2760,11 +2767,11 @@ - # http://www.philstar.com/headlines/2014/08/05/1354152/pnoy-urged-declare-use-daylight-saving-time - - # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S --Rule Phil 1936 only - Nov 1 0:00 1:00 S -+Rule Phil 1936 only - Nov 1 0:00 1:00 - - Rule Phil 1937 only - Feb 1 0:00 0 - --Rule Phil 1954 only - Apr 12 0:00 1:00 S -+Rule Phil 1954 only - Apr 12 0:00 1:00 - - Rule Phil 1954 only - Jul 1 0:00 0 - --Rule Phil 1978 only - Mar 22 0:00 1:00 S -+Rule Phil 1978 only - Mar 22 0:00 1:00 - - Rule Phil 1978 only - Sep 21 0:00 0 - - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone Asia/Manila -15:56:00 - LMT 1844 Dec 31 -@@ -3120,9 +3127,9 @@ - # and is the basis for the information below. - # - # The 1906 transition was effective July 1 and standardized Indochina to --# Phù Liễn Observatory, legally 104 deg. 17'17" east of Paris. -+# Phù Liễn Observatory, legally 104° 17' 17" east of Paris. - # It's unclear whether this meant legal Paris Mean Time (00:09:21) or --# the Paris Meridian (2 deg. 20'14.03" E); the former yields 07:06:30.1333... -+# the Paris Meridian (2° 20' 14.03" E); the former yields 07:06:30.1333... - # and the latter 07:06:29.333... so either way it rounds to 07:06:30, - # which is used below even though the modern-day Phù Liễn Observatory - # is closer to 07:06:31. Abbreviate Phù Liễn Mean Time as PLMT. ---- icedtea-3.8.0/openjdk/jdk/test/sun/util/calendar/zi/tzdata/australasia 2018-09-18 10:22:19.811039711 +0200 -+++ icedtea-3.8.0/openjdk/jdk/test/sun/util/calendar/zi/tzdata/australasia 2018-09-18 10:25:01.675921189 +0200 -@@ -219,20 +219,20 @@ - - # Lord Howe Island - # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S --Rule LH 1981 1984 - Oct lastSun 2:00 1:00 D --Rule LH 1982 1985 - Mar Sun>=1 2:00 0 S --Rule LH 1985 only - Oct lastSun 2:00 0:30 D --Rule LH 1986 1989 - Mar Sun>=15 2:00 0 S --Rule LH 1986 only - Oct 19 2:00 0:30 D --Rule LH 1987 1999 - Oct lastSun 2:00 0:30 D --Rule LH 1990 1995 - Mar Sun>=1 2:00 0 S --Rule LH 1996 2005 - Mar lastSun 2:00 0 S --Rule LH 2000 only - Aug lastSun 2:00 0:30 D --Rule LH 2001 2007 - Oct lastSun 2:00 0:30 D --Rule LH 2006 only - Apr Sun>=1 2:00 0 S --Rule LH 2007 only - Mar lastSun 2:00 0 S --Rule LH 2008 max - Apr Sun>=1 2:00 0 S --Rule LH 2008 max - Oct Sun>=1 2:00 0:30 D -+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 - -+Rule LH 1986 1989 - Mar Sun>=15 2:00 0 - -+Rule LH 1986 only - Oct 19 2:00 0:30 - -+Rule LH 1987 1999 - Oct lastSun 2:00 0:30 - -+Rule LH 1990 1995 - Mar Sun>=1 2:00 0 - -+Rule LH 1996 2005 - Mar lastSun 2:00 0 - -+Rule LH 2000 only - Aug lastSun 2:00 0:30 - -+Rule LH 2001 2007 - Oct lastSun 2:00 0:30 - -+Rule LH 2006 only - Apr Sun>=1 2:00 0 - -+Rule LH 2007 only - Mar lastSun 2:00 0 - -+Rule LH 2008 max - Apr Sun>=1 2:00 0 - -+Rule LH 2008 max - Oct Sun>=1 2:00 0:30 - - Zone Australia/Lord_Howe 10:36:20 - LMT 1895 Feb - 10:00 - AEST 1981 Mar - 10:30 LH +1030/+1130 1985 Jul -@@ -390,15 +390,15 @@ - # practice than guessing no DST. - - # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S --Rule Fiji 1998 1999 - Nov Sun>=1 2:00 1:00 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 S -+Rule Fiji 2009 only - Nov 29 2:00 1:00 - - Rule Fiji 2010 only - Mar lastSun 3:00 0 - --Rule Fiji 2010 2013 - Oct Sun>=21 2:00 1:00 S -+Rule Fiji 2010 2013 - Oct Sun>=21 2:00 1:00 - - Rule Fiji 2011 only - Mar Sun>=1 3:00 0 - - Rule Fiji 2012 2013 - Jan Sun>=18 3:00 0 - - Rule Fiji 2014 only - Jan Sun>=18 2:00 0 - --Rule Fiji 2014 max - Nov Sun>=1 2:00 1:00 S -+Rule Fiji 2014 max - Nov Sun>=1 2:00 1:00 - - Rule Fiji 2015 max - Jan Sun>=14 3:00 0 - - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone Pacific/Fiji 11:55:44 - LMT 1915 Oct 26 # Suva -@@ -429,11 +429,11 @@ - 12:00 - +12 - Zone Pacific/Enderbury -11:24:20 - LMT 1901 - -12:00 - -12 1979 Oct -- -11:00 - -11 1995 -+ -11:00 - -11 1994 Dec 31 - 13:00 - +13 - Zone Pacific/Kiritimati -10:29:20 - LMT 1901 - -10:40 - -1040 1979 Oct -- -10:00 - -10 1995 -+ -10:00 - -10 1994 Dec 31 - 14:00 - +14 - - # N Mariana Is -@@ -470,9 +470,9 @@ - - # New Caledonia - # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S --Rule NC 1977 1978 - Dec Sun>=1 0:00 1:00 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 S -+Rule NC 1996 only - Dec 1 2:00s 1:00 - - # Shanks & Pottenger say the following was at 2:00; go with IATA. - Rule NC 1997 only - Mar 2 2:00s 0 - - # Zone NAME GMTOFF RULES FORMAT [UNTIL] -@@ -492,27 +492,28 @@ - Rule NZ 1934 1940 - Apr lastSun 2:00 0 M - Rule NZ 1934 1940 - Sep lastSun 2:00 0:30 S - Rule NZ 1946 only - Jan 1 0:00 0 S --# Since 1957 Chatham has been 45 minutes ahead of NZ, but there's no --# convenient single notation for the date and time of this transition --# so we must duplicate the Rule lines. -+# Since 1957 Chatham has been 45 minutes ahead of NZ, but until 2018a -+# there was no documented single notation for the date and time of this -+# transition. Duplicate the Rule lines for now, to give the 2018a change -+# time to percolate out. - Rule NZ 1974 only - Nov Sun>=1 2:00s 1:00 D --Rule Chatham 1974 only - Nov Sun>=1 2:45s 1:00 D -+Rule Chatham 1974 only - Nov Sun>=1 2:45s 1:00 - - Rule NZ 1975 only - Feb lastSun 2:00s 0 S --Rule Chatham 1975 only - Feb lastSun 2:45s 0 S -+Rule Chatham 1975 only - Feb lastSun 2:45s 0 - - Rule NZ 1975 1988 - Oct lastSun 2:00s 1:00 D --Rule Chatham 1975 1988 - Oct lastSun 2:45s 1:00 D -+Rule Chatham 1975 1988 - Oct lastSun 2:45s 1:00 - - Rule NZ 1976 1989 - Mar Sun>=1 2:00s 0 S --Rule Chatham 1976 1989 - Mar Sun>=1 2:45s 0 S -+Rule Chatham 1976 1989 - Mar Sun>=1 2:45s 0 - - Rule NZ 1989 only - Oct Sun>=8 2:00s 1:00 D --Rule Chatham 1989 only - Oct Sun>=8 2:45s 1:00 D -+Rule Chatham 1989 only - Oct Sun>=8 2:45s 1:00 - - Rule NZ 1990 2006 - Oct Sun>=1 2:00s 1:00 D --Rule Chatham 1990 2006 - Oct Sun>=1 2:45s 1:00 D -+Rule Chatham 1990 2006 - Oct Sun>=1 2:45s 1:00 - - Rule NZ 1990 2007 - Mar Sun>=15 2:00s 0 S --Rule Chatham 1990 2007 - Mar Sun>=15 2:45s 0 S -+Rule Chatham 1990 2007 - Mar Sun>=15 2:45s 0 - - Rule NZ 2007 max - Sep lastSun 2:00s 1:00 D --Rule Chatham 2007 max - Sep lastSun 2:45s 1:00 D -+Rule Chatham 2007 max - Sep lastSun 2:45s 1:00 - - Rule NZ 2008 max - Apr Sun>=1 2:00s 0 S --Rule Chatham 2008 max - Apr Sun>=1 2:45s 0 S -+Rule Chatham 2008 max - Apr Sun>=1 2:45s 0 - - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone Pacific/Auckland 11:39:04 - LMT 1868 Nov 2 - 11:30 NZ NZ%sT 1946 Jan 1 -@@ -536,9 +537,9 @@ - # Cook Is - # From Shanks & Pottenger: - # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S --Rule Cook 1978 only - Nov 12 0:00 0:30 HS -+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 HS -+Rule Cook 1979 1990 - Oct lastSun 0:00 0:30 - - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone Pacific/Rarotonga -10:39:04 - LMT 1901 # Avarua - -10:30 - -1030 1978 Nov 12 -@@ -679,11 +680,11 @@ - # Assume the pattern instituted in 2012 will continue indefinitely. - - # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S --Rule WS 2010 only - Sep lastSun 0:00 1 D --Rule WS 2011 only - Apr Sat>=1 4:00 0 S --Rule WS 2011 only - Sep lastSat 3:00 1 D --Rule WS 2012 max - Apr Sun>=1 4:00 0 S --Rule WS 2012 max - Sep lastSun 3:00 1 D -+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 - -+Rule WS 2012 max - Apr Sun>=1 4:00 0 - -+Rule WS 2012 max - Sep lastSun 3:00 1 - - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone Pacific/Apia 12:33:04 - LMT 1892 Jul 5 - -11:26:56 - LMT 1911 -@@ -723,11 +724,11 @@ - - # Tonga - # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S --Rule Tonga 1999 only - Oct 7 2:00s 1:00 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 S -+Rule Tonga 2000 2001 - Nov Sun>=1 2:00 1:00 - - Rule Tonga 2001 2002 - Jan lastSun 2:00 0 - --Rule Tonga 2016 only - Nov Sun>=1 2:00 1:00 S -+Rule Tonga 2016 only - Nov Sun>=1 2:00 1:00 - - Rule Tonga 2017 only - Jan Sun>=15 3:00 0 - - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone Pacific/Tongatapu 12:19:20 - LMT 1901 -@@ -804,12 +805,12 @@ - - # Vanuatu - # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S --Rule Vanuatu 1983 only - Sep 25 0:00 1:00 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 S --Rule Vanuatu 1985 1991 - Sep Sun>=23 0:00 1:00 S -+Rule Vanuatu 1984 only - Oct 23 0:00 1:00 - -+Rule Vanuatu 1985 1991 - Sep Sun>=23 0:00 1:00 - - Rule Vanuatu 1992 1993 - Jan Sun>=23 0:00 0 - --Rule Vanuatu 1992 only - Oct Sun>=23 0:00 1:00 S -+Rule Vanuatu 1992 only - Oct Sun>=23 0:00 1:00 - - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone Pacific/Efate 11:13:16 - LMT 1912 Jan 13 # Vila - 11:00 Vanuatu +11/+12 -@@ -1108,6 +1109,13 @@ - # South Australian time even though it's located in Western Australia. - - # Queensland -+ -+# From Paul Eggert (2018-02-26): -+# I lack access to the following source for Queensland DST: -+# Pearce C. History of daylight saving time in Queensland. -+# Queensland Hist J. 2017 Aug;23(6):389-403 -+# https://search.informit.com.au/documentSummary;dn=994682348436426;res=IELHSS -+ - # From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06): - # # The state of QUEENSLAND.. [ Courtesy Qld. Dept Premier Econ&Trade Devel ] - # # [ Dec 1990 ] -@@ -1534,6 +1542,12 @@ - # "declared it the same day [throughout] the country as of Jan. 1, 1995" - # as part of the competition to be first into the 21st century. - -+# From Kerry Shetline (2018-02-03): -+# December 31 was the day that was skipped, so that the transition -+# would be from Friday December 30, 1994 to Sunday January 1, 1995. -+# From Paul Eggert (2018-02-04): -+# One source for this is page 202 of: Bartky IR. One Time Fits All: -+# The Campaigns for Global Uniformity (2007). - - # Kwajalein - -@@ -1626,7 +1640,7 @@ - - # From Howie Phelps (1999-11-10), who talked to a Pitcairner via shortwave: - # Betty Christian told me yesterday that their local time is the same as --# Pacific Standard Time. They used to be 1/2 hour different from us here in -+# Pacific Standard Time. They used to be ½ hour different from us here in - # Sacramento but it was changed a couple of years ago. - - -@@ -1665,7 +1679,7 @@ - # 12 hours and 20 minutes ahead of GMT. When New Zealand adjusted its - # standard time in 1940s, Tonga had the choice of subtracting from its - # local time to come on the same standard time as New Zealand or of --# advancing its time to maintain the differential of 13 degrees -+# advancing its time to maintain the differential of 13° - # (approximately 50 minutes ahead of New Zealand time). - # - # Because His Majesty King Tāufaʻāhau Tupou IV, then Crown Prince ---- icedtea-3.8.0/openjdk/jdk/test/sun/util/calendar/zi/tzdata/europe 2018-09-18 10:22:19.811039711 +0200 -+++ icedtea-3.8.0/openjdk/jdk/test/sun/util/calendar/zi/tzdata/europe 2018-09-18 10:25:01.675921189 +0200 -@@ -140,8 +140,8 @@ - # along the towpath within a few yards of it.' - # - # I have a one inch to one mile map of London and my estimate of the stone's --# position is 51 degrees 28' 30" N, 0 degrees 18' 45" W. The longitude should --# be within about +-2". The Ordnance Survey grid reference is TQ172761. -+# position is 51° 28' 30" N, 0° 18' 45" W. The longitude should -+# be within about ±2". The Ordnance Survey grid reference is TQ172761. - # - # [This yields GMTOFF = -0:01:15 for London LMT in the 18th century.] - -@@ -181,7 +181,7 @@ - # after-hours daylight in which to pursue his research. - # In 1895 he presented a paper to the Wellington Philosophical Society - # that proposed a two-hour daylight-saving shift. See: --# Hudson GV. On seasonal time-adjustment in countries south of lat. 30 deg. -+# Hudson GV. On seasonal time-adjustment in countries south of lat. 30°. - # Transactions and Proceedings of the New Zealand Institute. 1895;28:734 - # http://rsnz.natlib.govt.nz/volume/rsnz_28/rsnz_28_00_006110.html - # Although some interest was expressed in New Zealand, his proposal -@@ -531,11 +531,25 @@ - Link Europe/London Europe/Guernsey - Link Europe/London Europe/Isle_of_Man - --# From Paul Eggert (2018-01-19): -+# From Paul Eggert (2018-02-15): -+# In January 2018 we discovered that the negative SAVE values in the -+# Eire rules cause problems with tests for ICU: -+# https://mm.icann.org/pipermail/tz/2018-January/025825.html -+# and with tests for OpenJDK: -+# https://mm.icann.org/pipermail/tz/2018-January/025822.html -+# -+# To work around this problem, the build procedure can translate the -+# following data into two forms, one with negative SAVE values and the -+# other form with a traditional approximation for Irish time stamps -+# after 1971-10-31 02:00 UTC; although this approximation has tm_isdst -+# flags that are reversed, its UTC offsets are correct and this often -+# suffices. This source file currently uses only nonnegative SAVE -+# values, but this is intended to change and downstream code should -+# not rely on it. -+# - # The following is like GB-Eire and EU, except with standard time in --# summer and negative daylight saving time in winter. --# Although currently commented out, this will need to become uncommented --# once the ICU/OpenJDK workaround is removed; see below. -+# 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 Eire 1971 only - Oct 31 2:00u -1:00 GMT - #Rule Eire 1972 1980 - Mar Sun>=16 2:00u 0 IST -@@ -556,24 +570,12 @@ - 0:00 1:00 IST 1947 Nov 2 2:00s - 0:00 - GMT 1948 Apr 18 2:00s - 0:00 GB-Eire GMT/IST 1968 Oct 27 --# From Paul Eggert (2018-01-18): --# The next line should look like this: -+# The next line is for when negative SAVE values are used. - # 1:00 Eire IST/GMT --# However, in January 2018 we discovered that the Eire rules cause --# problems with tests for ICU: --# https://mm.icann.org/pipermail/tz/2018-January/025825.html --# and with tests for OpenJDK: --# https://mm.icann.org/pipermail/tz/2018-January/025822.html --# To work around this problem, use a traditional approximation for --# time stamps after 1971-10-31 02:00 UTC, to give ICU and OpenJDK --# developers breathing room to fix bugs. This approximation has --# correct UTC offsets, but results in tm_isdst flags are the reverse --# of what they should be. This workaround is temporary and should be --# removed reasonably soon. -+# These three lines are for when SAVE values are always nonnegative. - 1:00 - IST 1971 Oct 31 2:00u - 0:00 GB-Eire GMT/IST 1996 - 0:00 EU GMT/IST --# End of workaround for ICU and OpenJDK bugs. - - - ############################################################################### -@@ -1557,21 +1559,21 @@ - # http://www.almanak.hi.is/klukkan.html - # - # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S --Rule Iceland 1917 1919 - Feb 19 23:00 1:00 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 - --Rule Iceland 1921 only - Mar 19 23:00 1:00 S -+Rule Iceland 1921 only - Mar 19 23:00 1:00 - - Rule Iceland 1921 only - Jun 23 1:00 0 - --Rule Iceland 1939 only - Apr 29 23:00 1:00 S -+Rule Iceland 1939 only - Apr 29 23:00 1:00 - - Rule Iceland 1939 only - Oct 29 2:00 0 - --Rule Iceland 1940 only - Feb 25 2:00 1:00 S -+Rule Iceland 1940 only - Feb 25 2:00 1:00 - - Rule Iceland 1940 1941 - Nov Sun>=2 1:00s 0 - --Rule Iceland 1941 1942 - Mar Sun>=2 1:00s 1:00 S -+Rule Iceland 1941 1942 - Mar Sun>=2 1:00s 1:00 - - # 1943-1946 - first Sunday in March until first Sunday in winter --Rule Iceland 1943 1946 - Mar Sun>=1 1:00s 1:00 S -+Rule Iceland 1943 1946 - Mar Sun>=1 1:00s 1:00 - - Rule Iceland 1942 1948 - Oct Sun>=22 1:00s 0 - - # 1947-1967 - first Sunday in April until first Sunday in winter --Rule Iceland 1947 1967 - Apr Sun>=1 1:00s 1:00 S -+Rule Iceland 1947 1967 - Apr Sun>=1 1:00s 1:00 - - # 1949 and 1967 Oct transitions delayed by 1 week - Rule Iceland 1949 only - Oct 30 1:00s 0 - - Rule Iceland 1950 1966 - Oct Sun>=22 1:00s 0 - -@@ -2161,15 +2163,19 @@ - 1:00 EU CE%sT - - # Portugal --# -+ - # From Paul Eggert (2014-08-11), after a heads-up from Stephen Colebourne: - # According to a Portuguese decree (1911-05-26) - # https://dre.pt/application/dir/pdf1sdip/1911/05/12500/23132313.pdf - # Lisbon was at -0:36:44.68, but switched to GMT on 1912-01-01 at 00:00. --# Round the old offset to -0:36:45. This agrees with Willett but disagrees --# with Shanks, who says the transition occurred on 1911-05-24 at 00:00 for --# Europe/Lisbon, Atlantic/Azores, and Atlantic/Madeira. -+# Round the old offset to -0:36:45. This agrees with Willett.... - # -+# From Michael Deckers (2018-02-15): -+# article 5 [of the 1911 decree; Deckers's translation] ...: -+# These dispositions shall enter into force at the instant at which, -+# according to the 2nd article, the civil day January 1, 1912 begins, -+# all clocks therefore having to be advanced or set back correspondingly ... -+ - # From Rui Pedro Salgueiro (1992-11-12): - # Portugal has recently (September, 27) changed timezone - # (from WET to MET or CET) to harmonize with EEC. -@@ -2252,7 +2258,7 @@ - # - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone Europe/Lisbon -0:36:45 - LMT 1884 -- -0:36:45 - LMT 1912 Jan 1 # Lisbon Mean Time -+ -0:36:45 - LMT 1912 Jan 1 0:00u # Lisbon MT - 0:00 Port WE%sT 1966 Apr 3 2:00 - 1:00 - CET 1976 Sep 26 1:00 - 0:00 Port WE%sT 1983 Sep 25 1:00s -@@ -2261,7 +2267,7 @@ - 0:00 EU WE%sT - # This Zone can be simplified once we assume zic %z. - Zone Atlantic/Azores -1:42:40 - LMT 1884 # Ponta Delgada -- -1:54:32 - HMT 1912 Jan 1 # Horta Mean Time -+ -1:54:32 - HMT 1912 Jan 1 2:00u # Horta MT - -2:00 Port -02/-01 1942 Apr 25 22:00s - -2:00 Port +00 1942 Aug 15 22:00s - -2:00 Port -02/-01 1943 Apr 17 22:00s -@@ -2277,7 +2283,7 @@ - -1:00 EU -01/+00 - # This Zone can be simplified once we assume zic %z. - Zone Atlantic/Madeira -1:07:36 - LMT 1884 # Funchal -- -1:07:36 - FMT 1912 Jan 1 # Funchal Mean Time -+ -1:07:36 - FMT 1912 Jan 1 1:00u # Funchal MT - -1:00 Port -01/+00 1942 Apr 25 22:00s - -1:00 Port +01 1942 Aug 15 22:00s - -1:00 Port -01/+00 1943 Apr 17 22:00s -@@ -2615,13 +2621,13 @@ - - # From Vladimir Karpinsky (2014-07-08): - # LMT in Moscow (before Jul 3, 1916) is 2:30:17, that was defined by Moscow --# Observatory (coordinates: 55 deg. 45'29.70", 37 deg. 34'05.30").... -+# Observatory (coordinates: 55° 45' 29.70", 37° 34' 05.30").... - # LMT in Moscow since Jul 3, 1916 is 2:31:01 as a result of new standard. - # (The info is from the book by Byalokoz ... p. 18.) - # The time in St. Petersburg as capital of Russia was defined by - # Pulkov observatory, near St. Petersburg. In 1916 LMT Moscow - # was synchronized with LMT St. Petersburg (+30 minutes), (Pulkov observatory --# coordinates: 59 deg. 46'18.70", 30 deg. 19'40.70") so 30 deg. 19'40.70" > -+# coordinates: 59° 46' 18.70", 30° 19' 40.70") so 30° 19' 40.70" > - # 2h01m18.7s = 2:01:19. LMT Moscow = LMT St.Petersburg + 30m 2:01:19 + 0:30 = - # 2:31:19 ... - # -@@ -3450,7 +3456,7 @@ - # three degrees, or twelve minutes of time, to the west of the - # meridian of the Observatory of Stockholm". The law is dated 1878-05-31. - # --# The observatory at that time had the meridian 18 degrees 03' 30" -+# The observatory at that time had the meridian 18° 03' 30" - # eastern longitude = 01:12:14 in time. Less 12 minutes gives the - # national standard time as 01:00:14 ahead of GMT.... - # -@@ -3554,7 +3560,7 @@ - # From Alois Treindl (2013-09-11): - # The Federal regulations say - # https://www.admin.ch/opc/de/classified-compilation/20071096/index.html --# ... the meridian for Bern mean time ... is 7 degrees 26' 22.50". -+# ... the meridian for Bern mean time ... is 7° 26' 22.50". - # Expressed in time, it is 0h29m45.5s. - - # From Pierre-Yves Berger (2013-09-11): ---- icedtea-3.8.0/openjdk/jdk/test/sun/util/calendar/zi/tzdata/northamerica 2018-09-18 10:22:19.811039711 +0200 -+++ icedtea-3.8.0/openjdk/jdk/test/sun/util/calendar/zi/tzdata/northamerica 2018-09-18 10:25:01.679921211 +0200 -@@ -48,7 +48,7 @@ - # in New York City (1869-10). His 1870 proposal was based on Washington, DC, - # but in 1872-05 he moved the proposed origin to Greenwich. - --# From Paul Eggert (2016-09-21): -+# From Paul Eggert (2018-03-20): - # Dowd's proposal left many details unresolved, such as where to draw - # lines between time zones. The key individual who made time zones - # work in the US was William Frederick Allen - railway engineer, -@@ -59,10 +59,9 @@ - # to the General Time Convention on 1883-04-11, saying that his plan - # meant "local time would be practically abolished" - a plus for - # railway scheduling. By the next convention on 1883-10-11 nearly all --# railroads had agreed and it took effect on 1883-11-18 at 12:00. --# That Sunday was called the "day of two noons", as the eastern parts --# of the new zones observed noon twice. Allen witnessed the --# transition in New York City, writing: -+# railroads had agreed and it took effect on 1883-11-18. That Sunday -+# was called the "day of two noons", as some locations observed noon -+# twice. Allen witnessed the transition in New York City, writing: - # - # I heard the bells of St. Paul's strike on the old time. Four - # minutes later, obedient to the electrical signal from the Naval -@@ -447,8 +446,7 @@ - # ...according to the Census Bureau, the largest city is Beulah (although - # it's commonly referred to as Beulah-Hazen, with Hazen being the next - # largest city in Mercer County). Google Maps places Beulah's city hall --# at 47 degrees 15' 51" N, 101 degrees 46' 40" W, which yields an offset --# of 6h47'07". -+# at 47° 15' 51" N, 101° 46' 40" W, which yields an offset of 6h47'07". - - Zone America/North_Dakota/Beulah -6:47:07 - LMT 1883 Nov 18 12:12:53 - -7:00 US M%sT 2010 Nov 7 2:00 -@@ -481,7 +479,7 @@ - # California, northern Idaho (Benewah, Bonner, Boundary, Clearwater, - # Kootenai, Latah, Lewis, Nez Perce, and Shoshone counties, Idaho county - # north of the Salmon River, and the towns of Burgdorf and Warren), --# Nevada (except West Wendover), Oregon (except the northern 3/4 of -+# Nevada (except West Wendover), Oregon (except the northern ¾ of - # Malheur county), and Washington - - # From Paul Eggert (2016-08-20): -@@ -979,6 +977,13 @@ - -5:00 - EST 2006 - -5:00 US E%sT - -+# From Paul Eggert (2018-03-20): -+# The Louisville & Nashville Railroad's 1883-11-18 change occurred at -+# 10:00 old local time; train were supposed to come to a standstill -+# for precisely 18 minutes. See Bartky Fig. 1 (page 50). It is not -+# clear how this matched civil time in Louisville, so for now continue -+# to assume Louisville switched at noon new local time, like New York. -+# - # 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 -@@ -3287,8 +3292,8 @@ - # http://www.jamaicaobserver.com/columns/The-politician-in-all-of-us_17573647 - # - # Zone NAME GMTOFF RULES FORMAT [UNTIL] --Zone America/Jamaica -5:07:11 - LMT 1890 # Kingston -- -5:07:11 - KMT 1912 Feb # Kingston Mean Time -+Zone America/Jamaica -5:07:10 - LMT 1890 # Kingston -+ -5:07:10 - KMT 1912 Feb # Kingston Mean Time - -5:00 - EST 1974 - -5:00 US E%sT 1984 - -5:00 - EST -@@ -3438,7 +3443,7 @@ - # - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone America/Grand_Turk -4:44:32 - LMT 1890 -- -5:07:11 - KMT 1912 Feb # Kingston Mean Time -+ -5:07:10 - KMT 1912 Feb # Kingston Mean Time - -5:00 - EST 1979 - -5:00 US E%sT 2015 Nov Sun>=1 2:00 - -4:00 - AST 2018 Mar 11 3:00 ---- icedtea-3.8.0/openjdk/jdk/test/sun/util/calendar/zi/tzdata/southamerica 2018-09-18 10:22:19.811039711 +0200 -+++ icedtea-3.8.0/openjdk/jdk/test/sun/util/calendar/zi/tzdata/southamerica 2018-09-18 10:25:01.679921211 +0200 -@@ -70,28 +70,28 @@ - # AR was chosen because they are the ISO letters that represent Argentina. - - # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S --Rule Arg 1930 only - Dec 1 0:00 1:00 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 S -+Rule Arg 1931 only - Oct 15 0:00 1:00 - - Rule Arg 1932 1940 - Mar 1 0:00 0 - --Rule Arg 1932 1939 - Nov 1 0:00 1:00 S --Rule Arg 1940 only - Jul 1 0:00 1:00 S -+Rule Arg 1932 1939 - Nov 1 0:00 1:00 - -+Rule Arg 1940 only - Jul 1 0:00 1:00 - - Rule Arg 1941 only - Jun 15 0:00 0 - --Rule Arg 1941 only - Oct 15 0:00 1:00 S -+Rule Arg 1941 only - Oct 15 0:00 1:00 - - Rule Arg 1943 only - Aug 1 0:00 0 - --Rule Arg 1943 only - Oct 15 0:00 1:00 S -+Rule Arg 1943 only - Oct 15 0:00 1:00 - - Rule Arg 1946 only - Mar 1 0:00 0 - --Rule Arg 1946 only - Oct 1 0:00 1:00 S -+Rule Arg 1946 only - Oct 1 0:00 1:00 - - Rule Arg 1963 only - Oct 1 0:00 0 - --Rule Arg 1963 only - Dec 15 0:00 1:00 S -+Rule Arg 1963 only - Dec 15 0:00 1:00 - - Rule Arg 1964 1966 - Mar 1 0:00 0 - --Rule Arg 1964 1966 - Oct 15 0:00 1:00 S -+Rule Arg 1964 1966 - Oct 15 0:00 1:00 - - Rule Arg 1967 only - Apr 2 0:00 0 - --Rule Arg 1967 1968 - Oct Sun>=1 0:00 1:00 S -+Rule Arg 1967 1968 - Oct Sun>=1 0:00 1:00 - - Rule Arg 1968 1969 - Apr Sun>=1 0:00 0 - --Rule Arg 1974 only - Jan 23 0:00 1:00 S -+Rule Arg 1974 only - Jan 23 0:00 1:00 - - Rule Arg 1974 only - May 1 0:00 0 - --Rule Arg 1988 only - Dec 1 0:00 1:00 S -+Rule Arg 1988 only - Dec 1 0:00 1:00 - - # - # From Hernan G. Otero (1995-06-26): - # These corrections were contributed by InterSoft Argentina S.A., -@@ -99,7 +99,7 @@ - # Talleres de Hidrografía Naval Argentina - # (Argentine Naval Hydrography Institute) - Rule Arg 1989 1993 - Mar Sun>=1 0:00 0 - --Rule Arg 1989 1992 - Oct Sun>=15 0:00 1:00 S -+Rule Arg 1989 1992 - Oct Sun>=15 0:00 1:00 - - # - # From Hernan G. Otero (1995-06-26): - # From this moment on, the law that mandated the daylight saving -@@ -110,7 +110,7 @@ - # On October 3, 1999, 0:00 local, Argentina implemented daylight savings time, - # which did not result in the switch of a time zone, as they stayed 9 hours - # from the International Date Line. --Rule Arg 1999 only - Oct Sun>=1 0:00 1:00 S -+Rule Arg 1999 only - Oct Sun>=1 0:00 1:00 - - # From Paul Eggert (2007-12-28): - # DST was set to expire on March 5, not March 3, but since it was converted - # to standard time on March 3 it's more convenient for us to pretend that -@@ -213,9 +213,9 @@ - # la modificación del huso horario, ya que 2009 nos encuentra con - # crecimiento en la producción y distribución energética." - --Rule Arg 2007 only - Dec 30 0:00 1:00 S -+Rule Arg 2007 only - Dec 30 0:00 1:00 - - Rule Arg 2008 2009 - Mar Sun>=15 0:00 0 - --Rule Arg 2008 only - Oct Sun>=15 0:00 1:00 S -+Rule Arg 2008 only - Oct Sun>=15 0:00 1:00 - - - # From Mariano Absatz (2004-05-21): - # Today it was officially published that the Province of Mendoza is changing -@@ -225,12 +225,14 @@ - # It's Law No. 7,210. This change is due to a public power emergency, so for - # now we'll assume it's for this year only. - # --# From Paul Eggert (2014-08-09): -+# From Paul Eggert (2018-01-31): - # Hora de verano para la República Argentina - # http://buenasiembra.com.ar/esoterismo/astrologia/hora-de-verano-de-la-republica-argentina-27.html - # says that standard time in Argentina from 1894-10-31 - # to 1920-05-01 was -4:16:48.25. Go with this more-precise value --# over Shanks & Pottenger. -+# over Shanks & Pottenger. It is upward compatible with Milne, who -+# says Córdoba time was -4:16:48.2. -+ - # - # From Mariano Absatz (2004-06-05): - # These media articles from a major newspaper mostly cover the current state: -@@ -404,9 +406,9 @@ - # rules...San Luis is still using "Western ARgentina Time" and it got - # stuck on Summer daylight savings time even though the summer is over. - --# From Paul Eggert (2013-09-05): -+# From Paul Eggert (2018-01-23): - # Perhaps San Luis operates on the legal fiction that it is at -04 --# with perpetual summer time, but ordinary usage typically seems to -+# with perpetual daylight saving time, but ordinary usage typically seems to - # just say it's at -03; see, for example, - # https://es.wikipedia.org/wiki/Hora_oficial_argentina - # We've documented similar situations as being plain changes to -@@ -415,9 +417,6 @@ - # plus is that this silences a zic complaint that there's no POSIX TZ - # setting for time stamps past 2038. - --# From Paul Eggert (2013-02-21): --# Milne says Córdoba time was -4:16:48.2. Round to the nearest second. -- - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - # - # Buenos Aires (BA), Capital Federal (CF), -@@ -552,7 +551,7 @@ - # San Luis (SL) - - Rule SanLuis 2008 2009 - Mar Sun>=8 0:00 0 - --Rule SanLuis 2007 2008 - Oct Sun>=8 0:00 1:00 S -+Rule SanLuis 2007 2008 - Oct Sun>=8 0:00 1:00 - - - Zone America/Argentina/San_Luis -4:25:24 - LMT 1894 Oct 31 - -4:16:48 - CMT 1920 May -@@ -794,14 +793,14 @@ - # Rule NAME FROM TO TYPE 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 S -+Rule Brazil 1931 only - Oct 3 11:00 1:00 - - Rule Brazil 1932 1933 - Apr 1 0:00 0 - --Rule Brazil 1932 only - Oct 3 0:00 1:00 S -+Rule Brazil 1932 only - Oct 3 0:00 1:00 - - # Decree 23,195 (1933-10-10) - # revoked DST. - # Decree 27,496 (1949-11-24) - # Decree 27,998 (1950-04-13) --Rule Brazil 1949 1952 - Dec 1 0:00 1:00 S -+Rule Brazil 1949 1952 - Dec 1 0:00 1:00 - - Rule Brazil 1950 only - Apr 16 1:00 0 - - Rule Brazil 1951 1952 - Apr 1 0:00 0 - - # Decree 32,308 (1953-02-24) -@@ -813,51 +812,51 @@ - # in SP, RJ, GB, MG, ES, due to the prolongation of the drought. - # Decree 53,071 (1963-12-03) - # extended the above decree to all of the national territory on 12-09. --Rule Brazil 1963 only - Dec 9 0:00 1:00 S -+Rule Brazil 1963 only - Dec 9 0:00 1:00 - - # Decree 53,604 (1964-02-25) - # extended summer time by one day to 1964-03-01 00:00 (start of school). - Rule Brazil 1964 only - Mar 1 0:00 0 - - # Decree 55,639 (1965-01-27) --Rule Brazil 1965 only - Jan 31 0:00 1:00 S -+Rule Brazil 1965 only - Jan 31 0:00 1:00 - - Rule Brazil 1965 only - Mar 31 0:00 0 - - # Decree 57,303 (1965-11-22) --Rule Brazil 1965 only - Dec 1 0:00 1:00 S -+Rule Brazil 1965 only - Dec 1 0:00 1:00 - - # Decree 57,843 (1966-02-18) - Rule Brazil 1966 1968 - Mar 1 0:00 0 - --Rule Brazil 1966 1967 - Nov 1 0:00 1:00 S -+Rule Brazil 1966 1967 - Nov 1 0:00 1:00 - - # Decree 63,429 (1968-10-15) - # revoked DST. - # Decree 91,698 (1985-09-27) --Rule Brazil 1985 only - Nov 2 0:00 1:00 S -+Rule Brazil 1985 only - Nov 2 0:00 1:00 - - # Decree 92,310 (1986-01-21) - # Decree 92,463 (1986-03-13) - Rule Brazil 1986 only - Mar 15 0:00 0 - - # Decree 93,316 (1986-10-01) --Rule Brazil 1986 only - Oct 25 0:00 1:00 S -+Rule Brazil 1986 only - Oct 25 0:00 1:00 - - Rule Brazil 1987 only - Feb 14 0:00 0 - - # Decree 94,922 (1987-09-22) --Rule Brazil 1987 only - Oct 25 0:00 1:00 S -+Rule Brazil 1987 only - Oct 25 0:00 1:00 - - Rule Brazil 1988 only - Feb 7 0:00 0 - - # Decree 96,676 (1988-09-12) - # except for the states of AC, AM, PA, RR, RO, and AP (then a territory) --Rule Brazil 1988 only - Oct 16 0:00 1:00 S -+Rule Brazil 1988 only - Oct 16 0:00 1:00 - - Rule Brazil 1989 only - Jan 29 0:00 0 - - # Decree 98,077 (1989-08-21) - # with the same exceptions --Rule Brazil 1989 only - Oct 15 0:00 1:00 S -+Rule Brazil 1989 only - Oct 15 0:00 1:00 - - Rule Brazil 1990 only - Feb 11 0:00 0 - - # Decree 99,530 (1990-09-17) - # adopted by RS, SC, PR, SP, RJ, ES, MG, GO, MS, DF. - # Decree 99,629 (1990-10-19) adds BA, MT. --Rule Brazil 1990 only - Oct 21 0:00 1:00 S -+Rule Brazil 1990 only - Oct 21 0:00 1:00 - - Rule Brazil 1991 only - Feb 17 0:00 0 - - # Unnumbered decree (1991-09-25) - # adopted by RS, SC, PR, SP, RJ, ES, MG, BA, GO, MT, MS, DF. --Rule Brazil 1991 only - Oct 20 0:00 1:00 S -+Rule Brazil 1991 only - Oct 20 0:00 1:00 - - Rule Brazil 1992 only - Feb 9 0:00 0 - - # Unnumbered decree (1992-10-16) - # adopted by same states. --Rule Brazil 1992 only - Oct 25 0:00 1:00 S -+Rule Brazil 1992 only - Oct 25 0:00 1:00 - - Rule Brazil 1993 only - Jan 31 0:00 0 - - # Decree 942 (1993-09-28) - # adopted by same states, plus AM. -@@ -867,12 +866,12 @@ - # adopted by same states, plus MT and TO. - # Decree 1,674 (1995-10-13) - # adds AL, SE. --Rule Brazil 1993 1995 - Oct Sun>=11 0:00 1:00 S -+Rule Brazil 1993 1995 - Oct Sun>=11 0:00 1:00 - - Rule Brazil 1994 1995 - Feb Sun>=15 0:00 0 - - Rule Brazil 1996 only - Feb 11 0:00 0 - - # Decree 2,000 (1996-09-04) - # adopted by same states, minus AL, SE. --Rule Brazil 1996 only - Oct 6 0:00 1:00 S -+Rule Brazil 1996 only - Oct 6 0:00 1:00 - - Rule Brazil 1997 only - Feb 16 0:00 0 - - # From Daniel C. Sobral (1998-02-12): - # In 1997, the DS began on October 6. The stated reason was that -@@ -882,19 +881,19 @@ - # to help dealing with the shortages of electric power. - # - # Decree 2,317 (1997-09-04), adopted by same states. --Rule Brazil 1997 only - Oct 6 0:00 1:00 S -+Rule Brazil 1997 only - Oct 6 0:00 1:00 - - # Decree 2,495 - # (1998-02-10) - Rule Brazil 1998 only - Mar 1 0:00 0 - - # Decree 2,780 (1998-09-11) - # adopted by the same states as before. --Rule Brazil 1998 only - Oct 11 0:00 1:00 S -+Rule Brazil 1998 only - Oct 11 0:00 1:00 - - Rule Brazil 1999 only - Feb 21 0:00 0 - - # Decree 3,150 - # (1999-08-23) adopted by same states. - # Decree 3,188 (1999-09-30) - # adds SE, AL, PB, PE, RN, CE, PI, MA and RR. --Rule Brazil 1999 only - Oct 3 0:00 1:00 S -+Rule Brazil 1999 only - Oct 3 0:00 1:00 - - Rule Brazil 2000 only - Feb 27 0:00 0 - - # Decree 3,592 (2000-09-06) - # adopted by the same states as before. -@@ -904,34 +903,34 @@ - # repeals DST in SE, AL, PB, RN, CE, PI and MA, effective 2000-10-22 00:00. - # Decree 3,916 - # (2001-09-13) reestablishes DST in AL, CE, MA, PB, PE, PI, RN, SE. --Rule Brazil 2000 2001 - Oct Sun>=8 0:00 1:00 S -+Rule Brazil 2000 2001 - Oct Sun>=8 0:00 1:00 - - Rule Brazil 2001 2006 - Feb Sun>=15 0:00 0 - - # Decree 4,399 (2002-10-01) repeals DST in AL, CE, MA, PB, PE, PI, RN, SE. - # 4,399 --Rule Brazil 2002 only - Nov 3 0:00 1:00 S -+Rule Brazil 2002 only - Nov 3 0:00 1:00 - - # Decree 4,844 (2003-09-24; corrected 2003-09-26) repeals DST in BA, MT, TO. - # 4,844 --Rule Brazil 2003 only - Oct 19 0:00 1:00 S -+Rule Brazil 2003 only - Oct 19 0:00 1:00 - - # Decree 5,223 (2004-10-01) reestablishes DST in MT. - # 5,223 --Rule Brazil 2004 only - Nov 2 0:00 1:00 S -+Rule Brazil 2004 only - Nov 2 0:00 1:00 - - # Decree 5,539 (2005-09-19), - # adopted by the same states as before. --Rule Brazil 2005 only - Oct 16 0:00 1:00 S -+Rule Brazil 2005 only - Oct 16 0:00 1:00 - - # Decree 5,920 (2006-10-03), - # adopted by the same states as before. --Rule Brazil 2006 only - Nov 5 0:00 1:00 S -+Rule Brazil 2006 only - Nov 5 0:00 1:00 - - Rule Brazil 2007 only - Feb 25 0:00 0 - - # Decree 6,212 (2007-09-26), - # adopted by the same states as before. --Rule Brazil 2007 only - Oct Sun>=8 0:00 1:00 S -+Rule Brazil 2007 only - Oct Sun>=8 0:00 1:00 - - # From Frederico A. C. Neves (2008-09-10): - # According to this decree - # http://www.planalto.gov.br/ccivil_03/_Ato2007-2010/2008/Decreto/D6558.htm - # [t]he DST period in Brazil now on will be from the 3rd Oct Sunday to the - # 3rd Feb Sunday. There is an exception on the return date when this is - # the Carnival Sunday then the return date will be the next Sunday... --Rule Brazil 2008 2017 - Oct Sun>=15 0:00 1:00 S -+Rule Brazil 2008 2017 - Oct Sun>=15 0:00 1:00 - - Rule Brazil 2008 2011 - Feb Sun>=15 0:00 0 - - # Decree 7,584 (2011-10-13) - # added Bahia. -@@ -949,7 +948,7 @@ - # ... https://www.timeanddate.com/news/time/brazil-delays-dst-2018.html - # From Steffen Thorsen (2017-12-20): - # http://www.planalto.gov.br/ccivil_03/_ato2015-2018/2017/decreto/D9242.htm --Rule Brazil 2018 max - Nov Sun>=1 0:00 1:00 S -+Rule Brazil 2018 max - Nov Sun>=1 0:00 1:00 - - Rule Brazil 2023 only - Feb Sun>=22 0:00 0 - - Rule Brazil 2024 2025 - Feb Sun>=15 0:00 0 - - Rule Brazil 2026 only - Feb Sun>=22 0:00 0 - -@@ -1256,28 +1255,28 @@ - # For now, assume that they will not revert. - - # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S --Rule Chile 1927 1931 - Sep 1 0:00 1:00 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 S -+Rule Chile 1968 only - Nov 3 4:00u 1:00 - - Rule Chile 1969 only - Mar 30 3:00u 0 - --Rule Chile 1969 only - Nov 23 4:00u 1:00 S -+Rule Chile 1969 only - Nov 23 4:00u 1:00 - - Rule Chile 1970 only - Mar 29 3:00u 0 - - Rule Chile 1971 only - Mar 14 3:00u 0 - --Rule Chile 1970 1972 - Oct Sun>=9 4:00u 1:00 S -+Rule Chile 1970 1972 - Oct Sun>=9 4:00u 1:00 - - Rule Chile 1972 1986 - Mar Sun>=9 3:00u 0 - --Rule Chile 1973 only - Sep 30 4:00u 1:00 S --Rule Chile 1974 1987 - Oct Sun>=9 4:00u 1:00 S -+Rule Chile 1973 only - Sep 30 4:00u 1:00 - -+Rule Chile 1974 1987 - Oct Sun>=9 4:00u 1:00 - - Rule Chile 1987 only - Apr 12 3:00u 0 - - Rule Chile 1988 1990 - Mar Sun>=9 3:00u 0 - --Rule Chile 1988 1989 - Oct Sun>=9 4:00u 1:00 S --Rule Chile 1990 only - Sep 16 4:00u 1:00 S -+Rule Chile 1988 1989 - Oct Sun>=9 4:00u 1:00 - -+Rule Chile 1990 only - Sep 16 4:00u 1:00 - - Rule Chile 1991 1996 - Mar Sun>=9 3:00u 0 - --Rule Chile 1991 1997 - Oct Sun>=9 4:00u 1:00 S -+Rule Chile 1991 1997 - Oct Sun>=9 4:00u 1:00 - - Rule Chile 1997 only - Mar 30 3:00u 0 - - Rule Chile 1998 only - Mar Sun>=9 3:00u 0 - --Rule Chile 1998 only - Sep 27 4:00u 1:00 S -+Rule Chile 1998 only - Sep 27 4:00u 1:00 - - Rule Chile 1999 only - Apr 4 3:00u 0 - --Rule Chile 1999 2010 - Oct Sun>=9 4:00u 1:00 S -+Rule Chile 1999 2010 - Oct Sun>=9 4:00u 1:00 - - Rule Chile 2000 2007 - Mar Sun>=9 3:00u 0 - - # N.B.: the end of March 29 in Chile is March 30 in Universal time, - # which is used below in specifying the transition. -@@ -1285,11 +1284,11 @@ - Rule Chile 2009 only - Mar Sun>=9 3:00u 0 - - Rule Chile 2010 only - Apr Sun>=1 3:00u 0 - - Rule Chile 2011 only - May Sun>=2 3:00u 0 - --Rule Chile 2011 only - Aug Sun>=16 4:00u 1:00 S -+Rule Chile 2011 only - Aug Sun>=16 4:00u 1:00 - - Rule Chile 2012 2014 - Apr Sun>=23 3:00u 0 - --Rule Chile 2012 2014 - Sep Sun>=2 4:00u 1:00 S -+Rule Chile 2012 2014 - Sep Sun>=2 4:00u 1:00 - - Rule Chile 2016 max - May Sun>=9 3:00u 0 - --Rule Chile 2016 max - Aug Sun>=9 4:00u 1:00 S -+Rule Chile 2016 max - Aug Sun>=9 4:00u 1:00 - - # IATA SSIM anomalies: (1992-02) says 1992-03-14; - # (1996-09) says 1998-03-08. Ignore these. - # Zone NAME GMTOFF RULES FORMAT [UNTIL] -@@ -1354,7 +1353,7 @@ - # "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 CO 1992 only - May 3 0:00 1:00 S -+Rule CO 1992 only - May 3 0:00 1:00 - - Rule CO 1993 only - Apr 4 0:00 0 - - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone America/Bogota -4:56:16 - LMT 1884 Mar 13 -@@ -1414,7 +1413,7 @@ - # 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 Ecuador 1992 only - Nov 28 0:00 1:00 S -+Rule Ecuador 1992 only - Nov 28 0:00 1:00 - - Rule Ecuador 1993 only - Feb 5 0:00 0 - - # - # Zone NAME GMTOFF RULES FORMAT [UNTIL] -@@ -1504,22 +1503,22 @@ - # the maintainers of the database to inform them we're adopting - # the same policy this year and suggest recommendations for future years. - # --# For now we will assume permanent summer time for the Falklands -+# 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 Falk 1937 1938 - Sep lastSun 0:00 1:00 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 S --Rule Falk 1940 1942 - Sep lastSun 0:00 1:00 S -+Rule Falk 1939 only - Oct 1 0:00 1:00 - -+Rule Falk 1940 1942 - Sep lastSun 0:00 1:00 - - Rule Falk 1943 only - Jan 1 0:00 0 - --Rule Falk 1983 only - Sep lastSun 0:00 1:00 S -+Rule Falk 1983 only - Sep lastSun 0:00 1:00 - - Rule Falk 1984 1985 - Apr lastSun 0:00 0 - --Rule Falk 1984 only - Sep 16 0:00 1:00 S --Rule Falk 1985 2000 - Sep Sun>=9 0:00 1:00 S -+Rule Falk 1984 only - Sep 16 0:00 1:00 - -+Rule Falk 1985 2000 - Sep Sun>=9 0:00 1:00 - - Rule Falk 1986 2000 - Apr Sun>=16 0:00 0 - - Rule Falk 2001 2010 - Apr Sun>=15 2:00 0 - --Rule Falk 2001 2010 - Sep Sun>=1 2:00 1:00 S -+Rule Falk 2001 2010 - Sep Sun>=1 2:00 1:00 - - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone Atlantic/Stanley -3:51:24 - LMT 1890 - -3:51:24 - SMT 1912 Mar 12 # Stanley Mean Time -@@ -1554,16 +1553,16 @@ - # adjust their clocks at 0 hour of the given dates. - # - # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S --Rule Para 1975 1988 - Oct 1 0:00 1:00 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 - --Rule Para 1989 only - Oct 22 0:00 1:00 S --Rule Para 1990 only - Oct 1 0:00 1:00 S --Rule Para 1991 only - Oct 6 0:00 1:00 S -+Rule Para 1989 only - Oct 22 0:00 1:00 - -+Rule Para 1990 only - Oct 1 0:00 1:00 - -+Rule Para 1991 only - Oct 6 0:00 1:00 - - Rule Para 1992 only - Mar 1 0:00 0 - --Rule Para 1992 only - Oct 5 0:00 1:00 S -+Rule Para 1992 only - Oct 5 0:00 1:00 - - Rule Para 1993 only - Mar 31 0:00 0 - --Rule Para 1993 1995 - Oct 1 0:00 1:00 S -+Rule Para 1993 1995 - Oct 1 0:00 1:00 - - Rule Para 1994 1995 - Feb lastSun 0:00 0 - - Rule Para 1996 only - Mar 1 0:00 0 - - # IATA SSIM (2000-02) says 1999-10-10; ignore this for now. -@@ -1581,7 +1580,7 @@ - # year, the time will change on the first Sunday of October; likewise, the - # clock will be set back on the first Sunday of March. - # --Rule Para 1996 2001 - Oct Sun>=1 0:00 1:00 S -+Rule Para 1996 2001 - Oct Sun>=1 0:00 1:00 - - # IATA SSIM (1997-09) says Mar 1; go with Shanks & Pottenger. - Rule Para 1997 only - Feb lastSun 0:00 0 - - # Shanks & Pottenger say 1999-02-28; IATA SSIM (1999-02) says 1999-02-27, but -@@ -1592,7 +1591,7 @@ - # dst method to be from the first Sunday in September to the first Sunday in - # April. - Rule Para 2002 2004 - Apr Sun>=1 0:00 0 - --Rule Para 2002 2003 - Sep Sun>=1 0:00 1:00 S -+Rule Para 2002 2003 - Sep Sun>=1 0:00 1:00 - - # - # From Jesper Nørgaard Welen (2005-01-02): - # There are several sources that claim that Paraguay made -@@ -1601,7 +1600,7 @@ - # Decree 1,867 (2004-03-05) - # From Carlos Raúl Perasso via Jesper Nørgaard Welen (2006-10-13) - # http://www.presidencia.gov.py/decretos/D1867.pdf --Rule Para 2004 2009 - Oct Sun>=15 0:00 1:00 S -+Rule Para 2004 2009 - Oct Sun>=15 0:00 1:00 - - Rule Para 2005 2009 - Mar Sun>=8 0:00 0 - - # From Carlos Raúl Perasso (2010-02-18): - # By decree number 3958 issued yesterday -@@ -1614,7 +1613,7 @@ - # and that on the first Sunday of the month of October, it is to be set - # forward 60 minutes, in all the territory of the Paraguayan Republic. - # ... --Rule Para 2010 max - Oct Sun>=1 0:00 1:00 S -+Rule Para 2010 max - Oct Sun>=1 0:00 1:00 - - Rule Para 2010 2012 - Apr Sun>=8 0:00 0 - - # - # From Steffen Thorsen (2013-03-07): -@@ -1647,16 +1646,16 @@ - # Shanks & Pottenger don't have this transition. Assume 1986 was like 1987. - - # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S --Rule Peru 1938 only - Jan 1 0:00 1:00 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 S -+Rule Peru 1938 1939 - Sep lastSun 0:00 1:00 - - Rule Peru 1939 1940 - Mar Sun>=24 0:00 0 - --Rule Peru 1986 1987 - Jan 1 0:00 1:00 S -+Rule Peru 1986 1987 - Jan 1 0:00 1:00 - - Rule Peru 1986 1987 - Apr 1 0:00 0 - --Rule Peru 1990 only - Jan 1 0:00 1:00 S -+Rule Peru 1990 only - Jan 1 0:00 1:00 - - Rule Peru 1990 only - Apr 1 0:00 0 - - # IATA is ambiguous for 1993/1995; go with Shanks & Pottenger. --Rule Peru 1994 only - Jan 1 0:00 1:00 S -+Rule Peru 1994 only - Jan 1 0:00 1:00 - - Rule Peru 1994 only - Apr 1 0:00 0 - - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone America/Lima -5:08:12 - LMT 1890 -@@ -1702,72 +1701,201 @@ - # Uruguay - # From Paul Eggert (1993-11-18): - # Uruguay wins the prize for the strangest peacetime manipulation of the rules. --# From Shanks & Pottenger: -+# -+# From Tim Parenti (2018-02-20), per Jeremie Bonjour (2018-01-31) and Michael -+# Deckers (2018-02-20): -+# ... At least they kept good records... -+# -+# http://www.armada.mil.uy/ContenidosPDFs/sohma/web/almanaque/almanaque_2018.pdf#page=36 -+# Page 36 of Almanaque 2018, published by the Oceanography, Hydrography, and -+# Meteorology Service of the Uruguayan Navy, seems to give many transitions -+# with greater clarity than we've had before. It directly references many laws -+# and decrees which are, in turn, referenced below. They can be viewed in the -+# public archives of the Diario Oficial (in Spanish) at -+# http://www.impo.com.uy/diariooficial/ -+# -+# Ley No. 3920 of 1908-06-10 placed the determination of legal time under the -+# auspices of the National Institute for the Prediction of Time. It is unclear -+# exactly what offset was used during this period, though Ley No. 7200 of -+# 1920-04-23 used the Observatory of the National Meteorological Institute in -+# Montevideo (34° 54' 33" S, 56° 12' 45" W) as its reference meridian, -+# retarding legal time by 15 minutes 9 seconds from 1920-04-30 24:00, -+# resulting in UT-04. Assume the corresponding LMT of UT-03:44:51 (given on -+# page 725 of the Proceedings of the Second Pan-American Scientific Congress, -+# 1915-1916) was in use, and merely became official from 1908-06-10. -+# https://www.impo.com.uy/diariooficial/1908/06/18/12 -+# https://www.impo.com.uy/diariooficial/1920/04/27/9 -+# -+# Ley No. 7594 of 1923-06-28 specified legal time as Observatory time advanced -+# by 44 minutes 51 seconds (UT-03) "from 30 September to 31 March", and by 14 -+# minutes 51 seconds (UT-03:30) "the rest of the year"; a message from the -+# National Council of Administration the same day, published directly below the -+# law in the Diario Oficial, specified the first transition to be 1923-09-30 -+# 24:00. This effectively established standard time at UT-03:30 with 30 -+# minutes DST. Assume transitions at 24:00 on the specified days until Ley No. -+# 7919 of 1926-03-05 ended this arrangement, repealing all "laws and other -+# provisions which oppose" it, resulting in year-round UT-03:30; a Resolución -+# of 1926-03-11 puts the final transition at 1926-03-31 24:00, the same as it -+# would have been under the previous law. -+# https://www.impo.com.uy/diariooficial/1923/07/02/2 -+# 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 --# Whitman gives 1923 Oct 1; go with Shanks & Pottenger. --Rule Uruguay 1923 only - Oct 2 0:00 0:30 HS -+Rule Uruguay 1923 1925 - Oct 1 0:00 0:30 - - Rule Uruguay 1924 1926 - Apr 1 0:00 0 - --Rule Uruguay 1924 1925 - Oct 1 0:00 0:30 HS --Rule Uruguay 1933 1935 - Oct lastSun 0:00 0:30 HS --# Shanks & Pottenger give 1935 Apr 1 0:00 & 1936 Mar 30 0:00; go with Whitman. --Rule Uruguay 1934 1936 - Mar Sat>=25 23:30s 0 - --Rule Uruguay 1936 only - Nov 1 0:00 0:30 HS --Rule Uruguay 1937 1941 - Mar lastSun 0:00 0 - --# Whitman gives 1937 Oct 3; go with Shanks & Pottenger. --Rule Uruguay 1937 1940 - Oct lastSun 0:00 0:30 HS --# Whitman gives 1941 Oct 24 - 1942 Mar 27, 1942 Dec 14 - 1943 Apr 13, --# and 1943 Apr 13 "to present time"; go with Shanks & Pottenger. --Rule Uruguay 1941 only - Aug 1 0:00 0:30 HS --Rule Uruguay 1942 only - Jan 1 0:00 0 - --Rule Uruguay 1942 only - Dec 14 0:00 1:00 S -+# From Tim Parenti (2018-02-15): -+# http://www.impo.com.uy/diariooficial/1933/10/27/6 -+# -+# It appears Ley No. 9122 of 1933 was never published as such in the Diario -+# Oficial, but instead appeared as Document 26 in the Diario on Friday -+# 1933-10-27 as a decree made Monday 1933-10-23 and filed under the Ministry of -+# National Defense. It reinstituted a DST of 30 minutes (to UT-03) "from the -+# last Sunday of October...until the last Saturday of March." In accordance -+# with this provision, the first transition was explicitly specified in Article -+# 2 of the decree as Saturday 1933-10-28 at 24:00; that is, Sunday 1933-10-29 -+# at 00:00. Assume transitions at 00:00 Sunday throughout. -+# -+# Departing from the matter-of-fact nature of previous timekeeping laws, the -+# 1933 decree "consider[s] the advantages of...the advance of legal time": -+# -+# "Whereas: The measure adopted by almost all nations at the time of the last -+# World War still persists in North America and Europe, precisely because of -+# the economic, hygienic, and social advantages derived from such an -+# emergency measure... -+# -+# Whereas: The advance of the legal time during the summer seasons, by -+# displacing social activity near sunrise, favors the citizen populations -+# and especially the society that creates and works..." -+# -+# It further specified that "necessary measures" be taken to ensure that -+# "public spectacles finish, in general, before [01:00]." -+Rule Uruguay 1933 1938 - Oct lastSun 0:00 0:30 - -+Rule Uruguay 1934 1941 - Mar lastSat 24:00 0 - -+# From Tim Parenti (2018-02-15): -+# Most of the Rules below, and their contemporaneous Zone lines, have been -+# updated simply to match the Almanaque 2018. Although the document does not -+# list exact transition times, midnight transitions were already present in our -+# data here for all transitions through 2004-09, and this is both consistent -+# with prior transitions and verified in several decrees marked below between -+# 1939-09 and 2004-09, wherein the relevant text was typically of the form: -+# -+# "From 0 hours on [date], the legal time of the entire Republic will be... -+# -+# In accordance with [the preceding], on [previous date] at 24 hours, all -+# clocks throughout the Republic will be [advanced/retarded] by..." -+# -+# It is possible that there is greater specificity to be found for the Rules -+# below, but it is buried in no fewer than 40 different decrees individually -+# referenced by the Almanaque for the period from 1939-09 to 2014-09. -+# Four-fifths of these were promulgated less than two weeks before taking -+# effect; more than half within a week and none more than 5 weeks. Only the -+# handful with comments below have been checked with any thoroughness. -+Rule Uruguay 1939 only - Oct 1 0:00 0:30 - -+Rule Uruguay 1940 only - Oct 27 0:00 0:30 - -+# From Tim Parenti (2018-02-15): -+# Decreto 1145 of the Ministry of National Defense, dated 1941-07-26, specified -+# UT-03 from Friday 1941-08-01 00:00, citing an "urgent...need to save fuel". -+# http://www.impo.com.uy/diariooficial/1941/08/04/1 -+Rule Uruguay 1941 only - Aug 1 0:00 0:30 - -+# From Tim Parenti (2018-02-15): -+# Decreto 1866 of the Ministry of National Defense, dated 1942-12-09, specified -+# further advancement (to UT-02:30) from Sunday 1942-12-13 24:00. Since clocks -+# never went back to UT-03:30 thereafter, this is modeled as advancing standard -+# time by 30 minutes to UT-03, while retaining 30 minutes of DST. -+# http://www.impo.com.uy/diariooficial/1942/12/16/3 -+Rule Uruguay 1942 only - Dec 14 0:00 0:30 - - Rule Uruguay 1943 only - Mar 14 0:00 0 - --Rule Uruguay 1959 only - May 24 0:00 1:00 S -+Rule Uruguay 1959 only - May 24 0:00 0:30 - - Rule Uruguay 1959 only - Nov 15 0:00 0 - --Rule Uruguay 1960 only - Jan 17 0:00 1:00 S -+Rule Uruguay 1960 only - Jan 17 0:00 1:00 - - Rule Uruguay 1960 only - Mar 6 0:00 0 - --Rule Uruguay 1965 1967 - Apr Sun>=1 0:00 1:00 S -+Rule Uruguay 1965 only - Apr 4 0:00 1:00 - - Rule Uruguay 1965 only - Sep 26 0:00 0 - --Rule Uruguay 1966 1967 - Oct 31 0:00 0 - --Rule Uruguay 1968 1970 - May 27 0:00 0:30 HS --Rule Uruguay 1968 1970 - Dec 2 0:00 0 - --Rule Uruguay 1972 only - Apr 24 0:00 1:00 S --Rule Uruguay 1972 only - Aug 15 0:00 0 - --Rule Uruguay 1974 only - Mar 10 0:00 0:30 HS --Rule Uruguay 1974 only - Dec 22 0:00 1:00 S --Rule Uruguay 1976 only - Oct 1 0:00 0 - --Rule Uruguay 1977 only - Dec 4 0:00 1:00 S --Rule Uruguay 1978 only - Apr 1 0:00 0 - --Rule Uruguay 1979 only - Oct 1 0:00 1:00 S --Rule Uruguay 1980 only - May 1 0:00 0 - --Rule Uruguay 1987 only - Dec 14 0:00 1:00 S --Rule Uruguay 1988 only - Mar 14 0:00 0 - --Rule Uruguay 1988 only - Dec 11 0:00 1:00 S --Rule Uruguay 1989 only - Mar 12 0:00 0 - --Rule Uruguay 1989 only - Oct 29 0:00 1:00 S --# Shanks & Pottenger say no DST was observed in 1990/1 and 1991/2, --# and that 1992/3's DST was from 10-25 to 03-01. Go with IATA. --Rule Uruguay 1990 1992 - Mar Sun>=1 0:00 0 - --Rule Uruguay 1990 1991 - Oct Sun>=21 0:00 1:00 S --Rule Uruguay 1992 only - Oct 18 0:00 1:00 S -+# From Tim Parenti (2018-02-15): -+# Decreto 321/968 of 1968-05-25, citing emergency drought measures decreed the -+# day before, brought clocks forward 30 minutes from Monday 1968-05-27 00:00. -+# http://www.impo.com.uy/diariooficial/1968/05/30/5 -+Rule Uruguay 1968 only - May 27 0:00 0:30 - -+Rule Uruguay 1968 only - Dec 1 0:00 0 - -+# From Tim Parenti (2018-02-15): -+# Decreto 188/970 of 1970-04-23 instituted restrictions on electricity -+# consumption "as a consequence of the current rainfall regime in the country". -+# Articles 13 and 14 advanced clocks by an hour from Saturday 1970-04-25 00:00. -+# http://www.impo.com.uy/diariooficial/1970/04/29/4 -+Rule Uruguay 1970 only - Apr 25 0:00 1:00 - -+Rule Uruguay 1970 only - Jun 14 0:00 0 - -+Rule Uruguay 1972 only - Apr 23 0:00 1:00 - -+Rule Uruguay 1972 only - Jul 16 0:00 0 - -+# From Tim Parenti (2018-02-15): -+# Decreto 29/974 of 1974-01-11, citing "the international rise in the price of -+# oil", advanced clocks by 90 minutes (to UT-01:30). Decreto 163/974 of -+# 1974-03-04 returned 60 of those minutes (to UT-02:30), and the remaining 30 -+# minutes followed in Decreto 679/974 of 1974-08-29. -+# http://www.impo.com.uy/diariooficial/1974/01/22/11 -+# http://www.impo.com.uy/diariooficial/1974/03/14/3 -+# http://www.impo.com.uy/diariooficial/1974/09/04/6 -+Rule Uruguay 1974 only - Jan 13 0:00 1:30 - -+Rule Uruguay 1974 only - Mar 10 0:00 0:30 - -+Rule Uruguay 1974 only - Sep 1 0:00 0 - -+Rule Uruguay 1974 only - Dec 22 0:00 1:00 - -+Rule Uruguay 1975 only - Mar 30 0:00 0 - -+Rule Uruguay 1976 only - Dec 19 0:00 1:00 - -+Rule Uruguay 1977 only - Mar 6 0:00 0 - -+Rule Uruguay 1977 only - Dec 4 0:00 1:00 - -+Rule Uruguay 1978 1979 - Mar Sun>=1 0:00 0 - -+Rule Uruguay 1978 only - Dec 17 0:00 1:00 - -+Rule Uruguay 1979 only - Apr 29 0:00 1:00 - -+Rule Uruguay 1980 only - Mar 16 0:00 0 - -+# From Tim Parenti (2018-02-15): -+# Decreto 725/987 of 1987-12-04 cited "better use of national tourist -+# attractions" to advance clocks one hour from Monday 1987-12-14 00:00. -+# http://www.impo.com.uy/diariooficial/1988/01/25/1 -+Rule Uruguay 1987 only - Dec 14 0:00 1:00 - -+Rule Uruguay 1988 only - Feb 28 0:00 0 - -+Rule Uruguay 1988 only - Dec 11 0:00 1:00 - -+Rule Uruguay 1989 only - Mar 5 0:00 0 - -+Rule Uruguay 1989 only - Oct 29 0:00 1:00 - -+Rule Uruguay 1990 only - Feb 25 0:00 0 - -+# From Tim Parenti (2018-02-15), per Paul Eggert (1999-11-04): -+# IATA agrees as below for 1990-10 through 1993-02. Per Almanaque 2018, the -+# 1992/1993 season appears to be the first in over half a century where DST -+# both began and ended pursuant to the same decree. -+Rule Uruguay 1990 1991 - Oct Sun>=21 0:00 1:00 - -+Rule Uruguay 1991 1992 - Mar Sun>=1 0:00 0 - -+Rule Uruguay 1992 only - Oct 18 0:00 1:00 - - Rule Uruguay 1993 only - Feb 28 0:00 0 - - # From Eduardo Cota (2004-09-20): - # The Uruguayan government has decreed a change in the local time.... --# http://www.presidencia.gub.uy/decretos/2004091502.htm --Rule Uruguay 2004 only - Sep 19 0:00 1:00 S -+# From Tim Parenti (2018-02-15): -+# Decreto 328/004 of 2004-09-15. -+# http://www.impo.com.uy/diariooficial/2004/09/23/documentos.pdf#page=1 -+Rule Uruguay 2004 only - Sep 19 0:00 1:00 - - # From Steffen Thorsen (2005-03-11): - # Uruguay's DST was scheduled to end on Sunday, 2005-03-13, but in order to - # save energy ... it was postponed two weeks.... --# http://www.presidencia.gub.uy/_Web/noticias/2005/03/2005031005.htm -+# From Tim Parenti (2018-02-15): -+# This 2005 postponement is not in Almanaque 2018. Go with the contemporaneous -+# reporting, which is confirmed by Decreto 107/005 of 2005-03-10 amending -+# Decreto 328/004: -+# http://www.impo.com.uy/diariooficial/2005/03/15/documentos.pdf#page=1 -+# The original decree specified a transition of 2005-03-12 24:00, but the new -+# one specified 2005-03-27 02:00. - Rule Uruguay 2005 only - Mar 27 2:00 0 - - # From Eduardo Cota (2005-09-27): --# http://www.presidencia.gub.uy/_Web/decretos/2005/09/CM%20119_09%2009%202005_00001.PDF --# This means that from 2005-10-09 at 02:00 local time, until 2006-03-12 at --# 02:00 local time, official time in Uruguay will be at GMT -2. --Rule Uruguay 2005 only - Oct 9 2:00 1:00 S --Rule Uruguay 2006 only - Mar 12 2:00 0 - --# From Jesper Nørgaard Welen (2006-09-06): --# http://www.presidencia.gub.uy/_web/decretos/2006/09/CM%20210_08%2006%202006_00001.PDF --# -+# ...from 2005-10-09 at 02:00 local time, until 2006-03-12 at 02:00 local time, -+# official time in Uruguay will be at GMT -2. -+# From Tim Parenti (2018-02-15): -+# Decreto 318/005 of 2005-09-19. -+# http://www.impo.com.uy/diariooficial/2005/09/23/documentos.pdf#page=1 -+Rule Uruguay 2005 only - Oct 9 2:00 1:00 - -+Rule Uruguay 2006 2015 - Mar Sun>=8 2:00 0 - -+# From Tim Parenti (2018-02-15), per Jesper Nørgaard Welen (2006-09-06): -+# Decreto 311/006 of 2006-09-04 established regular DST from the first Sunday -+# of October at 02:00 through the second Sunday of March at 02:00. Almanaque -+# 2018 appears to have a few typoed dates through this period; ignore them. -+# http://www.impo.com.uy/diariooficial/2006/09/08/documentos.pdf#page=1 -+Rule Uruguay 2006 2014 - Oct Sun>=1 2:00 1:00 - - # From Steffen Thorsen (2015-06-30): - # ... it looks like they will not be using DST the coming summer: - # http://www.elobservador.com.uy/gobierno-resolvio-que-no-habra-cambio-horario-verano-n656787 -@@ -1777,17 +1905,19 @@ - # instead of out to dinner. - # From Pablo Camargo (2015-07-13): - # http://archivo.presidencia.gub.uy/sci/decretos/2015/06/cons_min_201.pdf --# [dated 2015-06-29; repeals Decree 311/006 dated 2006-09-04] --Rule Uruguay 2006 2014 - Oct Sun>=1 2:00 1:00 S --Rule Uruguay 2007 2015 - Mar Sun>=8 2:00 0 - -+# From Tim Parenti (2018-02-15): -+# Decreto 178/015 of 2015-06-29; repeals Decreto 311/006. - - # This Zone can be simplified once we assume zic %z. --Zone America/Montevideo -3:44:44 - LMT 1898 Jun 28 -- -3:44:44 - MMT 1920 May 1 # Montevideo MT -+Zone America/Montevideo -3:44:51 - LMT 1908 Jun 10 -+ -3:44:51 - MMT 1920 May 1 # Montevideo MT -+ -4:00 - -04 1923 Oct 1 - -3:30 Uruguay -0330/-03 1942 Dec 14 -+ -3:00 Uruguay -03/-0230 1960 - -3:00 Uruguay -03/-02 1968 -- -3:00 Uruguay -03/-0230 1971 -+ -3:00 Uruguay -03/-0230 1970 - -3:00 Uruguay -03/-02 1974 -+ -3:00 Uruguay -03/-0130 1974 Mar 10 - -3:00 Uruguay -03/-0230 1974 Dec 22 - -3:00 Uruguay -03/-02 - ---- icedtea-3.8.0/openjdk/jdk/test/sun/util/calendar/zi/tzdata/VERSION 2018-09-18 10:22:19.807039690 +0200 -+++ icedtea-3.8.0/openjdk/jdk/test/sun/util/calendar/zi/tzdata/VERSION 2018-09-18 10:25:01.675921189 +0200 -@@ -21,4 +21,4 @@ - # or visit www.oracle.com if you need additional information or have any - # questions. - # --tzdata2018c -+tzdata2018d ---- icedtea-3.8.0/openjdk/jdk/test/sun/util/calendar/zi/tzdata/zone.tab 2018-09-18 10:22:19.811039711 +0200 -+++ icedtea-3.8.0/openjdk/jdk/test/sun/util/calendar/zi/tzdata/zone.tab 2018-09-18 10:25:01.679921211 +0200 -@@ -452,7 +452,7 @@ - US +643004-1652423 America/Nome Alaska (west) - US +515248-1763929 America/Adak Aleutian Islands - US +211825-1575130 Pacific/Honolulu Hawaii --UY -3453-05611 America/Montevideo -+UY -345433-0561245 America/Montevideo - UZ +3940+06648 Asia/Samarkand Uzbekistan (west) - UZ +4120+06918 Asia/Tashkent Uzbekistan (east) - VA +415408+0122711 Europe/Vatican diff --git a/8200666.patch b/8200666.patch deleted file mode 100644 index 8cc41c8..0000000 --- a/8200666.patch +++ /dev/null @@ -1,80 +0,0 @@ ---- icedtea-3.8.0/openjdk/jdk/src/share/classes/com/sun/jndi/ldap/Connection.java 2018-09-18 10:25:46.640166044 +0200 -+++ icedtea-3.8.0/openjdk/jdk/src/share/classes/com/sun/jndi/ldap/Connection.java 2018-09-18 10:26:40.104457189 +0200 -@@ -27,26 +27,27 @@ - - import java.io.BufferedInputStream; - import java.io.BufferedOutputStream; --import java.io.InterruptedIOException; - import java.io.IOException; --import java.io.OutputStream; - import java.io.InputStream; -+import java.io.InterruptedIOException; -+import java.io.OutputStream; -+import java.lang.reflect.Constructor; -+import java.lang.reflect.InvocationTargetException; -+import java.lang.reflect.Method; - import java.net.Socket; --import javax.net.ssl.SSLSocket; -+import java.security.AccessController; -+import java.security.PrivilegedAction; -+import java.util.Arrays; - - import javax.naming.CommunicationException; --import javax.naming.ServiceUnavailableException; --import javax.naming.NamingException; - import javax.naming.InterruptedNamingException; -- -+import javax.naming.NamingException; -+import javax.naming.ServiceUnavailableException; - import javax.naming.ldap.Control; -+import javax.net.ssl.SSLParameters; -+import javax.net.ssl.SSLSocket; - --import java.lang.reflect.Method; --import java.lang.reflect.Constructor; --import java.lang.reflect.InvocationTargetException; --import java.util.Arrays; - import sun.misc.IOUtils; --//import javax.net.SocketFactory; - - /** - * A thread that creates a connection to an LDAP server. -@@ -159,7 +160,18 @@ - - int readTimeout; - int connectTimeout; -+ private static final boolean IS_HOSTNAME_VERIFICATION_DISABLED -+ = hostnameVerificationDisabledValue(); - -+ private static boolean hostnameVerificationDisabledValue() { -+ PrivilegedAction act = () -> System.getProperty( -+ "com.sun.jndi.ldap.object.disableEndpointIdentification"); -+ String prop = AccessController.doPrivileged(act); -+ if (prop == null) { -+ return false; -+ } -+ return prop.isEmpty() ? true : Boolean.parseBoolean(prop); -+ } - // true means v3; false means v2 - // Called in LdapClient.authenticate() (which is synchronized) - // when connection is "quiet" and not shared; no need to synchronize -@@ -368,11 +380,17 @@ - // the SSL handshake following socket connection as part of the timeout. - // So explicitly set a socket read timeout, trigger the SSL handshake, - // then reset the timeout. -- if (connectTimeout > 0 && socket instanceof SSLSocket) { -+ if (socket instanceof SSLSocket) { - SSLSocket sslSocket = (SSLSocket) socket; - int socketTimeout = sslSocket.getSoTimeout(); -- -+ if (!IS_HOSTNAME_VERIFICATION_DISABLED) { -+ SSLParameters param = sslSocket.getSSLParameters(); -+ param.setEndpointIdentificationAlgorithm("LDAPS"); -+ sslSocket.setSSLParameters(param); -+ } -+ if (connectTimeout > 0) { - sslSocket.setSoTimeout(connectTimeout); // reuse full timeout value -+ } - sslSocket.startHandshake(); - sslSocket.setSoTimeout(socketTimeout); - } diff --git a/8201433.patch b/8201433.patch deleted file mode 100644 index 7df8449..0000000 --- a/8201433.patch +++ /dev/null @@ -1,101 +0,0 @@ ---- icedtea-3.8.0/openjdk/jdk/src/share/native/sun/awt/image/BufImgSurfaceData.c 2018-09-18 10:25:46.856167220 +0200 -+++ icedtea-3.8.0/openjdk/jdk/src/share/native/sun/awt/image/BufImgSurfaceData.c 2018-09-18 10:28:49.249143807 +0200 -@@ -298,6 +298,10 @@ - } - - cData->img_clr_tbl = initCubemap(pRgb, bisdo->lutsize, 32); -+ if (cData->img_clr_tbl == NULL) { -+ free(cData); -+ return (ColorData*)NULL; -+ } - if (allGray == JNI_TRUE) { - initInverseGrayLut(pRgb, bisdo->lutsize, cData); - } ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ icedtea-3.8.0/openjdk/jdk/test/java/awt/image/BufferedImage/ICMColorDataTest/ICMColorDataTest.java Tue Apr 24 11:23:34 2018 +0100 -@@ -0,0 +1,85 @@ -+/* -+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. -+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -+ * -+ * This code is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License version 2 only, as -+ * published by the Free Software Foundation. -+ * -+ * This code is distributed in the hope that it will be useful, but WITHOUT -+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -+ * version 2 for more details (a copy is included in the LICENSE file that -+ * accompanied this code). -+ * -+ * You should have received a copy of the GNU General Public License version -+ * 2 along with this work; if not, write to the Free Software Foundation, -+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -+ * -+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -+ * or visit www.oracle.com if you need additional information or have any -+ * questions. -+ */ -+ -+import java.awt.Graphics; -+import java.awt.image.BufferedImage; -+import java.awt.image.DataBuffer; -+import java.awt.image.DataBufferByte; -+import java.awt.image.IndexColorModel; -+import java.awt.image.MultiPixelPackedSampleModel; -+import java.awt.image.Raster; -+import java.awt.image.SampleModel; -+import java.awt.image.WritableRaster; -+ -+/* -+ * @test -+ * @bug 8201433 -+ * @summary This test may throw OOME or NPE from native code, -+ * it should not crash -+ * @requires os.maxMemory >= 2G -+ * @run main/othervm/timeout=300000 -Xms1000m -Xmx1000m ICMColorDataTest -+ */ -+public class ICMColorDataTest { -+ private static final int WIDTH = 90; -+ private static final int HEIGHT = 90; -+ private static final int BITS_PER_PIXEL = 1; -+ private static final int PIXELS_IN_BYTE = 8; -+ -+ // Color model components -+ private static final byte[] RED = { (byte) 255, 0 }; -+ private static final byte[] GREEN = { (byte) 255, 0 }; -+ private static final byte[] BLUE = { (byte) 255, 0 }; -+ -+ public static void main(String[] args) { -+ try { -+ for (long i = 0; i < 300_000; i++) { -+ makeImage(); -+ } -+ } catch (OutOfMemoryError | NullPointerException e) { -+ System.err.println("Caught expected exception:\n" + -+ e.getClass() + ": " + e.getMessage()); -+ } -+ System.err.println("Test passed"); -+ } -+ -+ private static void makeImage() { -+ int scanLineBytes = WIDTH / PIXELS_IN_BYTE; -+ if ((WIDTH & (PIXELS_IN_BYTE - 1)) != 0) { -+ // Make sure all the pixels in a scan line fit -+ scanLineBytes += 1; -+ } -+ -+ byte[] bits = new byte[scanLineBytes * HEIGHT]; -+ DataBuffer dataBuf = new DataBufferByte(bits, bits.length, 0); -+ SampleModel sampleModel = new MultiPixelPackedSampleModel(DataBuffer.TYPE_BYTE, -+ WIDTH, HEIGHT, BITS_PER_PIXEL); -+ WritableRaster raster = Raster.createWritableRaster(sampleModel, dataBuf, null); -+ IndexColorModel indexModel = new IndexColorModel(2, 2, RED, GREEN, BLUE); -+ BufferedImage bufImage = new BufferedImage(indexModel, raster, -+ indexModel.isAlphaPremultiplied(), null); -+ -+ Graphics g = bufImage.getGraphics(); -+ g.drawRect(0, 0, WIDTH - 1, HEIGHT - 1); -+ g.dispose(); -+ } -+} diff --git a/8202585.patch b/8202585.patch deleted file mode 100644 index 52b2979..0000000 --- a/8202585.patch +++ /dev/null @@ -1,183 +0,0 @@ ---- icedtea-3.8.0/openjdk/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMessages_de.java 2018-09-18 10:29:31.481367749 +0200 -+++ icedtea-3.8.0/openjdk/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMessages_de.java 2018-09-18 10:30:36.733713763 +0200 -@@ -254,7 +254,7 @@ - * text. - */ - {ErrorMsg.ILLEGAL_ATTRIBUTE_ERR, -- "Ung\u00FCltiges Attribut \"{0}\"."}, -+ "Unzul\u00E4ssiges Attribut \"{0}\"."}, - - /* - * Note to translators: "import" and "include" are keywords that should -@@ -307,7 +307,7 @@ - * function has too many or too few arguments. - */ - {ErrorMsg.ILLEGAL_ARG_ERR, -- "Ung\u00FCltige Argumente f\u00FCr Funktionsaufruf."}, -+ "Unzul\u00E4ssige Argumente f\u00FCr Funktionsaufruf."}, - - /* - * Note to translators: "document()" is the name of function and must ---- icedtea-3.8.0/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/DOMMessages_de.properties 2018-09-18 10:29:31.493367812 +0200 -+++ icedtea-3.8.0/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/DOMMessages_de.properties 2018-09-18 10:30:36.733713763 +0200 -@@ -15,7 +15,7 @@ - INDEX_SIZE_ERR = Index oder Gr\u00F6\u00DFe ist negativ oder gr\u00F6\u00DFer als der zul\u00E4ssige Wert. - INUSE_ATTRIBUTE_ERR = Es wurde versucht, ein Attribut hinzuzuf\u00FCgen, das bereits an einer anderen Stelle verwendet wird. - INVALID_ACCESS_ERR = Ein Parameter oder Vorgang wird nicht vom zugrunde liegenden Objekt unterst\u00FCtzt. --INVALID_CHARACTER_ERR = Ung\u00FCltiges XML-Zeichen angegeben. -+INVALID_CHARACTER_ERR = Ung\u00FCltiges oder unzul\u00E4ssiges XML-Zeichen angegeben. - INVALID_MODIFICATION_ERR = Es wurde versucht, den Typ des zugrunde liegenden Objekts zu \u00E4ndern. - INVALID_STATE_ERR = Es wurde versucht, ein Objekt zu \u00E4ndern, das nicht verwendet werden kann. - NAMESPACE_ERR = Es wurde versucht, ein Objekt auf eine Weise zu erstellen oder zu \u00E4ndern, die falsch in Bezug auf Namespaces ist. -@@ -23,7 +23,7 @@ - NOT_SUPPORTED_ERR = Der angeforderte Typ des Objekts oder Vorgangs wird nicht von der Implementierung unterst\u00FCtzt. - NO_DATA_ALLOWED_ERR = Daten wurden f\u00FCr einen Knoten angegeben, der keine Daten unterst\u00FCtzt. - NO_MODIFICATION_ALLOWED_ERR = Es wurde versucht, ein Objekt zu \u00E4ndern, bei dem \u00C4nderungen nicht zul\u00E4ssig sind. --SYNTAX_ERR = Ung\u00FCltige Zeichenfolge angegeben. -+SYNTAX_ERR = Ung\u00FCltige oder unzul\u00E4ssige Zeichenfolge angegeben. - VALIDATION_ERR = Aufruf einer Methode wie insertBefore oder removeChild w\u00FCrde die Dokumentgrammatik des Knotens ung\u00FCltig machen. - WRONG_DOCUMENT_ERR = Ein Knoten wird in einem anderen Dokument verwendet als dem, von dem er erstellt wurde. - TYPE_MISMATCH_ERR = Der Werttyp f\u00FCr diesen Parameternamen ist nicht mit dem erwarteten Werttyp kompatibel. ---- icedtea-3.8.0/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_de.properties 2018-09-18 10:29:31.493367812 +0200 -+++ icedtea-3.8.0/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_de.properties 2018-09-18 10:30:36.733713763 +0200 -@@ -123,7 +123,7 @@ - InvalidHighSurrogate = High-Surrogate-Bits in UTF-8-Sequenz d\u00FCrfen 0x10 nicht \u00FCberschreiten, gefunden wurde aber 0x{0}. - OperationNotSupported = Vorgang "{0}" nicht unterst\u00FCtzt von {1}-Reader. - InvalidASCII = Byte "{0}" geh\u00F6rt nicht zum (7-Bit) ASCII-Zeichensatz. -- CharConversionFailure = Eine Entity, f\u00FCr die eine bestimmte Codierung ermittelt wurde, darf keine Sequenzen enthalten, die in dieser Codierung ung\u00FCltig sind. -+ CharConversionFailure = Eine Entity, f\u00FCr die eine bestimmte Codierung ermittelt wurde, darf keine Sequenzen enthalten, die in dieser Codierung unzul\u00E4ssig sind. - - # DTD Messages - # 2.2 Characters ---- icedtea-3.8.0/openjdk/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_de.java 2018-09-18 10:29:31.509367897 +0200 -+++ icedtea-3.8.0/openjdk/jaxp/src/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_de.java 2018-09-18 10:30:36.737713783 +0200 -@@ -429,7 +429,7 @@ - "ERROR. Unbekannter Vorgangscode: {0}"}, - - { ER_EXTRA_ILLEGAL_TOKENS, -- "Zus\u00E4tzliche ung\u00FCltige Tokens: {0}"}, -+ "Zus\u00E4tzliche unzul\u00E4ssige Tokens: {0}"}, - - { ER_EXPECTED_DOUBLE_QUOTE, - "Literal in falschen Anf\u00FChrungszeichen... Doppelte Anf\u00FChrungszeichen erwartet."}, -@@ -456,10 +456,10 @@ - "\",\" gefunden, aber kein folgendes Argument vorhanden."}, - - { ER_PREDICATE_ILLEGAL_SYNTAX, -- "\"..[predicate]\" oder \".[predicate]\" ist ung\u00FCltige Syntax. Verwenden Sie stattdessen \"self::node()[predicate]\"."}, -+ "\"..[predicate]\" oder \".[predicate]\" ist unzul\u00E4ssige Syntax. Verwenden Sie stattdessen \"self::node()[predicate]\"."}, - - { ER_ILLEGAL_AXIS_NAME, -- "Ung\u00FCltiger Achsenname: {0}"}, -+ "Unzul\u00E4ssiger Achsenname: {0}"}, - - { ER_UNKNOWN_NODETYPE, - "Unbekannter Knotentyp: {0}"}, ---- icedtea-3.8.0/openjdk/jdk/src/macosx/classes/com/apple/laf/resources/aqua_de.properties 2018-09-18 10:29:30.957364971 +0200 -+++ icedtea-3.8.0/openjdk/jdk/src/macosx/classes/com/apple/laf/resources/aqua_de.properties 2018-09-18 10:30:16.213604953 +0200 -@@ -59,7 +59,7 @@ - FileChooser.saveTitle.textAndMnemonic=Speichern - FileChooser.openTitle.textAndMnemonic=\u00D6ffnen - FileChooser.newFolderExistsError.textAndMnemonic=Dieser Name ist bereits vergeben --FileChooser.chooseButton.textAndMnemonic=W\u00E4hlen -+FileChooser.chooseButton.textAndMnemonic=Ausw\u00E4hlen - - FileChooser.newFolderButton.textAndMnemonic=Neuer Ordner - FileChooser.newFolderTitle.textAndMnemonic=Neuer Ordner ---- icedtea-3.8.0/openjdk/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_de.properties 2018-09-18 10:29:31.013365267 +0200 -+++ icedtea-3.8.0/openjdk/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_de.properties 2018-09-18 10:30:16.213604953 +0200 -@@ -30,7 +30,7 @@ - cachedrowsetimpl.invalidop = Ung\u00FCltiger Vorgang beim Zeileneinf\u00FCgen - cachedrowsetimpl.accfailed = acceptChanges nicht erfolgreich - cachedrowsetimpl.invalidcp = Ung\u00FCltige Cursorposition --cachedrowsetimpl.illegalop = Ung\u00FCltiger Vorgang bei nicht eingef\u00FCgter Zeile -+cachedrowsetimpl.illegalop = Unzul\u00E4ssiger Vorgang bei nicht eingef\u00FCgter Zeile - cachedrowsetimpl.clonefail = Klonen nicht erfolgreich: {0} - cachedrowsetimpl.invalidcol = Ung\u00FCltiger Spaltenindex - cachedrowsetimpl.invalcolnm = Ung\u00FCltiger Spaltenname ---- icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/rmi/server/resources/rmid_de.properties 2018-09-18 10:29:31.049365457 +0200 -+++ icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/rmi/server/resources/rmid_de.properties 2018-09-18 10:30:16.213604953 +0200 -@@ -43,7 +43,7 @@ - rmid.syntax.log.required=Option -log ist erforderlich - - # {0} = the (string) illegal argument in question --rmid.syntax.illegal.option=Ung\u00FCltige Option: {0} -+rmid.syntax.illegal.option=Unzul\u00E4ssige Option: {0} - - # {0} = the (string) reason text that came with a thrown exception - # "Activation.main" should not be translated, because it's a codepoint ---- icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/security/tools/keytool/Resources_de.java 2018-09-18 10:29:31.061365522 +0200 -+++ icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/security/tools/keytool/Resources_de.java 2018-09-18 10:30:16.217604974 +0200 -@@ -99,7 +99,7 @@ - {"destination.alias", - "Zielalias"}, //-destalias - {"destination.key.password", -- "Zielschl\u00FCssel-Kennwort"}, //-destkeypass -+ "Zielschl\u00FCsselkennwort"}, //-destkeypass - {"destination.keystore.name", - "Ziel-Keystore-Name"}, //-destkeystore - {"destination.keystore.password.protected", -@@ -147,7 +147,7 @@ - {"source.alias", - "Quellalias"}, //-srcalias - {"source.key.password", -- "Quellschl\u00FCssel-Kennwort"}, //-srckeypass -+ "Quellschl\u00FCsselkennwort"}, //-srckeypass - {"source.keystore.name", - "Quell-Keystore-Name"}, //-srckeystore - {"source.keystore.password.protected", -@@ -178,8 +178,8 @@ - "Serielle ID des zu entziehenden Certs"}, //-id - // keytool: Running part - {"keytool.error.", "Keytool-Fehler: "}, -- {"Illegal.option.", "Ung\u00FCltige Option: "}, -- {"Illegal.value.", "Ung\u00FCltiger Wert: "}, -+ {"Illegal.option.", "Unzul\u00E4ssige Option: "}, -+ {"Illegal.value.", "Unzul\u00E4ssiger Wert: "}, - {"Unknown.password.type.", "Unbekannter Kennworttyp: "}, - {"Cannot.find.environment.variable.", - "Umgebungsvariable kann nicht gefunden werden: "}, -@@ -205,7 +205,7 @@ - "Wenn der Keystore nicht kennwortgesch\u00FCtzt ist, d\u00FCrfen -storepass, -keypass und -new nicht angegeben werden"}, - {"if.source.keystore.is.not.password.protected.then.srcstorepass.and.srckeypass.must.not.be.specified", - "Wenn der Quell-Keystore nicht kennwortgesch\u00FCtzt ist, d\u00FCrfen -srcstorepass und -srckeypass nicht angegeben werden"}, -- {"Illegal.startdate.value", "Ung\u00FCltiger Wert f\u00FCr Anfangsdatum"}, -+ {"Illegal.startdate.value", "Unzul\u00E4ssiger Wert f\u00FCr Anfangsdatum"}, - {"Validity.must.be.greater.than.zero", - "G\u00FCltigkeit muss gr\u00F6\u00DFer als null sein"}, - {"provName.not.a.provider", "{0} kein Provider"}, ---- icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/security/tools/policytool/Resources_de.java 2018-09-18 10:29:31.061365522 +0200 -+++ icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/security/tools/policytool/Resources_de.java 2018-09-18 10:30:16.217604974 +0200 -@@ -39,8 +39,8 @@ - {"Warning.Class.not.found.class", "Warnung: Klasse nicht gefunden: {0}"}, - {"Warning.Invalid.argument.s.for.constructor.arg", - "Warnung: Ung\u00FCltige(s) Argument(e) f\u00FCr Constructor: {0}"}, -- {"Illegal.Principal.Type.type", "Ung\u00FCltiger Principal-Typ: {0}"}, -- {"Illegal.option.option", "Ung\u00FCltige Option: {0}"}, -+ {"Illegal.Principal.Type.type", "Unzul\u00E4ssiger Principal-Typ: {0}"}, -+ {"Illegal.option.option", "Unzul\u00E4ssige Option: {0}"}, - {"Usage.policytool.options.", "Verwendung: policytool [Optionen]"}, - {".file.file.policy.file.location", - " [-file ] Policy-Dateiverzeichnis"}, ---- icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/security/util/AuthResources_sv.java 2018-09-18 10:29:31.061365522 +0200 -+++ icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/security/util/AuthResources_sv.java 2018-09-18 10:30:16.217604974 +0200 -@@ -88,7 +88,7 @@ - {"Keystore.alias.","Nyckellageralias: "}, - {"Keystore.password.","Nyckellagerl\u00F6senord: "}, - {"Private.key.password.optional.", -- "L\u00F6senord f\u00F6r personlig nyckel (valfritt): "}, -+ "L\u00F6senord f\u00F6r privat nyckel (valfritt): "}, - - // com.sun.security.auth.module.Krb5LoginModule - {"Kerberos.username.defUsername.", ---- icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/tools/jar/resources/jar_de.properties 2018-09-18 10:29:31.073365585 +0200 -+++ icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/tools/jar/resources/jar_de.properties 2018-09-18 10:30:16.217604974 +0200 -@@ -24,7 +24,7 @@ - # - - error.cant.open=\u00D6ffnen nicht m\u00F6glich: {0} --error.illegal.option=Ung\u00FCltige Option: {0} -+error.illegal.option=Unzul\u00E4ssige Option: {0} - error.bad.option=Eine der Optionen -{ctxu} muss angegeben werden. - error.bad.cflag=Kennzeichen "c" erfordert Angabe von Manifest oder Eingabedateien. - error.bad.uflag=Kennzeichen "u" erfordert Angabe von Manifest, Kennzeichen "e" oder Eingabedateien. diff --git a/8202996.patch b/8202996.patch deleted file mode 100644 index 9f957e6..0000000 --- a/8202996.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/rmi/transport/tcp/TCPTransport.java 2018-09-18 10:32:28.226304949 +0200 -+++ icedtea-3.8.0/openjdk/jdk/src/share/classes/sun/rmi/transport/tcp/TCPTransport.java 2018-09-18 10:32:47.694408174 +0200 -@@ -727,7 +727,6 @@ - int magic = in.readInt(); - - if (magic == POST) { -- System.err.println("DISABLED: " + disableIncomingHttp); - if (disableIncomingHttp) { - throw new RemoteException("RMI over HTTP is disabled"); - } diff --git a/8203233.patch b/8203233.patch deleted file mode 100644 index f316bdf..0000000 --- a/8203233.patch +++ /dev/null @@ -1,426 +0,0 @@ ---- icedtea-3.8.0/openjdk/jdk/make/data/tzdata/africa 2018-09-18 10:33:48.522730738 +0200 -+++ icedtea-3.8.0/openjdk/jdk/make/data/tzdata/africa 2018-09-18 10:34:24.486921443 +0200 -@@ -29,7 +29,7 @@ - # tz@iana.org for general use in the future). For more, please see - # the file CONTRIBUTING in the tz distribution. - --# From Paul Eggert (2017-02-20): -+# From Paul Eggert (2017-04-09): - # - # Unless otherwise specified, the source for data through 1990 is: - # Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition), -@@ -75,7 +75,7 @@ - # cannot now come up with solid citations. - # - # I invented the following abbreviations; corrections are welcome! --# +02 WAST West Africa Summer Time -+# +02 WAST West Africa Summer Time (no longer used) - # +03 CAST Central Africa Summer Time (no longer used) - # +03 SAST South Africa Summer Time (no longer used) - # +03 EAT East Africa Time -@@ -990,6 +990,10 @@ - # commence at OOhOO on Monday 21 March 1994 and shall end at 02h00 on - # Sunday 4 September 1994. - -+# From Michael Deckers (2017-04-06): -+# ... both summer and winter time are called "standard" -+# (which differs from the use in Ireland) ... -+ - # From Petronella Sibeene (2007-03-30): - # http://allafrica.com/stories/200703300178.html - # While the entire country changes its time, Katima Mulilo and other -@@ -1015,19 +1019,42 @@ - # the same time they would normally start DST, the first Sunday in September: - # https://www.timeanddate.com/news/time/namibia-new-time-zone.html - -+# From Paul Eggert (2017-04-09): -+# Before the change, summer and winter time were both standard time legally. -+# However in common parlance, winter time was considered to be DST. See, e.g.: -+# http://www.nbc.na/news/namibias-winter-time-could-be-scrapped.2706 -+# https://zone.my.na/news/times-are-changing-in-namibia -+# https://wwwera.com.na/2017/02/23/namibias-winter-time-might-be-repealed/ -+# 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 Namibia 1994 only - Mar 21 0:00 0 - --Rule Namibia 1994 2016 - Sep Sun>=1 2:00 1:00 S --Rule Namibia 1995 2017 - Apr Sun>=1 2:00 0 - -+# 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 -+#Rule Namibia 1995 2017 - Apr Sun>=1 2:00 -1:00 WAT -+# Rearguard section, for parsers that do not support negative DST. -+Rule Namibia 1994 only - Mar 21 0:00 0 WAT -+Rule Namibia 1994 2017 - Sep Sun>=1 2:00 1:00 CAT -+Rule Namibia 1995 2017 - Apr Sun>=1 2:00 0 WAT -+# End of rearguard section. -+ - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone Africa/Windhoek 1:08:24 - LMT 1892 Feb 8 - 1:30 - +0130 1903 Mar - 2:00 - SAST 1942 Sep 20 2:00 - 2:00 1:00 SAST 1943 Mar 21 2:00 - 2:00 - SAST 1990 Mar 21 # independence -+# Vanguard section, for zic and other parsers that support negative DST. -+# 2:00 Namibia %s -+# Rearguard section, for parsers that do not support negative DST. - 2:00 - CAT 1994 Mar 21 0:00 -- 1:00 Namibia WA%sT 2017 Sep 3 2:00 -+# From Paul Eggert (2017-04-07): -+# The official date of the 2017 rule change was 2017-10-24. See: -+# http://www.lac.org.na/laws/annoSTAT/Namibian%20Time%20Act%209%20of%202017.pdf -+ 1:00 Namibia %s 2017 Oct 24 - 2:00 - CAT -+# End of rearguard section. - - # Niger - # See Africa/Lagos. ---- icedtea-3.8.0/openjdk/jdk/make/data/tzdata/asia 2018-09-18 10:33:48.522730738 +0200 -+++ icedtea-3.8.0/openjdk/jdk/make/data/tzdata/asia 2018-09-18 10:34:24.486921443 +0200 -@@ -2006,6 +2006,19 @@ - # There is no common English-language abbreviation for this time zone. - # Use KST, as that's what we already use for 1954-1961 in ROK. - -+# From Kang Seonghoon (2018-04-29): -+# North Korea will revert its time zone from UTC+8:30 (PYT; Pyongyang -+# Time) back to UTC+9 (KST; Korea Standard Time). -+# -+# From Seo Sanghyeon (2018-04-30): -+# Rodong Sinmun 2018-04-30 announced Pyongyang Time transition plan. -+# https://www.nknews.org/kcna/wp-content/uploads/sites/5/2018/04/rodong-2018-04-30.pdf -+# ... the transition date is 2018-05-05 ... Citation should be Decree -+# No. 2232 of April 30, 2018, of the Presidium of the Supreme People's -+# Assembly, as published in Rodong Sinmun. -+# From Tim Parenti (2018-04-29): -+# It appears to be the front page story at the top in the right-most column. -+ - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone Asia/Seoul 8:27:52 - LMT 1908 Apr 1 - 8:30 - KST 1912 Jan 1 -@@ -2017,7 +2030,8 @@ - 8:30 - KST 1912 Jan 1 - 9:00 - JST 1945 Aug 24 - 9:00 - KST 2015 Aug 15 00:00 -- 8:30 - KST -+ 8:30 - KST 2018 May 5 -+ 9:00 - KST - - ############################################################################### - -@@ -2681,7 +2695,7 @@ - # From Sharef Mustafa (2018-03-16): - # Palestine summer time will start on Mar 24th 2018 by advancing the - # clock by 60 minutes as per Palestinian cabinet decision published on --# the offical website, though the decree did not specify the exact -+# the official website, though the decree did not specify the exact - # time of the time shift. - # http://www.palestinecabinet.gov.ps/Website/AR/NDecrees/ViewFile.ashx?ID=e7a42ab7-ee23-435a-b9c8-a4f7e81f3817 - # ---- icedtea-3.8.0/openjdk/jdk/make/data/tzdata/australasia 2018-09-18 10:33:48.522730738 +0200 -+++ icedtea-3.8.0/openjdk/jdk/make/data/tzdata/australasia 2018-09-18 10:34:24.486921443 +0200 -@@ -1108,6 +1108,15 @@ - # (1999-09-27) writes that Giles Meteorological Station uses - # South Australian time even though it's located in Western Australia. - -+# From Paul Eggert (2018-04-01): -+# The Guardian Express of Perth, Australia reported today that the -+# government decided to advance the clocks permanently on January 1, -+# 2019, from UT +08 to UT +09. The article noted that an exemption -+# would be made for people aged 61 and over, who "can apply in writing -+# to have the extra hour of sunshine removed from their area." See: -+# Daylight saving coming to WA in 2019. Guardian Express. 2018-04-01. -+# https://www.communitynews.com.au/guardian-express/news/exclusive-daylight-savings-coming-wa-summer-2018/ -+ - # Queensland - - # From Paul Eggert (2018-02-26): ---- icedtea-3.8.0/openjdk/jdk/make/data/tzdata/europe 2018-09-18 10:33:48.522730738 +0200 -+++ icedtea-3.8.0/openjdk/jdk/make/data/tzdata/europe 2018-09-18 10:34:24.486921443 +0200 -@@ -551,13 +551,13 @@ - # 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 Eire 1971 only - Oct 31 2:00u -1:00 GMT --#Rule Eire 1972 1980 - Mar Sun>=16 2:00u 0 IST --#Rule Eire 1972 1980 - Oct Sun>=23 2:00u -1:00 GMT --#Rule Eire 1981 max - Mar lastSun 1:00u 0 IST --#Rule Eire 1981 1989 - Oct Sun>=23 1:00u -1:00 GMT --#Rule Eire 1990 1995 - Oct Sun>=22 1:00u -1:00 GMT --#Rule Eire 1996 max - Oct lastSun 1:00u -1:00 GMT -+#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 - -+#Rule Eire 1981 max - Mar lastSun 1:00u 0 - -+#Rule Eire 1981 1989 - Oct Sun>=23 1:00u -1:00 - -+#Rule Eire 1990 1995 - Oct Sun>=22 1:00u -1:00 - -+#Rule Eire 1996 max - Oct lastSun 1:00u -1:00 - - - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone Europe/Dublin -0:25:00 - LMT 1880 Aug 2 -@@ -993,18 +993,30 @@ - # Please see the 'asia' file for Asia/Nicosia. - - # Czech Republic / Czechia -+# -+# From Paul Eggert (2018-04-15): -+# The source for Czech data is: Kdy začíná a končí letní čas. 2018-04-15. -+# https://kalendar.beda.cz/kdy-zacina-a-konci-letni-cas -+# 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 Czech 1945 only - Apr 8 2:00s 1:00 S --Rule Czech 1945 only - Nov 18 2:00s 0 - -+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 - Rule Czech 1946 1949 - Oct Sun>=1 2:00s 0 - --Rule Czech 1947 only - Apr 20 2:00s 1:00 S --Rule Czech 1948 only - Apr 18 2:00s 1:00 S -+Rule Czech 1947 1948 - Apr Sun>=15 2:00s 1:00 S - Rule Czech 1949 only - Apr 9 2:00s 1:00 S - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone Europe/Prague 0:57:44 - LMT 1850 - 0:57:44 - PMT 1891 Oct # Prague Mean Time -- 1:00 C-Eur CE%sT 1944 Sep 17 2:00s -+ 1:00 C-Eur CE%sT 1945 May 9 -+ 1:00 Czech CE%sT 1946 Dec 1 3:00 -+# Vanguard section, for zic and other parsers that support negative DST. -+# 1:00 -1:00 GMT 1947 Feb 23 2:00 -+# Rearguard section, for parsers that do not support negative DST. -+ 0:00 - GMT 1947 Feb 23 2:00 -+# End of rearguard section. - 1:00 Czech CE%sT 1979 - 1:00 EU CE%sT - # Use Europe/Prague also for Slovakia. -@@ -2039,7 +2051,7 @@ - Rule Neth 1945 only - Apr 2 2:00s 1:00 S - Rule Neth 1945 only - Sep 16 2:00s 0 - - # --# Amsterdam Mean Time was +00:19:32.13 exactly, but the .13 is omitted -+# Amsterdam Mean Time was +00:19:32.13, but the .13 is omitted - # below because the current format requires GMTOFF to be an integer. - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone Europe/Amsterdam 0:19:32 - LMT 1835 ---- icedtea-3.8.0/openjdk/jdk/make/data/tzdata/VERSION 2018-09-18 10:33:48.522730738 +0200 -+++ icedtea-3.8.0/openjdk/jdk/make/data/tzdata/VERSION 2018-09-18 10:34:24.458921295 +0200 -@@ -21,4 +21,4 @@ - # or visit www.oracle.com if you need additional information or have any - # questions. - # --tzdata2018d -+tzdata2018e ---- icedtea-3.8.0/openjdk/jdk/test/sun/util/calendar/zi/tzdata/africa 2018-09-18 10:33:48.602731162 +0200 -+++ icedtea-3.8.0/openjdk/jdk/test/sun/util/calendar/zi/tzdata/africa 2018-09-18 10:34:24.490921464 +0200 -@@ -29,7 +29,7 @@ - # tz@iana.org for general use in the future). For more, please see - # the file CONTRIBUTING in the tz distribution. - --# From Paul Eggert (2017-02-20): -+# From Paul Eggert (2017-04-09): - # - # Unless otherwise specified, the source for data through 1990 is: - # Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition), -@@ -75,7 +75,7 @@ - # cannot now come up with solid citations. - # - # I invented the following abbreviations; corrections are welcome! --# +02 WAST West Africa Summer Time -+# +02 WAST West Africa Summer Time (no longer used) - # +03 CAST Central Africa Summer Time (no longer used) - # +03 SAST South Africa Summer Time (no longer used) - # +03 EAT East Africa Time -@@ -990,6 +990,10 @@ - # commence at OOhOO on Monday 21 March 1994 and shall end at 02h00 on - # Sunday 4 September 1994. - -+# From Michael Deckers (2017-04-06): -+# ... both summer and winter time are called "standard" -+# (which differs from the use in Ireland) ... -+ - # From Petronella Sibeene (2007-03-30): - # http://allafrica.com/stories/200703300178.html - # While the entire country changes its time, Katima Mulilo and other -@@ -1015,19 +1019,42 @@ - # the same time they would normally start DST, the first Sunday in September: - # https://www.timeanddate.com/news/time/namibia-new-time-zone.html - -+# From Paul Eggert (2017-04-09): -+# Before the change, summer and winter time were both standard time legally. -+# However in common parlance, winter time was considered to be DST. See, e.g.: -+# http://www.nbc.na/news/namibias-winter-time-could-be-scrapped.2706 -+# https://zone.my.na/news/times-are-changing-in-namibia -+# https://wwwera.com.na/2017/02/23/namibias-winter-time-might-be-repealed/ -+# 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 Namibia 1994 only - Mar 21 0:00 0 - --Rule Namibia 1994 2016 - Sep Sun>=1 2:00 1:00 S --Rule Namibia 1995 2017 - Apr Sun>=1 2:00 0 - -+# 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 -+#Rule Namibia 1995 2017 - Apr Sun>=1 2:00 -1:00 WAT -+# Rearguard section, for parsers that do not support negative DST. -+Rule Namibia 1994 only - Mar 21 0:00 0 WAT -+Rule Namibia 1994 2017 - Sep Sun>=1 2:00 1:00 CAT -+Rule Namibia 1995 2017 - Apr Sun>=1 2:00 0 WAT -+# End of rearguard section. -+ - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone Africa/Windhoek 1:08:24 - LMT 1892 Feb 8 - 1:30 - +0130 1903 Mar - 2:00 - SAST 1942 Sep 20 2:00 - 2:00 1:00 SAST 1943 Mar 21 2:00 - 2:00 - SAST 1990 Mar 21 # independence -+# Vanguard section, for zic and other parsers that support negative DST. -+# 2:00 Namibia %s -+# Rearguard section, for parsers that do not support negative DST. - 2:00 - CAT 1994 Mar 21 0:00 -- 1:00 Namibia WA%sT 2017 Sep 3 2:00 -+# From Paul Eggert (2017-04-07): -+# The official date of the 2017 rule change was 2017-10-24. See: -+# http://www.lac.org.na/laws/annoSTAT/Namibian%20Time%20Act%209%20of%202017.pdf -+ 1:00 Namibia %s 2017 Oct 24 - 2:00 - CAT -+# End of rearguard section. - - # Niger - # See Africa/Lagos. ---- icedtea-3.8.0/openjdk/jdk/test/sun/util/calendar/zi/tzdata/asia 2018-09-18 10:33:48.602731162 +0200 -+++ icedtea-3.8.0/openjdk/jdk/test/sun/util/calendar/zi/tzdata/asia 2018-09-18 10:34:24.490921464 +0200 -@@ -2006,6 +2006,19 @@ - # There is no common English-language abbreviation for this time zone. - # Use KST, as that's what we already use for 1954-1961 in ROK. - -+# From Kang Seonghoon (2018-04-29): -+# North Korea will revert its time zone from UTC+8:30 (PYT; Pyongyang -+# Time) back to UTC+9 (KST; Korea Standard Time). -+# -+# From Seo Sanghyeon (2018-04-30): -+# Rodong Sinmun 2018-04-30 announced Pyongyang Time transition plan. -+# https://www.nknews.org/kcna/wp-content/uploads/sites/5/2018/04/rodong-2018-04-30.pdf -+# ... the transition date is 2018-05-05 ... Citation should be Decree -+# No. 2232 of April 30, 2018, of the Presidium of the Supreme People's -+# Assembly, as published in Rodong Sinmun. -+# From Tim Parenti (2018-04-29): -+# It appears to be the front page story at the top in the right-most column. -+ - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone Asia/Seoul 8:27:52 - LMT 1908 Apr 1 - 8:30 - KST 1912 Jan 1 -@@ -2017,7 +2030,8 @@ - 8:30 - KST 1912 Jan 1 - 9:00 - JST 1945 Aug 24 - 9:00 - KST 2015 Aug 15 00:00 -- 8:30 - KST -+ 8:30 - KST 2018 May 5 -+ 9:00 - KST - - ############################################################################### - -@@ -2681,7 +2695,7 @@ - # From Sharef Mustafa (2018-03-16): - # Palestine summer time will start on Mar 24th 2018 by advancing the - # clock by 60 minutes as per Palestinian cabinet decision published on --# the offical website, though the decree did not specify the exact -+# the official website, though the decree did not specify the exact - # time of the time shift. - # http://www.palestinecabinet.gov.ps/Website/AR/NDecrees/ViewFile.ashx?ID=e7a42ab7-ee23-435a-b9c8-a4f7e81f3817 - # ---- icedtea-3.8.0/openjdk/jdk/test/sun/util/calendar/zi/tzdata/australasia 2018-09-18 10:33:48.602731162 +0200 -+++ icedtea-3.8.0/openjdk/jdk/test/sun/util/calendar/zi/tzdata/australasia 2018-09-18 10:34:24.490921464 +0200 -@@ -1108,6 +1108,15 @@ - # (1999-09-27) writes that Giles Meteorological Station uses - # South Australian time even though it's located in Western Australia. - -+# From Paul Eggert (2018-04-01): -+# The Guardian Express of Perth, Australia reported today that the -+# government decided to advance the clocks permanently on January 1, -+# 2019, from UT +08 to UT +09. The article noted that an exemption -+# would be made for people aged 61 and over, who "can apply in writing -+# to have the extra hour of sunshine removed from their area." See: -+# Daylight saving coming to WA in 2019. Guardian Express. 2018-04-01. -+# https://www.communitynews.com.au/guardian-express/news/exclusive-daylight-savings-coming-wa-summer-2018/ -+ - # Queensland - - # From Paul Eggert (2018-02-26): ---- icedtea-3.8.0/openjdk/jdk/test/sun/util/calendar/zi/tzdata/europe 2018-09-18 10:33:48.602731162 +0200 -+++ icedtea-3.8.0/openjdk/jdk/test/sun/util/calendar/zi/tzdata/europe 2018-09-18 10:34:24.494921486 +0200 -@@ -551,13 +551,13 @@ - # 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 Eire 1971 only - Oct 31 2:00u -1:00 GMT --#Rule Eire 1972 1980 - Mar Sun>=16 2:00u 0 IST --#Rule Eire 1972 1980 - Oct Sun>=23 2:00u -1:00 GMT --#Rule Eire 1981 max - Mar lastSun 1:00u 0 IST --#Rule Eire 1981 1989 - Oct Sun>=23 1:00u -1:00 GMT --#Rule Eire 1990 1995 - Oct Sun>=22 1:00u -1:00 GMT --#Rule Eire 1996 max - Oct lastSun 1:00u -1:00 GMT -+#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 - -+#Rule Eire 1981 max - Mar lastSun 1:00u 0 - -+#Rule Eire 1981 1989 - Oct Sun>=23 1:00u -1:00 - -+#Rule Eire 1990 1995 - Oct Sun>=22 1:00u -1:00 - -+#Rule Eire 1996 max - Oct lastSun 1:00u -1:00 - - - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone Europe/Dublin -0:25:00 - LMT 1880 Aug 2 -@@ -993,18 +993,30 @@ - # Please see the 'asia' file for Asia/Nicosia. - - # Czech Republic / Czechia -+# -+# From Paul Eggert (2018-04-15): -+# The source for Czech data is: Kdy začíná a končí letní čas. 2018-04-15. -+# https://kalendar.beda.cz/kdy-zacina-a-konci-letni-cas -+# 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 Czech 1945 only - Apr 8 2:00s 1:00 S --Rule Czech 1945 only - Nov 18 2:00s 0 - -+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 - Rule Czech 1946 1949 - Oct Sun>=1 2:00s 0 - --Rule Czech 1947 only - Apr 20 2:00s 1:00 S --Rule Czech 1948 only - Apr 18 2:00s 1:00 S -+Rule Czech 1947 1948 - Apr Sun>=15 2:00s 1:00 S - Rule Czech 1949 only - Apr 9 2:00s 1:00 S - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone Europe/Prague 0:57:44 - LMT 1850 - 0:57:44 - PMT 1891 Oct # Prague Mean Time -- 1:00 C-Eur CE%sT 1944 Sep 17 2:00s -+ 1:00 C-Eur CE%sT 1945 May 9 -+ 1:00 Czech CE%sT 1946 Dec 1 3:00 -+# Vanguard section, for zic and other parsers that support negative DST. -+# 1:00 -1:00 GMT 1947 Feb 23 2:00 -+# Rearguard section, for parsers that do not support negative DST. -+ 0:00 - GMT 1947 Feb 23 2:00 -+# End of rearguard section. - 1:00 Czech CE%sT 1979 - 1:00 EU CE%sT - # Use Europe/Prague also for Slovakia. -@@ -2039,7 +2051,7 @@ - Rule Neth 1945 only - Apr 2 2:00s 1:00 S - Rule Neth 1945 only - Sep 16 2:00s 0 - - # --# Amsterdam Mean Time was +00:19:32.13 exactly, but the .13 is omitted -+# Amsterdam Mean Time was +00:19:32.13, but the .13 is omitted - # below because the current format requires GMTOFF to be an integer. - # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone Europe/Amsterdam 0:19:32 - LMT 1835 ---- icedtea-3.8.0/openjdk/jdk/test/sun/util/calendar/zi/tzdata/VERSION 2018-09-18 10:33:48.602731162 +0200 -+++ icedtea-3.8.0/openjdk/jdk/test/sun/util/calendar/zi/tzdata/VERSION 2018-09-18 10:34:24.490921464 +0200 -@@ -21,4 +21,4 @@ - # or visit www.oracle.com if you need additional information or have any - # questions. - # --tzdata2018d -+tzdata2018e diff --git a/8203368.patch b/8203368.patch deleted file mode 100644 index 724dc0a..0000000 --- a/8203368.patch +++ /dev/null @@ -1,159 +0,0 @@ ---- icedtea-3.8.0/openjdk/jdk/src/share/classes/java/io/ObjectInputStream.java 2018-09-18 10:35:02.583123452 +0200 -+++ icedtea-3.8.0/openjdk/jdk/src/share/classes/java/io/ObjectInputStream.java 2018-09-18 10:37:06.923782767 +0200 -@@ -1233,9 +1233,11 @@ - if (serialFilter != null) { - RuntimeException ex = null; - ObjectInputFilter.Status status; -+ // Info about the stream is not available if overridden by subclass, return 0 -+ long bytesRead = (bin == null) ? 0 : bin.getBytesRead(); - try { - status = serialFilter.checkInput(new FilterValues(clazz, arrayLength, -- totalObjectRefs, depth, bin.getBytesRead())); -+ totalObjectRefs, depth, bytesRead)); - } catch (RuntimeException e) { - // Preventive interception of an exception to log - status = ObjectInputFilter.Status.REJECTED; -@@ -1247,7 +1249,7 @@ - if (Logging.infoLogger != null) { - Logging.infoLogger.info( - "ObjectInputFilter {0}: {1}, array length: {2}, nRefs: {3}, depth: {4}, bytes: {5}, ex: {6}", -- status, clazz, arrayLength, totalObjectRefs, depth, bin.getBytesRead(), -+ status, clazz, arrayLength, totalObjectRefs, depth, bytesRead, - Objects.toString(ex, "n/a")); - } - InvalidClassException ice = new InvalidClassException("filter status: " + status); -@@ -1258,7 +1260,7 @@ - if (Logging.traceLogger != null) { - Logging.traceLogger.finer( - "ObjectInputFilter {0}: {1}, array length: {2}, nRefs: {3}, depth: {4}, bytes: {5}, ex: {6}", -- status, clazz, arrayLength, totalObjectRefs, depth, bin.getBytesRead(), -+ status, clazz, arrayLength, totalObjectRefs, depth, bytesRead, - Objects.toString(ex, "n/a")); - } - } ---- icedtea-3.8.0/openjdk/jdk/test/java/io/Serializable/serialFilter/CheckArrayTest.java 1970-01-01 01:00:00.000000000 +0100 -+++ icedtea-3.8.0/openjdk/jdk/test/java/io/Serializable/serialFilter/CheckArrayTest.java 2018-09-18 10:37:06.923782767 +0200 -@@ -0,0 +1,123 @@ -+/* -+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. -+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -+ * -+ * This code is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License version 2 only, as -+ * published by the Free Software Foundation. -+ * -+ * This code is distributed in the hope that it will be useful, but WITHOUT -+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -+ * version 2 for more details (a copy is included in the LICENSE file that -+ * accompanied this code). -+ * -+ * You should have received a copy of the GNU General Public License version -+ * 2 along with this work; if not, write to the Free Software Foundation, -+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -+ * -+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -+ * or visit www.oracle.com if you need additional information or have any -+ * questions. -+ */ -+ -+import java.io.ByteArrayInputStream; -+import java.io.IOException; -+import java.io.InputStream; -+import java.io.ObjectInputStream; -+import java.io.InvalidClassException; -+ -+import java.util.Hashtable; -+ -+import sun.misc.ObjectInputFilter; -+import sun.misc.SharedSecrets; -+ -+import org.testng.annotations.BeforeClass; -+import org.testng.annotations.DataProvider; -+import org.testng.annotations.Test; -+import org.testng.Assert; -+ -+/* @test -+ * @build CheckArrayTest SerialFilterTest -+ * @bug 8203368 -+ * @modules java.base/jdk.internal.misc -+ * @run testng CheckArrayTest -+ * -+ * @summary Test the SharedSecret access to ObjectInputStream.checkArray works -+ * with overridden subclasses. -+ */ -+ -+/** -+ * Verify that the SharedSecret access to the OIS checkAccess method -+ * does not fail with NPE in the case where ObjectInputStream is subclassed. -+ * The checkAccess method is called from various aggregate types in java.util -+ * to check array sizes during deserialization via the ObjectInputFilter attached the stream. -+ * The filterCheck must be resilent to an InputStream not being available (only the subclass knows). -+ */ -+public class CheckArrayTest { -+ -+ @DataProvider(name = "Patterns") -+ Object[][] patterns() { -+ return new Object[][]{ -+ new Object[]{"maxarray=10", 10, new String[10]}, // successful -+ new Object[]{"maxarray=10", 11, new String[11]}, // exception expected -+ }; -+ } -+ -+ /** -+ * Test SharedSecrets checkArray with unmodified ObjectInputStream. -+ */ -+ @Test(dataProvider = "Patterns") -+ public void normalOIS(String pattern, int arraySize, Object[] array) throws IOException { -+ ObjectInputFilter filter = ObjectInputFilter.Config.createFilter(pattern); -+ byte[] bytes = SerialFilterTest.writeObjects(array); -+ try (ByteArrayInputStream bais = new ByteArrayInputStream(bytes); -+ ObjectInputStream ois = new ObjectInputStream(bais)) { -+ // Check the arraysize against the filter -+ try { -+ ObjectInputFilter.Config.setObjectInputFilter(ois, filter); -+ SharedSecrets.getJavaOISAccess() -+ .checkArray(ois, array.getClass(), arraySize); -+ Assert.assertTrue(array.length >= arraySize, -+ "Should have thrown InvalidClassException due to array size"); -+ } catch (InvalidClassException ice) { -+ Assert.assertFalse(array.length > arraySize, -+ "Should NOT have thrown InvalidClassException due to array size"); -+ } -+ } -+ } -+ -+ /** -+ * Test SharedSecrets checkArray with an ObjectInputStream subclassed to -+ * handle all input stream functions. -+ */ -+ @Test(dataProvider = "Patterns") -+ public void subclassedOIS(String pattern, int arraySize, Object[] array) throws IOException { -+ byte[] bytes = SerialFilterTest.writeObjects(array); -+ try (ByteArrayInputStream bais = new ByteArrayInputStream(bytes); -+ ObjectInputStream ois = new MyInputStream(bais)) { -+ // Check the arraysize against the filter -+ ObjectInputFilter filter = ObjectInputFilter.Config.createFilter(pattern); -+ ObjectInputFilter.Config.setObjectInputFilter(ois, filter); -+ SharedSecrets.getJavaOISAccess() -+ .checkArray(ois, array.getClass(), arraySize); -+ Assert.assertTrue(array.length >= arraySize, -+ "Should have thrown InvalidClassException due to array size"); -+ } catch (InvalidClassException ice) { -+ Assert.assertFalse(array.length > arraySize, -+ "Should NOT have thrown InvalidClassException due to array size"); -+ } -+ } -+ -+ /** -+ * Subclass OIS to disable all input stream functions of the OIS. -+ */ -+ static class MyInputStream extends ObjectInputStream { -+ MyInputStream(InputStream is) throws IOException { -+ super(); -+ } -+ -+ public void close() { -+ } -+ } -+} diff --git a/8205491.patch b/8205491.patch deleted file mode 100644 index e6d06d4..0000000 --- a/8205491.patch +++ /dev/null @@ -1,17 +0,0 @@ ---- icedtea-3.8.0/openjdk/jdk/src/share/classes/java/io/ObjectStreamClass.java 2018-09-18 10:38:32.628237194 +0200 -+++ icedtea-3.8.0/openjdk/jdk/src/share/classes/java/io/ObjectStreamClass.java 2018-09-18 10:39:56.996684522 +0200 -@@ -1534,11 +1534,11 @@ - } - return false; - } else { -- // accessible if the parent is public and any constructor -- // is protected or public -- if ((superCl.getModifiers() & Modifier.PUBLIC) == 0) { -+ // sanity check to ensure the parent is protected or public -+ if ((superCl.getModifiers() & (Modifier.PROTECTED | Modifier.PUBLIC)) == 0) { - return false; - } -+ // accessible if any constructor is protected or public - for (Constructor ctor : superCl.getDeclaredConstructors()) { - if ((ctor.getModifiers() & (Modifier.PROTECTED | Modifier.PUBLIC)) != 0) { - return true; diff --git a/aarch32.tar.xz b/aarch32.tar.xz index e2c04d1..1d738c1 100644 --- a/aarch32.tar.xz +++ b/aarch32.tar.xz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6a27c6f81817a4edf633572198a7d4f829f2239a98bdd1daf805688794af3951 -size 6762428 +oid sha256:af4e52f9ce43d9b5856465bb2f20a3c20d9a8dad26630858641b34be4ecb0af9 +size 6771692 diff --git a/corba.tar.xz b/corba.tar.xz index 592e995..aad87be 100644 --- a/corba.tar.xz +++ b/corba.tar.xz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:aafdd43428da68785963007ec932fd463f83962ef4280239d58c0840e8a48f7f -size 942152 +oid sha256:47cfbcd6612af9161e35b8ed5ffe5519624062ccaa3b5cc2f1a13b1d9228d380 +size 944220 diff --git a/hotspot.tar.xz b/hotspot.tar.xz index 60790d0..94e7e49 100644 --- a/hotspot.tar.xz +++ b/hotspot.tar.xz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:89bccb95d88d6f84778fbfcd79ff1efbe21d5d6820bed7b1ad8a73623517b438 -size 6838240 +oid sha256:08aa741f9758049dda90fdb366c6d4fe4a96ea221aa9b20cee8710c0467bd82a +size 6851860 diff --git a/icedtea-3.8.0.tar.xz b/icedtea-3.8.0.tar.xz deleted file mode 100644 index 872d3db..0000000 --- a/icedtea-3.8.0.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ff9d3737ca5cc8712bad31c565c50939d8b062234d3d49c5efa083bbaa24c3e6 -size 1496972 diff --git a/icedtea-3.9.0.tar.xz b/icedtea-3.9.0.tar.xz new file mode 100644 index 0000000..4dcaabf --- /dev/null +++ b/icedtea-3.9.0.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:45577f65e61509fcfa1dfce06ff9c33ef5cfea0e308dc1f63e120975ce7bdc3c +size 1513688 diff --git a/java-1_8_0-openjdk-suse-desktop-files.patch b/java-1_8_0-openjdk-suse-desktop-files.patch index 5868fb5..2043a6c 100644 --- a/java-1_8_0-openjdk-suse-desktop-files.patch +++ b/java-1_8_0-openjdk-suse-desktop-files.patch @@ -2,20 +2,20 @@ +++ icedtea-3.0.1/jconsole.desktop.in 2016-04-27 09:46:17.592085490 +0200 @@ -1,5 +1,6 @@ [Desktop Entry] - Name=OpenJDK @JAVA_VER@ Monitoring & Management Console + Name=OpenJDK @OPENJDK_VER@ for @target_cpu@ Monitoring & Management Console +GenericName=OpenJDK @JAVA_VER@ Policy Tool Comment=Monitor and manage OpenJDK applications Exec=_BINDIR_/jconsole - Icon=java-@JAVA_VER@ + Icon=java-@JAVA_VER@-@JAVA_VENDOR@ --- icedtea-3.0.1/policytool.desktop.in 2016-04-24 08:37:02.001303877 +0200 +++ icedtea-3.0.1/policytool.desktop.in 2016-04-27 09:45:32.061111551 +0200 @@ -1,10 +1,11 @@ [Desktop Entry] - Name=OpenJDK @JAVA_VER@ Policy Tool + Name=OpenJDK @OPENJDK_VER@ for @target_cpu@ Policy Tool +GenericName=OpenJDK @JAVA_VER@ Policy Tool Comment=Manage OpenJDK policy files Exec=_BINDIR_/policytool - Icon=java-@JAVA_VER@ + Icon=java-@JAVA_VER@-@JAVA_VENDOR@ Terminal=false Type=Application StartupWMClass=sun-security-tools-PolicyTool diff --git a/java-1_8_0-openjdk.changes b/java-1_8_0-openjdk.changes index b8534cc..bc3e95c 100644 --- a/java-1_8_0-openjdk.changes +++ b/java-1_8_0-openjdk.changes @@ -1,3 +1,480 @@ +------------------------------------------------------------------- +Fri Sep 28 05:15:18 UTC 2018 - Fridrich Strba + +- Update to version jdk8u181 (icedtea 3.9.0) + * Security fixes + + S8191239: Improve desktop file usage + + S8193419: Better Internet address support + + S8197871, CVE-2018-2938, bsc#1101644: Support Derby + connections + + S8197925, CVE-2018-2940, bsc#1101645: Better stack walking + + S8199547, CVE-2018-2952, bsc#1101651: Exception to Pattern + Syntax + + S8200666, CVE-2018-2973, bsc#1101656: Improve LDAP support + + PR3607, CVE-2018-3639: hw: cpu: speculative store bypass + mitigation + * New features + + PR3623: Allow Shenandoah to be used on all architectures + + PR3624: Sync desktop files with Fedora/RHEL versions again + + PR3628: Install symlinks to tapsets in SystemTap directory + * Import of OpenJDK 8 u172 build 11 + + S8031304: Add dcmd to print all loaded dynamic libraries. + + S8044107: Add Diagnostic Command to list all ClassLoaders + + S8055755: Information about loaded dynamic libraries is wrong + on MacOSX + + S8059036: Implement Diagnostic Commands for heap and + finalizerinfo + + S8130400: Test java/awt/image/DrawImage/ + /IncorrectClipXorModeSurface2Surface.java fails with + ClassCastException + + S8136356: Add time zone mappings on Windows + + S8139673: NMT stack traces in output should show mtcomponent + + S8147542: ClassCastException when repainting after display + resolution change + + S8154017: Shutdown hooks are racing against shutdown + sequence, if System.exit()-calling thread is interrupted + + S8165466: DecimalFormat percentage format can contain + unexpected % + + S8166772: Touch keyboard is not shown for text components on + a screen touch + + S8169424: src/share/sample/scripting/scriptpad/src/scripts/ + /memory.sh missing #! + + S8170358: [REDO] 8k class metaspace chunks misallocated from + 4k chunk Freelist + + S8170395: Metaspace initialization queries the wrong chunk + freelist + + S8176072: READING attributes are not available on TSF + + S8177721: Improve diagnostics in + sun.management.Agent#startAgent() + + S8177758: Regression in java.awt.FileDialog + + S8183504: 8u131 Win 10, issue with wrong position of Sogou + IME popup + + S8184991: NMT detail diff should take memory type into account + + S8187331: VirtualSpaceList tracks free space on wrong node + + S8187629: NMT: Memory miscounting in compiler (C2) + + S8187658: Bigger buffer for GetAdaptersAddresses + + S8187685: NMT: Tracking compiler memory usage of thread's + resource area + + S8187803: JDK part of JavaFX-Swing dialogs appearing behind + main stage + + S8187985: Broken certificate number in debug output + + S8188855: Fix VS10 build after "8187658: Bigger buffer for + GetAdaptersAddresses" + + S8189599: InitialBootClassLoaderMetaspaceSize and + CompressedClassSpaceSize should be checked consistent from + MaxMetaspaceSize + + S8189646: sun/security/ssl/SSLSocketImpl/ + /SSLSocketCloseHang.java failed with + "java.net.SocketTimeoutException: Read timed out" + + S8190442: Backout changes for JDK-8087291 from 8u-dev as it + didn't use main CR id + + S8190690: Impact on krb5 test cases in the 8u-CPU nightly + + S8191969: javac produces incorrect + RuntimeInvisibleTypeAnnotations length attribute + + S8192987: keytool should remember real storetype if it is not + provided + + S8193156: Need to backout fixes for JDK-8058547, JDK-8055753, + JDK-8085903 + + S8193807: Avoid UnsatisfiedLinkError on AIX by providing + empty basic implementations of getSystemCpuLoad and + getProcessCpuLoad + * Import of OpenJDK 8 u181 build 13 + + S8038636: speculative traps break when classes are redefined + + S8051972: sun/security/pkcs11/ec/ReadCertificates.java fails + intermittently + + S8055008: Clean up code that saves the previous versions of + redefined classes + + S8057570: RedefineClasses() tests fail + assert(((Metadata*)obj)->is_valid()) failed: obj is valid + + S8074373: NMT is not enabled if NMT option is specified after + class path specifiers + + S8076117: EndEntityChecker should not process custom + extensions after PKIX validation + + S8156137: SIGSEGV in ReceiverTypeData::clean_weak_klass_links + + S8157898: SupportedDSAParamGen.java failed with timeout + + S8169201: Montgomery multiply intrinsic should use correct + name + + S8170035: When determining the ciphersuite lists, there is no + debug output for disabled suites. + + S8176183: sun/security/mscapi/SignedObjectChain.java fails on + Windows + + S8187045: [linux] Not all libraries in the VM are linked with + -z,noexecstack + + S8187635: On Windows Swing changes keyboard layout on a + window activation + + S8188223: IfNode::range_check_trap_proj() should handler + dying subgraph with single if proj + + S8196224: Even better Internet address support + + S8196491: Newlines in JAXB string values of SOAP-requests are + escaped to " " + + S8196854: TestFlushableGZIPOutputStream failing with + IndexOutOfBoundsException + + S8197943: Unable to use JDWP API in JDK 8 to debug JDK 9 VM + + S8198605: Touch keyboard is shown for a non-focusable text + component + + S8198606: Touch keyboard does not hide, when a text component + looses focus + + S8198794: Hotspot crash on Cassandra 3.11.1 startup with + libnuma 2.0.3 + + S8199406: Performance drop with Java JDK 1.8.0_162-b32 + + S8199748: Touch keyboard is not shown, if text component gets + focus from other text component + + S8200359: (tz) Upgrade time-zone data to tzdata2018d + + S8201433: Fix potential crash in BufImg_SetupICM + + S8202585: JDK 8u181 l10n resource file update + + S8202996: Remove debug print statements from RMI fix + + S8203233: (tz) Upgrade time-zone data to tzdata2018e + + S8203368: ObjectInputStream filterCheck method throws + NullPointerException + + S8204874: Update THIRDPARTYREADME file + + S8205491: adjust reflective access checks + * Backports + + S8008321, PR3599: compile.cpp verify_graph_edges uses bool as + int + + S8064786, PR3601: Fix debug build after 8062808: Turn on the + -Wreturn-type warning + + S8075942, PR3602, RH1582032: ArrayIndexOutOfBoundsException + in sun.java2d.pisces.Dasher.goTo + + S8146115, PR3508, RH1463098: Improve docker container + detection and resource configuration usage + + S8184309, PR3596: Build warnings from GCC 7.1 on Fedora 26 + + S8203182, PR3603: Release session if initialization of + SunPKCS11 Signature fails + + S8206406, PR3610, RH1597825: StubCodeDesc constructor + publishes partially-constructed objects on StubCodeDesc::_list + + S8207057, PR3613: No debug info for assembler files + * Bug fixes + + PR3597: Potential bogus -Wformat-overflow warning with + -Wformat enabled + + PR3600: jni_util.c does not import header file which declares + getLastErrorString + + PR3601: Fix additional -Wreturn-type issues introduced by + 8061651 + + PR3630: Use ${datadir} when specifying default tz.properties + location + + PR3632: IcedTea installing symlinks to SystemTap directory + rather than individual tapsets + * AArch64 port + + S8207345, PR3626: Trampoline generation code reads from + uninitialized memory + * Shenandoah + + PR3619: Shenandoah broken on s390 + + PR3620: Shenandoah broken on ppc64 + + Allocation failure injection machinery + + [backport] AArch64 shenandoah_store_check should read + evacuation_in_progress as byte + + [backport] Account trashed regions from coalesced CM-with-UR + + [backport] Adaptive collection set selection in adaptive + policy + + [backport] Adaptive heuristics accounts trashed cset twice + + [backport] Adapt upstream object pinning API + + [backport] Add comments in shenandoah_store_check on direct + heap field use + + [backport] Added diagnostic flag ShenandoahOOMDuringEvacALot + + [backport] Added missing header file for non-PCH build + + [backport] Add missing barrier in C1 NIOCheckIndex intrinsic + + [backport] Add new pinned/cset region state for + evac-failure-path + + [backport] Add ShenandoahRootProcessor API to report threads + while scanning roots + + [backport] Add test to verify Shenandoah is not enabled by + default, and enabled with the flag + + [backport] Add -XX:+ShenandoahVerify to more interesting tests + + [backport] AESCrypt.implEncryptBlock/AESCrypt.implDecryptBlock + intrinsics assume non null inputs + + [backport] Allow use of fp spills around write barrier + + [backport] Arraycopy fixes (tests and infrastructure) + + [backport] Assert Shenandoah-specific safepoints instead of + generic ones + + [backport] Asynchronous region recycling + + [backport] Avoid notifying about zero waste + + [backport] barrier moved due to null checks needs to always + fix memory edges + + [backport] Basic support for x86_32: build and run in STW + configuration + + [backport] Bitmap based ShHeapRegionSet + + [backport] Break heuristics out from ShCollectorPolicy into + their own source files + + [backport] C2 should use heapword-sized object math + + [backport] Check BS type in immByteMapBase predicate + + [backport] Cleanup allocation tracking in heuristics + + [backport] Cleanup and refactor Full GC code + + [backport] Cleanup and strengthen BrooksPointer verification + + [backport] Clean up dead code + + [backport] Cleanup: removed unused code + + [backport] Cleanup reset_{next|complete}_mark_bitmap + + [backport] Cleanup SHH::should_start_normal_gc + + [backport] "Compact" heuristics for dense footprint scenarios + + [backport] Compact heuristics should not shortcut on + immediate garbage, but aggressively compact + + [backport] Conditionalize PerfDataMemorySize on enabled heap + sampling + + [backport] Consistent liveness for humongous regions + + [backport] Control loop should wait before starting another + GC cycle + + [backport] Critical native tests should only be ran on x86_64 + platforms + + [backport] Degenerated GC + + [backport] Degenerated GC: rename enum, report degen reasons + in stats + + [backport] Demote ShenandoahAllocImplicitLive to diagnostic + + [backport] Demote warning message about OOM-during-evac to + informational + + [backport] Denser ShHeapRegion status line + + [backport] Disable verification from non-Shenandoah VMOps. + + [backport] Disallow pinned_cset region moves and allocations + during Full GC + + [backport] Disambiguate "upgrade to Full GC" GCause + + [backport] Do not add non-allocatable regions to the freeset + + [backport] Don't treat allocation regions implicitely live + during some GCs + + [backport] Double check for UseShenandoahGC in WB expand + + [backport] Drop distinction between immediate garbage and + free in heuristics + + [backport] Dynamic worker refactoring + + [backport] Eagerly drop CSet state from regions during Full GC + + [backport] Eliminate write-barrier assembly stub (part 1) + + [backport] Enable biased locking for Shenandoah by default + + [backport] Ensure tasks use correct number of workers + + [backport] Excessive assert in ShHeap::mark_next + + [backport] Excessive asserts in marked_object_iterate + + [backport] FinalEvac pause to turn off evacuation + + [backport] Fix || and && chaining warnings in memnode.cpp + + [backport] Fix broken asserts in ShenandoahSharedEnumFlag + + [backport] Fixed code roots scanning that might be bypassed + during degenerated cycle + + [backport] Fixed compilation error of libTestHeapDump.c on + Windows with VS2010 + + [backport] Fixed missing ResourceMark in + ShenandoahAsserts::print_obj + + [backport] Fixed pinned region handling in mark-compact + + [backport] Fix (external) heap iteration + TestHeapDump + should unlock aggressive heuristics + + [backport] fix for alias analysis with + ShenandoahBarriersForConst + + [backport] Fix/improve CLD processing + + [backport] Fixing Windows and ARM32 build + + [backport] Fix Mac OS build warnings + + [backport] Fix Minimal VM build + + [backport] Fix ShFreeSet boundary case + + [backport] fix TCK crash with shenandoah + + [backport] Forcefully update counters when GC cycle is running + + [backport] FreeSet and HeapRegion should have the reference + to ShenandoahHeap + + [backport] FreeSet refactor: bitmaps, cursors, biasing + + [backport] FreeSet should accept responsibility over trashed + regions + + [backport] FreeSet should report its internal state + before/after GC cycle + + [backport] Full GC should compact humongous regions + + [backport] Full GC should not trash empty regions + + [backport] GC state testers (infra) + + [backport] Generic verification is possible only at + Shenandoah safepoints + + [backport] Get easy on template instantiations in ShConcMark + + [backport] Heap region sampling should publish region states + + [backport] Humongous regions should support explicit pinning + + [backport] Immediate garbage ratio should not go over 100% + + [backport] Implement flag to generate write-barriers without + membars + + [backport] Implement protocol for safe OOM during evacuation + handling + Use jint in oom-evac-handler to match older JDKs + Atomic support better + Missing OOMScope in + ShenandoahFixRootsTask + + [backport] Improve assertion/verification messages a bit + + [backport] Improve/more detailed timing stats for root queue + work + + [backport] Incorrect constant folding with final field and + -ShenandoahOptimizeFinals + + [backport] Increase test timeouts + + [backport] Introduce assert_in_correct_region to verify + object is in correct region + + [backport] Isolate shenandoahVerifier from stray headers + + [backport] keep read barriers for final instance/stable field + accesses + + [backport] Keep track of per-cycle mutator/collector allocs. + Fix mutator/collector alloc region overlap in traversal. + + [backport] Little cleanup + + [backport] Log message on ref processing, class unload, + update refs for mark events + + [backport] LotsOfCycles test timeouts + + [backport] Make concurrent precleaning log message optional + again + + [backport] Make control loop more responsive under allocation + pressure + + [backport] Make degenerated update-refs use region-set cursor + to hand over work + + [backport] Make heap counters update completely asynchronous + + [backport] Make major GC phases exclusive from each other + + [backport] Make sure selective barriers enabling/disabling + works + + [backport] Make sure -XX:+ShenandoahVerify comes first in the + tests + + [backport] Mark bitmap slices commit/uncommit + Aggregated + bitmap slicing + + [backport] Match barrier fastpath checks better + + [backport] Minor cleanups + + [backport] Minor cleanup, uses latest Atomic API + + [backport] Move barriers into typeArrayOop.hpp direct memory + accessors + + [backport] Move ShHeap::used increment out of locked + allocation path + + [backport] No need for fence in control loop: flags are now + ShSharedVariables + + [backport] Only report GC pause time to GC MXBean + Re-fix + memory managers and memory pools usage and pause reporting + + [backport] Optimize fwdptr region handling in + ShenandoahVerifyOopClosure::verify_oop + + [backport] Optimize oop/fwdptr/hr_index verification a bit + + [backport] overflow integer during size calculation + + [backport] Pacer should account allocation waste and + unsuccessful pacing in the budget + + [backport] Pacer should poll FreeSet to figure out actually + available space + + [backport] Passive should opt-in the barriers, not opt-out + + [backport] Pauses that do not affect heap occupancy should + not report heap + + [backport] Print message when heuristics changes the setting + ergonomically + + [backport] Protect C2 matchers with UseShenandoahGC + + [backport] Provide non-taxable allocation slack at the + beginning of the cycle + + [backport] Record cycle start/end to avoid continuous + periodic GC + + [backport] Record Shenandoah events in hs_err events section + + [backport] Refactor allocation failure and explicit GC + handling + + [backport] Refactor allocation metadata handling + + [backport] Refactor FreeSet rebuilding into the single source + + [backport] Refactoring GC phase and heap allocation tracking + out of policy + + [backport] Refactor uncommit handling: react on explicit GCs, + feature kill flag, etc + + [backport] Refactor worker timings into ShenandoahPhaseTimings + + [backport] ReferenceProcessor is_alive setup is racy + + [backport] Region sampling should lock while gathering region + data + + [backport] Rehash VMOperations and cycle driver mechanics for + consistency + + [backport] Relax assert in SBS::is_safe() + + [backport] Remove BS:is_safe in favor of logged + BS::verify_safe_oop + + [backport] Remove CSetThreshold handling from heuristics + + [backport] Remove FreeSet::add_region, inline into + FreeSet::rebuild + + [backport] Remove obsolete check in FreeSet::allocate + + [backport] Remove ShenandoahGCWorkerPerJavaThread flag + + [backport] Remove ShenandoahMarkCompactBarrierSet + + [backport] Rename and cleanup _regions and _free_set uses + + [backport] Rename dynamic heuristics to static + + [backport] Rename *_oop_static/oop_ref to *_forwarded + + [backport] Rename ShenandoahConcurrentThread to + ShenandoahControlThread + + [backport] Report all GC status flags in hs_err + + [backport] Report fwdptr size in JNI GetObjectSize + + [backport] Report how much we have failed to allocate during + Allocation Failure + + [backport] Report illegal transitions verbosely, and remove + some no-op transitions + + [backport] Rewire control loop to avoid double cleanup work + + [backport] Rework shared bool/enum flags with proper types + and synchronization + + [backport] Rewrite and fix + ShenandoahHeap::marked_object_iterate + + [backport] Rich assertion failure logging + + [backport] Roots verification should take the special roots + first + + [backport] RP closures should accept NULL referents + + [backport] Set ShenandoahMinFreeThreshold default to 10% + + [backport] Setup process references and class unloading once + before the cycle + + [backport] ShConcurrentThread races with set_gc_state_bit + + [backport] Shenandoah critical native support + + [backport] Shenandoah region/set iterators should not allow + copying + + [backport] Shenandoah SA implementation + + [backport] Shenandoah/SPARC barrier stubs + + [backport] ShenandoahVerifyOptoBarriers should not fail with + disabled barriers + + [backport] ShenandoahWriteBarrierNode::find_bottom_mem() fix + + [backport] ShenandoahWriteBarrierRB flag to conditionally + disable RB on WB fastpath + + [backport] Shenandoah/Zero barrier stubs + + [backport] SieveObjects test is too hostile to verification + + [backport] Single GCTimer shared by all operations + + [backport] Single thread-local GC state flag for all barriers + + [backport] Some smallish ShHeapRegionSet changes + + [backport] Speed up asserts and verification, improve + fastdebug builds performance + + [backport] Split live data management for allocations and GCs + + [backport] Static heuristics should be really static and + report decisions + + [backport] Static heuristics should use non-zero allocation + threshold + + [backport] Store checks should run most of the time + + [backport] Tax-and-Spend allocation pacing + + [backport] Testbug: VerifyJCStressTest leaks memory + + [backport] TestSelectiveBarrierFlags should accept + multi-element flag selections + + [backport] TestSelectiveBarrierFlags times out due to too + aggressive compilation mode + + [backport] Trim/expand test heap sizes to fit small heaps + + [backport] Trim the TLAB sizes to avoid wasteful retirement + under TLAB races + + [backport] Use leftmost region in GC allocations + + [backport] Use os::naked_short_sleep instead of naked Thread + events for sleeping + + [backport] Use/sort (cached) RegionData not + ShenandoahHeapRegionSet (infrastructure) + + [backport] UX: Cleanup (adaptive) CSet selection message + + [backport] UX: Pacer reports incorrect free size + + [backport] UX: Shorter gc+ergo messages from CSet selection + + [backport] Verifier crashes when reporting multiple + forwardings + + [backport] Verifier should check klass pointers before + attempting to reach for object size + + [backport] Verifier should print verification label at + liveness verification + + [backport] Verify fwdptr accesses during Full GC moves + + [backport] Verify regions status + + [backport] When Shenandoah WB is moved out of loop, connect + it to correct loop memory Phi (back out and revisit previous fix) + + [backport] Wipe out ShenandoahStoreCheck implementation + + [backport] Workaround C1 ConstantOopWriteValue bug + + Bitmap size might not be page aligned when large page is used + + Changed claim count to jint + + Cherry-pick JDK-8173013: JVMTI tagged object access needs G1 + pre-barrier + + Defer cleaning of system dictionary and friends to parallel + cleaning phase + + Do not put down update-refs-in-progress flag concurrently + + Fix AArch64 build failure: misplaced #endif + + Fixed Shenandoah 8u build + + Fixed Windows build + + Fix non-PCH build + + Fix non-PCH x86_32 build + + Fix up SPARC and Zero headers for proper locations + + missing barriers in String intrinsics with + -ShenandoahOptimizeInstanceFinals + -ShenandoahOptimizeStableFinals + + Missing event log for canceled GC + + StringInternCleanup times out + + VerifyJCStressTest should test all heuristics + + Workaround VM crash with JNI Weak Refs handling +- Removed patches: + * 8038636.patch, 8051972.patch, 8055008.patch, 8074373.patch, + 8076117.patch, 8157898.patch, 8169201.patch, 8170035.patch, + 8176183.patch, 8187635.patch, 8188223.patch, 8191239.patch, + 8193419.patch, 8196224.patch, 8196491.patch, 8196854.patch, + 8197871.patch, 8197925.patch, 8197943.patch, 8198794.patch, + 8199406.patch, 8199547.patch, 8200359.patch, 8200666.patch, + 8201433.patch, 8202585.patch, 8202996.patch, 8203233.patch, + 8203368.patch, 8205491.patch + + Not needed any more +- Modified patch: + * java-1_8_0-openjdk-suse-desktop-files.patch + - Rediff to changed context + ------------------------------------------------------------------- Wed Sep 26 05:39:58 UTC 2018 - Fridrich Strba diff --git a/java-1_8_0-openjdk.spec b/java-1_8_0-openjdk.spec index 61ee7ad..7f62f6a 100644 --- a/java-1_8_0-openjdk.spec +++ b/java-1_8_0-openjdk.spec @@ -18,7 +18,7 @@ %{!?aarch64:%global aarch64 aarch64 arm64 armv8} %global jit_arches %{ix86} x86_64 ppc64 ppc64le %{aarch64} %{arm} -%global icedtea_version 3.8.0 +%global icedtea_version 3.9.0 %global icedtea_sound_version 1.0.1 %global buildoutputdir openjdk.build/ # Convert an absolute path to a relative path. Each symbolic link is @@ -32,8 +32,8 @@ # priority must be 6 digits in total %global priority 1805 %global javaver 1.8.0 -%global updatever 171 -%global buildver 11 +%global updatever 181 +%global buildver 13 # Standard JPackage directories and symbolic links. %global sdklnk java-%{javaver}-openjdk %global archname %{sdklnk} @@ -203,38 +203,6 @@ Patch1002: icedtea-3.8.0-s390.patch Patch2001: disable-doclint-by-default.patch Patch2002: aarch64.patch -# Oracle July 2018 CPU backport to jdk8u171 -Patch5000: 8038636.patch -Patch5001: 8051972.patch -Patch5002: 8055008.patch -Patch5003: 8074373.patch -Patch5004: 8076117.patch -Patch5005: 8157898.patch -Patch5006: 8169201.patch -Patch5007: 8170035.patch -Patch5008: 8176183.patch -Patch5009: 8187635.patch -Patch5010: 8188223.patch -Patch5011: 8191239.patch -Patch5012: 8193419.patch -Patch5013: 8196224.patch -Patch5014: 8196491.patch -Patch5015: 8196854.patch -Patch5016: 8197871.patch -Patch5017: 8197925.patch -Patch5018: 8197943.patch -Patch5019: 8198794.patch -Patch5020: 8199406.patch -Patch5021: 8199547.patch -Patch5022: 8200359.patch -Patch5023: 8200666.patch -Patch5024: 8201433.patch -Patch5025: 8202585.patch -Patch5026: 8202996.patch -Patch5027: 8203233.patch -Patch5028: 8203368.patch -Patch5029: 8205491.patch - BuildRequires: alsa-lib-devel BuildRequires: autoconf BuildRequires: automake @@ -581,37 +549,6 @@ patch -p0 -i %{PATCH103} patch -p0 -i %{PATCH2001} patch -p0 -i %{PATCH2002} -patch -p1 -i %{PATCH5000} -patch -p1 -i %{PATCH5001} -patch -p1 -i %{PATCH5002} -patch -p1 -i %{PATCH5003} -patch -p1 -i %{PATCH5004} -patch -p1 -i %{PATCH5005} -patch -p1 -i %{PATCH5006} -patch -p1 -i %{PATCH5007} -patch -p1 -i %{PATCH5008} -patch -p1 -i %{PATCH5009} -patch -p1 -i %{PATCH5010} -patch -p1 -i %{PATCH5011} -patch -p1 -i %{PATCH5012} -patch -p1 -i %{PATCH5013} -patch -p1 -i %{PATCH5014} -patch -p1 -i %{PATCH5015} -patch -p1 -i %{PATCH5016} -patch -p1 -i %{PATCH5017} -patch -p1 -i %{PATCH5018} -patch -p1 -i %{PATCH5019} -patch -p1 -i %{PATCH5020} -patch -p1 -i %{PATCH5021} -patch -p1 -i %{PATCH5022} -patch -p1 -i %{PATCH5023} -patch -p1 -i %{PATCH5024} -patch -p1 -i %{PATCH5025} -patch -p1 -i %{PATCH5026} -patch -p1 -i %{PATCH5027} -patch -p1 -i %{PATCH5028} -patch -p1 -i %{PATCH5029} - (cd openjdk/common/autoconf bash ./autogen.sh ) @@ -769,7 +706,7 @@ cp -a %{buildoutputdir}/docs %{buildroot}%{_javadocdir}/%{sdklnk} for s in 16 24 32 48 ; do install -D -p -m 644 \ openjdk/jdk/src/solaris/classes/sun/awt/X11/java-icon${s}.png \ - %{buildroot}%{_datadir}/icons/hicolor/${s}x${s}/apps/java-%{javaver}.png + %{buildroot}%{_datadir}/icons/hicolor/${s}x${s}/apps/java-%{javaver}-openjdk.png done # Install desktop files. @@ -1104,7 +1041,7 @@ fi %files -f %{name}.files %dir %{_jvmdir}/%{jredir}/lib/%{archinstall} %dir %{_datadir}/icons/hicolor -%{_datadir}/icons/hicolor/*x*/apps/java-%{javaver}.png +%{_datadir}/icons/hicolor/*x*/apps/java-%{javaver}-openjdk.png %files headless -f %{name}.files-headless %dir %{_jvmdir} diff --git a/jaxp.tar.xz b/jaxp.tar.xz index cc1892d..84dc117 100644 --- a/jaxp.tar.xz +++ b/jaxp.tar.xz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6c0d32871517adec2c04e6ac0674463eae23318aafc5f88486245a761c39f24c -size 2287836 +oid sha256:20e821b18d1415920d3b53bff7faba1d76fe82fdbe08359f8a68c2ff5b17c56d +size 2289624 diff --git a/jaxws.tar.xz b/jaxws.tar.xz index 7bb727e..94a68dc 100644 --- a/jaxws.tar.xz +++ b/jaxws.tar.xz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7bf19c1bab92ecd5710dd44039500f3b298c7603048d49d7acf120705f5fc3fa -size 2270928 +oid sha256:5003bc7110d256af32dcd649318f927cba7260938e029e71c222f4aa13e780b2 +size 2272684 diff --git a/jdk.tar.xz b/jdk.tar.xz index 6463db5..340846a 100644 --- a/jdk.tar.xz +++ b/jdk.tar.xz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c0740f960e5c295bb04283a3d5696d453e90761900035423f8bcc546d0483ae6 -size 39146448 +oid sha256:496b164f739f37ef241faea8329be9654b92c42633a9849f5a45b4bedf015337 +size 39194584 diff --git a/langtools.tar.xz b/langtools.tar.xz index 4fab141..af2ac73 100644 --- a/langtools.tar.xz +++ b/langtools.tar.xz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ae26e4637807be7ac63bba80062509961f4b8b2d72090d9d69a3c0f46df10bf9 -size 2070064 +oid sha256:0910b84754e5c36ab93acd2f617a8cb6095a4db76130de001193dca93a96af03 +size 2071464 diff --git a/nashorn.tar.xz b/nashorn.tar.xz index d2fa0f4..1479342 100644 --- a/nashorn.tar.xz +++ b/nashorn.tar.xz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:66f3632730c8f79d3a24b2ec034d4129c7042d0408e6020a5f2905ffd2db5fd2 -size 2317148 +oid sha256:170f328f57bc1efe50c31bfcee459e15cfb251f77a67c1f6a69d8634e51f8138 +size 2314292 diff --git a/openjdk.tar.xz b/openjdk.tar.xz index c9ecbe0..6828947 100644 --- a/openjdk.tar.xz +++ b/openjdk.tar.xz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ee0b75534bc84d121b9aa36e6bde435f02c7f5c5098cf1874f8c637e762dace0 -size 335928 +oid sha256:0889cdfb8620950bc9922ef58df8313dc85b5be27dd515bfbfcfbc1bce1a1f46 +size 338056