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