mirror of
https://github.com/JetBrains/JetBrainsRuntime.git
synced 2025-12-14 21:39:41 +01:00
Compare commits
365 Commits
jdk-11.0.2
...
jdk-11.0.2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1c80800a26 | ||
|
|
874b25e641 | ||
|
|
2155f8d22a | ||
|
|
c99638d35c | ||
|
|
513a67a65f | ||
|
|
cf53387daf | ||
|
|
249144c02b | ||
|
|
04e6f37d2c | ||
|
|
add90003d6 | ||
|
|
827528c322 | ||
|
|
96805ae97b | ||
|
|
98161b7a9b | ||
|
|
9bf55020f0 | ||
|
|
8ba0341757 | ||
|
|
cee8535a9d | ||
|
|
1393271305 | ||
|
|
86d5188b89 | ||
|
|
34a77a471b | ||
|
|
eb960ff6d4 | ||
|
|
bd85b8729d | ||
|
|
56ded02fd8 | ||
|
|
51657d990a | ||
|
|
d73c162a85 | ||
|
|
6ae4b326fa | ||
|
|
2d393d8bb4 | ||
|
|
68c131d590 | ||
|
|
fe9c9c707b | ||
|
|
445e79ea99 | ||
|
|
240b296234 | ||
|
|
a754a3d897 | ||
|
|
6436749891 | ||
|
|
82c330b464 | ||
|
|
217b9fdf05 | ||
|
|
2232d1f7b4 | ||
|
|
06d87ca659 | ||
|
|
015796747f | ||
|
|
bec83f35d6 | ||
|
|
59b3859160 | ||
|
|
dd35f187fd | ||
|
|
b2d385978f | ||
|
|
0358cbd0a1 | ||
|
|
934decc147 | ||
|
|
90ad5b18de | ||
|
|
6ee8bacfdd | ||
|
|
ffcdc10405 | ||
|
|
76b8327ba0 | ||
|
|
8c31358ccc | ||
|
|
ce572dfede | ||
|
|
a83d9303d5 | ||
|
|
c67fe36b5f | ||
|
|
3df18523ab | ||
|
|
9ba9dd276c | ||
|
|
d3ce405a14 | ||
|
|
828d645208 | ||
|
|
cd4ae8cc89 | ||
|
|
cd9e6cb584 | ||
|
|
3caf5017a1 | ||
|
|
d8632eda29 | ||
|
|
30f532b4b1 | ||
|
|
fa64c0e345 | ||
|
|
3f2d6f0378 | ||
|
|
3c43b2f623 | ||
|
|
f7217d7595 | ||
|
|
73dc9e8999 | ||
|
|
648e8f0189 | ||
|
|
3acdebea85 | ||
|
|
c5d2cc138f | ||
|
|
7d34693612 | ||
|
|
1daafddfd0 | ||
|
|
8ef848219b | ||
|
|
7547abf0d3 | ||
|
|
ee57792bba | ||
|
|
d668844b66 | ||
|
|
95c0b97bc2 | ||
|
|
de90ed01e1 | ||
|
|
7416eeeb46 | ||
|
|
6c7ee264af | ||
|
|
b6cd51ab08 | ||
|
|
461e1b2049 | ||
|
|
e6beead5e0 | ||
|
|
a049bf1104 | ||
|
|
e74a76a224 | ||
|
|
3b0f78bfe5 | ||
|
|
9fe50deebb | ||
|
|
1943345ad2 | ||
|
|
92df183fbd | ||
|
|
54949eb4d1 | ||
|
|
d51bb43313 | ||
|
|
b423f0148d | ||
|
|
e655a2f14e | ||
|
|
bc4a5255bc | ||
|
|
b254771f86 | ||
|
|
278f506837 | ||
|
|
5f1ed563ea | ||
|
|
5587a9642c | ||
|
|
6a2cce7354 | ||
|
|
163309f854 | ||
|
|
1784030096 | ||
|
|
f27e8c8108 | ||
|
|
3134d7eb74 | ||
|
|
5647fbfc51 | ||
|
|
c87a410bd5 | ||
|
|
697d8566b1 | ||
|
|
716621da68 | ||
|
|
78fd6b9769 | ||
|
|
32d271316f | ||
|
|
9bf121ddee | ||
|
|
c7b9769d61 | ||
|
|
236ce175d7 | ||
|
|
4c626c80a2 | ||
|
|
b05f58e9ec | ||
|
|
5375248aa5 | ||
|
|
ff537af466 | ||
|
|
82e28669e7 | ||
|
|
e3e776509a | ||
|
|
69ee1d0005 | ||
|
|
89fd88ed81 | ||
|
|
3d25b4a34a | ||
|
|
0533bad7db | ||
|
|
806882b1c8 | ||
|
|
4efcece1f8 | ||
|
|
31035f07d3 | ||
|
|
c08f0f66c0 | ||
|
|
fcfbef7f66 | ||
|
|
6fb5b8a3d2 | ||
|
|
b005573d17 | ||
|
|
e3ff295d65 | ||
|
|
9b44a2a410 | ||
|
|
cdfb4e7d6c | ||
|
|
91cdddf6d1 | ||
|
|
a30852a3af | ||
|
|
7fd48f5cec | ||
|
|
d88cf4f48b | ||
|
|
99435be84b | ||
|
|
2bbdc8c5e4 | ||
|
|
3c9e960e2e | ||
|
|
468d6a746e | ||
|
|
2a5a4d7c55 | ||
|
|
3702e902b1 | ||
|
|
f9d7601e29 | ||
|
|
db9e3139dc | ||
|
|
8578e12c42 | ||
|
|
6547a1687d | ||
|
|
25d6e19de5 | ||
|
|
e61adf68ee | ||
|
|
59cd1a45b1 | ||
|
|
569c669891 | ||
|
|
724477cfe4 | ||
|
|
cc42090c32 | ||
|
|
8489b52f1d | ||
|
|
f8e87dfef3 | ||
|
|
3b4f583617 | ||
|
|
7198ea1be8 | ||
|
|
1e3e6877d5 | ||
|
|
2a5ba0a6d9 | ||
|
|
7e1e23978d | ||
|
|
4a28ac00f3 | ||
|
|
b0ad1672fa | ||
|
|
e726fe7255 | ||
|
|
9f5812103e | ||
|
|
e541cbdd98 | ||
|
|
0e74e1b63a | ||
|
|
cc54dc6ee6 | ||
|
|
ddeb60205d | ||
|
|
b39666590c | ||
|
|
fcff4a9a11 | ||
|
|
b0a09bf9c4 | ||
|
|
582159a1ed | ||
|
|
ef08f4ebff | ||
|
|
f6e838dcd8 | ||
|
|
6059f56a5d | ||
|
|
9b67f2ff70 | ||
|
|
f874da3cfd | ||
|
|
014fe94ef0 | ||
|
|
667bbd3f53 | ||
|
|
7d4ef49f0b | ||
|
|
2e4179b911 | ||
|
|
f08e5e8793 | ||
|
|
39016332b5 | ||
|
|
dff2d60d05 | ||
|
|
5dddf69319 | ||
|
|
be6c6212ff | ||
|
|
9a2a828299 | ||
|
|
46b15b96dd | ||
|
|
c9cc14b565 | ||
|
|
f343625a0b | ||
|
|
316cd2f606 | ||
|
|
54bf5228bc | ||
|
|
2ded016d40 | ||
|
|
bf56996048 | ||
|
|
2f7954cc76 | ||
|
|
f36ba5a1b0 | ||
|
|
b5cbf8d632 | ||
|
|
aa0bba2c9a | ||
|
|
e4fb2286c9 | ||
|
|
e72f491950 | ||
|
|
d659ff6a39 | ||
|
|
69b6e6d2ad | ||
|
|
bc8aeb6496 | ||
|
|
f010fe0026 | ||
|
|
ee370edfc4 | ||
|
|
48cf5a3fb5 | ||
|
|
d3bd5ae28a | ||
|
|
f45455e134 | ||
|
|
07ea0f1a52 | ||
|
|
a51a9dd260 | ||
|
|
0bacea4c51 | ||
|
|
8a233081db | ||
|
|
f7e83e84de | ||
|
|
b11a980042 | ||
|
|
69f4ac1e0d | ||
|
|
4556aa9d5e | ||
|
|
7b377ac0ba | ||
|
|
31a780d851 | ||
|
|
15c9397e45 | ||
|
|
c35d30d6fe | ||
|
|
47fd86ca1c | ||
|
|
8a489e58b3 | ||
|
|
35333744a8 | ||
|
|
b7596f3f9d | ||
|
|
b8ee2aa15a | ||
|
|
1d6965fd4e | ||
|
|
2a804f54aa | ||
|
|
ece9b2cd3b | ||
|
|
2ff4d4edfb | ||
|
|
59224f7ddf | ||
|
|
42f70422f1 | ||
|
|
270f3cfb3d | ||
|
|
4714685d6e | ||
|
|
6d3a41fec7 | ||
|
|
4b67c4ecd5 | ||
|
|
91fe4e6a39 | ||
|
|
665e1cd4f9 | ||
|
|
4c81a1ca38 | ||
|
|
6b225d5a63 | ||
|
|
b9cb5721c9 | ||
|
|
c542dc913a | ||
|
|
4202063c1b | ||
|
|
b7822c39d3 | ||
|
|
3f636f30f9 | ||
|
|
1da8fd845c | ||
|
|
cabaf74826 | ||
|
|
137a8b9dcf | ||
|
|
d42634bdac | ||
|
|
93630950c2 | ||
|
|
81f2413af5 | ||
|
|
f7d05223d2 | ||
|
|
1e1688a32a | ||
|
|
d8b297fa7b | ||
|
|
9df5688e87 | ||
|
|
f29aa4d62c | ||
|
|
ac43e680dd | ||
|
|
7c047564b1 | ||
|
|
f3d0f2bac0 | ||
|
|
dabf4d16a1 | ||
|
|
decacb83b2 | ||
|
|
1ea18523ec | ||
|
|
6cce290c1f | ||
|
|
533b45835f | ||
|
|
e73d88f982 | ||
|
|
ff1b975997 | ||
|
|
f1687ea796 | ||
|
|
4ca2d02974 | ||
|
|
7491ed45bb | ||
|
|
295a8cd371 | ||
|
|
3f12da52ab | ||
|
|
e1662fb927 | ||
|
|
0be4705eef | ||
|
|
00f8277e96 | ||
|
|
358a35a6a9 | ||
|
|
7af75fb400 | ||
|
|
cc2313975c | ||
|
|
215cf9b9a9 | ||
|
|
a33a174ae7 | ||
|
|
6499067051 | ||
|
|
583477f96f | ||
|
|
85d891b819 | ||
|
|
e090f5c87b | ||
|
|
8b8774d1c6 | ||
|
|
b39a4d24c5 | ||
|
|
06cca199fe | ||
|
|
f9a672abaf | ||
|
|
8e6a71d9ba | ||
|
|
4941b84aa1 | ||
|
|
4daa077a4f | ||
|
|
7d0de463c1 | ||
|
|
dd927ede30 | ||
|
|
21f04a2a46 | ||
|
|
aa16bfe549 | ||
|
|
2e46aad2d2 | ||
|
|
eca369614c | ||
|
|
2f285fd96a | ||
|
|
9ac4063d14 | ||
|
|
6808c5c89d | ||
|
|
910eb0ef1b | ||
|
|
1bbf93c51e | ||
|
|
8e46e3714e | ||
|
|
fa8f02ece8 | ||
|
|
e922114fa7 | ||
|
|
d27c9ba7c8 | ||
|
|
b05024a199 | ||
|
|
00736021bc | ||
|
|
979daf54de | ||
|
|
5d4de366d7 | ||
|
|
741b3400f1 | ||
|
|
518e79717d | ||
|
|
29a08f77e8 | ||
|
|
4117953453 | ||
|
|
d98b4607e7 | ||
|
|
b7f78a39c2 | ||
|
|
37cfd4808d | ||
|
|
6aa721649d | ||
|
|
f8225a424f | ||
|
|
8c18317ef8 | ||
|
|
c782d4c9cd | ||
|
|
12a28633d2 | ||
|
|
50d0503294 | ||
|
|
6bcb8ac9f9 | ||
|
|
a46d4440ee | ||
|
|
44825a003b | ||
|
|
ac9d090a99 | ||
|
|
c5ba4b5c3e | ||
|
|
74822988a3 | ||
|
|
cb1b9a6487 | ||
|
|
7ed3c3ef2c | ||
|
|
d1bdb25574 | ||
|
|
2921ad6bb8 | ||
|
|
0f09d0ba6c | ||
|
|
1d102e8f8a | ||
|
|
7de6f3f6ac | ||
|
|
a097faa972 | ||
|
|
1b3c570c60 | ||
|
|
5cf250f14f | ||
|
|
069fbd7770 | ||
|
|
21b88dba7f | ||
|
|
84ff9b3d11 | ||
|
|
29f300eb2a | ||
|
|
c8ca55bafa | ||
|
|
e6cec8f1a8 | ||
|
|
eb5ef84294 | ||
|
|
cf9aa9be16 | ||
|
|
9b4085619f | ||
|
|
fbac37b73c | ||
|
|
a26445db3b | ||
|
|
7b7fbdf615 | ||
|
|
f3069d13d2 | ||
|
|
b425dff6bb | ||
|
|
bc14b9f12e | ||
|
|
4ef8db8671 | ||
|
|
6c0a88d905 | ||
|
|
2a78f2f159 | ||
|
|
a4a5c7fe66 | ||
|
|
f6e6eefcc1 | ||
|
|
a582e1180c | ||
|
|
b183cd2399 | ||
|
|
0ae93db126 | ||
|
|
61164cef02 | ||
|
|
f2565a6c6f | ||
|
|
0e94be627d | ||
|
|
2dee6fbf2e | ||
|
|
c681c5aac4 | ||
|
|
e5cc20c35a | ||
|
|
fe840ca3a2 | ||
|
|
5045b5467d | ||
|
|
6e296a01c2 |
4
.github/actions/do-build/action.yml
vendored
4
.github/actions/do-build/action.yml
vendored
@@ -66,7 +66,7 @@ runs:
|
|||||||
shell: bash
|
shell: bash
|
||||||
|
|
||||||
- name: 'Upload build logs'
|
- name: 'Upload build logs'
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: failure-logs-${{ inputs.platform }}${{ inputs.debug-suffix }}
|
name: failure-logs-${{ inputs.platform }}${{ inputs.debug-suffix }}
|
||||||
path: failure-logs
|
path: failure-logs
|
||||||
@@ -74,7 +74,7 @@ runs:
|
|||||||
|
|
||||||
# This is the best way I found to abort the job with an error message
|
# This is the best way I found to abort the job with an error message
|
||||||
- name: 'Notify about build failures'
|
- name: 'Notify about build failures'
|
||||||
uses: actions/github-script@v6
|
uses: actions/github-script@v7
|
||||||
with:
|
with:
|
||||||
script: core.setFailed('Build failed. See summary for details.')
|
script: core.setFailed('Build failed. See summary for details.')
|
||||||
if: steps.check.outputs.failure == 'true'
|
if: steps.check.outputs.failure == 'true'
|
||||||
|
|||||||
2
.github/actions/get-bootjdk/action.yml
vendored
2
.github/actions/get-bootjdk/action.yml
vendored
@@ -65,7 +65,7 @@ runs:
|
|||||||
|
|
||||||
- name: 'Check cache for BootJDK'
|
- name: 'Check cache for BootJDK'
|
||||||
id: get-cached-bootjdk
|
id: get-cached-bootjdk
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
path: bootjdk/jdk
|
path: bootjdk/jdk
|
||||||
key: boot-jdk-${{ inputs.platform }}-${{ steps.sha256.outputs.value }}
|
key: boot-jdk-${{ inputs.platform }}-${{ steps.sha256.outputs.value }}
|
||||||
|
|||||||
4
.github/actions/get-bundles/action.yml
vendored
4
.github/actions/get-bundles/action.yml
vendored
@@ -48,14 +48,14 @@ runs:
|
|||||||
steps:
|
steps:
|
||||||
- name: 'Download bundles artifact'
|
- name: 'Download bundles artifact'
|
||||||
id: download-bundles
|
id: download-bundles
|
||||||
uses: actions/download-artifact@v3
|
uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: bundles-${{ inputs.platform }}${{ inputs.debug-suffix }}
|
name: bundles-${{ inputs.platform }}${{ inputs.debug-suffix }}
|
||||||
path: bundles
|
path: bundles
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
|
|
||||||
- name: 'Download bundles artifact (retry)'
|
- name: 'Download bundles artifact (retry)'
|
||||||
uses: actions/download-artifact@v3
|
uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: bundles-${{ inputs.platform }}${{ inputs.debug-suffix }}
|
name: bundles-${{ inputs.platform }}${{ inputs.debug-suffix }}
|
||||||
path: bundles
|
path: bundles
|
||||||
|
|||||||
6
.github/actions/get-jtreg/action.yml
vendored
6
.github/actions/get-jtreg/action.yml
vendored
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved.
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
@@ -41,7 +41,7 @@ runs:
|
|||||||
|
|
||||||
- name: 'Check cache for JTReg'
|
- name: 'Check cache for JTReg'
|
||||||
id: get-cached-jtreg
|
id: get-cached-jtreg
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
path: jtreg/installed
|
path: jtreg/installed
|
||||||
key: jtreg-${{ steps.version.outputs.value }}
|
key: jtreg-${{ steps.version.outputs.value }}
|
||||||
@@ -57,7 +57,7 @@ runs:
|
|||||||
- name: 'Build JTReg'
|
- name: 'Build JTReg'
|
||||||
run: |
|
run: |
|
||||||
# Build JTReg and move files to the proper locations
|
# Build JTReg and move files to the proper locations
|
||||||
bash make/build.sh --jdk "$JAVA_HOME_11_X64"
|
bash make/build.sh --jdk "$JAVA_HOME_17_X64"
|
||||||
mkdir ../installed
|
mkdir ../installed
|
||||||
mv build/images/jtreg/* ../installed
|
mv build/images/jtreg/* ../installed
|
||||||
working-directory: jtreg/src
|
working-directory: jtreg/src
|
||||||
|
|||||||
2
.github/actions/get-msys2/action.yml
vendored
2
.github/actions/get-msys2/action.yml
vendored
@@ -30,7 +30,7 @@ runs:
|
|||||||
using: composite
|
using: composite
|
||||||
steps:
|
steps:
|
||||||
- name: 'Install MSYS2'
|
- name: 'Install MSYS2'
|
||||||
uses: msys2/setup-msys2@v2
|
uses: msys2/setup-msys2@v2.22.0
|
||||||
with:
|
with:
|
||||||
install: 'autoconf tar unzip zip make'
|
install: 'autoconf tar unzip zip make'
|
||||||
path-type: minimal
|
path-type: minimal
|
||||||
|
|||||||
2
.github/actions/upload-bundles/action.yml
vendored
2
.github/actions/upload-bundles/action.yml
vendored
@@ -69,7 +69,7 @@ runs:
|
|||||||
shell: bash
|
shell: bash
|
||||||
|
|
||||||
- name: 'Upload bundles artifact'
|
- name: 'Upload bundles artifact'
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: bundles-${{ inputs.platform }}${{ inputs.debug-suffix }}
|
name: bundles-${{ inputs.platform }}${{ inputs.debug-suffix }}
|
||||||
path: bundles
|
path: bundles
|
||||||
|
|||||||
10
.github/workflows/build-cross-compile.yml
vendored
10
.github/workflows/build-cross-compile.yml
vendored
@@ -87,13 +87,6 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
platform: linux-x64
|
platform: linux-x64
|
||||||
|
|
||||||
# Use linux-x64 JDK bundle as build JDK
|
|
||||||
- name: 'Get build JDK'
|
|
||||||
id: buildjdk
|
|
||||||
uses: ./.github/actions/get-bundles
|
|
||||||
with:
|
|
||||||
platform: linux-x64
|
|
||||||
|
|
||||||
# Upgrading apt to solve libc6 installation bugs, see JDK-8260460.
|
# Upgrading apt to solve libc6 installation bugs, see JDK-8260460.
|
||||||
- name: 'Install toolchain and dependencies'
|
- name: 'Install toolchain and dependencies'
|
||||||
run: |
|
run: |
|
||||||
@@ -110,7 +103,7 @@ jobs:
|
|||||||
|
|
||||||
- name: 'Check cache for sysroot'
|
- name: 'Check cache for sysroot'
|
||||||
id: get-cached-sysroot
|
id: get-cached-sysroot
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
path: sysroot
|
path: sysroot
|
||||||
key: sysroot-${{ matrix.debian-arch }}-${{ hashFiles('./.github/workflows/build-cross-compile.yml') }}
|
key: sysroot-${{ matrix.debian-arch }}-${{ hashFiles('./.github/workflows/build-cross-compile.yml') }}
|
||||||
@@ -154,7 +147,6 @@ jobs:
|
|||||||
--disable-precompiled-headers
|
--disable-precompiled-headers
|
||||||
--openjdk-target=${{ matrix.gnu-arch }}-linux-gnu${{ matrix.gnu-abi}}
|
--openjdk-target=${{ matrix.gnu-arch }}-linux-gnu${{ matrix.gnu-abi}}
|
||||||
--with-sysroot=sysroot
|
--with-sysroot=sysroot
|
||||||
--with-build-jdk=${{ steps.buildjdk.outputs.jdk-path }}
|
|
||||||
CC=${{ matrix.gnu-arch }}-linux-gnu${{ matrix.gnu-abi}}-gcc-${{ inputs.gcc-major-version }}
|
CC=${{ matrix.gnu-arch }}-linux-gnu${{ matrix.gnu-abi}}-gcc-${{ inputs.gcc-major-version }}
|
||||||
CXX=${{ matrix.gnu-arch }}-linux-gnu${{ matrix.gnu-abi}}-g++-${{ inputs.gcc-major-version }}
|
CXX=${{ matrix.gnu-arch }}-linux-gnu${{ matrix.gnu-abi}}-g++-${{ inputs.gcc-major-version }}
|
||||||
${{ inputs.extra-conf-options }} ${{ inputs.configure-arguments }} || (
|
${{ inputs.extra-conf-options }} ${{ inputs.configure-arguments }} || (
|
||||||
|
|||||||
2
.github/workflows/build-macos.yml
vendored
2
.github/workflows/build-macos.yml
vendored
@@ -55,7 +55,7 @@ on:
|
|||||||
jobs:
|
jobs:
|
||||||
build-macos:
|
build-macos:
|
||||||
name: build
|
name: build
|
||||||
runs-on: macos-11
|
runs-on: macos-12
|
||||||
|
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
|
|||||||
43
.github/workflows/main.yml
vendored
43
.github/workflows/main.yml
vendored
@@ -130,8 +130,7 @@ jobs:
|
|||||||
gcc-major-version: '10'
|
gcc-major-version: '10'
|
||||||
configure-arguments: ${{ github.event.inputs.configure-arguments }}
|
configure-arguments: ${{ github.event.inputs.configure-arguments }}
|
||||||
make-arguments: ${{ github.event.inputs.make-arguments }}
|
make-arguments: ${{ github.event.inputs.make-arguments }}
|
||||||
# The linux-x64 jdk bundle is used as buildjdk for the cross-compile job
|
if: needs.select.outputs.linux-x64 == 'true'
|
||||||
if: needs.select.outputs.linux-x64 == 'true' || needs.select.outputs.linux-cross-compile == 'true'
|
|
||||||
|
|
||||||
build-linux-x86:
|
build-linux-x86:
|
||||||
name: linux-x86
|
name: linux-x86
|
||||||
@@ -211,7 +210,6 @@ jobs:
|
|||||||
name: linux-cross-compile
|
name: linux-cross-compile
|
||||||
needs:
|
needs:
|
||||||
- select
|
- select
|
||||||
- build-linux-x64
|
|
||||||
uses: ./.github/workflows/build-cross-compile.yml
|
uses: ./.github/workflows/build-cross-compile.yml
|
||||||
with:
|
with:
|
||||||
gcc-major-version: '10'
|
gcc-major-version: '10'
|
||||||
@@ -225,7 +223,7 @@ jobs:
|
|||||||
uses: ./.github/workflows/build-macos.yml
|
uses: ./.github/workflows/build-macos.yml
|
||||||
with:
|
with:
|
||||||
platform: macos-x64
|
platform: macos-x64
|
||||||
xcode-toolset-version: '11.7'
|
xcode-toolset-version: '13.4.1'
|
||||||
configure-arguments: ${{ github.event.inputs.configure-arguments }}
|
configure-arguments: ${{ github.event.inputs.configure-arguments }}
|
||||||
make-arguments: ${{ github.event.inputs.make-arguments }}
|
make-arguments: ${{ github.event.inputs.make-arguments }}
|
||||||
if: needs.select.outputs.macos-x64 == 'true'
|
if: needs.select.outputs.macos-x64 == 'true'
|
||||||
@@ -236,7 +234,7 @@ jobs:
|
|||||||
uses: ./.github/workflows/build-macos.yml
|
uses: ./.github/workflows/build-macos.yml
|
||||||
with:
|
with:
|
||||||
platform: macos-aarch64
|
platform: macos-aarch64
|
||||||
xcode-toolset-version: '12.4'
|
xcode-toolset-version: '13.4.1'
|
||||||
extra-conf-options: '--openjdk-target=aarch64-apple-darwin'
|
extra-conf-options: '--openjdk-target=aarch64-apple-darwin'
|
||||||
configure-arguments: ${{ github.event.inputs.configure-arguments }}
|
configure-arguments: ${{ github.event.inputs.configure-arguments }}
|
||||||
make-arguments: ${{ github.event.inputs.make-arguments }}
|
make-arguments: ${{ github.event.inputs.make-arguments }}
|
||||||
@@ -300,7 +298,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
platform: macos-x64
|
platform: macos-x64
|
||||||
bootjdk-platform: macos-x64
|
bootjdk-platform: macos-x64
|
||||||
runs-on: macos-11
|
runs-on: macos-12
|
||||||
|
|
||||||
test-windows-x64:
|
test-windows-x64:
|
||||||
name: windows-x64
|
name: windows-x64
|
||||||
@@ -335,26 +333,23 @@ jobs:
|
|||||||
- test-windows-x64
|
- test-windows-x64
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
# Hack to get hold of the api environment variables that are only defined for actions
|
|
||||||
- name: 'Get API configuration'
|
|
||||||
id: api
|
|
||||||
uses: actions/github-script@v6
|
|
||||||
with:
|
|
||||||
script: 'return { url: process.env["ACTIONS_RUNTIME_URL"], token: process.env["ACTIONS_RUNTIME_TOKEN"] }'
|
|
||||||
|
|
||||||
- name: 'Remove bundle artifacts'
|
- name: 'Remove bundle artifacts'
|
||||||
run: |
|
run: |
|
||||||
# Find and remove all bundle artifacts
|
# Find and remove all bundle artifacts
|
||||||
ALL_ARTIFACT_URLS="$(curl -s \
|
# See: https://docs.github.com/en/rest/actions/artifacts?apiVersion=2022-11-28
|
||||||
-H 'Accept: application/json;api-version=6.0-preview' \
|
ALL_ARTIFACT_IDS="$(curl -sL \
|
||||||
-H 'Authorization: Bearer ${{ fromJson(steps.api.outputs.result).token }}' \
|
-H 'Accept: application/vnd.github+json' \
|
||||||
'${{ fromJson(steps.api.outputs.result).url }}_apis/pipelines/workflows/${{ github.run_id }}/artifacts?api-version=6.0-preview')"
|
-H 'Authorization: Bearer ${{ github.token }}' \
|
||||||
BUNDLE_ARTIFACT_URLS="$(echo "$ALL_ARTIFACT_URLS" | jq -r -c '.value | map(select(.name|startswith("bundles-"))) | .[].url')"
|
-H 'X-GitHub-Api-Version: 2022-11-28' \
|
||||||
for url in $BUNDLE_ARTIFACT_URLS; do
|
'${{ github.api_url }}/repos/${{ github.repository }}/actions/runs/${{ github.run_id }}/artifacts?per_page=100')"
|
||||||
echo "Removing $url"
|
BUNDLE_ARTIFACT_IDS="$(echo "$ALL_ARTIFACT_IDS" | jq -r -c '.artifacts | map(select(.name|startswith("bundles-"))) | .[].id')"
|
||||||
curl -s \
|
for id in $BUNDLE_ARTIFACT_IDS; do
|
||||||
-H 'Accept: application/json;api-version=6.0-preview' \
|
echo "Removing $id"
|
||||||
-H 'Authorization: Bearer ${{ fromJson(steps.api.outputs.result).token }}' \
|
curl -sL \
|
||||||
-X DELETE "$url" \
|
-X DELETE \
|
||||||
|
-H 'Accept: application/vnd.github+json' \
|
||||||
|
-H 'Authorization: Bearer ${{ github.token }}' \
|
||||||
|
-H 'X-GitHub-Api-Version: 2022-11-28' \
|
||||||
|
"${{ github.api_url }}/repos/${{ github.repository }}/actions/artifacts/$id" \
|
||||||
|| echo "Failed to remove bundle"
|
|| echo "Failed to remove bundle"
|
||||||
done
|
done
|
||||||
|
|||||||
8
.github/workflows/test.yml
vendored
8
.github/workflows/test.yml
vendored
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2022, 2023, Oracle and/or its affiliates. All rights reserved.
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
@@ -127,7 +127,7 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
# On macOS we need to install some dependencies for testing
|
# On macOS we need to install some dependencies for testing
|
||||||
brew install make
|
brew install make
|
||||||
sudo xcode-select --switch /Applications/Xcode_11.7.app/Contents/Developer
|
sudo xcode-select --switch /Applications/Xcode_13.4.1.app/Contents/Developer
|
||||||
# This will make GNU make available as 'make' and not only as 'gmake'
|
# This will make GNU make available as 'make' and not only as 'gmake'
|
||||||
echo '/usr/local/opt/make/libexec/gnubin' >> $GITHUB_PATH
|
echo '/usr/local/opt/make/libexec/gnubin' >> $GITHUB_PATH
|
||||||
if: runner.os == 'macOS'
|
if: runner.os == 'macOS'
|
||||||
@@ -191,7 +191,7 @@ jobs:
|
|||||||
if: always()
|
if: always()
|
||||||
|
|
||||||
- name: 'Upload test results'
|
- name: 'Upload test results'
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
path: results
|
path: results
|
||||||
name: ${{ steps.package.outputs.artifact-name }}
|
name: ${{ steps.package.outputs.artifact-name }}
|
||||||
@@ -199,7 +199,7 @@ jobs:
|
|||||||
|
|
||||||
# This is the best way I found to abort the job with an error message
|
# This is the best way I found to abort the job with an error message
|
||||||
- name: 'Notify about test failures'
|
- name: 'Notify about test failures'
|
||||||
uses: actions/github-script@v6
|
uses: actions/github-script@v7
|
||||||
with:
|
with:
|
||||||
script: core.setFailed('${{ steps.run-tests.outputs.error-message }}')
|
script: core.setFailed('${{ steps.run-tests.outputs.error-message }}')
|
||||||
if: steps.run-tests.outputs.failure == 'true'
|
if: steps.run-tests.outputs.failure == 'true'
|
||||||
|
|||||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,6 +1,7 @@
|
|||||||
/build/
|
/build/
|
||||||
/dist/
|
/dist/
|
||||||
/.idea/
|
/.idea/
|
||||||
|
/.vscode/
|
||||||
nbproject/private/
|
nbproject/private/
|
||||||
/webrev
|
/webrev
|
||||||
/.src-rev
|
/.src-rev
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
[general]
|
[general]
|
||||||
project=jdk-updates
|
project=jdk-updates
|
||||||
jbs=JDK
|
jbs=JDK
|
||||||
version=11.0.23
|
version=11.0.26
|
||||||
|
|
||||||
[checks]
|
[checks]
|
||||||
error=author,committer,reviewers,merge,issues,executable,symlink,message,hg-tag,whitespace
|
error=author,committer,reviewers,merge,issues,executable,symlink,message,hg-tag,whitespace,problemlists
|
||||||
|
warning=issuestitle,binary
|
||||||
|
|
||||||
[repository]
|
[repository]
|
||||||
tags=(?:jdk-(?:[1-9]([0-9]*)(?:\.(?:0|[1-9][0-9]*)){0,4})(?:\+(?:(?:[0-9]+))|(?:-ga)))|(?:jdk[4-9](?:u\d{1,3})?-(?:(?:b\d{2,3})|(?:ga)))|(?:hs\d\d(?:\.\d{1,2})?-b\d\d)
|
tags=(?:jdk-(?:[1-9]([0-9]*)(?:\.(?:0|[1-9][0-9]*)){0,4})(?:\+(?:(?:[0-9]+))|(?:-ga)))|(?:jdk[4-9](?:u\d{1,3})?-(?:(?:b\d{2,3})|(?:ga)))|(?:hs\d\d(?:\.\d{1,2})?-b\d\d)
|
||||||
@@ -29,3 +30,6 @@ role=committer
|
|||||||
|
|
||||||
[checks "issues"]
|
[checks "issues"]
|
||||||
pattern=^([124-8][0-9]{6}): (\S.*)$
|
pattern=^([124-8][0-9]{6}): (\S.*)$
|
||||||
|
|
||||||
|
[checks "problemlists"]
|
||||||
|
dirs=test/jdk|test/langtools|test/lib-test|test/hotspot/jtreg|test/jaxp
|
||||||
|
|||||||
3
SECURITY.md
Normal file
3
SECURITY.md
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# JDK Vulnerabilities
|
||||||
|
|
||||||
|
Please follow the process outlined in the [OpenJDK Vulnerability Policy](https://openjdk.org/groups/vulnerability/report) to disclose vulnerabilities in the JDK.
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
<meta name="generator" content="pandoc" />
|
<meta name="generator" content="pandoc" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
|
||||||
<title>Testing the JDK</title>
|
<title>Testing the JDK</title>
|
||||||
<style type="text/css">
|
<style>
|
||||||
code{white-space: pre-wrap;}
|
code{white-space: pre-wrap;}
|
||||||
span.smallcaps{font-variant: small-caps;}
|
span.smallcaps{font-variant: small-caps;}
|
||||||
span.underline{text-decoration: underline;}
|
span.underline{text-decoration: underline;}
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
<header id="title-block-header">
|
<header id="title-block-header">
|
||||||
<h1 class="title">Testing the JDK</h1>
|
<h1 class="title">Testing the JDK</h1>
|
||||||
</header>
|
</header>
|
||||||
<nav id="TOC">
|
<nav id="TOC" role="doc-toc">
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#using-the-run-test-framework">Using the run-test framework</a><ul>
|
<li><a href="#using-the-run-test-framework">Using the run-test framework</a><ul>
|
||||||
<li><a href="#configuration">Configuration</a></li>
|
<li><a href="#configuration">Configuration</a></li>
|
||||||
@@ -40,6 +40,7 @@
|
|||||||
<li><a href="#notes-for-specific-tests">Notes for Specific Tests</a><ul>
|
<li><a href="#notes-for-specific-tests">Notes for Specific Tests</a><ul>
|
||||||
<li><a href="#docker-tests">Docker Tests</a></li>
|
<li><a href="#docker-tests">Docker Tests</a></li>
|
||||||
<li><a href="#client-ui-tests">Client UI Tests</a></li>
|
<li><a href="#client-ui-tests">Client UI Tests</a></li>
|
||||||
|
<li><a href="#pkcs11-tests">PKCS11 Tests</a></li>
|
||||||
</ul></li>
|
</ul></li>
|
||||||
</ul>
|
</ul>
|
||||||
</nav>
|
</nav>
|
||||||
@@ -58,7 +59,7 @@ $ make exploded-run-test TEST=tier2</code></pre>
|
|||||||
<p>To be able to run JTReg tests, <code>configure</code> needs to know where to find the JTReg test framework. If it is not picked up automatically by configure, use the <code>--with-jtreg=<path to jtreg home></code> option to point to the JTReg framework. Note that this option should point to the JTReg home, i.e. the top directory, containing <code>lib/jtreg.jar</code> etc. (An alternative is to set the <code>JT_HOME</code> environment variable to point to the JTReg home before running <code>configure</code>.)</p>
|
<p>To be able to run JTReg tests, <code>configure</code> needs to know where to find the JTReg test framework. If it is not picked up automatically by configure, use the <code>--with-jtreg=<path to jtreg home></code> option to point to the JTReg framework. Note that this option should point to the JTReg home, i.e. the top directory, containing <code>lib/jtreg.jar</code> etc. (An alternative is to set the <code>JT_HOME</code> environment variable to point to the JTReg home before running <code>configure</code>.)</p>
|
||||||
<h2 id="test-selection">Test selection</h2>
|
<h2 id="test-selection">Test selection</h2>
|
||||||
<p>All functionality is available using the run-test make target. In this use case, the test or tests to be executed is controlled using the <code>TEST</code> variable. To speed up subsequent test runs with no source code changes, run-test-only can be used instead, which do not depend on the source and test image build.</p>
|
<p>All functionality is available using the run-test make target. In this use case, the test or tests to be executed is controlled using the <code>TEST</code> variable. To speed up subsequent test runs with no source code changes, run-test-only can be used instead, which do not depend on the source and test image build.</p>
|
||||||
<p>For some common top-level tests, direct make targets have been generated. This includes all JTReg test groups, the hotspot gtest, and custom tests (if present). This means that <code>make run-test-tier1</code> is equivalent to <code>make run-test TEST="tier1"</code>, but the latter is more tab-completion friendly. For more complex test runs, the <code>run-test TEST="x"</code> solution needs to be used.</p>
|
<p>For some common top-level tests, direct make targets have been generated. This includes all JTReg test groups, the hotspot gtest, and custom tests (if present). This means that <code>make run-test-tier1</code> is equivalent to <code>make run-test TEST="tier1"</code>, but the latter is more tab-completion friendly. For more complex test runs, the <code>run-test TEST="x"</code> solution needs to be used.</p>
|
||||||
<p>The test specifications given in <code>TEST</code> is parsed into fully qualified test descriptors, which clearly and unambigously show which tests will be run. As an example, <code>:tier1</code> will expand to <code>jtreg:$(TOPDIR)/test/hotspot/jtreg:tier1 jtreg:$(TOPDIR)/test/jdk:tier1 jtreg:$(TOPDIR)/test/langtools:tier1 jtreg:$(TOPDIR)/test/nashorn:tier1 jtreg:$(TOPDIR)/test/jaxp:tier1</code>. You can always submit a list of fully qualified test descriptors in the <code>TEST</code> variable if you want to shortcut the parser.</p>
|
<p>The test specifications given in <code>TEST</code> is parsed into fully qualified test descriptors, which clearly and unambigously show which tests will be run. As an example, <code>:tier1</code> will expand to <code>jtreg:$(TOPDIR)/test/hotspot/jtreg:tier1 jtreg:$(TOPDIR)/test/jdk:tier1 jtreg:$(TOPDIR)/test/langtools:tier1 jtreg:$(TOPDIR)/test/nashorn:tier1 jtreg:$(TOPDIR)/test/jaxp:tier1</code>. You can always submit a list of fully qualified test descriptors in the <code>TEST</code> variable if you want to shortcut the parser.</p>
|
||||||
<h3 id="common-test-groups">Common Test Groups</h3>
|
<h3 id="common-test-groups">Common Test Groups</h3>
|
||||||
<p>Ideally, all tests are run for every change but this may not be practical due to the limited testing resources, the scope of the change, etc.</p>
|
<p>Ideally, all tests are run for every change but this may not be practical due to the limited testing resources, the scope of the change, etc.</p>
|
||||||
@@ -101,8 +102,8 @@ TEST FAILURE</code></pre>
|
|||||||
<p>Additional work data is stored in <code>build/$BUILD/test-support/$TEST_ID</code>. For some frameworks, this directory might contain information that is useful in determining the cause of a failed test.</p>
|
<p>Additional work data is stored in <code>build/$BUILD/test-support/$TEST_ID</code>. For some frameworks, this directory might contain information that is useful in determining the cause of a failed test.</p>
|
||||||
<h2 id="test-suite-control">Test suite control</h2>
|
<h2 id="test-suite-control">Test suite control</h2>
|
||||||
<p>It is possible to control various aspects of the test suites using make control variables.</p>
|
<p>It is possible to control various aspects of the test suites using make control variables.</p>
|
||||||
<p>These variables use a keyword=value approach to allow multiple values to be set. So, for instance, <code>JTREG="JOBS=1;TIMEOUT=8"</code> will set the JTReg concurrency level to 1 and the timeout factor to 8. This is equivalent to setting <code>JTREG_JOBS=1 JTREG_TIMEOUT=8</code>, but using the keyword format means that the <code>JTREG</code> variable is parsed and verified for correctness, so <code>JTREG="TMIEOUT=8"</code> would give an error, while <code>JTREG_TMIEOUT=8</code> would just pass unnoticed.</p>
|
<p>These variables use a keyword=value approach to allow multiple values to be set. So, for instance, <code>JTREG="JOBS=1;TIMEOUT=8"</code> will set the JTReg concurrency level to 1 and the timeout factor to 8. This is equivalent to setting <code>JTREG_JOBS=1 JTREG_TIMEOUT=8</code>, but using the keyword format means that the <code>JTREG</code> variable is parsed and verified for correctness, so <code>JTREG="TMIEOUT=8"</code> would give an error, while <code>JTREG_TMIEOUT=8</code> would just pass unnoticed.</p>
|
||||||
<p>To separate multiple keyword=value pairs, use <code>;</code> (semicolon). Since the shell normally eats <code>;</code>, the recommended usage is to write the assignment inside qoutes, e.g. <code>JTREG="...;..."</code>. This will also make sure spaces are preserved, as in <code>JTREG="VM_OPTIONS=-XshowSettings -Xlog:gc+ref=debug"</code>.</p>
|
<p>To separate multiple keyword=value pairs, use <code>;</code> (semicolon). Since the shell normally eats <code>;</code>, the recommended usage is to write the assignment inside qoutes, e.g. <code>JTREG="...;..."</code>. This will also make sure spaces are preserved, as in <code>JTREG="VM_OPTIONS=-XshowSettings -Xlog:gc+ref=debug"</code>.</p>
|
||||||
<p>(Other ways are possible, e.g. using backslash: <code>JTREG=JOBS=1\;TIMEOUT=8</code>. Also, as a special technique, the string <code>%20</code> will be replaced with space for certain options, e.g. <code>JTREG=VM_OPTIONS=-XshowSettings%20-Xlog:gc+ref=debug</code>. This can be useful if you have layers of scripts and have trouble getting proper quoting of command line arguments through.)</p>
|
<p>(Other ways are possible, e.g. using backslash: <code>JTREG=JOBS=1\;TIMEOUT=8</code>. Also, as a special technique, the string <code>%20</code> will be replaced with space for certain options, e.g. <code>JTREG=VM_OPTIONS=-XshowSettings%20-Xlog:gc+ref=debug</code>. This can be useful if you have layers of scripts and have trouble getting proper quoting of command line arguments through.)</p>
|
||||||
<p>As far as possible, the names of the keywords have been standardized between test suites.</p>
|
<p>As far as possible, the names of the keywords have been standardized between test suites.</p>
|
||||||
<h3 id="general-keywords-test_opts">General keywords (TEST_OPTS)</h3>
|
<h3 id="general-keywords-test_opts">General keywords (TEST_OPTS)</h3>
|
||||||
@@ -152,7 +153,7 @@ TEST FAILURE</code></pre>
|
|||||||
<p>Set to <code>true</code> or <code>false</code>. If <code>true</code>, JTReg will use <code>-match:</code> option, otherwise <code>-exclude:</code> will be used. Default is <code>false</code>.</p>
|
<p>Set to <code>true</code> or <code>false</code>. If <code>true</code>, JTReg will use <code>-match:</code> option, otherwise <code>-exclude:</code> will be used. Default is <code>false</code>.</p>
|
||||||
<h4 id="options">OPTIONS</h4>
|
<h4 id="options">OPTIONS</h4>
|
||||||
<p>Additional options to the JTReg test framework.</p>
|
<p>Additional options to the JTReg test framework.</p>
|
||||||
<p>Use <code>JTREG="OPTIONS=--help all"</code> to see all available JTReg options.</p>
|
<p>Use <code>JTREG="OPTIONS=--help all"</code> to see all available JTReg options.</p>
|
||||||
<h4 id="java_options-1">JAVA_OPTIONS</h4>
|
<h4 id="java_options-1">JAVA_OPTIONS</h4>
|
||||||
<p>Additional Java options to JTReg (<code>-javaoption</code>).</p>
|
<p>Additional Java options to JTReg (<code>-javaoption</code>).</p>
|
||||||
<h4 id="vm_options-1">VM_OPTIONS</h4>
|
<h4 id="vm_options-1">VM_OPTIONS</h4>
|
||||||
@@ -169,7 +170,7 @@ TEST FAILURE</code></pre>
|
|||||||
<p>Default is 1. Set to -1 to repeat indefinitely. This can be especially useful combined with <code>OPTIONS=--gtest_break_on_failure</code> to reproduce an intermittent problem.</p>
|
<p>Default is 1. Set to -1 to repeat indefinitely. This can be especially useful combined with <code>OPTIONS=--gtest_break_on_failure</code> to reproduce an intermittent problem.</p>
|
||||||
<h4 id="options-1">OPTIONS</h4>
|
<h4 id="options-1">OPTIONS</h4>
|
||||||
<p>Additional options to the Gtest test framework.</p>
|
<p>Additional options to the Gtest test framework.</p>
|
||||||
<p>Use <code>GTEST="OPTIONS=--help"</code> to see all available Gtest options.</p>
|
<p>Use <code>GTEST="OPTIONS=--help"</code> to see all available Gtest options.</p>
|
||||||
<h4 id="aot_modules-2">AOT_MODULES</h4>
|
<h4 id="aot_modules-2">AOT_MODULES</h4>
|
||||||
<p>Generate AOT modules before testing for the specified module, or set of modules. If multiple modules are specified, they should be separated by space (or, to help avoid quoting issues, the special value <code>%20</code>).</p>
|
<p>Generate AOT modules before testing for the specified module, or set of modules. If multiple modules are specified, they should be separated by space (or, to help avoid quoting issues, the special value <code>%20</code>).</p>
|
||||||
<h2 id="notes-for-specific-tests">Notes for Specific Tests</h2>
|
<h2 id="notes-for-specific-tests">Notes for Specific Tests</h2>
|
||||||
@@ -178,6 +179,11 @@ TEST FAILURE</code></pre>
|
|||||||
<pre><code>$ make run-test TEST="jtreg:test/hotspot/jtreg/containers/docker"</code></pre>
|
<pre><code>$ make run-test TEST="jtreg:test/hotspot/jtreg/containers/docker"</code></pre>
|
||||||
<p>To run these tests correctly, additional parameters for the correct docker image are required on Ubuntu 18.04 by using <code>JAVA_OPTIONS</code>.</p>
|
<p>To run these tests correctly, additional parameters for the correct docker image are required on Ubuntu 18.04 by using <code>JAVA_OPTIONS</code>.</p>
|
||||||
<pre><code>$ make run-test TEST="jtreg:test/hotspot/jtreg/containers/docker" JTREG="JAVA_OPTIONS=-Djdk.test.docker.image.name=ubuntu -Djdk.test.docker.image.version=latest"</code></pre>
|
<pre><code>$ make run-test TEST="jtreg:test/hotspot/jtreg/containers/docker" JTREG="JAVA_OPTIONS=-Djdk.test.docker.image.name=ubuntu -Djdk.test.docker.image.version=latest"</code></pre>
|
||||||
|
<h3 id="pkcs11-tests">PKCS11 Tests</h3>
|
||||||
|
<p>It is highly recommended to use the latest NSS version when running PKCS11 tests. Improper NSS version may lead to unexpected failures which are hard to diagnose. For example, sun/security/pkcs11/Secmod/AddTrustedCert.java may fail on Ubuntu 18.04 with the default NSS version in the system. To run these tests correctly, the system property <<code>jdk.test.lib.artifacts.<NAME></code> is required on Ubuntu 18.04 to specify the alternative NSS lib directories.The<code><NAME></code> component should be replaced with the name element of the appropriate <code>@Artifact</code> class. (See<code>test/jdk/sun/security/pkcs11/PKCS11Test.java</code>)</p>
|
||||||
|
<p>For example:</p>
|
||||||
|
<pre><code>$ make test TEST="jtreg:sun/security/pkcs11/Secmod/AddTrustedCert.java" JTREG="JAVA_OPTIONS=-Djdk.test.lib.artifacts.nsslib-linux_aarch64=/path/to/NSS-libs"</code></pre>
|
||||||
|
<p>For more notes about the PKCS11 tests, please refer to test/jdk/sun/security/pkcs11/README.</p>
|
||||||
<h3 id="client-ui-tests">Client UI Tests</h3>
|
<h3 id="client-ui-tests">Client UI Tests</h3>
|
||||||
<p>Some Client UI tests use key sequences which may be reserved by the operating system. Usually that causes the test failure. So it is highly recommended to disable system key shortcuts prior testing. The steps to access and disable system key shortcuts for various platforms are provided below.</p>
|
<p>Some Client UI tests use key sequences which may be reserved by the operating system. Usually that causes the test failure. So it is highly recommended to disable system key shortcuts prior testing. The steps to access and disable system key shortcuts for various platforms are provided below.</p>
|
||||||
<h4 id="macos">MacOS</h4>
|
<h4 id="macos">MacOS</h4>
|
||||||
|
|||||||
@@ -370,6 +370,22 @@ required on Ubuntu 18.04 by using `JAVA_OPTIONS`.
|
|||||||
|
|
||||||
$ make run-test TEST="jtreg:test/hotspot/jtreg/containers/docker" JTREG="JAVA_OPTIONS=-Djdk.test.docker.image.name=ubuntu -Djdk.test.docker.image.version=latest"
|
$ make run-test TEST="jtreg:test/hotspot/jtreg/containers/docker" JTREG="JAVA_OPTIONS=-Djdk.test.docker.image.name=ubuntu -Djdk.test.docker.image.version=latest"
|
||||||
|
|
||||||
|
### PKCS11 Tests
|
||||||
|
|
||||||
|
It is highly recommended to use the latest NSS version when running PKCS11 tests.
|
||||||
|
Improper NSS version may lead to unexpected failures which are hard to diagnose.
|
||||||
|
For example, sun/security/pkcs11/Secmod/AddTrustedCert.java may fail on Ubuntu
|
||||||
|
18.04 with the default NSS version in the system.
|
||||||
|
To run these tests correctly, the system property `jdk.test.lib.artifacts.<NAME>` is required on
|
||||||
|
Ubuntu 18.04 to specify the alternative NSS lib directory. The `<NAME>`
|
||||||
|
component should be replaced with the name element of the appropriate
|
||||||
|
`@Artifact` class. (See `test/jdk/sun/security/pkcs11/PKCS11Test.java`)
|
||||||
|
For example:
|
||||||
|
|
||||||
|
$ make test TEST="jtreg:sun/security/pkcs11/Secmod/AddTrustedCert.java" JTREG="JAVA_OPTIONS=-Djdk.test.lib.artifacts.nsslib-linux_aarch64=/path/to/NSS-libs"
|
||||||
|
|
||||||
|
For more notes about the PKCS11 tests, please refer to test/jdk/sun/security/pkcs11/README.
|
||||||
|
|
||||||
### Client UI Tests
|
### Client UI Tests
|
||||||
|
|
||||||
Some Client UI tests use key sequences which may be reserved by the operating
|
Some Client UI tests use key sequences which may be reserved by the operating
|
||||||
|
|||||||
@@ -554,6 +554,18 @@ test-image-jdk-jtreg-native:
|
|||||||
+($(CD) $(TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f JtregNativeJdk.gmk \
|
+($(CD) $(TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f JtregNativeJdk.gmk \
|
||||||
test-image-jdk-jtreg-native)
|
test-image-jdk-jtreg-native)
|
||||||
|
|
||||||
|
# Native files needed by the testlib
|
||||||
|
build-test-lib-native:
|
||||||
|
+($(CD) $(TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f BuildTestLibNative.gmk \
|
||||||
|
build-test-lib-native)
|
||||||
|
|
||||||
|
test-image-lib-native:
|
||||||
|
+($(CD) $(TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f BuildTestLibNative.gmk \
|
||||||
|
test-image-lib-native)
|
||||||
|
|
||||||
|
# Native files needed when testing the testlib itself
|
||||||
|
# ... build-test-libtest-jtreg-native etc not yet backported
|
||||||
|
|
||||||
build-test-hotspot-jtreg-graal:
|
build-test-hotspot-jtreg-graal:
|
||||||
+($(CD) $(TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f JtregGraalUnit.gmk \
|
+($(CD) $(TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f JtregGraalUnit.gmk \
|
||||||
build-test-hotspot-jtreg-graal)
|
build-test-hotspot-jtreg-graal)
|
||||||
@@ -596,7 +608,8 @@ endif
|
|||||||
|
|
||||||
ALL_TARGETS += prepare-test-image build-test-hotspot-jtreg-native \
|
ALL_TARGETS += prepare-test-image build-test-hotspot-jtreg-native \
|
||||||
test-image-hotspot-jtreg-native build-test-jdk-jtreg-native \
|
test-image-hotspot-jtreg-native build-test-jdk-jtreg-native \
|
||||||
test-image-jdk-jtreg-native build-test-lib build-test-failure-handler \
|
test-image-jdk-jtreg-native build-test-lib-native test-image-lib-native \
|
||||||
|
build-test-lib build-test-failure-handler \
|
||||||
test-failure-handler test-image-failure-handler test-image-hotspot-gtest \
|
test-failure-handler test-image-failure-handler test-image-hotspot-gtest \
|
||||||
test-image-hotspot-jtreg-graal build-test-hotspot-jtreg-graal \
|
test-image-hotspot-jtreg-graal build-test-hotspot-jtreg-graal \
|
||||||
run-test exploded-run-test
|
run-test exploded-run-test
|
||||||
@@ -976,12 +989,16 @@ else
|
|||||||
|
|
||||||
build-test-jdk-jtreg-native: buildtools-jdk java.base-libs
|
build-test-jdk-jtreg-native: buildtools-jdk java.base-libs
|
||||||
|
|
||||||
|
build-test-lib-native: buildtools-jdk java.base-libs
|
||||||
|
|
||||||
build-test-hotspot-jtreg-graal: exploded-image-optimize
|
build-test-hotspot-jtreg-graal: exploded-image-optimize
|
||||||
|
|
||||||
test-image-hotspot-jtreg-native: build-test-hotspot-jtreg-native
|
test-image-hotspot-jtreg-native: build-test-hotspot-jtreg-native
|
||||||
|
|
||||||
test-image-jdk-jtreg-native: build-test-jdk-jtreg-native
|
test-image-jdk-jtreg-native: build-test-jdk-jtreg-native
|
||||||
|
|
||||||
|
test-image-lib-native: build-test-lib-native
|
||||||
|
|
||||||
test-image-hotspot-jtreg-graal: build-test-hotspot-jtreg-graal
|
test-image-hotspot-jtreg-graal: build-test-hotspot-jtreg-graal
|
||||||
|
|
||||||
test-image-hotspot-gtest: hotspot
|
test-image-hotspot-gtest: hotspot
|
||||||
@@ -1141,7 +1158,8 @@ endif
|
|||||||
|
|
||||||
# This target builds the test image
|
# This target builds the test image
|
||||||
test-image: prepare-test-image \
|
test-image: prepare-test-image \
|
||||||
test-image-jdk-jtreg-native test-image-failure-handler \
|
test-image-jdk-jtreg-native test-image-lib-native \
|
||||||
|
test-image-failure-handler \
|
||||||
test-image-demos-jdk $(JVM_TEST_IMAGE_TARGETS)
|
test-image-demos-jdk $(JVM_TEST_IMAGE_TARGETS)
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|||||||
@@ -749,7 +749,7 @@ define SetupRunJtregTestBody
|
|||||||
$$(RM) -r $$($1_TEST_RESULTS_DIR)
|
$$(RM) -r $$($1_TEST_RESULTS_DIR)
|
||||||
|
|
||||||
$1_COMMAND_LINE := \
|
$1_COMMAND_LINE := \
|
||||||
$$(JAVA) $$($1_JTREG_LAUNCHER_OPTIONS) \
|
$$(JTREG_JAVA) $$($1_JTREG_LAUNCHER_OPTIONS) \
|
||||||
-Dprogram=jtreg -jar $$(JT_HOME)/lib/jtreg.jar \
|
-Dprogram=jtreg -jar $$(JT_HOME)/lib/jtreg.jar \
|
||||||
$$($1_JTREG_BASIC_OPTIONS) \
|
$$($1_JTREG_BASIC_OPTIONS) \
|
||||||
-testjdk:$$(JDK_IMAGE_DIR) \
|
-testjdk:$$(JDK_IMAGE_DIR) \
|
||||||
|
|||||||
@@ -122,6 +122,7 @@ $(eval $(call SetupVariable,JT_HOME))
|
|||||||
$(eval $(call SetupVariable,JDK_IMAGE_DIR,$(OUTPUTDIR)/images/jdk))
|
$(eval $(call SetupVariable,JDK_IMAGE_DIR,$(OUTPUTDIR)/images/jdk))
|
||||||
$(eval $(call SetupVariable,TEST_IMAGE_DIR,$(OUTPUTDIR)/images/test))
|
$(eval $(call SetupVariable,TEST_IMAGE_DIR,$(OUTPUTDIR)/images/test))
|
||||||
$(eval $(call SetupVariable,SYMBOLS_IMAGE_DIR,$(OUTPUTDIR)/images/symbols,NO_CHECK))
|
$(eval $(call SetupVariable,SYMBOLS_IMAGE_DIR,$(OUTPUTDIR)/images/symbols,NO_CHECK))
|
||||||
|
$(eval $(call SetupVariable,JTREG_JDK,$(BOOT_JDK)))
|
||||||
|
|
||||||
# Provide default values for tools that we need
|
# Provide default values for tools that we need
|
||||||
$(eval $(call SetupVariable,MAKE,make,NO_CHECK))
|
$(eval $(call SetupVariable,MAKE,make,NO_CHECK))
|
||||||
@@ -294,6 +295,7 @@ $(call CreateNewSpec, $(NEW_SPEC), \
|
|||||||
TOPDIR := $(TOPDIR), \
|
TOPDIR := $(TOPDIR), \
|
||||||
OUTPUTDIR := $(OUTPUTDIR), \
|
OUTPUTDIR := $(OUTPUTDIR), \
|
||||||
BOOT_JDK := $(BOOT_JDK), \
|
BOOT_JDK := $(BOOT_JDK), \
|
||||||
|
JTREG_JDK := $(JTREG_JDK), \
|
||||||
JT_HOME := $(JT_HOME), \
|
JT_HOME := $(JT_HOME), \
|
||||||
JDK_IMAGE_DIR := $(JDK_IMAGE_DIR), \
|
JDK_IMAGE_DIR := $(JDK_IMAGE_DIR), \
|
||||||
TEST_IMAGE_DIR := $(TEST_IMAGE_DIR), \
|
TEST_IMAGE_DIR := $(TEST_IMAGE_DIR), \
|
||||||
|
|||||||
@@ -125,6 +125,8 @@ JAR := $(FIXPATH) $(JAR_CMD)
|
|||||||
JLINK := $(FIXPATH) $(JLINK_CMD)
|
JLINK := $(FIXPATH) $(JLINK_CMD)
|
||||||
JMOD := $(FIXPATH) $(JMOD_CMD)
|
JMOD := $(FIXPATH) $(JMOD_CMD)
|
||||||
|
|
||||||
|
JTREG_JAVA := $(FIXPATH) $(JTREG_JDK)/bin/java $(JAVA_FLAGS_BIG) $(JAVA_FLAGS)
|
||||||
|
|
||||||
BUILD_JAVA := $(JDK_IMAGE_DIR)/bin/JAVA
|
BUILD_JAVA := $(JDK_IMAGE_DIR)/bin/JAVA
|
||||||
################################################################################
|
################################################################################
|
||||||
# Some common tools. Assume most common name and no path.
|
# Some common tools. Assume most common name and no path.
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ export AWK="@AWK@"
|
|||||||
export BASH="@BASH@"
|
export BASH="@BASH@"
|
||||||
export CAT="@CAT@"
|
export CAT="@CAT@"
|
||||||
export CMP="@CMP@"
|
export CMP="@CMP@"
|
||||||
|
export CODESIGN="@CODESIGN@"
|
||||||
export CP="@CP@"
|
export CP="@CP@"
|
||||||
export CUT="@CUT@"
|
export CUT="@CUT@"
|
||||||
export DIFF="@DIFF@"
|
export DIFF="@DIFF@"
|
||||||
|
|||||||
@@ -183,15 +183,14 @@ TOOLCHAIN_POST_DETECTION
|
|||||||
TOOLCHAIN_SETUP_BUILD_COMPILERS
|
TOOLCHAIN_SETUP_BUILD_COMPILERS
|
||||||
TOOLCHAIN_MISC_CHECKS
|
TOOLCHAIN_MISC_CHECKS
|
||||||
|
|
||||||
# Setup the JTReg Regression Test Harness.
|
|
||||||
TOOLCHAIN_SETUP_JTREG
|
|
||||||
|
|
||||||
# Setup Jib dependency tool
|
|
||||||
TOOLCHAIN_SETUP_JIB
|
|
||||||
|
|
||||||
# After toolchain setup, we need to process some flags to be able to continue.
|
# After toolchain setup, we need to process some flags to be able to continue.
|
||||||
FLAGS_POST_TOOLCHAIN
|
FLAGS_POST_TOOLCHAIN
|
||||||
|
|
||||||
|
# Setup the tools needed to test the JDK (JTReg Regression Test Harness
|
||||||
|
# and the Jib dependency tool).
|
||||||
|
LIB_TESTS_SETUP_JTREG
|
||||||
|
LIB_TESTS_SETUP_JIB
|
||||||
|
|
||||||
# Now we can test some aspects on the target using configure macros.
|
# Now we can test some aspects on the target using configure macros.
|
||||||
PLATFORM_SETUP_OPENJDK_TARGET_BITS
|
PLATFORM_SETUP_OPENJDK_TARGET_BITS
|
||||||
PLATFORM_SETUP_OPENJDK_TARGET_ENDIANNESS
|
PLATFORM_SETUP_OPENJDK_TARGET_ENDIANNESS
|
||||||
@@ -233,7 +232,8 @@ HOTSPOT_SETUP_JVM_FEATURES
|
|||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
JDKOPT_DETECT_INTREE_EC
|
JDKOPT_DETECT_INTREE_EC
|
||||||
JDKOPT_ENABLE_DISABLE_FAILURE_HANDLER
|
LIB_TESTS_ENABLE_DISABLE_FAILURE_HANDLER
|
||||||
|
|
||||||
JDKOPT_ENABLE_DISABLE_GENERATE_CLASSLIST
|
JDKOPT_ENABLE_DISABLE_GENERATE_CLASSLIST
|
||||||
JDKOPT_EXCLUDE_TRANSLATIONS
|
JDKOPT_EXCLUDE_TRANSLATIONS
|
||||||
JDKOPT_ENABLE_DISABLE_MANPAGES
|
JDKOPT_ENABLE_DISABLE_MANPAGES
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
# Setup flags for C/C++ compiler
|
# Setup flags for C/C++ compiler
|
||||||
#
|
#
|
||||||
|
|
||||||
###############################################################################
|
################################################################################
|
||||||
#
|
#
|
||||||
# How to compile shared libraries.
|
# How to compile shared libraries.
|
||||||
#
|
#
|
||||||
@@ -39,7 +39,10 @@ AC_DEFUN([FLAGS_SETUP_SHARED_LIBS],
|
|||||||
|
|
||||||
# Default works for linux, might work on other platforms as well.
|
# Default works for linux, might work on other platforms as well.
|
||||||
SHARED_LIBRARY_FLAGS='-shared'
|
SHARED_LIBRARY_FLAGS='-shared'
|
||||||
SET_EXECUTABLE_ORIGIN='-Wl,-rpath,\$$ORIGIN[$]1'
|
# --disable-new-dtags forces use of RPATH instead of RUNPATH for rpaths.
|
||||||
|
# This protects internal library dependencies within the JDK from being
|
||||||
|
# overridden using LD_LIBRARY_PATH. See JDK-8326891 for more information.
|
||||||
|
SET_EXECUTABLE_ORIGIN='-Wl,-rpath,\$$ORIGIN[$]1 -Wl,--disable-new-dtags'
|
||||||
SET_SHARED_LIBRARY_ORIGIN="-Wl,-z,origin $SET_EXECUTABLE_ORIGIN"
|
SET_SHARED_LIBRARY_ORIGIN="-Wl,-z,origin $SET_EXECUTABLE_ORIGIN"
|
||||||
SET_SHARED_LIBRARY_NAME='-Wl,-soname=[$]1'
|
SET_SHARED_LIBRARY_NAME='-Wl,-soname=[$]1'
|
||||||
SET_SHARED_LIBRARY_MAPFILE='-Wl,-version-script=[$]1'
|
SET_SHARED_LIBRARY_MAPFILE='-Wl,-version-script=[$]1'
|
||||||
@@ -59,6 +62,9 @@ AC_DEFUN([FLAGS_SETUP_SHARED_LIBS],
|
|||||||
# Default works for linux, might work on other platforms as well.
|
# Default works for linux, might work on other platforms as well.
|
||||||
SHARED_LIBRARY_FLAGS='-shared'
|
SHARED_LIBRARY_FLAGS='-shared'
|
||||||
SET_EXECUTABLE_ORIGIN='-Wl,-rpath,\$$ORIGIN[$]1'
|
SET_EXECUTABLE_ORIGIN='-Wl,-rpath,\$$ORIGIN[$]1'
|
||||||
|
if test "x$OPENJDK_TARGET_OS" = xlinux; then
|
||||||
|
SET_EXECUTABLE_ORIGIN="$SET_EXECUTABLE_ORIGIN -Wl,--disable-new-dtags"
|
||||||
|
fi
|
||||||
SET_SHARED_LIBRARY_NAME='-Wl,-soname=[$]1'
|
SET_SHARED_LIBRARY_NAME='-Wl,-soname=[$]1'
|
||||||
SET_SHARED_LIBRARY_MAPFILE='-Wl,-version-script=[$]1'
|
SET_SHARED_LIBRARY_MAPFILE='-Wl,-version-script=[$]1'
|
||||||
|
|
||||||
@@ -166,28 +172,60 @@ AC_DEFUN([FLAGS_SETUP_WARNINGS],
|
|||||||
DISABLE_WARNING_PREFIX="-wd"
|
DISABLE_WARNING_PREFIX="-wd"
|
||||||
BUILD_CC_DISABLE_WARNING_PREFIX="-wd"
|
BUILD_CC_DISABLE_WARNING_PREFIX="-wd"
|
||||||
CFLAGS_WARNINGS_ARE_ERRORS="-WX"
|
CFLAGS_WARNINGS_ARE_ERRORS="-WX"
|
||||||
|
|
||||||
|
WARNINGS_ENABLE_ALL="-W3"
|
||||||
|
DISABLED_WARNINGS="4800"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
solstudio)
|
solstudio)
|
||||||
DISABLE_WARNING_PREFIX="-erroff="
|
DISABLE_WARNING_PREFIX="-erroff="
|
||||||
CFLAGS_WARNINGS_ARE_ERRORS="-errtags -errwarn=%all"
|
CFLAGS_WARNINGS_ARE_ERRORS="-errwarn=%all"
|
||||||
|
|
||||||
|
WARNINGS_ENABLE_ALL_CFLAGS="-v"
|
||||||
|
WARNINGS_ENABLE_ALL_CXXFLAGS="+w"
|
||||||
|
|
||||||
|
DISABLED_WARNINGS_C=""
|
||||||
|
DISABLED_WARNINGS_CXX=""
|
||||||
;;
|
;;
|
||||||
|
|
||||||
gcc)
|
gcc)
|
||||||
DISABLE_WARNING_PREFIX="-Wno-"
|
DISABLE_WARNING_PREFIX="-Wno-"
|
||||||
BUILD_CC_DISABLE_WARNING_PREFIX="-Wno-"
|
BUILD_CC_DISABLE_WARNING_PREFIX="-Wno-"
|
||||||
CFLAGS_WARNINGS_ARE_ERRORS="-Werror"
|
CFLAGS_WARNINGS_ARE_ERRORS="-Werror"
|
||||||
|
|
||||||
|
WARNINGS_ENABLE_ALL="-Wall -Wextra -Wformat=2"
|
||||||
|
WARNINGS_ENABLE_ADDITIONAL_JVM="-Wpointer-arith -Wsign-compare -Wunused-function -Wundef -Wunused-value -Woverloaded-virtual -Wreturn-type"
|
||||||
|
|
||||||
|
DISABLED_WARNINGS="unused-parameter unused"
|
||||||
|
|
||||||
;;
|
;;
|
||||||
|
|
||||||
clang)
|
clang)
|
||||||
DISABLE_WARNING_PREFIX="-Wno-"
|
DISABLE_WARNING_PREFIX="-Wno-"
|
||||||
|
BUILD_CC_DISABLE_WARNING_PREFIX="-Wno-"
|
||||||
CFLAGS_WARNINGS_ARE_ERRORS="-Werror"
|
CFLAGS_WARNINGS_ARE_ERRORS="-Werror"
|
||||||
|
|
||||||
|
WARNINGS_ENABLE_ALL="-Wall -Wextra -Wformat=2"
|
||||||
|
WARNINGS_ENABLE_ADDITIONAL_JVM="-Wpointer-arith -Wsign-compare -Wunused-function -Wundef -Wunused-value -Woverloaded-virtual"
|
||||||
|
|
||||||
|
DISABLED_WARNINGS="unused-parameter unused"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
xlc)
|
xlc)
|
||||||
DISABLE_WARNING_PREFIX="-qsuppress="
|
DISABLE_WARNING_PREFIX="-qsuppress="
|
||||||
CFLAGS_WARNINGS_ARE_ERRORS="-qhalt=w"
|
CFLAGS_WARNINGS_ARE_ERRORS="-qhalt=w"
|
||||||
|
|
||||||
|
# Possibly a better subset than "all" is "lan:trx:ret:zea:cmp:ret"
|
||||||
|
WARNINGS_ENABLE_ALL="-qinfo=all -qformat=all"
|
||||||
|
DISABLED_WARNINGS=""
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
AC_SUBST(DISABLE_WARNING_PREFIX)
|
AC_SUBST(DISABLE_WARNING_PREFIX)
|
||||||
AC_SUBST(BUILD_CC_DISABLE_WARNING_PREFIX)
|
AC_SUBST(BUILD_CC_DISABLE_WARNING_PREFIX)
|
||||||
AC_SUBST(CFLAGS_WARNINGS_ARE_ERRORS)
|
AC_SUBST(CFLAGS_WARNINGS_ARE_ERRORS)
|
||||||
|
AC_SUBST(DISABLED_WARNINGS)
|
||||||
|
AC_SUBST(DISABLED_WARNINGS_C)
|
||||||
|
AC_SUBST(DISABLED_WARNINGS_CXX)
|
||||||
])
|
])
|
||||||
|
|
||||||
AC_DEFUN([FLAGS_SETUP_QUALITY_CHECKS],
|
AC_DEFUN([FLAGS_SETUP_QUALITY_CHECKS],
|
||||||
@@ -521,11 +559,14 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_HELPER],
|
|||||||
TOOLCHAIN_CFLAGS_JDK_CONLY="-fno-strict-aliasing" # technically NOT for CXX
|
TOOLCHAIN_CFLAGS_JDK_CONLY="-fno-strict-aliasing" # technically NOT for CXX
|
||||||
fi
|
fi
|
||||||
elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
|
elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
|
||||||
TOOLCHAIN_CFLAGS_JDK="-mt"
|
TOOLCHAIN_FLAGS="-errtags -errfmt"
|
||||||
TOOLCHAIN_CFLAGS_JDK_CONLY="-xCC -Xa -v -W0,-noglobal" # C only
|
TOOLCHAIN_CFLAGS="-errshort=tags"
|
||||||
|
|
||||||
|
TOOLCHAIN_CFLAGS_JDK="-mt $TOOLCHAIN_FLAGS"
|
||||||
|
TOOLCHAIN_CFLAGS_JDK_CONLY="-xCC -Xa -W0,-noglobal $TOOLCHAIN_CFLAGS" # C only
|
||||||
TOOLCHAIN_CFLAGS_JDK_CXXONLY="-features=no%except -norunpath -xnolib" # CXX only
|
TOOLCHAIN_CFLAGS_JDK_CXXONLY="-features=no%except -norunpath -xnolib" # CXX only
|
||||||
TOOLCHAIN_CFLAGS_JVM="-template=no%extdef -features=no%split_init \
|
TOOLCHAIN_CFLAGS_JVM="-template=no%extdef -features=no%split_init \
|
||||||
-library=stlport4 -mt -features=no%except"
|
-library=stlport4 -mt -features=no%except $TOOLCHAIN_FLAGS"
|
||||||
if test "x$DEBUG_LEVEL" = xslowdebug; then
|
if test "x$DEBUG_LEVEL" = xslowdebug; then
|
||||||
# Previously -g was used instead of -g0 for slowdebug; this is equivalent
|
# Previously -g was used instead of -g0 for slowdebug; this is equivalent
|
||||||
# to setting +d.
|
# to setting +d.
|
||||||
@@ -533,6 +574,7 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_HELPER],
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
elif test "x$TOOLCHAIN_TYPE" = xxlc; then
|
elif test "x$TOOLCHAIN_TYPE" = xxlc; then
|
||||||
|
# Suggested additions: -qsrcmsg to get improved error reporting
|
||||||
# set -qtbtable=full for a better traceback table/better stacks in hs_err when xlc16 is used
|
# set -qtbtable=full for a better traceback table/better stacks in hs_err when xlc16 is used
|
||||||
TOOLCHAIN_CFLAGS_JDK="-qtbtable=full -qchars=signed -qfullpath -qsaveopt -qstackprotect" # add on both CFLAGS
|
TOOLCHAIN_CFLAGS_JDK="-qtbtable=full -qchars=signed -qfullpath -qsaveopt -qstackprotect" # add on both CFLAGS
|
||||||
TOOLCHAIN_CFLAGS_JVM="-qtbtable=full -qtune=balanced \
|
TOOLCHAIN_CFLAGS_JVM="-qtbtable=full -qtune=balanced \
|
||||||
@@ -544,37 +586,26 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_HELPER],
|
|||||||
|
|
||||||
# CFLAGS WARNINGS STUFF
|
# CFLAGS WARNINGS STUFF
|
||||||
# Set JVM_CFLAGS warning handling
|
# Set JVM_CFLAGS warning handling
|
||||||
if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then
|
|
||||||
# COMMON to gcc and clang
|
|
||||||
WARNING_CFLAGS_JVM="-Wpointer-arith -Wsign-compare -Wunused-function"
|
|
||||||
if ! HOTSPOT_CHECK_JVM_VARIANT(zero); then
|
|
||||||
# Non-zero builds have stricter warnings
|
|
||||||
WARNING_CFLAGS_JVM="$WARNING_CFLAGS_JVM -Wundef -Wformat=2"
|
|
||||||
fi
|
|
||||||
|
|
||||||
fi
|
|
||||||
if test "x$TOOLCHAIN_TYPE" = xgcc; then
|
if test "x$TOOLCHAIN_TYPE" = xgcc; then
|
||||||
WARNING_CFLAGS_JDK="-Wall -Wextra -Wno-unused -Wno-unused-parameter -Wformat=2"
|
WARNING_CFLAGS_JDK="$WARNINGS_ENABLE_ALL"
|
||||||
WARNING_CFLAGS_JVM="$WARNING_CFLAGS_JVM -Wunused-value -Woverloaded-virtual"
|
WARNING_CFLAGS_JVM="$WARNINGS_ENABLE_ALL $WARNINGS_ENABLE_ADDITIONAL_JVM"
|
||||||
|
|
||||||
if ! HOTSPOT_CHECK_JVM_VARIANT(zero); then
|
|
||||||
# Non-zero builds have stricter warnings
|
|
||||||
WARNING_CFLAGS_JVM="$WARNING_CFLAGS_JVM -Wreturn-type"
|
|
||||||
fi
|
|
||||||
elif test "x$TOOLCHAIN_TYPE" = xclang; then
|
elif test "x$TOOLCHAIN_TYPE" = xclang; then
|
||||||
WARNING_CFLAGS_JVM="$WARNING_CFLAGS_JVM -Wno-deprecated"
|
|
||||||
if test "x$OPENJDK_TARGET_OS" = xlinux; then
|
if test "x$OPENJDK_TARGET_OS" = xlinux; then
|
||||||
WARNING_CFLAGS_JVM="$WARNING_CFLAGS_JVM -Wno-sometimes-uninitialized"
|
WARNING_CFLAGS_JDK="$WARNINGS_ENABLE_ALL"
|
||||||
WARNING_CFLAGS_JDK="-Wall -Wextra -Wno-unused -Wno-unused-parameter -Wformat=2"
|
else
|
||||||
|
WARNING_CFLAGS_JDK="" # currently left empty
|
||||||
fi
|
fi
|
||||||
|
WARNING_CFLAGS_JVM="$WARNINGS_ENABLE_ALL $WARNINGS_ENABLE_ADDITIONAL_JVM"
|
||||||
|
|
||||||
elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
|
elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
|
||||||
WARNING_CFLAGS_JDK_CONLY="-errshort=tags"
|
WARNING_CFLAGS_JDK_CONLY="$WARNINGS_ENABLE_ALL_CFLAGS"
|
||||||
WARNING_CFLAGS_JDK_CXXONLY="+w"
|
WARNING_CFLAGS_JDK_CXXONLY="$WARNINGS_ENABLE_ALL_CXXFLAGS"
|
||||||
WARNING_CFLAGS_JDK="-errtags=yes -errfmt"
|
WARNING_CFLAGS_JVM="" # currently left empty
|
||||||
elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
|
elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
|
||||||
WARNING_CFLAGS="-W3"
|
WARNING_CFLAGS="$WARNINGS_ENABLE_ALL"
|
||||||
WARNING_CFLAGS_JDK="-wd4800"
|
elif test "x$TOOLCHAIN_TYPE" = xxlc; then
|
||||||
WARNING_CFLAGS_JVM="-wd4800"
|
WARNING_CFLAGS="" # currently left empty
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Set some additional per-OS defines.
|
# Set some additional per-OS defines.
|
||||||
|
|||||||
@@ -137,6 +137,14 @@ AC_DEFUN([FLAGS_SETUP_LDFLAGS_HELPER],
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Setup warning flags
|
||||||
|
if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
|
||||||
|
LDFLAGS_WARNINGS_ARE_ERRORS="-Wl,-z,fatal-warnings"
|
||||||
|
else
|
||||||
|
LDFLAGS_WARNINGS_ARE_ERRORS=""
|
||||||
|
fi
|
||||||
|
AC_SUBST(LDFLAGS_WARNINGS_ARE_ERRORS)
|
||||||
|
|
||||||
# Setup LDFLAGS for linking executables
|
# Setup LDFLAGS for linking executables
|
||||||
if test "x$TOOLCHAIN_TYPE" = xgcc; then
|
if test "x$TOOLCHAIN_TYPE" = xgcc; then
|
||||||
EXECUTABLE_LDFLAGS="$EXECUTABLE_LDFLAGS -Wl,--allow-shlib-undefined"
|
EXECUTABLE_LDFLAGS="$EXECUTABLE_LDFLAGS -Wl,--allow-shlib-undefined"
|
||||||
|
|||||||
@@ -40,21 +40,21 @@ AC_DEFUN([HELP_MSG_MISSING_DEPENDENCY],
|
|||||||
PKGHANDLER_COMMAND=
|
PKGHANDLER_COMMAND=
|
||||||
|
|
||||||
case $PKGHANDLER in
|
case $PKGHANDLER in
|
||||||
apt-get)
|
*apt-get)
|
||||||
apt_help $MISSING_DEPENDENCY ;;
|
apt_help $MISSING_DEPENDENCY ;;
|
||||||
yum)
|
*yum)
|
||||||
yum_help $MISSING_DEPENDENCY ;;
|
yum_help $MISSING_DEPENDENCY ;;
|
||||||
brew)
|
*brew)
|
||||||
brew_help $MISSING_DEPENDENCY ;;
|
brew_help $MISSING_DEPENDENCY ;;
|
||||||
port)
|
*port)
|
||||||
port_help $MISSING_DEPENDENCY ;;
|
port_help $MISSING_DEPENDENCY ;;
|
||||||
pkgutil)
|
*pkgutil)
|
||||||
pkgutil_help $MISSING_DEPENDENCY ;;
|
pkgutil_help $MISSING_DEPENDENCY ;;
|
||||||
pkgadd)
|
*pkgadd)
|
||||||
pkgadd_help $MISSING_DEPENDENCY ;;
|
pkgadd_help $MISSING_DEPENDENCY ;;
|
||||||
pacman)
|
*pacman)
|
||||||
pacman_help $MISSING_DEPENDENCY ;;
|
pacman_help $MISSING_DEPENDENCY ;;
|
||||||
apk)
|
*apk)
|
||||||
apk_help $MISSING_DEPENDENCY ;;
|
apk_help $MISSING_DEPENDENCY ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
|||||||
@@ -378,6 +378,7 @@ AC_DEFUN_ONCE([HOTSPOT_SETUP_JVM_FEATURES],
|
|||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
DISABLED_JVM_FEATURES="$DISABLED_JVM_FEATURES shenandoahgc"
|
DISABLED_JVM_FEATURES="$DISABLED_JVM_FEATURES shenandoahgc"
|
||||||
|
AC_MSG_RESULT([no, must be manually enabled --with-jvm-features=shenandoahgc])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Only enable ZGC on supported platforms
|
# Only enable ZGC on supported platforms
|
||||||
|
|||||||
@@ -521,45 +521,6 @@ AC_DEFUN_ONCE([JDKOPT_SETUP_JLINK_OPTIONS],
|
|||||||
AC_SUBST(JLINK_KEEP_PACKAGED_MODULES)
|
AC_SUBST(JLINK_KEEP_PACKAGED_MODULES)
|
||||||
])
|
])
|
||||||
|
|
||||||
################################################################################
|
|
||||||
#
|
|
||||||
# Check if building of the jtreg failure handler should be enabled.
|
|
||||||
#
|
|
||||||
AC_DEFUN_ONCE([JDKOPT_ENABLE_DISABLE_FAILURE_HANDLER],
|
|
||||||
[
|
|
||||||
AC_ARG_ENABLE([jtreg-failure-handler], [AS_HELP_STRING([--enable-jtreg-failure-handler],
|
|
||||||
[forces build of the jtreg failure handler to be enabled, missing dependencies
|
|
||||||
become fatal errors. Default is auto, where the failure handler is built if all
|
|
||||||
dependencies are present and otherwise just disabled.])])
|
|
||||||
|
|
||||||
AC_MSG_CHECKING([if jtreg failure handler should be built])
|
|
||||||
|
|
||||||
if test "x$enable_jtreg_failure_handler" = "xyes"; then
|
|
||||||
if test "x$JT_HOME" = "x"; then
|
|
||||||
AC_MSG_ERROR([Cannot enable jtreg failure handler without jtreg.])
|
|
||||||
else
|
|
||||||
BUILD_FAILURE_HANDLER=true
|
|
||||||
AC_MSG_RESULT([yes, forced])
|
|
||||||
fi
|
|
||||||
elif test "x$enable_jtreg_failure_handler" = "xno"; then
|
|
||||||
BUILD_FAILURE_HANDLER=false
|
|
||||||
AC_MSG_RESULT([no, forced])
|
|
||||||
elif test "x$enable_jtreg_failure_handler" = "xauto" \
|
|
||||||
|| test "x$enable_jtreg_failure_handler" = "x"; then
|
|
||||||
if test "x$JT_HOME" = "x"; then
|
|
||||||
BUILD_FAILURE_HANDLER=false
|
|
||||||
AC_MSG_RESULT([no, missing jtreg])
|
|
||||||
else
|
|
||||||
BUILD_FAILURE_HANDLER=true
|
|
||||||
AC_MSG_RESULT([yes, jtreg present])
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
AC_MSG_ERROR([Invalid value for --enable-jtreg-failure-handler: $enable_jtreg_failure_handler])
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_SUBST(BUILD_FAILURE_HANDLER)
|
|
||||||
])
|
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
#
|
#
|
||||||
# Enable or disable generation of the classlist at build time
|
# Enable or disable generation of the classlist at build time
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2018, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
@@ -23,6 +23,13 @@
|
|||||||
# questions.
|
# questions.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Setup libraries and functionalities needed to test the JDK.
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
# Minimum supported version
|
||||||
|
JTREG_MINIMUM_VERSION=7.3.1
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
#
|
#
|
||||||
# Check for graalunit libs, needed for running graalunit tests.
|
# Check for graalunit libs, needed for running graalunit tests.
|
||||||
@@ -54,3 +61,208 @@ AC_DEFUN_ONCE([LIB_TESTS_SETUP_GRAALUNIT],
|
|||||||
UTIL_FIXUP_PATH([GRAALUNIT_LIB])
|
UTIL_FIXUP_PATH([GRAALUNIT_LIB])
|
||||||
AC_SUBST(GRAALUNIT_LIB)
|
AC_SUBST(GRAALUNIT_LIB)
|
||||||
])
|
])
|
||||||
|
|
||||||
|
# Setup the JTReg Regression Test Harness.
|
||||||
|
AC_DEFUN_ONCE([LIB_TESTS_SETUP_JTREG],
|
||||||
|
[
|
||||||
|
AC_ARG_WITH(jtreg, [AS_HELP_STRING([--with-jtreg],
|
||||||
|
[Regression Test Harness @<:@probed@:>@])])
|
||||||
|
|
||||||
|
if test "x$with_jtreg" = xno; then
|
||||||
|
# jtreg disabled
|
||||||
|
AC_MSG_CHECKING([for jtreg test harness])
|
||||||
|
AC_MSG_RESULT([no, disabled])
|
||||||
|
elif test "x$with_jtreg" != xyes && test "x$with_jtreg" != x; then
|
||||||
|
# An explicit path is specified, use it.
|
||||||
|
JT_HOME="$with_jtreg"
|
||||||
|
UTIL_FIXUP_PATH([JT_HOME])
|
||||||
|
if test ! -d "$JT_HOME"; then
|
||||||
|
AC_MSG_ERROR([jtreg home directory from --with-jtreg=$with_jtreg does not exist])
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test ! -e "$JT_HOME/lib/jtreg.jar"; then
|
||||||
|
AC_MSG_ERROR([jtreg home directory from --with-jtreg=$with_jtreg is not a valid jtreg home])
|
||||||
|
fi
|
||||||
|
|
||||||
|
JTREGEXE="$JT_HOME/bin/jtreg"
|
||||||
|
if test ! -x "$JTREGEXE"; then
|
||||||
|
AC_MSG_ERROR([jtreg home directory from --with-jtreg=$with_jtreg does not contain valid jtreg executable])
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([for jtreg test harness])
|
||||||
|
AC_MSG_RESULT([$JT_HOME])
|
||||||
|
else
|
||||||
|
# Try to locate jtreg
|
||||||
|
if test "x$JT_HOME" != x; then
|
||||||
|
# JT_HOME set in environment, use it
|
||||||
|
if test ! -d "$JT_HOME"; then
|
||||||
|
AC_MSG_WARN([Ignoring JT_HOME pointing to invalid directory: $JT_HOME])
|
||||||
|
JT_HOME=
|
||||||
|
else
|
||||||
|
if test ! -e "$JT_HOME/lib/jtreg.jar"; then
|
||||||
|
AC_MSG_WARN([Ignoring JT_HOME which is not a valid jtreg home: $JT_HOME])
|
||||||
|
JT_HOME=
|
||||||
|
elif test ! -x "$JT_HOME/bin/jtreg"; then
|
||||||
|
AC_MSG_WARN([Ignoring JT_HOME which does not contain valid jtreg executable: $JT_HOME])
|
||||||
|
JT_HOME=
|
||||||
|
else
|
||||||
|
JTREGEXE="$JT_HOME/bin/jtreg"
|
||||||
|
AC_MSG_NOTICE([Located jtreg using JT_HOME from environment])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "x$JT_HOME" = x; then
|
||||||
|
# JT_HOME is not set in environment, or was deemed invalid.
|
||||||
|
# Try to find jtreg on path
|
||||||
|
UTIL_LOOKUP_PROGS(JTREGEXE, jtreg)
|
||||||
|
if test "x$JTREGEXE" != x; then
|
||||||
|
# That's good, now try to derive JT_HOME
|
||||||
|
JT_HOME=`(cd $($DIRNAME $JTREGEXE)/.. && pwd)`
|
||||||
|
if test ! -e "$JT_HOME/lib/jtreg.jar"; then
|
||||||
|
AC_MSG_WARN([Ignoring jtreg from path since a valid jtreg home cannot be found])
|
||||||
|
JT_HOME=
|
||||||
|
JTREGEXE=
|
||||||
|
else
|
||||||
|
AC_MSG_NOTICE([Located jtreg using jtreg executable in path])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([for jtreg test harness])
|
||||||
|
if test "x$JT_HOME" != x; then
|
||||||
|
AC_MSG_RESULT([$JT_HOME])
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT([no, not found])
|
||||||
|
|
||||||
|
if test "x$with_jtreg" = xyes; then
|
||||||
|
AC_MSG_ERROR([--with-jtreg was specified, but no jtreg found.])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
UTIL_FIXUP_EXECUTABLE(JTREGEXE)
|
||||||
|
UTIL_FIXUP_PATH(JT_HOME)
|
||||||
|
AC_SUBST(JT_HOME)
|
||||||
|
|
||||||
|
# Specify a JDK for running jtreg. Defaults to the BOOT_JDK.
|
||||||
|
AC_ARG_WITH(jtreg-jdk, [AS_HELP_STRING([--with-jdk],
|
||||||
|
[path to JDK for running jtreg @<:@BOOT_JDK@:>@])])
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([for jtreg jdk])
|
||||||
|
if test "x${with_jtreg_jdk}" != x; then
|
||||||
|
if test "x${with_jtreg_jdk}" = xno; then
|
||||||
|
AC_MSG_RESULT([no, jtreg jdk not specified])
|
||||||
|
elif test "x${with_jtreg_jdk}" = xyes; then
|
||||||
|
AC_MSG_RESULT([not specified])
|
||||||
|
AC_MSG_ERROR([--with-jtreg-jdk needs a value])
|
||||||
|
else
|
||||||
|
JTREG_JDK="${with_jtreg_jdk}"
|
||||||
|
AC_MSG_RESULT([$JTREG_JDK])
|
||||||
|
UTIL_FIXUP_PATH(JTREG_JDK)
|
||||||
|
if test ! -f "$JTREG_JDK/bin/java"; then
|
||||||
|
AC_MSG_ERROR([Could not find jtreg java at $JTREG_JDK/bin/java])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
JTREG_JDK="${BOOT_JDK}"
|
||||||
|
AC_MSG_RESULT([no, using BOOT_JDK])
|
||||||
|
fi
|
||||||
|
|
||||||
|
UTIL_FIXUP_PATH(JTREG_JDK)
|
||||||
|
AC_SUBST([JTREG_JDK])
|
||||||
|
# For use in the configure script
|
||||||
|
JTREG_JAVA="$FIXPATH $JTREG_JDK/bin/java"
|
||||||
|
|
||||||
|
# Verify jtreg version
|
||||||
|
if test "x$JT_HOME" != x; then
|
||||||
|
AC_MSG_CHECKING([jtreg jar existence])
|
||||||
|
if test ! -f "$JT_HOME/lib/jtreg.jar"; then
|
||||||
|
AC_MSG_ERROR([Could not find jtreg jar at $JT_HOME/lib/jtreg.jar])
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([jtreg version number])
|
||||||
|
# jtreg -version looks like this: "jtreg 6.1+1-19"
|
||||||
|
# Extract actual version part ("6.1" in this case)
|
||||||
|
jtreg_version_full=$($JTREG_JAVA -jar $JT_HOME/lib/jtreg.jar -version | $HEAD -n 1 | $CUT -d ' ' -f 2)
|
||||||
|
|
||||||
|
jtreg_version=${jtreg_version_full/%+*}
|
||||||
|
AC_MSG_RESULT([$jtreg_version])
|
||||||
|
|
||||||
|
# This is a simplified version of TOOLCHAIN_CHECK_COMPILER_VERSION
|
||||||
|
comparable_actual_version=`$AWK -F. '{ printf("%05d%05d%05d%05d\n", [$]1, [$]2, [$]3, [$]4) }' <<< "$jtreg_version"`
|
||||||
|
comparable_minimum_version=`$AWK -F. '{ printf("%05d%05d%05d%05d\n", [$]1, [$]2, [$]3, [$]4) }' <<< "$JTREG_MINIMUM_VERSION"`
|
||||||
|
if test $comparable_actual_version -lt $comparable_minimum_version ; then
|
||||||
|
AC_MSG_ERROR([jtreg version is too old, at least version $JTREG_MINIMUM_VERSION is required])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_SUBST(JTREGEXE)
|
||||||
|
])
|
||||||
|
|
||||||
|
# Setup the JIB dependency resolver
|
||||||
|
AC_DEFUN_ONCE([LIB_TESTS_SETUP_JIB],
|
||||||
|
[
|
||||||
|
AC_ARG_WITH(jib, [AS_HELP_STRING([--with-jib],
|
||||||
|
[Jib dependency management tool @<:@not used@:>@])])
|
||||||
|
|
||||||
|
if test "x$with_jib" = xno || test "x$with_jib" = x; then
|
||||||
|
# jib disabled
|
||||||
|
AC_MSG_CHECKING([for jib])
|
||||||
|
AC_MSG_RESULT(no)
|
||||||
|
elif test "x$with_jib" = xyes; then
|
||||||
|
AC_MSG_ERROR([Must supply a value to --with-jib])
|
||||||
|
else
|
||||||
|
JIB_HOME="${with_jib}"
|
||||||
|
AC_MSG_CHECKING([for jib])
|
||||||
|
AC_MSG_RESULT(${JIB_HOME})
|
||||||
|
if test ! -d "${JIB_HOME}"; then
|
||||||
|
AC_MSG_ERROR([--with-jib must be a directory])
|
||||||
|
fi
|
||||||
|
JIB_JAR=$(ls ${JIB_HOME}/lib/jib-*.jar)
|
||||||
|
if test ! -f "${JIB_JAR}"; then
|
||||||
|
AC_MSG_ERROR([Could not find jib jar file in ${JIB_HOME}])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_SUBST(JIB_HOME)
|
||||||
|
])
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# Check if building of the jtreg failure handler should be enabled.
|
||||||
|
#
|
||||||
|
AC_DEFUN_ONCE([LIB_TESTS_ENABLE_DISABLE_FAILURE_HANDLER],
|
||||||
|
[
|
||||||
|
AC_ARG_ENABLE([jtreg-failure-handler], [AS_HELP_STRING([--enable-jtreg-failure-handler],
|
||||||
|
[forces build of the jtreg failure handler to be enabled, missing dependencies
|
||||||
|
become fatal errors. Default is auto, where the failure handler is built if all
|
||||||
|
dependencies are present and otherwise just disabled.])])
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([if jtreg failure handler should be built])
|
||||||
|
|
||||||
|
if test "x$enable_jtreg_failure_handler" = "xyes"; then
|
||||||
|
if test "x$JT_HOME" = "x"; then
|
||||||
|
AC_MSG_ERROR([Cannot enable jtreg failure handler without jtreg.])
|
||||||
|
else
|
||||||
|
BUILD_FAILURE_HANDLER=true
|
||||||
|
AC_MSG_RESULT([yes, forced])
|
||||||
|
fi
|
||||||
|
elif test "x$enable_jtreg_failure_handler" = "xno"; then
|
||||||
|
BUILD_FAILURE_HANDLER=false
|
||||||
|
AC_MSG_RESULT([no, forced])
|
||||||
|
elif test "x$enable_jtreg_failure_handler" = "xauto" \
|
||||||
|
|| test "x$enable_jtreg_failure_handler" = "x"; then
|
||||||
|
if test "x$JT_HOME" = "x"; then
|
||||||
|
BUILD_FAILURE_HANDLER=false
|
||||||
|
AC_MSG_RESULT([no, missing jtreg])
|
||||||
|
else
|
||||||
|
BUILD_FAILURE_HANDLER=true
|
||||||
|
AC_MSG_RESULT([yes, jtreg present])
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
AC_MSG_ERROR([Invalid value for --enable-jtreg-failure-handler: $enable_jtreg_failure_handler])
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_SUBST(BUILD_FAILURE_HANDLER)
|
||||||
|
])
|
||||||
|
|||||||
@@ -144,7 +144,7 @@ AC_DEFUN_ONCE([LIB_SETUP_LIBRARIES],
|
|||||||
if test "x$OPENJDK_TARGET_OS" = xwindows; then
|
if test "x$OPENJDK_TARGET_OS" = xwindows; then
|
||||||
BASIC_JVM_LIBS="$BASIC_JVM_LIBS kernel32.lib user32.lib gdi32.lib winspool.lib \
|
BASIC_JVM_LIBS="$BASIC_JVM_LIBS kernel32.lib user32.lib gdi32.lib winspool.lib \
|
||||||
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib \
|
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib \
|
||||||
wsock32.lib winmm.lib version.lib psapi.lib"
|
ws2_32.lib winmm.lib version.lib psapi.lib"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
JDKLIB_LIBS="$BASIC_JDKLIB_LIBS"
|
JDKLIB_LIBS="$BASIC_JDKLIB_LIBS"
|
||||||
|
|||||||
@@ -469,6 +469,10 @@ CXX_FLAG_DEPS:=@CXX_FLAG_DEPS@
|
|||||||
|
|
||||||
DISABLE_WARNING_PREFIX := @DISABLE_WARNING_PREFIX@
|
DISABLE_WARNING_PREFIX := @DISABLE_WARNING_PREFIX@
|
||||||
CFLAGS_WARNINGS_ARE_ERRORS:=@CFLAGS_WARNINGS_ARE_ERRORS@
|
CFLAGS_WARNINGS_ARE_ERRORS:=@CFLAGS_WARNINGS_ARE_ERRORS@
|
||||||
|
LDFLAGS_WARNINGS_ARE_ERRORS:=@LDFLAGS_WARNINGS_ARE_ERRORS@
|
||||||
|
DISABLED_WARNINGS := @DISABLED_WARNINGS@
|
||||||
|
DISABLED_WARNINGS_C := @DISABLED_WARNINGS_C@
|
||||||
|
DISABLED_WARNINGS_CXX := @DISABLED_WARNINGS_CXX@
|
||||||
|
|
||||||
# A global flag (true or false) determining if native warnings are considered errors.
|
# A global flag (true or false) determining if native warnings are considered errors.
|
||||||
WARNINGS_AS_ERRORS := @WARNINGS_AS_ERRORS@
|
WARNINGS_AS_ERRORS := @WARNINGS_AS_ERRORS@
|
||||||
@@ -648,6 +652,9 @@ SJAVAC_SERVER_JAVA = $(SJAVAC_SERVER_JAVA_CMD) \
|
|||||||
# overriding that value by using ?=.
|
# overriding that value by using ?=.
|
||||||
JAVAC_FLAGS? = @JAVAC_FLAGS@
|
JAVAC_FLAGS? = @JAVAC_FLAGS@
|
||||||
|
|
||||||
|
JTREG_JDK := @JTREG_JDK@
|
||||||
|
JTREG_JAVA = @FIXPATH@ $(JTREG_JDK)/bin/java $(JAVA_FLAGS_BIG) $(JAVA_FLAGS)
|
||||||
|
|
||||||
BUILD_JAVA_FLAGS := @BOOTCYCLE_JVM_ARGS_BIG@
|
BUILD_JAVA_FLAGS := @BOOTCYCLE_JVM_ARGS_BIG@
|
||||||
BUILD_JAVA=@FIXPATH@ $(BUILD_JDK)/bin/java $(BUILD_JAVA_FLAGS)
|
BUILD_JAVA=@FIXPATH@ $(BUILD_JDK)/bin/java $(BUILD_JAVA_FLAGS)
|
||||||
BUILD_JAR=@FIXPATH@ $(BUILD_JDK)/bin/jar
|
BUILD_JAR=@FIXPATH@ $(BUILD_JDK)/bin/jar
|
||||||
|
|||||||
@@ -1061,116 +1061,3 @@ AC_DEFUN_ONCE([TOOLCHAIN_MISC_CHECKS],
|
|||||||
fi
|
fi
|
||||||
AC_SUBST(HOTSPOT_TOOLCHAIN_TYPE)
|
AC_SUBST(HOTSPOT_TOOLCHAIN_TYPE)
|
||||||
])
|
])
|
||||||
|
|
||||||
# Setup the JTReg Regression Test Harness.
|
|
||||||
AC_DEFUN_ONCE([TOOLCHAIN_SETUP_JTREG],
|
|
||||||
[
|
|
||||||
AC_ARG_WITH(jtreg, [AS_HELP_STRING([--with-jtreg],
|
|
||||||
[Regression Test Harness @<:@probed@:>@])])
|
|
||||||
|
|
||||||
if test "x$with_jtreg" = xno; then
|
|
||||||
# jtreg disabled
|
|
||||||
AC_MSG_CHECKING([for jtreg test harness])
|
|
||||||
AC_MSG_RESULT([no, disabled])
|
|
||||||
elif test "x$with_jtreg" != xyes && test "x$with_jtreg" != x; then
|
|
||||||
# An explicit path is specified, use it.
|
|
||||||
JT_HOME="$with_jtreg"
|
|
||||||
UTIL_FIXUP_PATH([JT_HOME])
|
|
||||||
if test ! -d "$JT_HOME"; then
|
|
||||||
AC_MSG_ERROR([jtreg home directory from --with-jtreg=$with_jtreg does not exist])
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test ! -e "$JT_HOME/lib/jtreg.jar"; then
|
|
||||||
AC_MSG_ERROR([jtreg home directory from --with-jtreg=$with_jtreg is not a valid jtreg home])
|
|
||||||
fi
|
|
||||||
|
|
||||||
JTREGEXE="$JT_HOME/bin/jtreg"
|
|
||||||
if test ! -x "$JTREGEXE"; then
|
|
||||||
AC_MSG_ERROR([jtreg home directory from --with-jtreg=$with_jtreg does not contain valid jtreg executable])
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_MSG_CHECKING([for jtreg test harness])
|
|
||||||
AC_MSG_RESULT([$JT_HOME])
|
|
||||||
else
|
|
||||||
# Try to locate jtreg
|
|
||||||
if test "x$JT_HOME" != x; then
|
|
||||||
# JT_HOME set in environment, use it
|
|
||||||
if test ! -d "$JT_HOME"; then
|
|
||||||
AC_MSG_WARN([Ignoring JT_HOME pointing to invalid directory: $JT_HOME])
|
|
||||||
JT_HOME=
|
|
||||||
else
|
|
||||||
if test ! -e "$JT_HOME/lib/jtreg.jar"; then
|
|
||||||
AC_MSG_WARN([Ignoring JT_HOME which is not a valid jtreg home: $JT_HOME])
|
|
||||||
JT_HOME=
|
|
||||||
elif test ! -x "$JT_HOME/bin/jtreg"; then
|
|
||||||
AC_MSG_WARN([Ignoring JT_HOME which does not contain valid jtreg executable: $JT_HOME])
|
|
||||||
JT_HOME=
|
|
||||||
else
|
|
||||||
JTREGEXE="$JT_HOME/bin/jtreg"
|
|
||||||
AC_MSG_NOTICE([Located jtreg using JT_HOME from environment])
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "x$JT_HOME" = x; then
|
|
||||||
# JT_HOME is not set in environment, or was deemed invalid.
|
|
||||||
# Try to find jtreg on path
|
|
||||||
UTIL_LOOKUP_PROGS(JTREGEXE, jtreg)
|
|
||||||
if test "x$JTREGEXE" != x; then
|
|
||||||
# That's good, now try to derive JT_HOME
|
|
||||||
JT_HOME=`(cd $($DIRNAME $JTREGEXE)/.. && pwd)`
|
|
||||||
if test ! -e "$JT_HOME/lib/jtreg.jar"; then
|
|
||||||
AC_MSG_WARN([Ignoring jtreg from path since a valid jtreg home cannot be found])
|
|
||||||
JT_HOME=
|
|
||||||
JTREGEXE=
|
|
||||||
else
|
|
||||||
AC_MSG_NOTICE([Located jtreg using jtreg executable in path])
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_MSG_CHECKING([for jtreg test harness])
|
|
||||||
if test "x$JT_HOME" != x; then
|
|
||||||
AC_MSG_RESULT([$JT_HOME])
|
|
||||||
else
|
|
||||||
AC_MSG_RESULT([no, not found])
|
|
||||||
|
|
||||||
if test "x$with_jtreg" = xyes; then
|
|
||||||
AC_MSG_ERROR([--with-jtreg was specified, but no jtreg found.])
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
UTIL_FIXUP_EXECUTABLE(JTREGEXE)
|
|
||||||
UTIL_FIXUP_PATH(JT_HOME)
|
|
||||||
AC_SUBST(JT_HOME)
|
|
||||||
AC_SUBST(JTREGEXE)
|
|
||||||
])
|
|
||||||
|
|
||||||
# Setup the JIB dependency resolver
|
|
||||||
AC_DEFUN_ONCE([TOOLCHAIN_SETUP_JIB],
|
|
||||||
[
|
|
||||||
AC_ARG_WITH(jib, [AS_HELP_STRING([--with-jib],
|
|
||||||
[Jib dependency management tool @<:@not used@:>@])])
|
|
||||||
|
|
||||||
if test "x$with_jib" = xno || test "x$with_jib" = x; then
|
|
||||||
# jib disabled
|
|
||||||
AC_MSG_CHECKING([for jib])
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
elif test "x$with_jib" = xyes; then
|
|
||||||
AC_MSG_ERROR([Must supply a value to --with-jib])
|
|
||||||
else
|
|
||||||
JIB_HOME="${with_jib}"
|
|
||||||
AC_MSG_CHECKING([for jib])
|
|
||||||
AC_MSG_RESULT(${JIB_HOME})
|
|
||||||
if test ! -d "${JIB_HOME}"; then
|
|
||||||
AC_MSG_ERROR([--with-jib must be a directory])
|
|
||||||
fi
|
|
||||||
JIB_JAR=$(ls ${JIB_HOME}/lib/jib-*.jar)
|
|
||||||
if test ! -f "${JIB_JAR}"; then
|
|
||||||
AC_MSG_ERROR([Could not find jib jar file in ${JIB_HOME}])
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_SUBST(JIB_HOME)
|
|
||||||
])
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2011, 2023, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2011, 2024, Oracle and/or its affiliates. All rights reserved.
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
@@ -28,16 +28,16 @@
|
|||||||
|
|
||||||
DEFAULT_VERSION_FEATURE=11
|
DEFAULT_VERSION_FEATURE=11
|
||||||
DEFAULT_VERSION_INTERIM=0
|
DEFAULT_VERSION_INTERIM=0
|
||||||
DEFAULT_VERSION_UPDATE=23
|
DEFAULT_VERSION_UPDATE=26
|
||||||
DEFAULT_VERSION_PATCH=0
|
DEFAULT_VERSION_PATCH=0
|
||||||
DEFAULT_VERSION_EXTRA1=0
|
DEFAULT_VERSION_EXTRA1=0
|
||||||
DEFAULT_VERSION_EXTRA2=0
|
DEFAULT_VERSION_EXTRA2=0
|
||||||
DEFAULT_VERSION_EXTRA3=0
|
DEFAULT_VERSION_EXTRA3=0
|
||||||
DEFAULT_VERSION_DATE=2024-04-16
|
DEFAULT_VERSION_DATE=2025-01-21
|
||||||
DEFAULT_VERSION_CLASSFILE_MAJOR=55 # "`$EXPR $DEFAULT_VERSION_FEATURE + 44`"
|
DEFAULT_VERSION_CLASSFILE_MAJOR=55 # "`$EXPR $DEFAULT_VERSION_FEATURE + 44`"
|
||||||
DEFAULT_VERSION_CLASSFILE_MINOR=0
|
DEFAULT_VERSION_CLASSFILE_MINOR=0
|
||||||
DEFAULT_ACCEPTABLE_BOOT_VERSIONS="10 11"
|
DEFAULT_ACCEPTABLE_BOOT_VERSIONS="10 11"
|
||||||
DEFAULT_PROMOTED_VERSION_PRE=
|
DEFAULT_PROMOTED_VERSION_PRE=ea
|
||||||
|
|
||||||
LAUNCHER_NAME=openjdk
|
LAUNCHER_NAME=openjdk
|
||||||
PRODUCT_NAME=OpenJDK
|
PRODUCT_NAME=OpenJDK
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2011, 2019, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2011, 2024, Oracle and/or its affiliates. All rights reserved.
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
@@ -153,6 +153,10 @@ define SetupLogging
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifneq ($$(findstring $$(LOG_LEVEL), debug trace),)
|
||||||
|
SHELL := $$(SHELL) -x
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq ($$(LOG_LEVEL), trace)
|
ifeq ($$(LOG_LEVEL), trace)
|
||||||
SHELL_NO_RECURSE := $$(SHELL)
|
SHELL_NO_RECURSE := $$(SHELL)
|
||||||
# Shell redefinition trick inspired by http://www.cmcrossroads.com/ask-mr-make/6535-tracing-rule-execution-in-gnu-make
|
# Shell redefinition trick inspired by http://www.cmcrossroads.com/ask-mr-make/6535-tracing-rule-execution-in-gnu-make
|
||||||
|
|||||||
@@ -747,9 +747,13 @@ define SetupNativeCompilationBody
|
|||||||
# Pick up disabled warnings, if possible on this platform.
|
# Pick up disabled warnings, if possible on this platform.
|
||||||
ifneq ($(DISABLE_WARNING_PREFIX), )
|
ifneq ($(DISABLE_WARNING_PREFIX), )
|
||||||
$1_EXTRA_CFLAGS += $$(addprefix $(DISABLE_WARNING_PREFIX), \
|
$1_EXTRA_CFLAGS += $$(addprefix $(DISABLE_WARNING_PREFIX), \
|
||||||
|
$$(DISABLED_WARNINGS) \
|
||||||
|
$$(DISABLED_WARNINGS_C) \
|
||||||
$$($1_DISABLED_WARNINGS_$(TOOLCHAIN_TYPE)) \
|
$$($1_DISABLED_WARNINGS_$(TOOLCHAIN_TYPE)) \
|
||||||
$$($1_DISABLED_WARNINGS_C_$(TOOLCHAIN_TYPE)))
|
$$($1_DISABLED_WARNINGS_C_$(TOOLCHAIN_TYPE)))
|
||||||
$1_EXTRA_CXXFLAGS += $$(addprefix $(DISABLE_WARNING_PREFIX), \
|
$1_EXTRA_CXXFLAGS += $$(addprefix $(DISABLE_WARNING_PREFIX), \
|
||||||
|
$$(DISABLED_WARNINGS) \
|
||||||
|
$$(DISABLED_WARNINGS_CXX) \
|
||||||
$$($1_DISABLED_WARNINGS_$(TOOLCHAIN_TYPE)) \
|
$$($1_DISABLED_WARNINGS_$(TOOLCHAIN_TYPE)) \
|
||||||
$$($1_DISABLED_WARNINGS_CXX_$(TOOLCHAIN_TYPE)))
|
$$($1_DISABLED_WARNINGS_CXX_$(TOOLCHAIN_TYPE)))
|
||||||
endif
|
endif
|
||||||
@@ -767,6 +771,7 @@ define SetupNativeCompilationBody
|
|||||||
ifeq ($$($1_WARNINGS_AS_ERRORS_$(TOOLCHAIN_TYPE)), true)
|
ifeq ($$($1_WARNINGS_AS_ERRORS_$(TOOLCHAIN_TYPE)), true)
|
||||||
$1_EXTRA_CFLAGS += $(CFLAGS_WARNINGS_ARE_ERRORS)
|
$1_EXTRA_CFLAGS += $(CFLAGS_WARNINGS_ARE_ERRORS)
|
||||||
$1_EXTRA_CXXFLAGS += $(CFLAGS_WARNINGS_ARE_ERRORS)
|
$1_EXTRA_CXXFLAGS += $(CFLAGS_WARNINGS_ARE_ERRORS)
|
||||||
|
$1_EXTRA_LDFLAGS += $(LDFLAGS_WARNINGS_ARE_ERRORS)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq (NONE, $$($1_OPTIMIZATION))
|
ifeq (NONE, $$($1_OPTIMIZATION))
|
||||||
@@ -975,8 +980,8 @@ define SetupNativeCompilationBody
|
|||||||
|
|
||||||
# Pickup extra OPENJDK_TARGET_OS_TYPE and/or OPENJDK_TARGET_OS dependent variables
|
# Pickup extra OPENJDK_TARGET_OS_TYPE and/or OPENJDK_TARGET_OS dependent variables
|
||||||
# for LDFLAGS and LIBS
|
# for LDFLAGS and LIBS
|
||||||
$1_EXTRA_LDFLAGS := $$($1_LDFLAGS_$(OPENJDK_TARGET_OS_TYPE)) $$($1_LDFLAGS_$(OPENJDK_TARGET_OS))
|
$1_EXTRA_LDFLAGS += $$($1_LDFLAGS_$(OPENJDK_TARGET_OS_TYPE)) $$($1_LDFLAGS_$(OPENJDK_TARGET_OS))
|
||||||
$1_EXTRA_LIBS := $$($1_LIBS_$(OPENJDK_TARGET_OS_TYPE)) $$($1_LIBS_$(OPENJDK_TARGET_OS))
|
$1_EXTRA_LIBS += $$($1_LIBS_$(OPENJDK_TARGET_OS_TYPE)) $$($1_LIBS_$(OPENJDK_TARGET_OS))
|
||||||
ifneq ($$($1_REAL_MAPFILE), )
|
ifneq ($$($1_REAL_MAPFILE), )
|
||||||
$1_EXTRA_LDFLAGS += $(call SET_SHARED_LIBRARY_MAPFILE,$$($1_REAL_MAPFILE))
|
$1_EXTRA_LDFLAGS += $(call SET_SHARED_LIBRARY_MAPFILE,$$($1_REAL_MAPFILE))
|
||||||
endif
|
endif
|
||||||
@@ -1214,11 +1219,15 @@ define SetupNativeCompilationBody
|
|||||||
$$($1_MT) -nologo -manifest $$($1_MANIFEST) -identity:"$$($1_NAME).exe, version=$$($1_MANIFEST_VERSION)" -outputresource:$$@;#1
|
$$($1_MT) -nologo -manifest $$($1_MANIFEST) -identity:"$$($1_NAME).exe, version=$$($1_MANIFEST_VERSION)" -outputresource:$$@;#1
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
# On macosx, optionally run codesign on every binary
|
# On macosx, optionally run codesign on every binary.
|
||||||
|
# Remove signature explicitly first to avoid warnings if the linker
|
||||||
|
# added a default adhoc signature.
|
||||||
ifeq ($(MACOSX_CODESIGN_MODE), hardened)
|
ifeq ($(MACOSX_CODESIGN_MODE), hardened)
|
||||||
|
$(CODESIGN) --remove-signature $$@
|
||||||
$(CODESIGN) -f -s "$(MACOSX_CODESIGN_IDENTITY)" --timestamp --options runtime \
|
$(CODESIGN) -f -s "$(MACOSX_CODESIGN_IDENTITY)" --timestamp --options runtime \
|
||||||
--entitlements $$(call GetEntitlementsFile, $$@) $$@
|
--entitlements $$(call GetEntitlementsFile, $$@) $$@
|
||||||
else ifeq ($(MACOSX_CODESIGN_MODE), debug)
|
else ifeq ($(MACOSX_CODESIGN_MODE), debug)
|
||||||
|
$(CODESIGN) --remove-signature $$@
|
||||||
$(CODESIGN) -f -s - --entitlements $$(call GetEntitlementsFile, $$@) $$@
|
$(CODESIGN) -f -s - --entitlements $$(call GetEntitlementsFile, $$@) $$@
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -26,16 +26,16 @@
|
|||||||
# Versions and download locations for dependencies used by GitHub Actions (GHA)
|
# Versions and download locations for dependencies used by GitHub Actions (GHA)
|
||||||
|
|
||||||
GTEST_VERSION=1.8.1
|
GTEST_VERSION=1.8.1
|
||||||
JTREG_VERSION=6.1+3
|
JTREG_VERSION=7.3.1+1
|
||||||
|
|
||||||
LINUX_X64_BOOT_JDK_EXT=tar.gz
|
LINUX_X64_BOOT_JDK_EXT=tar.gz
|
||||||
LINUX_X64_BOOT_JDK_URL=https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.18%2B10/OpenJDK11U-jdk_x64_linux_hotspot_11.0.18_10.tar.gz
|
LINUX_X64_BOOT_JDK_URL=https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.23%2B9/OpenJDK11U-jdk_x64_linux_hotspot_11.0.23_9.tar.gz
|
||||||
LINUX_X64_BOOT_JDK_SHA256=4a29efda1d702b8ff38e554cf932051f40ec70006caed5c4857a8cbc7a0b7db7
|
LINUX_X64_BOOT_JDK_SHA256=23e47ea7a3015be3240f21185fd902adebdcf76530757c9b482c7eb5bd3417c2
|
||||||
|
|
||||||
WINDOWS_X64_BOOT_JDK_EXT=zip
|
WINDOWS_X64_BOOT_JDK_EXT=zip
|
||||||
WINDOWS_X64_BOOT_JDK_URL=https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.18%2B10/OpenJDK11U-jdk_x64_windows_hotspot_11.0.18_10.zip
|
WINDOWS_X64_BOOT_JDK_URL=https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.23%2B9/OpenJDK11U-jdk_x64_windows_hotspot_11.0.23_9.zip
|
||||||
WINDOWS_X64_BOOT_JDK_SHA256=0cfa5991a8e372b3f8eacacbb2a336663ead0cc6ec9c9ab6cd53206602fb0062
|
WINDOWS_X64_BOOT_JDK_SHA256=d7a9f8ceee9a5785dcbbcbec20a07b1366efec59ba652ef7e03f6f7d10f52b85
|
||||||
|
|
||||||
MACOS_X64_BOOT_JDK_EXT=tar.gz
|
MACOS_X64_BOOT_JDK_EXT=tar.gz
|
||||||
MACOS_X64_BOOT_JDK_URL=https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.18%2B10/OpenJDK11U-jdk_x64_mac_hotspot_11.0.18_10.tar.gz
|
MACOS_X64_BOOT_JDK_URL=https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.23%2B9/OpenJDK11U-jdk_x64_mac_hotspot_11.0.23_9.tar.gz
|
||||||
MACOS_X64_BOOT_JDK_SHA256=75d79315d7265cc4b89fd9e844161ff90798bc6482ace8c1ac75f862a5b3b565
|
MACOS_X64_BOOT_JDK_SHA256=4dbd21d9a0311d321f5886eda50c3086026ed61d02e1a85f7b8c2e9ad557bf03
|
||||||
|
|||||||
@@ -941,9 +941,9 @@ var getJibProfilesDependencies = function (input, common) {
|
|||||||
jtreg: {
|
jtreg: {
|
||||||
server: "jpg",
|
server: "jpg",
|
||||||
product: "jtreg",
|
product: "jtreg",
|
||||||
version: "6",
|
version: "7.3.1",
|
||||||
build_number: "1",
|
build_number: "1",
|
||||||
file: "bundles/jtreg-6+1.zip",
|
file: "bundles/jtreg-7.3.1+1.zip",
|
||||||
environment_name: "JT_HOME",
|
environment_name: "JT_HOME",
|
||||||
environment_path: input.get("jtreg", "install_path") + "/jtreg/bin"
|
environment_path: input.get("jtreg", "install_path") + "/jtreg/bin"
|
||||||
},
|
},
|
||||||
|
|||||||
20
make/data/cacerts/globalsigne46
Normal file
20
make/data/cacerts/globalsigne46
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
Owner: CN=GlobalSign Root E46, O=GlobalSign nv-sa, C=BE
|
||||||
|
Issuer: CN=GlobalSign Root E46, O=GlobalSign nv-sa, C=BE
|
||||||
|
Serial number: 11d2bbba336ed4bce62468c50d841d98e843
|
||||||
|
Valid from: Wed Mar 20 00:00:00 GMT 2019 until: Tue Mar 20 00:00:00 GMT 2046
|
||||||
|
Signature algorithm name: SHA384withECDSA
|
||||||
|
Subject Public Key Algorithm: 384-bit EC (secp384r1) key
|
||||||
|
Version: 3
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIICCzCCAZGgAwIBAgISEdK7ujNu1LzmJGjFDYQdmOhDMAoGCCqGSM49BAMDMEYx
|
||||||
|
CzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYDVQQD
|
||||||
|
ExNHbG9iYWxTaWduIFJvb3QgRTQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMyMDAw
|
||||||
|
MDAwMFowRjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2Ex
|
||||||
|
HDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBFNDYwdjAQBgcqhkjOPQIBBgUrgQQA
|
||||||
|
IgNiAAScDrHPt+ieUnd1NPqlRqetMhkytAepJ8qUuwzSChDH2omwlwxwEwkBjtjq
|
||||||
|
R+q+soArzfwoDdusvKSGN+1wCAB16pMLey5SnCNoIwZD7JIvU4Tb+0cUB+hflGdd
|
||||||
|
yXqBPCCjQjBAMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud
|
||||||
|
DgQWBBQxCpCPtsad0kRLgLWi5h+xEk8blTAKBggqhkjOPQQDAwNoADBlAjEA31SQ
|
||||||
|
7Zvvi5QCkxeCmb6zniz2C5GMn0oUsfZkvLtoURMMA/cVi4RguYv/Uo7njLwcAjA8
|
||||||
|
+RHUjE7AwWHCFUyqqx0LMV87HOIAl0Qx5v5zli/altP+CAezNIm8BZ/3Hobui3A=
|
||||||
|
-----END CERTIFICATE-----
|
||||||
38
make/data/cacerts/globalsignr46
Normal file
38
make/data/cacerts/globalsignr46
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
Owner: CN=GlobalSign Root R46, O=GlobalSign nv-sa, C=BE
|
||||||
|
Issuer: CN=GlobalSign Root R46, O=GlobalSign nv-sa, C=BE
|
||||||
|
Serial number: 11d2bbb9d723189e405f0a9d2dd0df2567d1
|
||||||
|
Valid from: Wed Mar 20 00:00:00 GMT 2019 until: Tue Mar 20 00:00:00 GMT 2046
|
||||||
|
Signature algorithm name: SHA384withRSA
|
||||||
|
Subject Public Key Algorithm: 4096-bit RSA key
|
||||||
|
Version: 3
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIFWjCCA0KgAwIBAgISEdK7udcjGJ5AXwqdLdDfJWfRMA0GCSqGSIb3DQEBDAUA
|
||||||
|
MEYxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYD
|
||||||
|
VQQDExNHbG9iYWxTaWduIFJvb3QgUjQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMy
|
||||||
|
MDAwMDAwMFowRjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYt
|
||||||
|
c2ExHDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBSNDYwggIiMA0GCSqGSIb3DQEB
|
||||||
|
AQUAA4ICDwAwggIKAoICAQCsrHQy6LNl5brtQyYdpokNRbopiLKkHWPd08EsCVeJ
|
||||||
|
OaFV6Wc0dwxu5FUdUiXSE2te4R2pt32JMl8Nnp8semNgQB+msLZ4j5lUlghYruQG
|
||||||
|
vGIFAha/r6gjA7aUD7xubMLL1aa7DOn2wQL7Id5m3RerdELv8HQvJfTqa1VbkNud
|
||||||
|
316HCkD7rRlr+/fKYIje2sGP1q7Vf9Q8g+7XFkyDRTNrJ9CG0Bwta/OrffGFqfUo
|
||||||
|
0q3v84RLHIf8E6M6cqJaESvWJ3En7YEtbWaBkoe0G1h6zD8K+kZPTXhc+CtI4wSE
|
||||||
|
y132tGqzZfxCnlEmIyDLPRT5ge1lFgBPGmSXZgjPjHvjK8Cd+RTyG/FWaha/LIWF
|
||||||
|
zXg4mutCagI0GIMXTpRW+LaCtfOW3T3zvn8gdz57GSNrLNRyc0NXfeD412lPFzYE
|
||||||
|
+cCQYDdF3uYM2HSNrpyibXRdQr4G9dlkbgIQrImwTDsHTUB+JMWKmIJ5jqSngiCN
|
||||||
|
I/onccnfxkF0oE32kRbcRoxfKWMxWXEM2G/CtjJ9++ZdU6Z+Ffy7dXxd7Pj2Fxzs
|
||||||
|
x2sZy/N78CsHpdlseVR2bJ0cpm4O6XkMqCNqo98bMDGfsVR7/mrLZqrcZdCinkqa
|
||||||
|
ByFrgY/bxFn63iLABJzjqls2k+g9vXqhnQt2sQvHnf3PmKgGwvgqo6GDoLclcqUC
|
||||||
|
4wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV
|
||||||
|
HQ4EFgQUA1yrc4GHqMywptWU4jaWSf8FmSwwDQYJKoZIhvcNAQEMBQADggIBAHx4
|
||||||
|
7PYCLLtbfpIrXTncvtgdokIzTfnvpCo7RGkerNlFo048p9gkUbJUHJNOxO97k4Vg
|
||||||
|
JuoJSOD1u8fpaNK7ajFxzHmuEajwmf3lH7wvqMxX63bEIaZHU1VNaL8FpO7XJqti
|
||||||
|
2kM3S+LGteWygxk6x9PbTZ4IevPuzz5i+6zoYMzRx6Fcg0XERczzF2sUyQQCPtIk
|
||||||
|
pnnpHs6i58FZFZ8d4kuaPp92CC1r2LpXFNqD6v6MVenQTqnMdzGxRBF6XLE+0xRF
|
||||||
|
FRhiJBPSy03OXIPBNvIQtQ6IbbjhVp+J3pZmOUdkLG5NrmJ7v2B0GbhWrJKsFjLt
|
||||||
|
rWhV/pi60zTe9Mlhww6G9kuEYO4Ne7UyWHmRVSyBQ7N0H3qqJZ4d16GLuc1CLgSk
|
||||||
|
ZoNNiTW2bKg2SnkheCLQQrzRQDGQob4Ez8pn7fXwgNNgyYMqIgXQBztSvwyeqiv5
|
||||||
|
u+YfjyW6hY0XHgL+XVAEV8/+LbzvXMAaq7afJMbfc2hIkCwU9D9SGuTSyxTDYWnP
|
||||||
|
4vkYxboznxSjBF25cfe1lNj2M8FawTSLfJvdkzrnE6JwYZ+vj+vYxXX4M2bUdGc6
|
||||||
|
N3ec592kD3ZDZopD8p/7DEJ4Y9HiD2971KE9dJeFt0g5QdYg/NA6s/rob8SKunE3
|
||||||
|
vouXsXgxT7PntgMTzlSdriVZzH81Xwj3QEUxeCp6
|
||||||
|
-----END CERTIFICATE-----
|
||||||
21
make/data/cacerts/ssltlsrootecc2022
Normal file
21
make/data/cacerts/ssltlsrootecc2022
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
Owner: CN=SSL.com TLS ECC Root CA 2022, O=SSL Corporation, C=US
|
||||||
|
Issuer: CN=SSL.com TLS ECC Root CA 2022, O=SSL Corporation, C=US
|
||||||
|
Serial number: 1403f5abfb378b17405be243b2a5d1c4
|
||||||
|
Valid from: Thu Aug 25 16:33:48 GMT 2022 until: Sun Aug 19 16:33:47 GMT 2046
|
||||||
|
Signature algorithm name: SHA384withECDSA
|
||||||
|
Subject Public Key Algorithm: 384-bit EC (secp384r1) key
|
||||||
|
Version: 3
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIICOjCCAcCgAwIBAgIQFAP1q/s3ixdAW+JDsqXRxDAKBggqhkjOPQQDAzBOMQsw
|
||||||
|
CQYDVQQGEwJVUzEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMSUwIwYDVQQDDBxT
|
||||||
|
U0wuY29tIFRMUyBFQ0MgUm9vdCBDQSAyMDIyMB4XDTIyMDgyNTE2MzM0OFoXDTQ2
|
||||||
|
MDgxOTE2MzM0N1owTjELMAkGA1UEBhMCVVMxGDAWBgNVBAoMD1NTTCBDb3Jwb3Jh
|
||||||
|
dGlvbjElMCMGA1UEAwwcU1NMLmNvbSBUTFMgRUNDIFJvb3QgQ0EgMjAyMjB2MBAG
|
||||||
|
ByqGSM49AgEGBSuBBAAiA2IABEUpNXP6wrgjzhR9qLFNoFs27iosU8NgCTWyJGYm
|
||||||
|
acCzldZdkkAZDsalE3D07xJRKF3nzL35PIXBz5SQySvOkkJYWWf9lCcQZIxPBLFN
|
||||||
|
SeR7T5v15wj4A4j3p8OSSxlUgaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSME
|
||||||
|
GDAWgBSJjy+j6CugFFR781a4Jl9nOAuc0DAdBgNVHQ4EFgQUiY8vo+groBRUe/NW
|
||||||
|
uCZfZzgLnNAwDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMDA2gAMGUCMFXjIlbp
|
||||||
|
15IkWE8elDIPDAI2wv2sdDJO4fscgIijzPvX6yv/N33w7deedWo1dlJF4AIxAMeN
|
||||||
|
b0Igj762TVntd00pxCAgRWSGOlDGxK0tk/UYfXLtqc/ErFc2KAhl3zx5Zn6g6g==
|
||||||
|
-----END CERTIFICATE-----
|
||||||
39
make/data/cacerts/ssltlsrootrsa2022
Normal file
39
make/data/cacerts/ssltlsrootrsa2022
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
Owner: CN=SSL.com TLS RSA Root CA 2022, O=SSL Corporation, C=US
|
||||||
|
Issuer: CN=SSL.com TLS RSA Root CA 2022, O=SSL Corporation, C=US
|
||||||
|
Serial number: 6fbedaad73bd0840e28b4dbed4f75b91
|
||||||
|
Valid from: Thu Aug 25 16:34:22 GMT 2022 until: Sun Aug 19 16:34:21 GMT 2046
|
||||||
|
Signature algorithm name: SHA256withRSA
|
||||||
|
Subject Public Key Algorithm: 4096-bit RSA key
|
||||||
|
Version: 3
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIFiTCCA3GgAwIBAgIQb77arXO9CEDii02+1PdbkTANBgkqhkiG9w0BAQsFADBO
|
||||||
|
MQswCQYDVQQGEwJVUzEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMSUwIwYDVQQD
|
||||||
|
DBxTU0wuY29tIFRMUyBSU0EgUm9vdCBDQSAyMDIyMB4XDTIyMDgyNTE2MzQyMloX
|
||||||
|
DTQ2MDgxOTE2MzQyMVowTjELMAkGA1UEBhMCVVMxGDAWBgNVBAoMD1NTTCBDb3Jw
|
||||||
|
b3JhdGlvbjElMCMGA1UEAwwcU1NMLmNvbSBUTFMgUlNBIFJvb3QgQ0EgMjAyMjCC
|
||||||
|
AiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANCkCXJPQIgSYT41I57u9nTP
|
||||||
|
L3tYPc48DRAokC+X94xI2KDYJbFMsBFMF3NQ0CJKY7uB0ylu1bUJPiYYf7ISf5OY
|
||||||
|
t6/wNr/y7hienDtSxUcZXXTzZGbVXcdotL8bHAajvI9AI7YexoS9UcQbOcGV0ins
|
||||||
|
S657Lb85/bRi3pZ7QcacoOAGcvvwB5cJOYF0r/c0WRFXCsJbwST0MXMwgsadugL3
|
||||||
|
PnxEX4MN8/HdIGkWCVDi1FW24IBydm5MR7d1VVm0U3TZlMZBrViKMWYPHqIbKUBO
|
||||||
|
L9975hYsLfy/7PO0+r4Y9ptJ1O4Fbtk085zx7AGL0SDGD6C1vBdOSHtRwvzpXGk3
|
||||||
|
R2azaPgVKPC506QVzFpPulJwoxJF3ca6TvvC0PeoUidtbnm1jPx7jMEWTO6Af77w
|
||||||
|
dr5BUxIzrlo4QqvXDz5BjXYHMtWrifZOZ9mxQnUjbvPNQrL8VfVThxc7wDNY8VLS
|
||||||
|
+YCk8OjwO4s4zKTGkH8PnP2L0aPP2oOnaclQNtVcBdIKQXTbYxE3waWglksejBYS
|
||||||
|
d66UNHsef8JmAOSqg+qKkK3ONkRN0VHpvB/zagX9wHQfJRlAUW7qglFA35u5CCoG
|
||||||
|
AtUjHBPW6dvbxrB6y3snm/vg1UYk7RBLY0ulBY+6uB0rpvqR4pJSvezrZ5dtmi2f
|
||||||
|
gTIFZzL7SAg/2SW4BCUvAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0j
|
||||||
|
BBgwFoAU+y437uOEeicuzRk1sTN8/9REQrkwHQYDVR0OBBYEFPsuN+7jhHonLs0Z
|
||||||
|
NbEzfP/UREK5MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAjYlt
|
||||||
|
hEUY8U+zoO9opMAdrDC8Z2awms22qyIZZtM7QbUQnRC6cm4pJCAcAZli05bg4vsM
|
||||||
|
QtfhWsSWTVTNj8pDU/0quOr4ZcoBwq1gaAafORpR2eCNJvkLTqVTJXojpBzOCBvf
|
||||||
|
R4iyrT7gJ4eLSYwfqUdYe5byiB0YrrPRpgqU+tvT5TgKa3kSM/tKWTcWQA673vWJ
|
||||||
|
DPFs0/dRa1419dvAJuoSc06pkZCmF8NsLzjUo3KUQyxi4U5cMj29TH0ZR6LDSeeW
|
||||||
|
P4+a0zvkEdiLA9z2tmBVGKaBUfPhqBVq6+AL8BQx1rmMRTqoENjwuSfr98t67wVy
|
||||||
|
lrXEj5ZzxOhWc5y8aVFjvO9nHEMaX3cZHxj4HCUp+UmZKbaSPaKDN7EgkaibMOlq
|
||||||
|
bLQjk2UEqxHzDh1TJElTHaE/nUiSEeJ9DU/1172iWD54nR4fK/4huxoTtrEoZP2w
|
||||||
|
AgDHbICivRZQIA9ygV/MlP+7mea6kMvq+cYMwq7FGc4zoWtcu358NFcXrfA/rs3q
|
||||||
|
r5nsLFR+jM4uElZI7xc7P0peYNLcdDa8pUNjyw9bowJWCZ4kLOGGgYz+qxcs+sji
|
||||||
|
Mho6/4UIyYOf8kpIEFR3N+2ivEC+5BB09+Rbu7nzifmPQdjH5FCQNYA+HLhNkNPU
|
||||||
|
98OwoX6EyneSMSy4kLGCenROmxMmtNVQZlR4rmA=
|
||||||
|
-----END CERTIFICATE-----
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2000, 2023, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2000, 2024, Oracle and/or its affiliates. All rights reserved.
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
@@ -32,7 +32,7 @@ formatVersion=3
|
|||||||
# Version of the currency code information in this class.
|
# Version of the currency code information in this class.
|
||||||
# It is a serial number that accompanies with each amendment.
|
# It is a serial number that accompanies with each amendment.
|
||||||
|
|
||||||
dataVersion=176
|
dataVersion=177
|
||||||
|
|
||||||
# List of all valid ISO 4217 currency codes.
|
# List of all valid ISO 4217 currency codes.
|
||||||
# To ensure compatibility, do not remove codes.
|
# To ensure compatibility, do not remove codes.
|
||||||
@@ -56,8 +56,8 @@ all=ADP020-AED784-AFA004-AFN971-ALL008-AMD051-ANG532-AOA973-ARS032-ATS040-AUD036
|
|||||||
TPE626-TRL792-TRY949-TTD780-TWD901-TZS834-UAH980-UGX800-USD840-USN997-USS998-UYI940-\
|
TPE626-TRL792-TRY949-TTD780-TWD901-TZS834-UAH980-UGX800-USD840-USN997-USS998-UYI940-\
|
||||||
UYU858-UZS860-VEB862-VED926-VEF937-VES928-VND704-VUV548-WST882-XAF950-XAG961-XAU959-XBA955-\
|
UYU858-UZS860-VEB862-VED926-VEF937-VES928-VND704-VUV548-WST882-XAF950-XAG961-XAU959-XBA955-\
|
||||||
XBB956-XBC957-XBD958-XCD951-XCG532-XDR960-XFO000-XFU000-XOF952-XPD964-XPF953-\
|
XBB956-XBC957-XBD958-XCD951-XCG532-XDR960-XFO000-XFU000-XOF952-XPD964-XPF953-\
|
||||||
XPT962-XSU994-XTS963-XUA965-XXX999-YER886-YUM891-ZAR710-ZMK894-ZMW967-ZWD716-ZWL932-\
|
XPT962-XSU994-XTS963-XUA965-XXX999-YER886-YUM891-ZAR710-ZMK894-ZMW967-ZWD716-ZWG924-\
|
||||||
ZWN942-ZWR935
|
ZWL932-ZWN942-ZWR935
|
||||||
|
|
||||||
|
|
||||||
# Mappings from ISO 3166 country codes to ISO 4217 currency codes.
|
# Mappings from ISO 3166 country codes to ISO 4217 currency codes.
|
||||||
@@ -582,7 +582,7 @@ YE=YER
|
|||||||
# ZAMBIA
|
# ZAMBIA
|
||||||
ZM=ZMW
|
ZM=ZMW
|
||||||
# ZIMBABWE
|
# ZIMBABWE
|
||||||
ZW=ZWL
|
ZW=ZWG
|
||||||
|
|
||||||
|
|
||||||
# List of currencies with non-2digit decimals for minor units,
|
# List of currencies with non-2digit decimals for minor units,
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
File-Date: 2022-08-08
|
File-Date: 2024-06-14
|
||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
Subtag: aa
|
Subtag: aa
|
||||||
@@ -882,6 +882,7 @@ Type: language
|
|||||||
Subtag: sa
|
Subtag: sa
|
||||||
Description: Sanskrit
|
Description: Sanskrit
|
||||||
Added: 2005-10-16
|
Added: 2005-10-16
|
||||||
|
Scope: macrolanguage
|
||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
Subtag: sc
|
Subtag: sc
|
||||||
@@ -2143,6 +2144,8 @@ Type: language
|
|||||||
Subtag: ajp
|
Subtag: ajp
|
||||||
Description: South Levantine Arabic
|
Description: South Levantine Arabic
|
||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
|
Deprecated: 2023-03-17
|
||||||
|
Preferred-Value: apc
|
||||||
Macrolanguage: ar
|
Macrolanguage: ar
|
||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
@@ -2790,7 +2793,7 @@ Added: 2009-07-29
|
|||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
Subtag: apc
|
Subtag: apc
|
||||||
Description: North Levantine Arabic
|
Description: Levantine Arabic
|
||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
Macrolanguage: ar
|
Macrolanguage: ar
|
||||||
%%
|
%%
|
||||||
@@ -8026,6 +8029,12 @@ Description: Lowland Oaxaca Chontal
|
|||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
|
Subtag: cls
|
||||||
|
Description: Classical Sanskrit
|
||||||
|
Added: 2024-03-04
|
||||||
|
Macrolanguage: sa
|
||||||
|
%%
|
||||||
|
Type: language
|
||||||
Subtag: clt
|
Subtag: clt
|
||||||
Description: Lautu Chin
|
Description: Lautu Chin
|
||||||
Added: 2012-08-12
|
Added: 2012-08-12
|
||||||
@@ -8910,6 +8919,11 @@ Description: Kuwaataay
|
|||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
|
Subtag: cxh
|
||||||
|
Description: Cha'ari
|
||||||
|
Added: 2023-03-17
|
||||||
|
%%
|
||||||
|
Type: language
|
||||||
Subtag: cya
|
Subtag: cya
|
||||||
Description: Nopala Chatino
|
Description: Nopala Chatino
|
||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
@@ -9388,6 +9402,7 @@ Macrolanguage: doi
|
|||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
Subtag: dgr
|
Subtag: dgr
|
||||||
|
Description: Tlicho
|
||||||
Description: Dogrib
|
Description: Dogrib
|
||||||
Description: Tłı̨chǫ
|
Description: Tłı̨chǫ
|
||||||
Added: 2005-10-16
|
Added: 2005-10-16
|
||||||
@@ -10176,6 +10191,11 @@ Description: Disa
|
|||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
|
Subtag: dsk
|
||||||
|
Description: Dokshi
|
||||||
|
Added: 2023-03-17
|
||||||
|
%%
|
||||||
|
Type: language
|
||||||
Subtag: dsl
|
Subtag: dsl
|
||||||
Description: Danish Sign Language
|
Description: Danish Sign Language
|
||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
@@ -10503,6 +10523,11 @@ Description: Jola-Fonyi
|
|||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
|
Subtag: dyr
|
||||||
|
Description: Dyarim
|
||||||
|
Added: 2023-03-17
|
||||||
|
%%
|
||||||
|
Type: language
|
||||||
Subtag: dyu
|
Subtag: dyu
|
||||||
Description: Dyula
|
Description: Dyula
|
||||||
Added: 2005-10-16
|
Added: 2005-10-16
|
||||||
@@ -10522,7 +10547,6 @@ Type: language
|
|||||||
Subtag: dzd
|
Subtag: dzd
|
||||||
Description: Daza
|
Description: Daza
|
||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
Deprecated: 2015-02-12
|
|
||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
Subtag: dze
|
Subtag: dze
|
||||||
@@ -11146,6 +11170,11 @@ Description: Semimi
|
|||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
|
Subtag: eud
|
||||||
|
Description: Eudeve
|
||||||
|
Added: 2023-03-17
|
||||||
|
%%
|
||||||
|
Type: language
|
||||||
Subtag: euq
|
Subtag: euq
|
||||||
Description: Basque (family)
|
Description: Basque (family)
|
||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
@@ -14805,6 +14834,11 @@ Added: 2009-07-29
|
|||||||
Macrolanguage: iu
|
Macrolanguage: iu
|
||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
|
Subtag: ikh
|
||||||
|
Description: Ikhin-Arokho
|
||||||
|
Added: 2023-03-17
|
||||||
|
%%
|
||||||
|
Type: language
|
||||||
Subtag: iki
|
Subtag: iki
|
||||||
Description: Iko
|
Description: Iko
|
||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
@@ -15222,6 +15256,11 @@ Description: Isu (Menchum Division)
|
|||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
|
Subtag: isv
|
||||||
|
Description: Interslavic
|
||||||
|
Added: 2024-05-15
|
||||||
|
%%
|
||||||
|
Type: language
|
||||||
Subtag: itb
|
Subtag: itb
|
||||||
Description: Binongan Itneg
|
Description: Binongan Itneg
|
||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
@@ -15380,6 +15419,11 @@ Deprecated: 2013-09-10
|
|||||||
Comments: see eza, gmz, iqw, izz
|
Comments: see eza, gmz, iqw, izz
|
||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
|
Subtag: izm
|
||||||
|
Description: Kizamani
|
||||||
|
Added: 2023-03-17
|
||||||
|
%%
|
||||||
|
Type: language
|
||||||
Subtag: izr
|
Subtag: izr
|
||||||
Description: Izere
|
Description: Izere
|
||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
@@ -16922,6 +16966,8 @@ Type: language
|
|||||||
Subtag: kgm
|
Subtag: kgm
|
||||||
Description: Karipúna
|
Description: Karipúna
|
||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
|
Deprecated: 2023-03-17
|
||||||
|
Preferred-Value: plu
|
||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
Subtag: kgn
|
Subtag: kgn
|
||||||
@@ -18339,7 +18385,7 @@ Scope: collection
|
|||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
Subtag: krp
|
Subtag: krp
|
||||||
Description: Korop
|
Description: Durop
|
||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
@@ -18392,6 +18438,8 @@ Type: language
|
|||||||
Subtag: ksa
|
Subtag: ksa
|
||||||
Description: Shuwa-Zamani
|
Description: Shuwa-Zamani
|
||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
|
Deprecated: 2023-03-17
|
||||||
|
Comments: see izm, rsw
|
||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
Subtag: ksb
|
Subtag: ksb
|
||||||
@@ -19476,7 +19524,7 @@ Added: 2009-07-29
|
|||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
Subtag: lag
|
Subtag: lag
|
||||||
Description: Langi
|
Description: Rangi
|
||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
@@ -20011,6 +20059,12 @@ Description: Lengo
|
|||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
|
Subtag: lgs
|
||||||
|
Description: Guinea-Bissau Sign Language
|
||||||
|
Description: Língua Gestual Guineense
|
||||||
|
Added: 2023-03-17
|
||||||
|
%%
|
||||||
|
Type: language
|
||||||
Subtag: lgt
|
Subtag: lgt
|
||||||
Description: Pahi
|
Description: Pahi
|
||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
@@ -20655,6 +20709,7 @@ Added: 2009-07-29
|
|||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
Subtag: loh
|
Subtag: loh
|
||||||
|
Description: Laarim
|
||||||
Description: Narim
|
Description: Narim
|
||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
%%
|
%%
|
||||||
@@ -21129,6 +21184,11 @@ Description: Lavukaleve
|
|||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
|
Subtag: lvl
|
||||||
|
Description: Lwel
|
||||||
|
Added: 2023-03-17
|
||||||
|
%%
|
||||||
|
Type: language
|
||||||
Subtag: lvs
|
Subtag: lvs
|
||||||
Description: Standard Latvian
|
Description: Standard Latvian
|
||||||
Added: 2010-03-11
|
Added: 2010-03-11
|
||||||
@@ -26188,6 +26248,8 @@ Type: language
|
|||||||
Subtag: nom
|
Subtag: nom
|
||||||
Description: Nocamán
|
Description: Nocamán
|
||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
|
Deprecated: 2023-03-17
|
||||||
|
Preferred-Value: cbr
|
||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
Subtag: non
|
Subtag: non
|
||||||
@@ -26378,6 +26440,7 @@ Type: language
|
|||||||
Subtag: nrf
|
Subtag: nrf
|
||||||
Description: Jèrriais
|
Description: Jèrriais
|
||||||
Description: Guernésiais
|
Description: Guernésiais
|
||||||
|
Description: Sercquiais
|
||||||
Added: 2015-02-12
|
Added: 2015-02-12
|
||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
@@ -27087,6 +27150,11 @@ Description: Zeme Naga
|
|||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
|
Subtag: nzr
|
||||||
|
Description: Dir-Nyamzak-Mbarimi
|
||||||
|
Added: 2023-03-17
|
||||||
|
%%
|
||||||
|
Type: language
|
||||||
Subtag: nzs
|
Subtag: nzs
|
||||||
Description: New Zealand Sign Language
|
Description: New Zealand Sign Language
|
||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
@@ -28845,6 +28913,8 @@ Type: language
|
|||||||
Subtag: plj
|
Subtag: plj
|
||||||
Description: Polci
|
Description: Polci
|
||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
|
Deprecated: 2023-03-17
|
||||||
|
Comments: see nzr, pze, uly, zlu
|
||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
Subtag: plk
|
Subtag: plk
|
||||||
@@ -28970,6 +29040,8 @@ Type: language
|
|||||||
Subtag: pmk
|
Subtag: pmk
|
||||||
Description: Pamlico
|
Description: Pamlico
|
||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
|
Deprecated: 2023-03-17
|
||||||
|
Preferred-Value: crr
|
||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
Subtag: pml
|
Subtag: pml
|
||||||
@@ -29446,6 +29518,8 @@ Type: language
|
|||||||
Subtag: prp
|
Subtag: prp
|
||||||
Description: Parsi
|
Description: Parsi
|
||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
|
Deprecated: 2023-03-17
|
||||||
|
Preferred-Value: gu
|
||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
Subtag: prq
|
Subtag: prq
|
||||||
@@ -29857,6 +29931,11 @@ Description: Pyen
|
|||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
|
Subtag: pze
|
||||||
|
Description: Pesse
|
||||||
|
Added: 2023-03-17
|
||||||
|
%%
|
||||||
|
Type: language
|
||||||
Subtag: pzh
|
Subtag: pzh
|
||||||
Description: Pazeh
|
Description: Pazeh
|
||||||
Added: 2022-02-25
|
Added: 2022-02-25
|
||||||
@@ -30850,6 +30929,11 @@ Description: Ririo
|
|||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
|
Subtag: rrm
|
||||||
|
Description: Moriori
|
||||||
|
Added: 2024-03-04
|
||||||
|
%%
|
||||||
|
Type: language
|
||||||
Subtag: rro
|
Subtag: rro
|
||||||
Description: Waima
|
Description: Waima
|
||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
@@ -30873,7 +30957,7 @@ Deprecated: 2017-02-23
|
|||||||
Type: language
|
Type: language
|
||||||
Subtag: rsk
|
Subtag: rsk
|
||||||
Description: Ruthenian
|
Description: Ruthenian
|
||||||
Description: Rusyn
|
Description: Rusnak
|
||||||
Added: 2022-02-25
|
Added: 2022-02-25
|
||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
@@ -30892,6 +30976,11 @@ Description: Rwandan Sign Language
|
|||||||
Added: 2022-02-25
|
Added: 2022-02-25
|
||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
|
Subtag: rsw
|
||||||
|
Description: Rishiwa
|
||||||
|
Added: 2023-03-17
|
||||||
|
%%
|
||||||
|
Type: language
|
||||||
Subtag: rtc
|
Subtag: rtc
|
||||||
Description: Rungtu Chin
|
Description: Rungtu Chin
|
||||||
Added: 2012-08-12
|
Added: 2012-08-12
|
||||||
@@ -32328,6 +32417,7 @@ Type: language
|
|||||||
Subtag: slq
|
Subtag: slq
|
||||||
Description: Salchuq
|
Description: Salchuq
|
||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
|
Deprecated: 2023-03-17
|
||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
Subtag: slr
|
Subtag: slr
|
||||||
@@ -33685,6 +33775,8 @@ Type: language
|
|||||||
Subtag: szd
|
Subtag: szd
|
||||||
Description: Seru
|
Description: Seru
|
||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
|
Deprecated: 2023-03-17
|
||||||
|
Preferred-Value: umi
|
||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
Subtag: sze
|
Subtag: sze
|
||||||
@@ -35065,6 +35157,8 @@ Type: language
|
|||||||
Subtag: tmk
|
Subtag: tmk
|
||||||
Description: Northwestern Tamang
|
Description: Northwestern Tamang
|
||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
|
Deprecated: 2023-03-17
|
||||||
|
Preferred-Value: tdg
|
||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
Subtag: tml
|
Subtag: tml
|
||||||
@@ -35481,6 +35575,8 @@ Type: language
|
|||||||
Subtag: tpw
|
Subtag: tpw
|
||||||
Description: Tupí
|
Description: Tupí
|
||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
|
Deprecated: 2023-03-17
|
||||||
|
Preferred-Value: tpn
|
||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
Subtag: tpx
|
Subtag: tpx
|
||||||
@@ -36076,6 +36172,11 @@ Description: Te'un
|
|||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
|
Subtag: tvi
|
||||||
|
Description: Tulai
|
||||||
|
Added: 2023-03-17
|
||||||
|
%%
|
||||||
|
Type: language
|
||||||
Subtag: tvk
|
Subtag: tvk
|
||||||
Description: Southeast Ambrym
|
Description: Southeast Ambrym
|
||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
@@ -36727,6 +36828,11 @@ Description: Ulwa
|
|||||||
Added: 2010-03-11
|
Added: 2010-03-11
|
||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
|
Subtag: uly
|
||||||
|
Description: Buli
|
||||||
|
Added: 2023-03-17
|
||||||
|
%%
|
||||||
|
Type: language
|
||||||
Subtag: uma
|
Subtag: uma
|
||||||
Description: Umatilla
|
Description: Umatilla
|
||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
@@ -37318,6 +37424,11 @@ Description: Iduna
|
|||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
|
Subtag: vjk
|
||||||
|
Description: Bajjika
|
||||||
|
Added: 2023-03-17
|
||||||
|
%%
|
||||||
|
Type: language
|
||||||
Subtag: vka
|
Subtag: vka
|
||||||
Description: Kariyarra
|
Description: Kariyarra
|
||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
@@ -37567,6 +37678,12 @@ Description: Venezuelan Sign Language
|
|||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
|
Subtag: vsn
|
||||||
|
Description: Vedic Sanskrit
|
||||||
|
Added: 2024-03-04
|
||||||
|
Macrolanguage: sa
|
||||||
|
%%
|
||||||
|
Type: language
|
||||||
Subtag: vsv
|
Subtag: vsv
|
||||||
Description: Valencian Sign Language
|
Description: Valencian Sign Language
|
||||||
Description: Llengua de signes valenciana
|
Description: Llengua de signes valenciana
|
||||||
@@ -38316,7 +38433,7 @@ Added: 2009-07-29
|
|||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
Subtag: wnb
|
Subtag: wnb
|
||||||
Description: Wanambre
|
Description: Mokati
|
||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
@@ -38619,6 +38736,11 @@ Description: Wotapuri-Katarqalai
|
|||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
|
Subtag: wtb
|
||||||
|
Description: Matambwe
|
||||||
|
Added: 2023-03-17
|
||||||
|
%%
|
||||||
|
Type: language
|
||||||
Subtag: wtf
|
Subtag: wtf
|
||||||
Description: Watiwa
|
Description: Watiwa
|
||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
@@ -40085,6 +40207,8 @@ Type: language
|
|||||||
Subtag: xss
|
Subtag: xss
|
||||||
Description: Assan
|
Description: Assan
|
||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
|
Deprecated: 2023-03-17
|
||||||
|
Preferred-Value: zko
|
||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
Subtag: xsu
|
Subtag: xsu
|
||||||
@@ -40668,6 +40792,11 @@ Description: Chepya
|
|||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
|
Subtag: ycr
|
||||||
|
Description: Yilan Creole
|
||||||
|
Added: 2023-03-17
|
||||||
|
%%
|
||||||
|
Type: language
|
||||||
Subtag: yda
|
Subtag: yda
|
||||||
Description: Yanda
|
Description: Yanda
|
||||||
Added: 2013-09-10
|
Added: 2013-09-10
|
||||||
@@ -40947,6 +41076,11 @@ Description: Northern Yukaghir
|
|||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
|
Subtag: ykh
|
||||||
|
Description: Khamnigan Mongol
|
||||||
|
Added: 2023-03-17
|
||||||
|
%%
|
||||||
|
Type: language
|
||||||
Subtag: yki
|
Subtag: yki
|
||||||
Description: Yoke
|
Description: Yoke
|
||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
@@ -41921,6 +42055,11 @@ Added: 2009-07-29
|
|||||||
Macrolanguage: za
|
Macrolanguage: za
|
||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
|
Subtag: zem
|
||||||
|
Description: Zeem
|
||||||
|
Added: 2023-03-17
|
||||||
|
%%
|
||||||
|
Type: language
|
||||||
Subtag: zen
|
Subtag: zen
|
||||||
Description: Zenaga
|
Description: Zenaga
|
||||||
Added: 2005-10-16
|
Added: 2005-10-16
|
||||||
@@ -42047,6 +42186,8 @@ Type: language
|
|||||||
Subtag: zkb
|
Subtag: zkb
|
||||||
Description: Koibal
|
Description: Koibal
|
||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
|
Deprecated: 2023-03-17
|
||||||
|
Preferred-Value: kjh
|
||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
Subtag: zkd
|
Subtag: zkd
|
||||||
@@ -42150,6 +42291,11 @@ Added: 2009-07-29
|
|||||||
Scope: collection
|
Scope: collection
|
||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
|
Subtag: zlu
|
||||||
|
Description: Zul
|
||||||
|
Added: 2023-03-17
|
||||||
|
%%
|
||||||
|
Type: language
|
||||||
Subtag: zlw
|
Subtag: zlw
|
||||||
Description: West Slavic languages
|
Description: West Slavic languages
|
||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
@@ -42654,6 +42800,8 @@ Type: language
|
|||||||
Subtag: zua
|
Subtag: zua
|
||||||
Description: Zeem
|
Description: Zeem
|
||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
|
Deprecated: 2023-03-17
|
||||||
|
Comments: see cxh, dsk, dyr, tvi, zem
|
||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
Subtag: zuh
|
Subtag: zuh
|
||||||
@@ -42861,6 +43009,7 @@ Type: extlang
|
|||||||
Subtag: ajp
|
Subtag: ajp
|
||||||
Description: South Levantine Arabic
|
Description: South Levantine Arabic
|
||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
|
Deprecated: 2023-03-17
|
||||||
Preferred-Value: ajp
|
Preferred-Value: ajp
|
||||||
Prefix: ar
|
Prefix: ar
|
||||||
Macrolanguage: ar
|
Macrolanguage: ar
|
||||||
@@ -42874,7 +43023,7 @@ Prefix: sgn
|
|||||||
%%
|
%%
|
||||||
Type: extlang
|
Type: extlang
|
||||||
Subtag: apc
|
Subtag: apc
|
||||||
Description: North Levantine Arabic
|
Description: Levantine Arabic
|
||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
Preferred-Value: apc
|
Preferred-Value: apc
|
||||||
Prefix: ar
|
Prefix: ar
|
||||||
@@ -43695,6 +43844,14 @@ Prefix: ms
|
|||||||
Macrolanguage: ms
|
Macrolanguage: ms
|
||||||
%%
|
%%
|
||||||
Type: extlang
|
Type: extlang
|
||||||
|
Subtag: lgs
|
||||||
|
Description: Guinea-Bissau Sign Language
|
||||||
|
Description: Língua Gestual Guineense
|
||||||
|
Added: 2023-03-17
|
||||||
|
Preferred-Value: lgs
|
||||||
|
Prefix: sgn
|
||||||
|
%%
|
||||||
|
Type: extlang
|
||||||
Subtag: liw
|
Subtag: liw
|
||||||
Description: Col
|
Description: Col
|
||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
@@ -44747,6 +44904,11 @@ Description: Cherokee
|
|||||||
Added: 2005-10-16
|
Added: 2005-10-16
|
||||||
%%
|
%%
|
||||||
Type: script
|
Type: script
|
||||||
|
Subtag: Chis
|
||||||
|
Description: Chisoi
|
||||||
|
Added: 2023-10-16
|
||||||
|
%%
|
||||||
|
Type: script
|
||||||
Subtag: Chrs
|
Subtag: Chrs
|
||||||
Description: Chorasmian
|
Description: Chorasmian
|
||||||
Added: 2019-09-11
|
Added: 2019-09-11
|
||||||
@@ -44842,6 +45004,11 @@ Description: Ge'ez
|
|||||||
Added: 2005-10-16
|
Added: 2005-10-16
|
||||||
%%
|
%%
|
||||||
Type: script
|
Type: script
|
||||||
|
Subtag: Gara
|
||||||
|
Description: Garay
|
||||||
|
Added: 2023-10-16
|
||||||
|
%%
|
||||||
|
Type: script
|
||||||
Subtag: Geok
|
Subtag: Geok
|
||||||
Description: Khutsuri (Asomtavruli and Nuskhuri)
|
Description: Khutsuri (Asomtavruli and Nuskhuri)
|
||||||
Added: 2005-10-16
|
Added: 2005-10-16
|
||||||
@@ -44887,6 +45054,11 @@ Description: Gujarati
|
|||||||
Added: 2005-10-16
|
Added: 2005-10-16
|
||||||
%%
|
%%
|
||||||
Type: script
|
Type: script
|
||||||
|
Subtag: Gukh
|
||||||
|
Description: Gurung Khema
|
||||||
|
Added: 2023-10-16
|
||||||
|
%%
|
||||||
|
Type: script
|
||||||
Subtag: Guru
|
Subtag: Guru
|
||||||
Description: Gurmukhi
|
Description: Gurmukhi
|
||||||
Added: 2005-10-16
|
Added: 2005-10-16
|
||||||
@@ -45057,6 +45229,11 @@ Description: Kpelle
|
|||||||
Added: 2010-04-10
|
Added: 2010-04-10
|
||||||
%%
|
%%
|
||||||
Type: script
|
Type: script
|
||||||
|
Subtag: Krai
|
||||||
|
Description: Kirat Rai
|
||||||
|
Added: 2023-10-16
|
||||||
|
%%
|
||||||
|
Type: script
|
||||||
Subtag: Kthi
|
Subtag: Kthi
|
||||||
Description: Kaithi
|
Description: Kaithi
|
||||||
Added: 2007-12-05
|
Added: 2007-12-05
|
||||||
@@ -45304,6 +45481,11 @@ Description: Santali
|
|||||||
Added: 2006-07-21
|
Added: 2006-07-21
|
||||||
%%
|
%%
|
||||||
Type: script
|
Type: script
|
||||||
|
Subtag: Onao
|
||||||
|
Description: Ol Onal
|
||||||
|
Added: 2023-10-16
|
||||||
|
%%
|
||||||
|
Type: script
|
||||||
Subtag: Orkh
|
Subtag: Orkh
|
||||||
Description: Old Turkic
|
Description: Old Turkic
|
||||||
Description: Orkhon Runic
|
Description: Orkhon Runic
|
||||||
@@ -45483,6 +45665,11 @@ Description: Siddhamātṛkā
|
|||||||
Added: 2013-12-02
|
Added: 2013-12-02
|
||||||
%%
|
%%
|
||||||
Type: script
|
Type: script
|
||||||
|
Subtag: Sidt
|
||||||
|
Description: Sidetic
|
||||||
|
Added: 2023-10-16
|
||||||
|
%%
|
||||||
|
Type: script
|
||||||
Subtag: Sind
|
Subtag: Sind
|
||||||
Description: Khudawadi
|
Description: Khudawadi
|
||||||
Description: Sindhi
|
Description: Sindhi
|
||||||
@@ -45586,6 +45773,11 @@ Description: Tai Viet
|
|||||||
Added: 2007-12-05
|
Added: 2007-12-05
|
||||||
%%
|
%%
|
||||||
Type: script
|
Type: script
|
||||||
|
Subtag: Tayo
|
||||||
|
Description: Tai Yo
|
||||||
|
Added: 2023-10-16
|
||||||
|
%%
|
||||||
|
Type: script
|
||||||
Subtag: Telu
|
Subtag: Telu
|
||||||
Description: Telugu
|
Description: Telugu
|
||||||
Added: 2005-10-16
|
Added: 2005-10-16
|
||||||
@@ -45634,11 +45826,26 @@ Description: Tangsa
|
|||||||
Added: 2021-03-05
|
Added: 2021-03-05
|
||||||
%%
|
%%
|
||||||
Type: script
|
Type: script
|
||||||
|
Subtag: Todr
|
||||||
|
Description: Todhri
|
||||||
|
Added: 2023-10-16
|
||||||
|
%%
|
||||||
|
Type: script
|
||||||
|
Subtag: Tols
|
||||||
|
Description: Tolong Siki
|
||||||
|
Added: 2023-10-16
|
||||||
|
%%
|
||||||
|
Type: script
|
||||||
Subtag: Toto
|
Subtag: Toto
|
||||||
Description: Toto
|
Description: Toto
|
||||||
Added: 2020-05-12
|
Added: 2020-05-12
|
||||||
%%
|
%%
|
||||||
Type: script
|
Type: script
|
||||||
|
Subtag: Tutg
|
||||||
|
Description: Tulu-Tigalari
|
||||||
|
Added: 2023-10-16
|
||||||
|
%%
|
||||||
|
Type: script
|
||||||
Subtag: Ugar
|
Subtag: Ugar
|
||||||
Description: Ugaritic
|
Description: Ugaritic
|
||||||
Added: 2005-10-16
|
Added: 2005-10-16
|
||||||
@@ -46013,6 +46220,11 @@ Description: Clipperton Island
|
|||||||
Added: 2009-07-29
|
Added: 2009-07-29
|
||||||
%%
|
%%
|
||||||
Type: region
|
Type: region
|
||||||
|
Subtag: CQ
|
||||||
|
Description: Sark
|
||||||
|
Added: 2023-02-07
|
||||||
|
%%
|
||||||
|
Type: region
|
||||||
Subtag: CR
|
Subtag: CR
|
||||||
Description: Costa Rica
|
Description: Costa Rica
|
||||||
Added: 2005-10-16
|
Added: 2005-10-16
|
||||||
@@ -47371,6 +47583,13 @@ Comments: Aluku dialect of the "Busi Nenge Tongo" English-based Creole
|
|||||||
continuum in Eastern Suriname and Western French Guiana
|
continuum in Eastern Suriname and Western French Guiana
|
||||||
%%
|
%%
|
||||||
Type: variant
|
Type: variant
|
||||||
|
Subtag: anpezo
|
||||||
|
Description: Anpezo standard of Ladin
|
||||||
|
Added: 2024-03-04
|
||||||
|
Prefix: lld
|
||||||
|
Comments: Represents the standard written form of Ladin in Anpezo
|
||||||
|
%%
|
||||||
|
Type: variant
|
||||||
Subtag: ao1990
|
Subtag: ao1990
|
||||||
Description: Portuguese Language Orthographic Agreement of 1990 (Acordo
|
Description: Portuguese Language Orthographic Agreement of 1990 (Acordo
|
||||||
Ortográfico da Língua Portuguesa de 1990)
|
Ortográfico da Língua Portuguesa de 1990)
|
||||||
@@ -47474,6 +47693,23 @@ Added: 2010-07-28
|
|||||||
Prefix: sa
|
Prefix: sa
|
||||||
%%
|
%%
|
||||||
Type: variant
|
Type: variant
|
||||||
|
Subtag: bciav
|
||||||
|
Description: BCI Blissymbolics AV
|
||||||
|
Added: 2023-05-11
|
||||||
|
Prefix: zbl
|
||||||
|
Comments: Name given to a subset of the variety of Blissymbolics curated
|
||||||
|
by Blissymbolics Communication International, as represented by
|
||||||
|
entries in the BCI Authorized Vocabulary
|
||||||
|
%%
|
||||||
|
Type: variant
|
||||||
|
Subtag: bcizbl
|
||||||
|
Description: BCI Blissymbolics
|
||||||
|
Added: 2023-05-11
|
||||||
|
Prefix: zbl
|
||||||
|
Comments: Name given to the variety of Blissymbolics curated by
|
||||||
|
Blissymbolics Communication International
|
||||||
|
%%
|
||||||
|
Type: variant
|
||||||
Subtag: biscayan
|
Subtag: biscayan
|
||||||
Description: Biscayan dialect of Basque
|
Description: Biscayan dialect of Basque
|
||||||
Added: 2010-04-13
|
Added: 2010-04-13
|
||||||
@@ -47489,6 +47725,15 @@ Comments: The dialect of San Giorgio/Bila is one of the four major local
|
|||||||
dialects of Resian
|
dialects of Resian
|
||||||
%%
|
%%
|
||||||
Type: variant
|
Type: variant
|
||||||
|
Subtag: blasl
|
||||||
|
Description: Black American Sign Language dialect
|
||||||
|
Added: 2023-07-31
|
||||||
|
Prefix: ase
|
||||||
|
Prefix: sgn-ase
|
||||||
|
Comments: Black American Sign Language (BASL) or Black Sign Variation
|
||||||
|
(BSV) is a dialect of American Sign Language (ASL)
|
||||||
|
%%
|
||||||
|
Type: variant
|
||||||
Subtag: bohoric
|
Subtag: bohoric
|
||||||
Description: Slovene in Bohorič alphabet
|
Description: Slovene in Bohorič alphabet
|
||||||
Added: 2012-06-27
|
Added: 2012-06-27
|
||||||
@@ -47565,6 +47810,22 @@ Added: 2012-02-05
|
|||||||
Prefix: en
|
Prefix: en
|
||||||
%%
|
%%
|
||||||
Type: variant
|
Type: variant
|
||||||
|
Subtag: fascia
|
||||||
|
Description: Fascia standard of Ladin
|
||||||
|
Added: 2024-03-04
|
||||||
|
Prefix: lld
|
||||||
|
Comments: Represents the standard written form of Ladin in Fascia which
|
||||||
|
unified the three subvarieties Cazet, Brach and Moenat
|
||||||
|
%%
|
||||||
|
Type: variant
|
||||||
|
Subtag: fodom
|
||||||
|
Description: Fodom standard of Ladin
|
||||||
|
Added: 2024-03-04
|
||||||
|
Prefix: lld
|
||||||
|
Comments: Represents the standard written form of Ladin in Livinallongo
|
||||||
|
and Colle Santa Lucia
|
||||||
|
%%
|
||||||
|
Type: variant
|
||||||
Subtag: fonipa
|
Subtag: fonipa
|
||||||
Description: International Phonetic Alphabet
|
Description: International Phonetic Alphabet
|
||||||
Added: 2006-12-11
|
Added: 2006-12-11
|
||||||
@@ -47605,6 +47866,13 @@ Prefix: oc
|
|||||||
Comments: Occitan variant spoken in Gascony
|
Comments: Occitan variant spoken in Gascony
|
||||||
%%
|
%%
|
||||||
Type: variant
|
Type: variant
|
||||||
|
Subtag: gherd
|
||||||
|
Description: Gherdëina standard of Ladin
|
||||||
|
Added: 2024-03-04
|
||||||
|
Prefix: lld
|
||||||
|
Comments: Represents the standard written form of Ladin in Gherdëina
|
||||||
|
%%
|
||||||
|
Type: variant
|
||||||
Subtag: grclass
|
Subtag: grclass
|
||||||
Description: Classical Occitan orthography
|
Description: Classical Occitan orthography
|
||||||
Added: 2018-04-22
|
Added: 2018-04-22
|
||||||
@@ -47741,7 +48009,9 @@ Type: variant
|
|||||||
Subtag: laukika
|
Subtag: laukika
|
||||||
Description: Classical Sanskrit
|
Description: Classical Sanskrit
|
||||||
Added: 2010-07-28
|
Added: 2010-07-28
|
||||||
|
Deprecated: 2024-06-08
|
||||||
Prefix: sa
|
Prefix: sa
|
||||||
|
Comments: Preferred tag is cls
|
||||||
%%
|
%%
|
||||||
Type: variant
|
Type: variant
|
||||||
Subtag: lemosin
|
Subtag: lemosin
|
||||||
@@ -47906,6 +48176,15 @@ Comments: Peano’s Interlingua, created in 1903 by Giuseppe Peano as an
|
|||||||
Added: 2020-03-12
|
Added: 2020-03-12
|
||||||
%%
|
%%
|
||||||
Type: variant
|
Type: variant
|
||||||
|
Subtag: pehoeji
|
||||||
|
Description: Hokkien Vernacular Romanization System
|
||||||
|
Description: Pe̍h-ōe-jī orthography/romanization
|
||||||
|
Added: 2024-03-04
|
||||||
|
Prefix: nan-Latn
|
||||||
|
Comments: Modern Hokkien Vernacular Romanization System, evolved from
|
||||||
|
the New Dictionary in the Amoy by John Van Nest Talmage in 1894
|
||||||
|
%%
|
||||||
|
Type: variant
|
||||||
Subtag: petr1708
|
Subtag: petr1708
|
||||||
Description: Petrine orthography
|
Description: Petrine orthography
|
||||||
Added: 2010-10-10
|
Added: 2010-10-10
|
||||||
@@ -48040,6 +48319,16 @@ Added: 2021-07-17
|
|||||||
Prefix: da
|
Prefix: da
|
||||||
%%
|
%%
|
||||||
Type: variant
|
Type: variant
|
||||||
|
Subtag: tailo
|
||||||
|
Description: Taiwanese Hokkien Romanization System for Hokkien
|
||||||
|
languages
|
||||||
|
Description: Tâi-lô orthography/romanization
|
||||||
|
Added: 2024-03-04
|
||||||
|
Prefix: nan-Latn
|
||||||
|
Comments: Taiwanese Hokkien Romanization System (Tâi-lô) published in
|
||||||
|
2006 by the Taiwan Ministry of Education
|
||||||
|
%%
|
||||||
|
Type: variant
|
||||||
Subtag: tarask
|
Subtag: tarask
|
||||||
Description: Belarusian in Taraskievica orthography
|
Description: Belarusian in Taraskievica orthography
|
||||||
Added: 2007-04-27
|
Added: 2007-04-27
|
||||||
@@ -48098,9 +48387,20 @@ Type: variant
|
|||||||
Subtag: vaidika
|
Subtag: vaidika
|
||||||
Description: Vedic Sanskrit
|
Description: Vedic Sanskrit
|
||||||
Added: 2010-07-28
|
Added: 2010-07-28
|
||||||
|
Deprecated: 2024-06-08
|
||||||
Prefix: sa
|
Prefix: sa
|
||||||
Comments: The most ancient dialect of Sanskrit used in verse and prose
|
Comments: The most ancient dialect of Sanskrit used in verse and prose
|
||||||
composed until about the 4th century B.C.E.
|
composed until about the 4th century B.C.E.
|
||||||
|
Comments: Preferred tag is vsn
|
||||||
|
%%
|
||||||
|
Type: variant
|
||||||
|
Subtag: valbadia
|
||||||
|
Description: Val Badia standard of Ladin
|
||||||
|
Added: 2024-03-04
|
||||||
|
Prefix: lld
|
||||||
|
Comments: Represents the standard written form of Ladin in the Val
|
||||||
|
Badia, unifying the three variants Marô, Mesaval and Badiot spoken
|
||||||
|
in this valley
|
||||||
%%
|
%%
|
||||||
Type: variant
|
Type: variant
|
||||||
Subtag: valencia
|
Subtag: valencia
|
||||||
|
|||||||
@@ -21,4 +21,4 @@
|
|||||||
# or visit www.oracle.com if you need additional information or have any
|
# or visit www.oracle.com if you need additional information or have any
|
||||||
# questions.
|
# questions.
|
||||||
#
|
#
|
||||||
tzdata2024a
|
tzdata2024b
|
||||||
|
|||||||
@@ -126,17 +126,16 @@ Zone Africa/Algiers 0:12:12 - LMT 1891 Mar 16
|
|||||||
|
|
||||||
# Cape Verde / Cabo Verde
|
# Cape Verde / Cabo Verde
|
||||||
#
|
#
|
||||||
# From Paul Eggert (2018-02-16):
|
# From Tim Parenti (2024-07-01), per Paul Eggert (2018-02-16):
|
||||||
# Shanks gives 1907 for the transition to +02.
|
# For timestamps before independence, see commentary for Europe/Lisbon.
|
||||||
# For now, ignore that and follow the 1911-05-26 Portuguese decree
|
# Shanks gives 1907 instead for the transition to -02.
|
||||||
# (see Europe/Lisbon).
|
|
||||||
#
|
#
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Atlantic/Cape_Verde -1:34:04 - LMT 1912 Jan 01 2:00u # Praia
|
Zone Atlantic/Cape_Verde -1:34:04 - LMT 1912 Jan 01 2:00u # Praia
|
||||||
-2:00 - -02 1942 Sep
|
-2:00 - %z 1942 Sep
|
||||||
-2:00 1:00 -01 1945 Oct 15
|
-2:00 1:00 %z 1945 Oct 15
|
||||||
-2:00 - -02 1975 Nov 25 2:00
|
-2:00 - %z 1975 Nov 25 2:00
|
||||||
-1:00 - -01
|
-1:00 - %z
|
||||||
|
|
||||||
# Chad
|
# Chad
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
@@ -368,14 +367,12 @@ Zone Africa/Cairo 2:05:09 - LMT 1900 Oct
|
|||||||
|
|
||||||
# Guinea-Bissau
|
# Guinea-Bissau
|
||||||
#
|
#
|
||||||
# From Paul Eggert (2018-02-16):
|
# From Tim Parenti (2024-07-01), per Paul Eggert (2018-02-16):
|
||||||
# Shanks gives 1911-05-26 for the transition to WAT,
|
# For timestamps before independence, see commentary for Europe/Lisbon.
|
||||||
# evidently confusing the date of the Portuguese decree
|
|
||||||
# (see Europe/Lisbon) with the date that it took effect.
|
|
||||||
#
|
#
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Africa/Bissau -1:02:20 - LMT 1912 Jan 1 1:00u
|
Zone Africa/Bissau -1:02:20 - LMT 1912 Jan 1 1:00u
|
||||||
-1:00 - -01 1975
|
-1:00 - %z 1975
|
||||||
0:00 - GMT
|
0:00 - GMT
|
||||||
|
|
||||||
# Comoros
|
# Comoros
|
||||||
@@ -440,10 +437,10 @@ Zone Africa/Bissau -1:02:20 - LMT 1912 Jan 1 1:00u
|
|||||||
|
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Africa/Nairobi 2:27:16 - LMT 1908 May
|
Zone Africa/Nairobi 2:27:16 - LMT 1908 May
|
||||||
2:30 - +0230 1928 Jun 30 24:00
|
2:30 - %z 1928 Jun 30 24:00
|
||||||
3:00 - EAT 1930 Jan 4 24:00
|
3:00 - EAT 1930 Jan 4 24:00
|
||||||
2:30 - +0230 1936 Dec 31 24:00
|
2:30 - %z 1936 Dec 31 24:00
|
||||||
2:45 - +0245 1942 Jul 31 24:00
|
2:45 - %z 1942 Jul 31 24:00
|
||||||
3:00 - EAT
|
3:00 - EAT
|
||||||
|
|
||||||
# Liberia
|
# Liberia
|
||||||
@@ -614,7 +611,7 @@ Rule Mauritius 2008 only - Oct lastSun 2:00 1:00 -
|
|||||||
Rule Mauritius 2009 only - Mar lastSun 2:00 0 -
|
Rule Mauritius 2009 only - Mar lastSun 2:00 0 -
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Indian/Mauritius 3:50:00 - LMT 1907 # Port Louis
|
Zone Indian/Mauritius 3:50:00 - LMT 1907 # Port Louis
|
||||||
4:00 Mauritius +04/+05
|
4:00 Mauritius %z
|
||||||
# Agalega Is, Rodriguez
|
# Agalega Is, Rodriguez
|
||||||
# no information; probably like Indian/Mauritius
|
# no information; probably like Indian/Mauritius
|
||||||
|
|
||||||
@@ -1094,10 +1091,10 @@ Rule Morocco 2087 only - May 11 2:00 0 -
|
|||||||
|
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Africa/Casablanca -0:30:20 - LMT 1913 Oct 26
|
Zone Africa/Casablanca -0:30:20 - LMT 1913 Oct 26
|
||||||
0:00 Morocco +00/+01 1984 Mar 16
|
0:00 Morocco %z 1984 Mar 16
|
||||||
1:00 - +01 1986
|
1:00 - %z 1986
|
||||||
0:00 Morocco +00/+01 2018 Oct 28 3:00
|
0:00 Morocco %z 2018 Oct 28 3:00
|
||||||
1:00 Morocco +01/+00
|
1:00 Morocco %z
|
||||||
|
|
||||||
# Western Sahara
|
# Western Sahara
|
||||||
#
|
#
|
||||||
@@ -1111,9 +1108,9 @@ Zone Africa/Casablanca -0:30:20 - LMT 1913 Oct 26
|
|||||||
# since most of it was then controlled by Morocco.
|
# since most of it was then controlled by Morocco.
|
||||||
|
|
||||||
Zone Africa/El_Aaiun -0:52:48 - LMT 1934 Jan # El Aaiún
|
Zone Africa/El_Aaiun -0:52:48 - LMT 1934 Jan # El Aaiún
|
||||||
-1:00 - -01 1976 Apr 14
|
-1:00 - %z 1976 Apr 14
|
||||||
0:00 Morocco +00/+01 2018 Oct 28 3:00
|
0:00 Morocco %z 2018 Oct 28 3:00
|
||||||
1:00 Morocco +01/+00
|
1:00 Morocco %z
|
||||||
|
|
||||||
# Botswana
|
# Botswana
|
||||||
# Burundi
|
# Burundi
|
||||||
@@ -1124,13 +1121,27 @@ Zone Africa/El_Aaiun -0:52:48 - LMT 1934 Jan # El Aaiún
|
|||||||
# Zambia
|
# Zambia
|
||||||
# Zimbabwe
|
# Zimbabwe
|
||||||
#
|
#
|
||||||
# Shanks gives 1903-03-01 for the transition to CAT.
|
# From Tim Parenti (2024-07-01):
|
||||||
# Perhaps the 1911-05-26 Portuguese decree
|
# For timestamps before Mozambique's independence, see commentary for
|
||||||
# https://dre.pt/pdf1sdip/1911/05/12500/23132313.pdf
|
# Europe/Lisbon.
|
||||||
# merely made it official?
|
#
|
||||||
|
# From Paul Eggert (2024-05-24):
|
||||||
|
# The London Gazette, 1903-04-03, page 2245, says that
|
||||||
|
# as of 1903-03-03 a time ball at the port of Lourenço Marques
|
||||||
|
# (as Maputo was then called) was dropped daily at 13:00:00 LMT,
|
||||||
|
# corresponding to 22:49:41.7 GMT, so local time was +02:10:18.3.
|
||||||
|
# Conversely, the newspaper South Africa, 1909-02-09, page 321,
|
||||||
|
# says the port had just installed an apparatus that communicated
|
||||||
|
# "from the controlling clock in the new Observatory at Reuben Point ...
|
||||||
|
# exact mean South African time, i.e., 30 deg., or 2 hours East of Greenwich".
|
||||||
|
# Although Shanks gives 1903-03-01 for the transition to CAT,
|
||||||
|
# evidently the port transitioned to CAT after 1903-03-03 but before
|
||||||
|
# the Portuguese legal transition of 1912-01-01 (see Europe/Lisbon commentary).
|
||||||
|
# For lack of better info, list 1909 as the transition date.
|
||||||
#
|
#
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Africa/Maputo 2:10:20 - LMT 1903 Mar
|
#STDOFF 2:10:18.3
|
||||||
|
Zone Africa/Maputo 2:10:18 - LMT 1909
|
||||||
2:00 - CAT
|
2:00 - CAT
|
||||||
|
|
||||||
# Namibia
|
# Namibia
|
||||||
@@ -1195,7 +1206,7 @@ Rule Namibia 1995 2017 - Apr Sun>=1 2:00 -1:00 WAT
|
|||||||
|
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Africa/Windhoek 1:08:24 - LMT 1892 Feb 8
|
Zone Africa/Windhoek 1:08:24 - LMT 1892 Feb 8
|
||||||
1:30 - +0130 1903 Mar
|
1:30 - %z 1903 Mar
|
||||||
2:00 - SAST 1942 Sep 20 2:00
|
2:00 - SAST 1942 Sep 20 2:00
|
||||||
2:00 1:00 SAST 1943 Mar 21 2:00
|
2:00 1:00 SAST 1943 Mar 21 2:00
|
||||||
2:00 - SAST 1990 Mar 21 # independence
|
2:00 - SAST 1990 Mar 21 # independence
|
||||||
@@ -1283,7 +1294,7 @@ Zone Africa/Windhoek 1:08:24 - LMT 1892 Feb 8
|
|||||||
Zone Africa/Lagos 0:13:35 - LMT 1905 Jul 1
|
Zone Africa/Lagos 0:13:35 - LMT 1905 Jul 1
|
||||||
0:00 - GMT 1908 Jul 1
|
0:00 - GMT 1908 Jul 1
|
||||||
0:13:35 - LMT 1914 Jan 1
|
0:13:35 - LMT 1914 Jan 1
|
||||||
0:30 - +0030 1919 Sep 1
|
0:30 - %z 1919 Sep 1
|
||||||
1:00 - WAT
|
1:00 - WAT
|
||||||
|
|
||||||
# São Tomé and Príncipe
|
# São Tomé and Príncipe
|
||||||
|
|||||||
@@ -110,34 +110,34 @@
|
|||||||
|
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Antarctica/Casey 0 - -00 1969
|
Zone Antarctica/Casey 0 - -00 1969
|
||||||
8:00 - +08 2009 Oct 18 2:00
|
8:00 - %z 2009 Oct 18 2:00
|
||||||
11:00 - +11 2010 Mar 5 2:00
|
11:00 - %z 2010 Mar 5 2:00
|
||||||
8:00 - +08 2011 Oct 28 2:00
|
8:00 - %z 2011 Oct 28 2:00
|
||||||
11:00 - +11 2012 Feb 21 17:00u
|
11:00 - %z 2012 Feb 21 17:00u
|
||||||
8:00 - +08 2016 Oct 22
|
8:00 - %z 2016 Oct 22
|
||||||
11:00 - +11 2018 Mar 11 4:00
|
11:00 - %z 2018 Mar 11 4:00
|
||||||
8:00 - +08 2018 Oct 7 4:00
|
8:00 - %z 2018 Oct 7 4:00
|
||||||
11:00 - +11 2019 Mar 17 3:00
|
11:00 - %z 2019 Mar 17 3:00
|
||||||
8:00 - +08 2019 Oct 4 3:00
|
8:00 - %z 2019 Oct 4 3:00
|
||||||
11:00 - +11 2020 Mar 8 3:00
|
11:00 - %z 2020 Mar 8 3:00
|
||||||
8:00 - +08 2020 Oct 4 0:01
|
8:00 - %z 2020 Oct 4 0:01
|
||||||
11:00 - +11 2021 Mar 14 0:00
|
11:00 - %z 2021 Mar 14 0:00
|
||||||
8:00 - +08 2021 Oct 3 0:01
|
8:00 - %z 2021 Oct 3 0:01
|
||||||
11:00 - +11 2022 Mar 13 0:00
|
11:00 - %z 2022 Mar 13 0:00
|
||||||
8:00 - +08 2022 Oct 2 0:01
|
8:00 - %z 2022 Oct 2 0:01
|
||||||
11:00 - +11 2023 Mar 9 3:00
|
11:00 - %z 2023 Mar 9 3:00
|
||||||
8:00 - +08
|
8:00 - %z
|
||||||
Zone Antarctica/Davis 0 - -00 1957 Jan 13
|
Zone Antarctica/Davis 0 - -00 1957 Jan 13
|
||||||
7:00 - +07 1964 Nov
|
7:00 - %z 1964 Nov
|
||||||
0 - -00 1969 Feb
|
0 - -00 1969 Feb
|
||||||
7:00 - +07 2009 Oct 18 2:00
|
7:00 - %z 2009 Oct 18 2:00
|
||||||
5:00 - +05 2010 Mar 10 20:00u
|
5:00 - %z 2010 Mar 10 20:00u
|
||||||
7:00 - +07 2011 Oct 28 2:00
|
7:00 - %z 2011 Oct 28 2:00
|
||||||
5:00 - +05 2012 Feb 21 20:00u
|
5:00 - %z 2012 Feb 21 20:00u
|
||||||
7:00 - +07
|
7:00 - %z
|
||||||
Zone Antarctica/Mawson 0 - -00 1954 Feb 13
|
Zone Antarctica/Mawson 0 - -00 1954 Feb 13
|
||||||
6:00 - +06 2009 Oct 18 2:00
|
6:00 - %z 2009 Oct 18 2:00
|
||||||
5:00 - +05
|
5:00 - %z
|
||||||
# References:
|
# References:
|
||||||
# Casey Weather (1998-02-26)
|
# Casey Weather (1998-02-26)
|
||||||
# http://www.antdiv.gov.au/aad/exop/sfo/casey/casey_aws.html
|
# http://www.antdiv.gov.au/aad/exop/sfo/casey/casey_aws.html
|
||||||
@@ -313,10 +313,10 @@ Zone Antarctica/Troll 0 - -00 2005 Feb 12
|
|||||||
|
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Antarctica/Vostok 0 - -00 1957 Dec 16
|
Zone Antarctica/Vostok 0 - -00 1957 Dec 16
|
||||||
7:00 - +07 1994 Feb
|
7:00 - %z 1994 Feb
|
||||||
0 - -00 1994 Nov
|
0 - -00 1994 Nov
|
||||||
7:00 - +07 2023 Dec 18 2:00
|
7:00 - %z 2023 Dec 18 2:00
|
||||||
5:00 - +05
|
5:00 - %z
|
||||||
|
|
||||||
# S Africa - year-round bases
|
# S Africa - year-round bases
|
||||||
# Marion Island, -4653+03752
|
# Marion Island, -4653+03752
|
||||||
@@ -349,7 +349,7 @@ Zone Antarctica/Vostok 0 - -00 1957 Dec 16
|
|||||||
#
|
#
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Antarctica/Rothera 0 - -00 1976 Dec 1
|
Zone Antarctica/Rothera 0 - -00 1976 Dec 1
|
||||||
-3:00 - -03
|
-3:00 - %z
|
||||||
|
|
||||||
# Uruguay - year round base
|
# Uruguay - year round base
|
||||||
# Artigas, King George Island, -621104-0585107
|
# Artigas, King George Island, -621104-0585107
|
||||||
|
|||||||
@@ -106,8 +106,8 @@ Rule RussiaAsia 1996 2010 - Oct lastSun 2:00s 0 -
|
|||||||
# Afghanistan
|
# Afghanistan
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Asia/Kabul 4:36:48 - LMT 1890
|
Zone Asia/Kabul 4:36:48 - LMT 1890
|
||||||
4:00 - +04 1945
|
4:00 - %z 1945
|
||||||
4:30 - +0430
|
4:30 - %z
|
||||||
|
|
||||||
# Armenia
|
# Armenia
|
||||||
# From Paul Eggert (2006-03-22):
|
# From Paul Eggert (2006-03-22):
|
||||||
@@ -139,12 +139,12 @@ Rule Armenia 2011 only - Mar lastSun 2:00s 1:00 -
|
|||||||
Rule Armenia 2011 only - Oct lastSun 2:00s 0 -
|
Rule Armenia 2011 only - Oct lastSun 2:00s 0 -
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Asia/Yerevan 2:58:00 - LMT 1924 May 2
|
Zone Asia/Yerevan 2:58:00 - LMT 1924 May 2
|
||||||
3:00 - +03 1957 Mar
|
3:00 - %z 1957 Mar
|
||||||
4:00 RussiaAsia +04/+05 1991 Mar 31 2:00s
|
4:00 RussiaAsia %z 1991 Mar 31 2:00s
|
||||||
3:00 RussiaAsia +03/+04 1995 Sep 24 2:00s
|
3:00 RussiaAsia %z 1995 Sep 24 2:00s
|
||||||
4:00 - +04 1997
|
4:00 - %z 1997
|
||||||
4:00 RussiaAsia +04/+05 2011
|
4:00 RussiaAsia %z 2011
|
||||||
4:00 Armenia +04/+05
|
4:00 Armenia %z
|
||||||
|
|
||||||
# Azerbaijan
|
# Azerbaijan
|
||||||
|
|
||||||
@@ -165,12 +165,12 @@ Rule Azer 1997 2015 - Mar lastSun 4:00 1:00 -
|
|||||||
Rule Azer 1997 2015 - Oct lastSun 5:00 0 -
|
Rule Azer 1997 2015 - Oct lastSun 5:00 0 -
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Asia/Baku 3:19:24 - LMT 1924 May 2
|
Zone Asia/Baku 3:19:24 - LMT 1924 May 2
|
||||||
3:00 - +03 1957 Mar
|
3:00 - %z 1957 Mar
|
||||||
4:00 RussiaAsia +04/+05 1991 Mar 31 2:00s
|
4:00 RussiaAsia %z 1991 Mar 31 2:00s
|
||||||
3:00 RussiaAsia +03/+04 1992 Sep lastSun 2:00s
|
3:00 RussiaAsia %z 1992 Sep lastSun 2:00s
|
||||||
4:00 - +04 1996
|
4:00 - %z 1996
|
||||||
4:00 EUAsia +04/+05 1997
|
4:00 EUAsia %z 1997
|
||||||
4:00 Azer +04/+05
|
4:00 Azer %z
|
||||||
|
|
||||||
# Bangladesh
|
# Bangladesh
|
||||||
# From Alexander Krivenyshev (2009-05-13):
|
# From Alexander Krivenyshev (2009-05-13):
|
||||||
@@ -251,17 +251,17 @@ Rule Dhaka 2009 only - Dec 31 24:00 0 -
|
|||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Asia/Dhaka 6:01:40 - LMT 1890
|
Zone Asia/Dhaka 6:01:40 - LMT 1890
|
||||||
5:53:20 - HMT 1941 Oct # Howrah Mean Time?
|
5:53:20 - HMT 1941 Oct # Howrah Mean Time?
|
||||||
6:30 - +0630 1942 May 15
|
6:30 - %z 1942 May 15
|
||||||
5:30 - +0530 1942 Sep
|
5:30 - %z 1942 Sep
|
||||||
6:30 - +0630 1951 Sep 30
|
6:30 - %z 1951 Sep 30
|
||||||
6:00 - +06 2009
|
6:00 - %z 2009
|
||||||
6:00 Dhaka +06/+07
|
6:00 Dhaka %z
|
||||||
|
|
||||||
# Bhutan
|
# Bhutan
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Asia/Thimphu 5:58:36 - LMT 1947 Aug 15 # or Thimbu
|
Zone Asia/Thimphu 5:58:36 - LMT 1947 Aug 15 # or Thimbu
|
||||||
5:30 - +0530 1987 Oct
|
5:30 - %z 1987 Oct
|
||||||
6:00 - +06
|
6:00 - %z
|
||||||
|
|
||||||
# British Indian Ocean Territory
|
# British Indian Ocean Territory
|
||||||
# Whitman and the 1995 CIA time zone map say 5:00, but the
|
# Whitman and the 1995 CIA time zone map say 5:00, but the
|
||||||
@@ -271,8 +271,8 @@ Zone Asia/Thimphu 5:58:36 - LMT 1947 Aug 15 # or Thimbu
|
|||||||
# then contained the Chagos Archipelago).
|
# then contained the Chagos Archipelago).
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Indian/Chagos 4:49:40 - LMT 1907
|
Zone Indian/Chagos 4:49:40 - LMT 1907
|
||||||
5:00 - +05 1996
|
5:00 - %z 1996
|
||||||
6:00 - +06
|
6:00 - %z
|
||||||
|
|
||||||
# Cocos (Keeling) Islands
|
# Cocos (Keeling) Islands
|
||||||
# Myanmar (Burma)
|
# Myanmar (Burma)
|
||||||
@@ -288,9 +288,9 @@ Zone Indian/Chagos 4:49:40 - LMT 1907
|
|||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Asia/Yangon 6:24:47 - LMT 1880 # or Rangoon
|
Zone Asia/Yangon 6:24:47 - LMT 1880 # or Rangoon
|
||||||
6:24:47 - RMT 1920 # Rangoon local time
|
6:24:47 - RMT 1920 # Rangoon local time
|
||||||
6:30 - +0630 1942 May
|
6:30 - %z 1942 May
|
||||||
9:00 - +09 1945 May 3
|
9:00 - %z 1945 May 3
|
||||||
6:30 - +0630
|
6:30 - %z
|
||||||
|
|
||||||
# China
|
# China
|
||||||
|
|
||||||
@@ -679,7 +679,7 @@ Zone Asia/Shanghai 8:05:43 - LMT 1901
|
|||||||
# Xinjiang time, used by many in western China; represented by Ürümqi / Ürümchi
|
# Xinjiang time, used by many in western China; represented by Ürümqi / Ürümchi
|
||||||
# / Wulumuqi. (Please use Asia/Shanghai if you prefer Beijing time.)
|
# / Wulumuqi. (Please use Asia/Shanghai if you prefer Beijing time.)
|
||||||
Zone Asia/Urumqi 5:50:20 - LMT 1928
|
Zone Asia/Urumqi 5:50:20 - LMT 1928
|
||||||
6:00 - +06
|
6:00 - %z
|
||||||
|
|
||||||
# Hong Kong
|
# Hong Kong
|
||||||
|
|
||||||
@@ -1137,7 +1137,7 @@ Rule Macau 1979 only - Oct Sun>=16 03:30 0 S
|
|||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Asia/Macau 7:34:10 - LMT 1904 Oct 30
|
Zone Asia/Macau 7:34:10 - LMT 1904 Oct 30
|
||||||
8:00 - CST 1941 Dec 21 23:00
|
8:00 - CST 1941 Dec 21 23:00
|
||||||
9:00 Macau +09/+10 1945 Sep 30 24:00
|
9:00 Macau %z 1945 Sep 30 24:00
|
||||||
8:00 Macau C%sT
|
8:00 Macau C%sT
|
||||||
|
|
||||||
|
|
||||||
@@ -1180,7 +1180,7 @@ Zone Asia/Nicosia 2:13:28 - LMT 1921 Nov 14
|
|||||||
Zone Asia/Famagusta 2:15:48 - LMT 1921 Nov 14
|
Zone Asia/Famagusta 2:15:48 - LMT 1921 Nov 14
|
||||||
2:00 Cyprus EE%sT 1998 Sep
|
2:00 Cyprus EE%sT 1998 Sep
|
||||||
2:00 EUAsia EE%sT 2016 Sep 8
|
2:00 EUAsia EE%sT 2016 Sep 8
|
||||||
3:00 - +03 2017 Oct 29 1:00u
|
3:00 - %z 2017 Oct 29 1:00u
|
||||||
2:00 EUAsia EE%sT
|
2:00 EUAsia EE%sT
|
||||||
|
|
||||||
# Georgia
|
# Georgia
|
||||||
@@ -1221,18 +1221,25 @@ Zone Asia/Famagusta 2:15:48 - LMT 1921 Nov 14
|
|||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Asia/Tbilisi 2:59:11 - LMT 1880
|
Zone Asia/Tbilisi 2:59:11 - LMT 1880
|
||||||
2:59:11 - TBMT 1924 May 2 # Tbilisi Mean Time
|
2:59:11 - TBMT 1924 May 2 # Tbilisi Mean Time
|
||||||
3:00 - +03 1957 Mar
|
3:00 - %z 1957 Mar
|
||||||
4:00 RussiaAsia +04/+05 1991 Mar 31 2:00s
|
4:00 RussiaAsia %z 1991 Mar 31 2:00s
|
||||||
3:00 RussiaAsia +03/+04 1992
|
3:00 RussiaAsia %z 1992
|
||||||
3:00 E-EurAsia +03/+04 1994 Sep lastSun
|
3:00 E-EurAsia %z 1994 Sep lastSun
|
||||||
4:00 E-EurAsia +04/+05 1996 Oct lastSun
|
4:00 E-EurAsia %z 1996 Oct lastSun
|
||||||
4:00 1:00 +05 1997 Mar lastSun
|
4:00 1:00 %z 1997 Mar lastSun
|
||||||
4:00 E-EurAsia +04/+05 2004 Jun 27
|
4:00 E-EurAsia %z 2004 Jun 27
|
||||||
3:00 RussiaAsia +03/+04 2005 Mar lastSun 2:00
|
3:00 RussiaAsia %z 2005 Mar lastSun 2:00
|
||||||
4:00 - +04
|
4:00 - %z
|
||||||
|
|
||||||
# East Timor
|
# East Timor
|
||||||
|
|
||||||
|
# From Tim Parenti (2024-07-01):
|
||||||
|
# The 1912-01-01 transition occurred at 00:00 new time, per the 1911-05-24
|
||||||
|
# Portuguese decree (see Europe/Lisbon). A provision in article 5(c) of the
|
||||||
|
# decree prescribed that Timor "will keep counting time in harmony with
|
||||||
|
# neighboring foreign colonies, [for] as long as they do not adopt the time
|
||||||
|
# that belongs to them in [the Washington Convention] system."
|
||||||
|
|
||||||
# See Indonesia for the 1945 transition.
|
# See Indonesia for the 1945 transition.
|
||||||
|
|
||||||
# From João Carrascalão, brother of the former governor of East Timor, in
|
# From João Carrascalão, brother of the former governor of East Timor, in
|
||||||
@@ -1256,11 +1263,11 @@ Zone Asia/Tbilisi 2:59:11 - LMT 1880
|
|||||||
# midnight on Saturday, September 16.
|
# midnight on Saturday, September 16.
|
||||||
|
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Asia/Dili 8:22:20 - LMT 1912 Jan 1
|
Zone Asia/Dili 8:22:20 - LMT 1911 Dec 31 16:00u
|
||||||
8:00 - +08 1942 Feb 21 23:00
|
8:00 - %z 1942 Feb 21 23:00
|
||||||
9:00 - +09 1976 May 3
|
9:00 - %z 1976 May 3
|
||||||
8:00 - +08 2000 Sep 17 0:00
|
8:00 - %z 2000 Sep 17 0:00
|
||||||
9:00 - +09
|
9:00 - %z
|
||||||
|
|
||||||
# India
|
# India
|
||||||
|
|
||||||
@@ -1326,9 +1333,9 @@ Zone Asia/Kolkata 5:53:28 - LMT 1854 Jun 28 # Kolkata
|
|||||||
5:53:20 - HMT 1870 # Howrah Mean Time?
|
5:53:20 - HMT 1870 # Howrah Mean Time?
|
||||||
5:21:10 - MMT 1906 Jan 1 # Madras local time
|
5:21:10 - MMT 1906 Jan 1 # Madras local time
|
||||||
5:30 - IST 1941 Oct
|
5:30 - IST 1941 Oct
|
||||||
5:30 1:00 +0630 1942 May 15
|
5:30 1:00 %z 1942 May 15
|
||||||
5:30 - IST 1942 Sep
|
5:30 - IST 1942 Sep
|
||||||
5:30 1:00 +0630 1945 Oct 15
|
5:30 1:00 %z 1945 Oct 15
|
||||||
5:30 - IST
|
5:30 - IST
|
||||||
# Since 1970 the following are like Asia/Kolkata:
|
# Since 1970 the following are like Asia/Kolkata:
|
||||||
# Andaman Is
|
# Andaman Is
|
||||||
@@ -1380,33 +1387,33 @@ Zone Asia/Jakarta 7:07:12 - LMT 1867 Aug 10
|
|||||||
# Shanks & Pottenger say the next transition was at 1924 Jan 1 0:13,
|
# Shanks & Pottenger say the next transition was at 1924 Jan 1 0:13,
|
||||||
# but this must be a typo.
|
# but this must be a typo.
|
||||||
7:07:12 - BMT 1923 Dec 31 16:40u # Batavia
|
7:07:12 - BMT 1923 Dec 31 16:40u # Batavia
|
||||||
7:20 - +0720 1932 Nov
|
7:20 - %z 1932 Nov
|
||||||
7:30 - +0730 1942 Mar 23
|
7:30 - %z 1942 Mar 23
|
||||||
9:00 - +09 1945 Sep 23
|
9:00 - %z 1945 Sep 23
|
||||||
7:30 - +0730 1948 May
|
7:30 - %z 1948 May
|
||||||
8:00 - +08 1950 May
|
8:00 - %z 1950 May
|
||||||
7:30 - +0730 1964
|
7:30 - %z 1964
|
||||||
7:00 - WIB
|
7:00 - WIB
|
||||||
# west and central Borneo
|
# west and central Borneo
|
||||||
Zone Asia/Pontianak 7:17:20 - LMT 1908 May
|
Zone Asia/Pontianak 7:17:20 - LMT 1908 May
|
||||||
7:17:20 - PMT 1932 Nov # Pontianak MT
|
7:17:20 - PMT 1932 Nov # Pontianak MT
|
||||||
7:30 - +0730 1942 Jan 29
|
7:30 - %z 1942 Jan 29
|
||||||
9:00 - +09 1945 Sep 23
|
9:00 - %z 1945 Sep 23
|
||||||
7:30 - +0730 1948 May
|
7:30 - %z 1948 May
|
||||||
8:00 - +08 1950 May
|
8:00 - %z 1950 May
|
||||||
7:30 - +0730 1964
|
7:30 - %z 1964
|
||||||
8:00 - WITA 1988 Jan 1
|
8:00 - WITA 1988 Jan 1
|
||||||
7:00 - WIB
|
7:00 - WIB
|
||||||
# Sulawesi, Lesser Sundas, east and south Borneo
|
# Sulawesi, Lesser Sundas, east and south Borneo
|
||||||
Zone Asia/Makassar 7:57:36 - LMT 1920
|
Zone Asia/Makassar 7:57:36 - LMT 1920
|
||||||
7:57:36 - MMT 1932 Nov # Macassar MT
|
7:57:36 - MMT 1932 Nov # Macassar MT
|
||||||
8:00 - +08 1942 Feb 9
|
8:00 - %z 1942 Feb 9
|
||||||
9:00 - +09 1945 Sep 23
|
9:00 - %z 1945 Sep 23
|
||||||
8:00 - WITA
|
8:00 - WITA
|
||||||
# Maluku Islands, West Papua, Papua
|
# Maluku Islands, West Papua, Papua
|
||||||
Zone Asia/Jayapura 9:22:48 - LMT 1932 Nov
|
Zone Asia/Jayapura 9:22:48 - LMT 1932 Nov
|
||||||
9:00 - +09 1944 Sep 1
|
9:00 - %z 1944 Sep 1
|
||||||
9:30 - +0930 1964
|
9:30 - %z 1964
|
||||||
9:00 - WIT
|
9:00 - WIT
|
||||||
|
|
||||||
# Iran
|
# Iran
|
||||||
@@ -1642,9 +1649,9 @@ Rule Iran 2021 2022 - Sep 21 24:00 0 -
|
|||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Asia/Tehran 3:25:44 - LMT 1916
|
Zone Asia/Tehran 3:25:44 - LMT 1916
|
||||||
3:25:44 - TMT 1935 Jun 13 # Tehran Mean Time
|
3:25:44 - TMT 1935 Jun 13 # Tehran Mean Time
|
||||||
3:30 Iran +0330/+0430 1977 Oct 20 24:00
|
3:30 Iran %z 1977 Oct 20 24:00
|
||||||
4:00 Iran +04/+05 1979
|
4:00 Iran %z 1979
|
||||||
3:30 Iran +0330/+0430
|
3:30 Iran %z
|
||||||
|
|
||||||
|
|
||||||
# Iraq
|
# Iraq
|
||||||
@@ -1687,8 +1694,8 @@ Rule Iraq 1991 2007 - Oct 1 3:00s 0 -
|
|||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Asia/Baghdad 2:57:40 - LMT 1890
|
Zone Asia/Baghdad 2:57:40 - LMT 1890
|
||||||
2:57:36 - BMT 1918 # Baghdad Mean Time?
|
2:57:36 - BMT 1918 # Baghdad Mean Time?
|
||||||
3:00 - +03 1982 May
|
3:00 - %z 1982 May
|
||||||
3:00 Iraq +03/+04
|
3:00 Iraq %z
|
||||||
|
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -2285,7 +2292,7 @@ Rule Jordan 2022 only - Feb lastThu 24:00 1:00 S
|
|||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Asia/Amman 2:23:44 - LMT 1931
|
Zone Asia/Amman 2:23:44 - LMT 1931
|
||||||
2:00 Jordan EE%sT 2022 Oct 28 0:00s
|
2:00 Jordan EE%sT 2022 Oct 28 0:00s
|
||||||
3:00 - +03
|
3:00 - %z
|
||||||
|
|
||||||
|
|
||||||
# Kazakhstan
|
# Kazakhstan
|
||||||
@@ -2496,88 +2503,88 @@ Zone Asia/Amman 2:23:44 - LMT 1931
|
|||||||
# Almaty (formerly Alma-Ata), representing most locations in Kazakhstan
|
# Almaty (formerly Alma-Ata), representing most locations in Kazakhstan
|
||||||
# This includes Abai/Abay (ISO 3166-2 code KZ-10), Aqmola/Akmola (KZ-11),
|
# This includes Abai/Abay (ISO 3166-2 code KZ-10), Aqmola/Akmola (KZ-11),
|
||||||
# Almaty (KZ-19), Almaty city (KZ-75), Astana city (KZ-71),
|
# Almaty (KZ-19), Almaty city (KZ-75), Astana city (KZ-71),
|
||||||
# East Kazkhstan (KZ-63), Jambyl/Zhambyl (KZ-31), Jetisu/Zhetysu (KZ-33),
|
# East Kazakhstan (KZ-63), Jambyl/Zhambyl (KZ-31), Jetisu/Zhetysu (KZ-33),
|
||||||
# Karaganda (KZ-35), North Kazakhstan (KZ-59), Pavlodar (KZ-55),
|
# Karaganda (KZ-35), North Kazakhstan (KZ-59), Pavlodar (KZ-55),
|
||||||
# Shyumkent city (KZ-79), Turkistan (KZ-61), and Ulytau (KZ-62).
|
# Shymkent city (KZ-79), Turkistan (KZ-61), and Ulytau (KZ-62).
|
||||||
Zone Asia/Almaty 5:07:48 - LMT 1924 May 2 # or Alma-Ata
|
Zone Asia/Almaty 5:07:48 - LMT 1924 May 2 # or Alma-Ata
|
||||||
5:00 - +05 1930 Jun 21
|
5:00 - %z 1930 Jun 21
|
||||||
6:00 RussiaAsia +06/+07 1991 Mar 31 2:00s
|
6:00 RussiaAsia %z 1991 Mar 31 2:00s
|
||||||
5:00 RussiaAsia +05/+06 1992 Jan 19 2:00s
|
5:00 RussiaAsia %z 1992 Jan 19 2:00s
|
||||||
6:00 RussiaAsia +06/+07 2004 Oct 31 2:00s
|
6:00 RussiaAsia %z 2004 Oct 31 2:00s
|
||||||
6:00 - +06 2024 Mar 1 0:00
|
6:00 - %z 2024 Mar 1 0:00
|
||||||
5:00 - +05
|
5:00 - %z
|
||||||
# Qyzylorda (aka Kyzylorda, Kizilorda, Kzyl-Orda, etc.) (KZ-43)
|
# Qyzylorda (aka Kyzylorda, Kizilorda, Kzyl-Orda, etc.) (KZ-43)
|
||||||
Zone Asia/Qyzylorda 4:21:52 - LMT 1924 May 2
|
Zone Asia/Qyzylorda 4:21:52 - LMT 1924 May 2
|
||||||
4:00 - +04 1930 Jun 21
|
4:00 - %z 1930 Jun 21
|
||||||
5:00 - +05 1981 Apr 1
|
5:00 - %z 1981 Apr 1
|
||||||
5:00 1:00 +06 1981 Oct 1
|
5:00 1:00 %z 1981 Oct 1
|
||||||
6:00 - +06 1982 Apr 1
|
6:00 - %z 1982 Apr 1
|
||||||
5:00 RussiaAsia +05/+06 1991 Mar 31 2:00s
|
5:00 RussiaAsia %z 1991 Mar 31 2:00s
|
||||||
4:00 RussiaAsia +04/+05 1991 Sep 29 2:00s
|
4:00 RussiaAsia %z 1991 Sep 29 2:00s
|
||||||
5:00 RussiaAsia +05/+06 1992 Jan 19 2:00s
|
5:00 RussiaAsia %z 1992 Jan 19 2:00s
|
||||||
6:00 RussiaAsia +06/+07 1992 Mar 29 2:00s
|
6:00 RussiaAsia %z 1992 Mar 29 2:00s
|
||||||
5:00 RussiaAsia +05/+06 2004 Oct 31 2:00s
|
5:00 RussiaAsia %z 2004 Oct 31 2:00s
|
||||||
6:00 - +06 2018 Dec 21 0:00
|
6:00 - %z 2018 Dec 21 0:00
|
||||||
5:00 - +05
|
5:00 - %z
|
||||||
# Qostanay (aka Kostanay, Kustanay) (KZ-39)
|
# Qostanay (aka Kostanay, Kustanay) (KZ-39)
|
||||||
# The 1991/2 rules are unclear partly because of the 1997 Turgai
|
# The 1991/2 rules are unclear partly because of the 1997 Turgai
|
||||||
# reorganization.
|
# reorganization.
|
||||||
Zone Asia/Qostanay 4:14:28 - LMT 1924 May 2
|
Zone Asia/Qostanay 4:14:28 - LMT 1924 May 2
|
||||||
4:00 - +04 1930 Jun 21
|
4:00 - %z 1930 Jun 21
|
||||||
5:00 - +05 1981 Apr 1
|
5:00 - %z 1981 Apr 1
|
||||||
5:00 1:00 +06 1981 Oct 1
|
5:00 1:00 %z 1981 Oct 1
|
||||||
6:00 - +06 1982 Apr 1
|
6:00 - %z 1982 Apr 1
|
||||||
5:00 RussiaAsia +05/+06 1991 Mar 31 2:00s
|
5:00 RussiaAsia %z 1991 Mar 31 2:00s
|
||||||
4:00 RussiaAsia +04/+05 1992 Jan 19 2:00s
|
4:00 RussiaAsia %z 1992 Jan 19 2:00s
|
||||||
5:00 RussiaAsia +05/+06 2004 Oct 31 2:00s
|
5:00 RussiaAsia %z 2004 Oct 31 2:00s
|
||||||
6:00 - +06 2024 Mar 1 0:00
|
6:00 - %z 2024 Mar 1 0:00
|
||||||
5:00 - +05
|
5:00 - %z
|
||||||
# Aqtöbe (aka Aktobe, formerly Aktyubinsk) (KZ-15)
|
# Aqtöbe (aka Aktobe, formerly Aktyubinsk) (KZ-15)
|
||||||
Zone Asia/Aqtobe 3:48:40 - LMT 1924 May 2
|
Zone Asia/Aqtobe 3:48:40 - LMT 1924 May 2
|
||||||
4:00 - +04 1930 Jun 21
|
4:00 - %z 1930 Jun 21
|
||||||
5:00 - +05 1981 Apr 1
|
5:00 - %z 1981 Apr 1
|
||||||
5:00 1:00 +06 1981 Oct 1
|
5:00 1:00 %z 1981 Oct 1
|
||||||
6:00 - +06 1982 Apr 1
|
6:00 - %z 1982 Apr 1
|
||||||
5:00 RussiaAsia +05/+06 1991 Mar 31 2:00s
|
5:00 RussiaAsia %z 1991 Mar 31 2:00s
|
||||||
4:00 RussiaAsia +04/+05 1992 Jan 19 2:00s
|
4:00 RussiaAsia %z 1992 Jan 19 2:00s
|
||||||
5:00 RussiaAsia +05/+06 2004 Oct 31 2:00s
|
5:00 RussiaAsia %z 2004 Oct 31 2:00s
|
||||||
5:00 - +05
|
5:00 - %z
|
||||||
# Mangghystaū (KZ-47)
|
# Mangghystaū (KZ-47)
|
||||||
# Aqtau was not founded until 1963, but it represents an inhabited region,
|
# Aqtau was not founded until 1963, but it represents an inhabited region,
|
||||||
# so include timestamps before 1963.
|
# so include timestamps before 1963.
|
||||||
Zone Asia/Aqtau 3:21:04 - LMT 1924 May 2
|
Zone Asia/Aqtau 3:21:04 - LMT 1924 May 2
|
||||||
4:00 - +04 1930 Jun 21
|
4:00 - %z 1930 Jun 21
|
||||||
5:00 - +05 1981 Oct 1
|
5:00 - %z 1981 Oct 1
|
||||||
6:00 - +06 1982 Apr 1
|
6:00 - %z 1982 Apr 1
|
||||||
5:00 RussiaAsia +05/+06 1991 Mar 31 2:00s
|
5:00 RussiaAsia %z 1991 Mar 31 2:00s
|
||||||
4:00 RussiaAsia +04/+05 1992 Jan 19 2:00s
|
4:00 RussiaAsia %z 1992 Jan 19 2:00s
|
||||||
5:00 RussiaAsia +05/+06 1994 Sep 25 2:00s
|
5:00 RussiaAsia %z 1994 Sep 25 2:00s
|
||||||
4:00 RussiaAsia +04/+05 2004 Oct 31 2:00s
|
4:00 RussiaAsia %z 2004 Oct 31 2:00s
|
||||||
5:00 - +05
|
5:00 - %z
|
||||||
# Atyraū (KZ-23) is like Mangghystaū except it switched from
|
# Atyraū (KZ-23) is like Mangghystaū except it switched from
|
||||||
# +04/+05 to +05/+06 in spring 1999, not fall 1994.
|
# +04/+05 to +05/+06 in spring 1999, not fall 1994.
|
||||||
Zone Asia/Atyrau 3:27:44 - LMT 1924 May 2
|
Zone Asia/Atyrau 3:27:44 - LMT 1924 May 2
|
||||||
3:00 - +03 1930 Jun 21
|
3:00 - %z 1930 Jun 21
|
||||||
5:00 - +05 1981 Oct 1
|
5:00 - %z 1981 Oct 1
|
||||||
6:00 - +06 1982 Apr 1
|
6:00 - %z 1982 Apr 1
|
||||||
5:00 RussiaAsia +05/+06 1991 Mar 31 2:00s
|
5:00 RussiaAsia %z 1991 Mar 31 2:00s
|
||||||
4:00 RussiaAsia +04/+05 1992 Jan 19 2:00s
|
4:00 RussiaAsia %z 1992 Jan 19 2:00s
|
||||||
5:00 RussiaAsia +05/+06 1999 Mar 28 2:00s
|
5:00 RussiaAsia %z 1999 Mar 28 2:00s
|
||||||
4:00 RussiaAsia +04/+05 2004 Oct 31 2:00s
|
4:00 RussiaAsia %z 2004 Oct 31 2:00s
|
||||||
5:00 - +05
|
5:00 - %z
|
||||||
# West Kazakhstan (KZ-27)
|
# West Kazakhstan (KZ-27)
|
||||||
# From Paul Eggert (2016-03-18):
|
# From Paul Eggert (2016-03-18):
|
||||||
# The 1989 transition is from USSR act No. 227 (1989-03-14).
|
# The 1989 transition is from USSR act No. 227 (1989-03-14).
|
||||||
Zone Asia/Oral 3:25:24 - LMT 1924 May 2 # or Ural'sk
|
Zone Asia/Oral 3:25:24 - LMT 1924 May 2 # or Ural'sk
|
||||||
3:00 - +03 1930 Jun 21
|
3:00 - %z 1930 Jun 21
|
||||||
5:00 - +05 1981 Apr 1
|
5:00 - %z 1981 Apr 1
|
||||||
5:00 1:00 +06 1981 Oct 1
|
5:00 1:00 %z 1981 Oct 1
|
||||||
6:00 - +06 1982 Apr 1
|
6:00 - %z 1982 Apr 1
|
||||||
5:00 RussiaAsia +05/+06 1989 Mar 26 2:00s
|
5:00 RussiaAsia %z 1989 Mar 26 2:00s
|
||||||
4:00 RussiaAsia +04/+05 1992 Jan 19 2:00s
|
4:00 RussiaAsia %z 1992 Jan 19 2:00s
|
||||||
5:00 RussiaAsia +05/+06 1992 Mar 29 2:00s
|
5:00 RussiaAsia %z 1992 Mar 29 2:00s
|
||||||
4:00 RussiaAsia +04/+05 2004 Oct 31 2:00s
|
4:00 RussiaAsia %z 2004 Oct 31 2:00s
|
||||||
5:00 - +05
|
5:00 - %z
|
||||||
|
|
||||||
# Kyrgyzstan (Kirgizstan)
|
# Kyrgyzstan (Kirgizstan)
|
||||||
# Transitions through 1991 are from Shanks & Pottenger.
|
# Transitions through 1991 are from Shanks & Pottenger.
|
||||||
@@ -2598,11 +2605,11 @@ Rule Kyrgyz 1997 2005 - Mar lastSun 2:30 1:00 -
|
|||||||
Rule Kyrgyz 1997 2004 - Oct lastSun 2:30 0 -
|
Rule Kyrgyz 1997 2004 - Oct lastSun 2:30 0 -
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Asia/Bishkek 4:58:24 - LMT 1924 May 2
|
Zone Asia/Bishkek 4:58:24 - LMT 1924 May 2
|
||||||
5:00 - +05 1930 Jun 21
|
5:00 - %z 1930 Jun 21
|
||||||
6:00 RussiaAsia +06/+07 1991 Mar 31 2:00s
|
6:00 RussiaAsia %z 1991 Mar 31 2:00s
|
||||||
5:00 RussiaAsia +05/+06 1991 Aug 31 2:00
|
5:00 RussiaAsia %z 1991 Aug 31 2:00
|
||||||
5:00 Kyrgyz +05/+06 2005 Aug 12
|
5:00 Kyrgyz %z 2005 Aug 12
|
||||||
6:00 - +06
|
6:00 - %z
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
@@ -2809,16 +2816,16 @@ Rule NBorneo 1935 1941 - Dec 14 0:00 0 -
|
|||||||
# and 1982 transition dates are from Mok Ly Yng.
|
# and 1982 transition dates are from Mok Ly Yng.
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Asia/Kuching 7:21:20 - LMT 1926 Mar
|
Zone Asia/Kuching 7:21:20 - LMT 1926 Mar
|
||||||
7:30 - +0730 1933
|
7:30 - %z 1933
|
||||||
8:00 NBorneo +08/+0820 1942 Feb 16
|
8:00 NBorneo %z 1942 Feb 16
|
||||||
9:00 - +09 1945 Sep 12
|
9:00 - %z 1945 Sep 12
|
||||||
8:00 - +08
|
8:00 - %z
|
||||||
|
|
||||||
# Maldives
|
# Maldives
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Indian/Maldives 4:54:00 - LMT 1880 # Malé
|
Zone Indian/Maldives 4:54:00 - LMT 1880 # Malé
|
||||||
4:54:00 - MMT 1960 # Malé Mean Time
|
4:54:00 - MMT 1960 # Malé Mean Time
|
||||||
5:00 - +05
|
5:00 - %z
|
||||||
|
|
||||||
# Mongolia
|
# Mongolia
|
||||||
|
|
||||||
@@ -2920,9 +2927,37 @@ Zone Indian/Maldives 4:54:00 - LMT 1880 # Malé
|
|||||||
|
|
||||||
# From Arthur David Olson (2008-05-19):
|
# From Arthur David Olson (2008-05-19):
|
||||||
# Assume that Choibalsan is indeed offset by 8:00.
|
# Assume that Choibalsan is indeed offset by 8:00.
|
||||||
# XXX--in the absence of better information, assume that transition
|
|
||||||
# was at the start of 2008-03-31 (the day of Steffen Thorsen's report);
|
# From Heitor David Pinto (2024-06-23):
|
||||||
# this is almost surely wrong.
|
# Sources about time zones in Mongolia seem to list one of two conflicting
|
||||||
|
# configurations. The first configuration, mentioned in a comment to the TZ
|
||||||
|
# database in 1999, citing a Mongolian government website, lists the provinces
|
||||||
|
# of Bayan-Ölgii, Khovd and Uvs in UTC+7, and the rest of the country in
|
||||||
|
# UTC+8. The second configuration, mentioned in a comment to the database in
|
||||||
|
# 2001, lists Bayan-Ölgii, Khovd, Uvs, Govi-Altai and Zavkhan in UTC+7, Dornod
|
||||||
|
# and Sükhbaatar in UTC+9, and the rest of the country in UTC+8.
|
||||||
|
#
|
||||||
|
# The first configuration is still mentioned by several Mongolian travel
|
||||||
|
# agencies:
|
||||||
|
# https://www.adventurerider.mn/en/page/about_mongolia
|
||||||
|
# http://www.naturetours.mn/nt/mongolia.php
|
||||||
|
# https://www.newjuulchin.mn/web/content/7506?unique=fa24a0f6e96e022a3578ee5195ac879638c734ce
|
||||||
|
#
|
||||||
|
# It also matches these flight schedules in 2013:
|
||||||
|
# http://web.archive.org/web/20130722023600/https://www.hunnuair.com/en/timetabled
|
||||||
|
# The flight times imply that the airports of Uliastai (Zavkhan), Choibalsan
|
||||||
|
# (Dornod) and Altai (Govi-Altai) are in the same time zone as Ulaanbaatar,
|
||||||
|
# and Khovd is one hour behind....
|
||||||
|
#
|
||||||
|
# The second configuration was mentioned by an official of the Mongolian
|
||||||
|
# standards agency in an interview in 2014: https://ikon.mn/n/9v6
|
||||||
|
# And it's still listed by the Mongolian aviation agency:
|
||||||
|
# https://ais.mn/files/aip/eAIP/2023-12-25/html/eSUP/ZM-eSUP-23-04-en-MN.html
|
||||||
|
#
|
||||||
|
# ... I believe that the first configuration is what is actually observed in
|
||||||
|
# Mongolia and has been so all along, at least since 1999. The second
|
||||||
|
# configuration closely matches the ideal time zone boundaries at 97.5° E and
|
||||||
|
# 112.5° E but it doesn't seem to be used in practice.
|
||||||
|
|
||||||
# From Ganbold Tsagaankhuu (2015-03-10):
|
# From Ganbold Tsagaankhuu (2015-03-10):
|
||||||
# It seems like yesterday Mongolian Government meeting has concluded to use
|
# It seems like yesterday Mongolian Government meeting has concluded to use
|
||||||
@@ -2961,25 +2996,18 @@ Rule Mongol 2015 2016 - Sep lastSat 0:00 0 -
|
|||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
# Hovd, a.k.a. Chovd, Dund-Us, Dzhargalant, Khovd, Jirgalanta
|
# Hovd, a.k.a. Chovd, Dund-Us, Dzhargalant, Khovd, Jirgalanta
|
||||||
Zone Asia/Hovd 6:06:36 - LMT 1905 Aug
|
Zone Asia/Hovd 6:06:36 - LMT 1905 Aug
|
||||||
6:00 - +06 1978
|
6:00 - %z 1978
|
||||||
7:00 Mongol +07/+08
|
7:00 Mongol %z
|
||||||
# Ulaanbaatar, a.k.a. Ulan Bataar, Ulan Bator, Urga
|
# Ulaanbaatar, a.k.a. Ulan Bataar, Ulan Bator, Urga
|
||||||
Zone Asia/Ulaanbaatar 7:07:32 - LMT 1905 Aug
|
Zone Asia/Ulaanbaatar 7:07:32 - LMT 1905 Aug
|
||||||
7:00 - +07 1978
|
7:00 - %z 1978
|
||||||
8:00 Mongol +08/+09
|
8:00 Mongol %z
|
||||||
# Choibalsan, a.k.a. Bajan Tümen, Bajan Tumen, Chojbalsan,
|
|
||||||
# Choybalsan, Sanbejse, Tchoibalsan
|
|
||||||
Zone Asia/Choibalsan 7:38:00 - LMT 1905 Aug
|
|
||||||
7:00 - +07 1978
|
|
||||||
8:00 - +08 1983 Apr
|
|
||||||
9:00 Mongol +09/+10 2008 Mar 31
|
|
||||||
8:00 Mongol +08/+09
|
|
||||||
|
|
||||||
# Nepal
|
# Nepal
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Asia/Kathmandu 5:41:16 - LMT 1920
|
Zone Asia/Kathmandu 5:41:16 - LMT 1920
|
||||||
5:30 - +0530 1986
|
5:30 - %z 1986
|
||||||
5:45 - +0545
|
5:45 - %z
|
||||||
|
|
||||||
# Pakistan
|
# Pakistan
|
||||||
|
|
||||||
@@ -3125,10 +3153,10 @@ Rule Pakistan 2009 only - Apr 15 0:00 1:00 S
|
|||||||
|
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Asia/Karachi 4:28:12 - LMT 1907
|
Zone Asia/Karachi 4:28:12 - LMT 1907
|
||||||
5:30 - +0530 1942 Sep
|
5:30 - %z 1942 Sep
|
||||||
5:30 1:00 +0630 1945 Oct 15
|
5:30 1:00 %z 1945 Oct 15
|
||||||
5:30 - +0530 1951 Sep 30
|
5:30 - %z 1951 Sep 30
|
||||||
5:00 - +05 1971 Mar 26
|
5:00 - %z 1971 Mar 26
|
||||||
5:00 Pakistan PK%sT # Pakistan Time
|
5:00 Pakistan PK%sT # Pakistan Time
|
||||||
|
|
||||||
# Palestine
|
# Palestine
|
||||||
@@ -3676,14 +3704,14 @@ Zone Asia/Hebron 2:20:23 - LMT 1900 Oct
|
|||||||
# Philippine Star 2014-08-05
|
# Philippine Star 2014-08-05
|
||||||
# http://www.philstar.com/headlines/2014/08/05/1354152/pnoy-urged-declare-use-daylight-saving-time
|
# http://www.philstar.com/headlines/2014/08/05/1354152/pnoy-urged-declare-use-daylight-saving-time
|
||||||
|
|
||||||
# From Paul Goyette (2018-06-15):
|
# From Paul Goyette (2018-06-15) with URLs updated by Guy Harris (2024-02-15):
|
||||||
# In the Philippines, there is a national law, Republic Act No. 10535
|
# In the Philippines, there is a national law, Republic Act No. 10535
|
||||||
# which declares the official time here as "Philippine Standard Time".
|
# which declares the official time here as "Philippine Standard Time".
|
||||||
# The act [1] even specifies use of PST as the abbreviation, although
|
# The act [1] even specifies use of PST as the abbreviation, although
|
||||||
# the FAQ provided by PAGASA [2] uses the "acronym PhST to distinguish
|
# the FAQ provided by PAGASA [2] uses the "acronym PhST to distinguish
|
||||||
# it from the Pacific Standard Time (PST)."
|
# it from the Pacific Standard Time (PST)."
|
||||||
# [1] http://www.officialgazette.gov.ph/2013/05/15/republic-act-no-10535/
|
# [1] https://www.officialgazette.gov.ph/2013/05/15/republic-act-no-10535/
|
||||||
# [2] https://www1.pagasa.dost.gov.ph/index.php/astronomy/philippine-standard-time#republic-act-10535
|
# [2] https://prsd.pagasa.dost.gov.ph/index.php/28-astronomy/302-philippine-standard-time
|
||||||
#
|
#
|
||||||
# From Paul Eggert (2018-06-19):
|
# From Paul Eggert (2018-06-19):
|
||||||
# I surveyed recent news reports, and my impression is that "PST" is
|
# I surveyed recent news reports, and my impression is that "PST" is
|
||||||
@@ -3716,8 +3744,8 @@ Zone Asia/Manila -15:56:00 - LMT 1844 Dec 31
|
|||||||
# Qatar
|
# Qatar
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Asia/Qatar 3:26:08 - LMT 1920 # Al Dawhah / Doha
|
Zone Asia/Qatar 3:26:08 - LMT 1920 # Al Dawhah / Doha
|
||||||
4:00 - +04 1972 Jun
|
4:00 - %z 1972 Jun
|
||||||
3:00 - +03
|
3:00 - %z
|
||||||
|
|
||||||
# Kuwait
|
# Kuwait
|
||||||
# Saudi Arabia
|
# Saudi Arabia
|
||||||
@@ -3767,7 +3795,7 @@ Zone Asia/Qatar 3:26:08 - LMT 1920 # Al Dawhah / Doha
|
|||||||
#
|
#
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Asia/Riyadh 3:06:52 - LMT 1947 Mar 14
|
Zone Asia/Riyadh 3:06:52 - LMT 1947 Mar 14
|
||||||
3:00 - +03
|
3:00 - %z
|
||||||
|
|
||||||
# Singapore
|
# Singapore
|
||||||
# taken from Mok Ly Yng (2003-10-30)
|
# taken from Mok Ly Yng (2003-10-30)
|
||||||
@@ -3775,13 +3803,13 @@ Zone Asia/Riyadh 3:06:52 - LMT 1947 Mar 14
|
|||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Asia/Singapore 6:55:25 - LMT 1901 Jan 1
|
Zone Asia/Singapore 6:55:25 - LMT 1901 Jan 1
|
||||||
6:55:25 - SMT 1905 Jun 1 # Singapore M.T.
|
6:55:25 - SMT 1905 Jun 1 # Singapore M.T.
|
||||||
7:00 - +07 1933 Jan 1
|
7:00 - %z 1933 Jan 1
|
||||||
7:00 0:20 +0720 1936 Jan 1
|
7:00 0:20 %z 1936 Jan 1
|
||||||
7:20 - +0720 1941 Sep 1
|
7:20 - %z 1941 Sep 1
|
||||||
7:30 - +0730 1942 Feb 16
|
7:30 - %z 1942 Feb 16
|
||||||
9:00 - +09 1945 Sep 12
|
9:00 - %z 1945 Sep 12
|
||||||
7:30 - +0730 1981 Dec 31 16:00u
|
7:30 - %z 1981 Dec 31 16:00u
|
||||||
8:00 - +08
|
8:00 - %z
|
||||||
|
|
||||||
# Spratly Is
|
# Spratly Is
|
||||||
# no information
|
# no information
|
||||||
@@ -3839,13 +3867,13 @@ Zone Asia/Singapore 6:55:25 - LMT 1901 Jan 1
|
|||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Asia/Colombo 5:19:24 - LMT 1880
|
Zone Asia/Colombo 5:19:24 - LMT 1880
|
||||||
5:19:32 - MMT 1906 # Moratuwa Mean Time
|
5:19:32 - MMT 1906 # Moratuwa Mean Time
|
||||||
5:30 - +0530 1942 Jan 5
|
5:30 - %z 1942 Jan 5
|
||||||
5:30 0:30 +06 1942 Sep
|
5:30 0:30 %z 1942 Sep
|
||||||
5:30 1:00 +0630 1945 Oct 16 2:00
|
5:30 1:00 %z 1945 Oct 16 2:00
|
||||||
5:30 - +0530 1996 May 25 0:00
|
5:30 - %z 1996 May 25 0:00
|
||||||
6:30 - +0630 1996 Oct 26 0:30
|
6:30 - %z 1996 Oct 26 0:30
|
||||||
6:00 - +06 2006 Apr 15 0:30
|
6:00 - %z 2006 Apr 15 0:30
|
||||||
5:30 - +0530
|
5:30 - %z
|
||||||
|
|
||||||
# Syria
|
# Syria
|
||||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||||
@@ -4016,16 +4044,16 @@ Rule Syria 2009 2022 - Oct lastFri 0:00 0 -
|
|||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Asia/Damascus 2:25:12 - LMT 1920 # Dimashq
|
Zone Asia/Damascus 2:25:12 - LMT 1920 # Dimashq
|
||||||
2:00 Syria EE%sT 2022 Oct 28 0:00
|
2:00 Syria EE%sT 2022 Oct 28 0:00
|
||||||
3:00 - +03
|
3:00 - %z
|
||||||
|
|
||||||
# Tajikistan
|
# Tajikistan
|
||||||
# From Shanks & Pottenger.
|
# From Shanks & Pottenger.
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Asia/Dushanbe 4:35:12 - LMT 1924 May 2
|
Zone Asia/Dushanbe 4:35:12 - LMT 1924 May 2
|
||||||
5:00 - +05 1930 Jun 21
|
5:00 - %z 1930 Jun 21
|
||||||
6:00 RussiaAsia +06/+07 1991 Mar 31 2:00s
|
6:00 RussiaAsia %z 1991 Mar 31 2:00s
|
||||||
5:00 1:00 +06 1991 Sep 9 2:00s
|
5:00 1:00 %z 1991 Sep 9 2:00s
|
||||||
5:00 - +05
|
5:00 - %z
|
||||||
|
|
||||||
# Cambodia
|
# Cambodia
|
||||||
# Christmas I
|
# Christmas I
|
||||||
@@ -4035,16 +4063,16 @@ Zone Asia/Dushanbe 4:35:12 - LMT 1924 May 2
|
|||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Asia/Bangkok 6:42:04 - LMT 1880
|
Zone Asia/Bangkok 6:42:04 - LMT 1880
|
||||||
6:42:04 - BMT 1920 Apr # Bangkok Mean Time
|
6:42:04 - BMT 1920 Apr # Bangkok Mean Time
|
||||||
7:00 - +07
|
7:00 - %z
|
||||||
|
|
||||||
# Turkmenistan
|
# Turkmenistan
|
||||||
# From Shanks & Pottenger.
|
# From Shanks & Pottenger.
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Asia/Ashgabat 3:53:32 - LMT 1924 May 2 # or Ashkhabad
|
Zone Asia/Ashgabat 3:53:32 - LMT 1924 May 2 # or Ashkhabad
|
||||||
4:00 - +04 1930 Jun 21
|
4:00 - %z 1930 Jun 21
|
||||||
5:00 RussiaAsia +05/+06 1991 Mar 31 2:00
|
5:00 RussiaAsia %z 1991 Mar 31 2:00
|
||||||
4:00 RussiaAsia +04/+05 1992 Jan 19 2:00
|
4:00 RussiaAsia %z 1992 Jan 19 2:00
|
||||||
5:00 - +05
|
5:00 - %z
|
||||||
|
|
||||||
# Oman
|
# Oman
|
||||||
# Réunion
|
# Réunion
|
||||||
@@ -4054,25 +4082,25 @@ Zone Asia/Ashgabat 3:53:32 - LMT 1924 May 2 # or Ashkhabad
|
|||||||
# The Crozet Is also observe Réunion time; see the 'antarctica' file.
|
# The Crozet Is also observe Réunion time; see the 'antarctica' file.
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Asia/Dubai 3:41:12 - LMT 1920
|
Zone Asia/Dubai 3:41:12 - LMT 1920
|
||||||
4:00 - +04
|
4:00 - %z
|
||||||
|
|
||||||
# Uzbekistan
|
# Uzbekistan
|
||||||
# Byalokoz 1919 says Uzbekistan was 4:27:53.
|
# Byalokoz 1919 says Uzbekistan was 4:27:53.
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Asia/Samarkand 4:27:53 - LMT 1924 May 2
|
Zone Asia/Samarkand 4:27:53 - LMT 1924 May 2
|
||||||
4:00 - +04 1930 Jun 21
|
4:00 - %z 1930 Jun 21
|
||||||
5:00 - +05 1981 Apr 1
|
5:00 - %z 1981 Apr 1
|
||||||
5:00 1:00 +06 1981 Oct 1
|
5:00 1:00 %z 1981 Oct 1
|
||||||
6:00 - +06 1982 Apr 1
|
6:00 - %z 1982 Apr 1
|
||||||
5:00 RussiaAsia +05/+06 1992
|
5:00 RussiaAsia %z 1992
|
||||||
5:00 - +05
|
5:00 - %z
|
||||||
# Milne says Tashkent was 4:37:10.8.
|
# Milne says Tashkent was 4:37:10.8.
|
||||||
#STDOFF 4:37:10.8
|
#STDOFF 4:37:10.8
|
||||||
Zone Asia/Tashkent 4:37:11 - LMT 1924 May 2
|
Zone Asia/Tashkent 4:37:11 - LMT 1924 May 2
|
||||||
5:00 - +05 1930 Jun 21
|
5:00 - %z 1930 Jun 21
|
||||||
6:00 RussiaAsia +06/+07 1991 Mar 31 2:00
|
6:00 RussiaAsia %z 1991 Mar 31 2:00
|
||||||
5:00 RussiaAsia +05/+06 1992
|
5:00 RussiaAsia %z 1992
|
||||||
5:00 - +05
|
5:00 - %z
|
||||||
|
|
||||||
# Vietnam (southern)
|
# Vietnam (southern)
|
||||||
|
|
||||||
@@ -4130,7 +4158,7 @@ Zone Asia/Tashkent 4:37:11 - LMT 1924 May 2
|
|||||||
# Võ Nguyên Giáp, Việt Nam Dân Quốc Công Báo, No. 1 (1945-09-29), page 13
|
# Võ Nguyên Giáp, Việt Nam Dân Quốc Công Báo, No. 1 (1945-09-29), page 13
|
||||||
# http://baochi.nlv.gov.vn/baochi/cgi-bin/baochi?a=d&d=JwvzO19450929.2.5&dliv=none
|
# http://baochi.nlv.gov.vn/baochi/cgi-bin/baochi?a=d&d=JwvzO19450929.2.5&dliv=none
|
||||||
# It says that on 1945-09-01 at 24:00, Vietnam moved back two hours, to +07.
|
# It says that on 1945-09-01 at 24:00, Vietnam moved back two hours, to +07.
|
||||||
# It also mentions a 1945-03-29 decree (by a Japanese Goveror-General)
|
# It also mentions a 1945-03-29 decree (by a Japanese Governor-General)
|
||||||
# to set the time zone to +09, but does not say whether that decree
|
# to set the time zone to +09, but does not say whether that decree
|
||||||
# merely legalized an earlier change to +09.
|
# merely legalized an earlier change to +09.
|
||||||
#
|
#
|
||||||
@@ -4151,14 +4179,14 @@ Zone Asia/Tashkent 4:37:11 - LMT 1924 May 2
|
|||||||
#STDOFF 7:06:30.13
|
#STDOFF 7:06:30.13
|
||||||
Zone Asia/Ho_Chi_Minh 7:06:30 - LMT 1906 Jul 1
|
Zone Asia/Ho_Chi_Minh 7:06:30 - LMT 1906 Jul 1
|
||||||
7:06:30 - PLMT 1911 May 1 # Phù Liễn MT
|
7:06:30 - PLMT 1911 May 1 # Phù Liễn MT
|
||||||
7:00 - +07 1942 Dec 31 23:00
|
7:00 - %z 1942 Dec 31 23:00
|
||||||
8:00 - +08 1945 Mar 14 23:00
|
8:00 - %z 1945 Mar 14 23:00
|
||||||
9:00 - +09 1945 Sep 1 24:00
|
9:00 - %z 1945 Sep 1 24:00
|
||||||
7:00 - +07 1947 Apr 1
|
7:00 - %z 1947 Apr 1
|
||||||
8:00 - +08 1955 Jul 1 01:00
|
8:00 - %z 1955 Jul 1 01:00
|
||||||
7:00 - +07 1959 Dec 31 23:00
|
7:00 - %z 1959 Dec 31 23:00
|
||||||
8:00 - +08 1975 Jun 13
|
8:00 - %z 1975 Jun 13
|
||||||
7:00 - +07
|
7:00 - %z
|
||||||
|
|
||||||
# From Paul Eggert (2019-02-19):
|
# From Paul Eggert (2019-02-19):
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -66,8 +66,8 @@ Zone Australia/Perth 7:43:24 - LMT 1895 Dec
|
|||||||
8:00 Aus AW%sT 1943 Jul
|
8:00 Aus AW%sT 1943 Jul
|
||||||
8:00 AW AW%sT
|
8:00 AW AW%sT
|
||||||
Zone Australia/Eucla 8:35:28 - LMT 1895 Dec
|
Zone Australia/Eucla 8:35:28 - LMT 1895 Dec
|
||||||
8:45 Aus +0845/+0945 1943 Jul
|
8:45 Aus %z 1943 Jul
|
||||||
8:45 AW +0845/+0945
|
8:45 AW %z
|
||||||
|
|
||||||
# Queensland
|
# Queensland
|
||||||
#
|
#
|
||||||
@@ -232,8 +232,8 @@ Rule LH 2008 max - Apr Sun>=1 2:00 0 -
|
|||||||
Rule LH 2008 max - Oct Sun>=1 2:00 0:30 -
|
Rule LH 2008 max - Oct Sun>=1 2:00 0:30 -
|
||||||
Zone Australia/Lord_Howe 10:36:20 - LMT 1895 Feb
|
Zone Australia/Lord_Howe 10:36:20 - LMT 1895 Feb
|
||||||
10:00 - AEST 1981 Mar
|
10:00 - AEST 1981 Mar
|
||||||
10:30 LH +1030/+1130 1985 Jul
|
10:30 LH %z 1985 Jul
|
||||||
10:30 LH +1030/+11
|
10:30 LH %z
|
||||||
|
|
||||||
# Australian miscellany
|
# Australian miscellany
|
||||||
#
|
#
|
||||||
@@ -439,16 +439,16 @@ Rule Fiji 2019 only - Nov Sun>=8 2:00 1:00 -
|
|||||||
Rule Fiji 2020 only - Dec 20 2:00 1:00 -
|
Rule Fiji 2020 only - Dec 20 2:00 1:00 -
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Pacific/Fiji 11:55:44 - LMT 1915 Oct 26 # Suva
|
Zone Pacific/Fiji 11:55:44 - LMT 1915 Oct 26 # Suva
|
||||||
12:00 Fiji +12/+13
|
12:00 Fiji %z
|
||||||
|
|
||||||
# French Polynesia
|
# French Polynesia
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Pacific/Gambier -8:59:48 - LMT 1912 Oct 1 # Rikitea
|
Zone Pacific/Gambier -8:59:48 - LMT 1912 Oct 1 # Rikitea
|
||||||
-9:00 - -09
|
-9:00 - %z
|
||||||
Zone Pacific/Marquesas -9:18:00 - LMT 1912 Oct 1
|
Zone Pacific/Marquesas -9:18:00 - LMT 1912 Oct 1
|
||||||
-9:30 - -0930
|
-9:30 - %z
|
||||||
Zone Pacific/Tahiti -9:58:16 - LMT 1912 Oct 1 # Papeete
|
Zone Pacific/Tahiti -9:58:16 - LMT 1912 Oct 1 # Papeete
|
||||||
-10:00 - -10
|
-10:00 - %z
|
||||||
# Clipperton (near North America) is administered from French Polynesia;
|
# Clipperton (near North America) is administered from French Polynesia;
|
||||||
# it is uninhabited.
|
# it is uninhabited.
|
||||||
|
|
||||||
@@ -491,7 +491,7 @@ Rule Guam 1977 only - Aug 28 2:00 0 S
|
|||||||
Zone Pacific/Guam -14:21:00 - LMT 1844 Dec 31
|
Zone Pacific/Guam -14:21:00 - LMT 1844 Dec 31
|
||||||
9:39:00 - LMT 1901 # Agana
|
9:39:00 - LMT 1901 # Agana
|
||||||
10:00 - GST 1941 Dec 10 # Guam
|
10:00 - GST 1941 Dec 10 # Guam
|
||||||
9:00 - +09 1944 Jul 31
|
9:00 - %z 1944 Jul 31
|
||||||
10:00 Guam G%sT 2000 Dec 23
|
10:00 Guam G%sT 2000 Dec 23
|
||||||
10:00 - ChST # Chamorro Standard Time
|
10:00 - ChST # Chamorro Standard Time
|
||||||
|
|
||||||
@@ -503,30 +503,30 @@ Zone Pacific/Guam -14:21:00 - LMT 1844 Dec 31
|
|||||||
# Wallis & Futuna
|
# Wallis & Futuna
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Pacific/Tarawa 11:32:04 - LMT 1901 # Bairiki
|
Zone Pacific/Tarawa 11:32:04 - LMT 1901 # Bairiki
|
||||||
12:00 - +12
|
12:00 - %z
|
||||||
|
|
||||||
# Kiribati (except Gilbert Is)
|
# Kiribati (except Gilbert Is)
|
||||||
# See Pacific/Tarawa for the Gilbert Is.
|
# See Pacific/Tarawa for the Gilbert Is.
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Pacific/Kanton 0 - -00 1937 Aug 31
|
Zone Pacific/Kanton 0 - -00 1937 Aug 31
|
||||||
-12:00 - -12 1979 Oct
|
-12:00 - %z 1979 Oct
|
||||||
-11:00 - -11 1994 Dec 31
|
-11:00 - %z 1994 Dec 31
|
||||||
13:00 - +13
|
13:00 - %z
|
||||||
Zone Pacific/Kiritimati -10:29:20 - LMT 1901
|
Zone Pacific/Kiritimati -10:29:20 - LMT 1901
|
||||||
-10:40 - -1040 1979 Oct
|
-10:40 - %z 1979 Oct
|
||||||
-10:00 - -10 1994 Dec 31
|
-10:00 - %z 1994 Dec 31
|
||||||
14:00 - +14
|
14:00 - %z
|
||||||
|
|
||||||
# Marshall Is
|
# Marshall Is
|
||||||
# See Pacific/Tarawa for most locations.
|
# See Pacific/Tarawa for most locations.
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Pacific/Kwajalein 11:09:20 - LMT 1901
|
Zone Pacific/Kwajalein 11:09:20 - LMT 1901
|
||||||
11:00 - +11 1937
|
11:00 - %z 1937
|
||||||
10:00 - +10 1941 Apr 1
|
10:00 - %z 1941 Apr 1
|
||||||
9:00 - +09 1944 Feb 6
|
9:00 - %z 1944 Feb 6
|
||||||
11:00 - +11 1969 Oct
|
11:00 - %z 1969 Oct
|
||||||
-12:00 - -12 1993 Aug 20 24:00
|
-12:00 - %z 1993 Aug 20 24:00
|
||||||
12:00 - +12
|
12:00 - %z
|
||||||
|
|
||||||
# Micronesia
|
# Micronesia
|
||||||
# For Chuuk and Yap see Pacific/Port_Moresby.
|
# For Chuuk and Yap see Pacific/Port_Moresby.
|
||||||
@@ -534,22 +534,22 @@ Zone Pacific/Kwajalein 11:09:20 - LMT 1901
|
|||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Pacific/Kosrae -13:08:04 - LMT 1844 Dec 31
|
Zone Pacific/Kosrae -13:08:04 - LMT 1844 Dec 31
|
||||||
10:51:56 - LMT 1901
|
10:51:56 - LMT 1901
|
||||||
11:00 - +11 1914 Oct
|
11:00 - %z 1914 Oct
|
||||||
9:00 - +09 1919 Feb 1
|
9:00 - %z 1919 Feb 1
|
||||||
11:00 - +11 1937
|
11:00 - %z 1937
|
||||||
10:00 - +10 1941 Apr 1
|
10:00 - %z 1941 Apr 1
|
||||||
9:00 - +09 1945 Aug
|
9:00 - %z 1945 Aug
|
||||||
11:00 - +11 1969 Oct
|
11:00 - %z 1969 Oct
|
||||||
12:00 - +12 1999
|
12:00 - %z 1999
|
||||||
11:00 - +11
|
11:00 - %z
|
||||||
|
|
||||||
# Nauru
|
# Nauru
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Pacific/Nauru 11:07:40 - LMT 1921 Jan 15 # Uaobe
|
Zone Pacific/Nauru 11:07:40 - LMT 1921 Jan 15 # Uaobe
|
||||||
11:30 - +1130 1942 Aug 29
|
11:30 - %z 1942 Aug 29
|
||||||
9:00 - +09 1945 Sep 8
|
9:00 - %z 1945 Sep 8
|
||||||
11:30 - +1130 1979 Feb 10 2:00
|
11:30 - %z 1979 Feb 10 2:00
|
||||||
12:00 - +12
|
12:00 - %z
|
||||||
|
|
||||||
# New Caledonia
|
# New Caledonia
|
||||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||||
@@ -560,7 +560,7 @@ Rule NC 1996 only - Dec 1 2:00s 1:00 -
|
|||||||
Rule NC 1997 only - Mar 2 2:00s 0 -
|
Rule NC 1997 only - Mar 2 2:00s 0 -
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Pacific/Noumea 11:05:48 - LMT 1912 Jan 13 # Nouméa
|
Zone Pacific/Noumea 11:05:48 - LMT 1912 Jan 13 # Nouméa
|
||||||
11:00 NC +11/+12
|
11:00 NC %z
|
||||||
|
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -604,8 +604,8 @@ Zone Pacific/Auckland 11:39:04 - LMT 1868 Nov 2
|
|||||||
12:00 NZ NZ%sT
|
12:00 NZ NZ%sT
|
||||||
|
|
||||||
Zone Pacific/Chatham 12:13:48 - LMT 1868 Nov 2
|
Zone Pacific/Chatham 12:13:48 - LMT 1868 Nov 2
|
||||||
12:15 - +1215 1946 Jan 1
|
12:15 - %z 1946 Jan 1
|
||||||
12:45 Chatham +1245/+1345
|
12:45 Chatham %z
|
||||||
|
|
||||||
# Auckland Is
|
# Auckland Is
|
||||||
# uninhabited; Māori and Moriori, colonial settlers, pastoralists, sealers,
|
# uninhabited; Māori and Moriori, colonial settlers, pastoralists, sealers,
|
||||||
@@ -658,8 +658,8 @@ Rule Cook 1979 1990 - Oct lastSun 0:00 0:30 -
|
|||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Pacific/Rarotonga 13:20:56 - LMT 1899 Dec 26 # Avarua
|
Zone Pacific/Rarotonga 13:20:56 - LMT 1899 Dec 26 # Avarua
|
||||||
-10:39:04 - LMT 1952 Oct 16
|
-10:39:04 - LMT 1952 Oct 16
|
||||||
-10:30 - -1030 1978 Nov 12
|
-10:30 - %z 1978 Nov 12
|
||||||
-10:00 Cook -10/-0930
|
-10:00 Cook %z
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
@@ -676,30 +676,30 @@ Zone Pacific/Rarotonga 13:20:56 - LMT 1899 Dec 26 # Avarua
|
|||||||
|
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Pacific/Niue -11:19:40 - LMT 1952 Oct 16 # Alofi
|
Zone Pacific/Niue -11:19:40 - LMT 1952 Oct 16 # Alofi
|
||||||
-11:20 - -1120 1964 Jul
|
-11:20 - %z 1964 Jul
|
||||||
-11:00 - -11
|
-11:00 - %z
|
||||||
|
|
||||||
# Norfolk
|
# Norfolk
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Pacific/Norfolk 11:11:52 - LMT 1901 # Kingston
|
Zone Pacific/Norfolk 11:11:52 - LMT 1901 # Kingston
|
||||||
11:12 - +1112 1951
|
11:12 - %z 1951
|
||||||
11:30 - +1130 1974 Oct 27 02:00s
|
11:30 - %z 1974 Oct 27 02:00s
|
||||||
11:30 1:00 +1230 1975 Mar 2 02:00s
|
11:30 1:00 %z 1975 Mar 2 02:00s
|
||||||
11:30 - +1130 2015 Oct 4 02:00s
|
11:30 - %z 2015 Oct 4 02:00s
|
||||||
11:00 - +11 2019 Jul
|
11:00 - %z 2019 Jul
|
||||||
11:00 AN +11/+12
|
11:00 AN %z
|
||||||
|
|
||||||
# Palau (Belau)
|
# Palau (Belau)
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Pacific/Palau -15:02:04 - LMT 1844 Dec 31 # Koror
|
Zone Pacific/Palau -15:02:04 - LMT 1844 Dec 31 # Koror
|
||||||
8:57:56 - LMT 1901
|
8:57:56 - LMT 1901
|
||||||
9:00 - +09
|
9:00 - %z
|
||||||
|
|
||||||
# Papua New Guinea
|
# Papua New Guinea
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Pacific/Port_Moresby 9:48:40 - LMT 1880
|
Zone Pacific/Port_Moresby 9:48:40 - LMT 1880
|
||||||
9:48:32 - PMMT 1895 # Port Moresby Mean Time
|
9:48:32 - PMMT 1895 # Port Moresby Mean Time
|
||||||
10:00 - +10
|
10:00 - %z
|
||||||
#
|
#
|
||||||
# From Paul Eggert (2014-10-13):
|
# From Paul Eggert (2014-10-13):
|
||||||
# Base the Bougainville entry on the Arawa-Kieta region, which appears to have
|
# Base the Bougainville entry on the Arawa-Kieta region, which appears to have
|
||||||
@@ -720,16 +720,16 @@ Zone Pacific/Port_Moresby 9:48:40 - LMT 1880
|
|||||||
#
|
#
|
||||||
Zone Pacific/Bougainville 10:22:16 - LMT 1880
|
Zone Pacific/Bougainville 10:22:16 - LMT 1880
|
||||||
9:48:32 - PMMT 1895
|
9:48:32 - PMMT 1895
|
||||||
10:00 - +10 1942 Jul
|
10:00 - %z 1942 Jul
|
||||||
9:00 - +09 1945 Aug 21
|
9:00 - %z 1945 Aug 21
|
||||||
10:00 - +10 2014 Dec 28 2:00
|
10:00 - %z 2014 Dec 28 2:00
|
||||||
11:00 - +11
|
11:00 - %z
|
||||||
|
|
||||||
# Pitcairn
|
# Pitcairn
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Pacific/Pitcairn -8:40:20 - LMT 1901 # Adamstown
|
Zone Pacific/Pitcairn -8:40:20 - LMT 1901 # Adamstown
|
||||||
-8:30 - -0830 1998 Apr 27 0:00
|
-8:30 - %z 1998 Apr 27 0:00
|
||||||
-8:00 - -08
|
-8:00 - %z
|
||||||
|
|
||||||
# American Samoa
|
# American Samoa
|
||||||
# Midway
|
# Midway
|
||||||
@@ -818,15 +818,15 @@ Rule WS 2012 2020 - Sep lastSun 3:00 1 -
|
|||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Pacific/Apia 12:33:04 - LMT 1892 Jul 5
|
Zone Pacific/Apia 12:33:04 - LMT 1892 Jul 5
|
||||||
-11:26:56 - LMT 1911
|
-11:26:56 - LMT 1911
|
||||||
-11:30 - -1130 1950
|
-11:30 - %z 1950
|
||||||
-11:00 WS -11/-10 2011 Dec 29 24:00
|
-11:00 WS %z 2011 Dec 29 24:00
|
||||||
13:00 WS +13/+14
|
13:00 WS %z
|
||||||
|
|
||||||
# Solomon Is
|
# Solomon Is
|
||||||
# excludes Bougainville, for which see Papua New Guinea
|
# excludes Bougainville, for which see Papua New Guinea
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Pacific/Guadalcanal 10:39:48 - LMT 1912 Oct 1 # Honiara
|
Zone Pacific/Guadalcanal 10:39:48 - LMT 1912 Oct 1 # Honiara
|
||||||
11:00 - +11
|
11:00 - %z
|
||||||
|
|
||||||
# Tokelau
|
# Tokelau
|
||||||
#
|
#
|
||||||
@@ -849,8 +849,8 @@ Zone Pacific/Guadalcanal 10:39:48 - LMT 1912 Oct 1 # Honiara
|
|||||||
|
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Pacific/Fakaofo -11:24:56 - LMT 1901
|
Zone Pacific/Fakaofo -11:24:56 - LMT 1901
|
||||||
-11:00 - -11 2011 Dec 30
|
-11:00 - %z 2011 Dec 30
|
||||||
13:00 - +13
|
13:00 - %z
|
||||||
|
|
||||||
# Tonga
|
# Tonga
|
||||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||||
@@ -862,9 +862,9 @@ Rule Tonga 2016 only - Nov Sun>=1 2:00 1:00 -
|
|||||||
Rule Tonga 2017 only - Jan Sun>=15 3:00 0 -
|
Rule Tonga 2017 only - Jan Sun>=15 3:00 0 -
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Pacific/Tongatapu 12:19:12 - LMT 1945 Sep 10
|
Zone Pacific/Tongatapu 12:19:12 - LMT 1945 Sep 10
|
||||||
12:20 - +1220 1961
|
12:20 - %z 1961
|
||||||
13:00 - +13 1999
|
13:00 - %z 1999
|
||||||
13:00 Tonga +13/+14
|
13:00 Tonga %z
|
||||||
|
|
||||||
|
|
||||||
# US minor outlying islands
|
# US minor outlying islands
|
||||||
@@ -953,7 +953,7 @@ Rule Vanuatu 1992 1993 - Jan Sat>=22 24:00 0 -
|
|||||||
Rule Vanuatu 1992 only - Oct Sat>=22 24:00 1:00 -
|
Rule Vanuatu 1992 only - Oct Sat>=22 24:00 1:00 -
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Pacific/Efate 11:13:16 - LMT 1912 Jan 13 # Vila
|
Zone Pacific/Efate 11:13:16 - LMT 1912 Jan 13 # Vila
|
||||||
11:00 Vanuatu +11/+12
|
11:00 Vanuatu %z
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
|
|||||||
@@ -21,12 +21,13 @@
|
|||||||
# or visit www.oracle.com if you need additional information or have any
|
# or visit www.oracle.com if you need additional information or have any
|
||||||
# questions.
|
# questions.
|
||||||
#
|
#
|
||||||
# tzdb links for backward compatibility
|
# Links and zones for backward compatibility
|
||||||
|
|
||||||
# This file is in the public domain, so clarified as of
|
# This file is in the public domain, so clarified as of
|
||||||
# 2009-05-17 by Arthur David Olson.
|
# 2009-05-17 by Arthur David Olson.
|
||||||
|
|
||||||
# This file provides links from old or merged timezone names to current ones.
|
# This file provides links from old or merged timezone names to current ones.
|
||||||
|
# It also provides a few zone entries for old naming conventions.
|
||||||
# Many names changed in 1993 and in 1995, and many merged names moved here
|
# Many names changed in 1993 and in 1995, and many merged names moved here
|
||||||
# in the period from 2013 through 2022. Several of these names are
|
# in the period from 2013 through 2022. Several of these names are
|
||||||
# also present in the file 'backzone', which has data important only
|
# also present in the file 'backzone', which has data important only
|
||||||
@@ -67,6 +68,8 @@ Link America/Rio_Branco Brazil/Acre #= America/Porto_Acre
|
|||||||
Link America/Noronha Brazil/DeNoronha
|
Link America/Noronha Brazil/DeNoronha
|
||||||
Link America/Sao_Paulo Brazil/East
|
Link America/Sao_Paulo Brazil/East
|
||||||
Link America/Manaus Brazil/West
|
Link America/Manaus Brazil/West
|
||||||
|
Link Europe/Brussels CET
|
||||||
|
Link America/Chicago CST6CDT
|
||||||
Link America/Halifax Canada/Atlantic
|
Link America/Halifax Canada/Atlantic
|
||||||
Link America/Winnipeg Canada/Central
|
Link America/Winnipeg Canada/Central
|
||||||
# This line is commented out, as the name exceeded the 14-character limit
|
# This line is commented out, as the name exceeded the 14-character limit
|
||||||
@@ -81,6 +84,9 @@ Link America/Whitehorse Canada/Yukon
|
|||||||
Link America/Santiago Chile/Continental
|
Link America/Santiago Chile/Continental
|
||||||
Link Pacific/Easter Chile/EasterIsland
|
Link Pacific/Easter Chile/EasterIsland
|
||||||
Link America/Havana Cuba
|
Link America/Havana Cuba
|
||||||
|
Link Europe/Athens EET
|
||||||
|
Link America/Panama EST
|
||||||
|
Link America/New_York EST5EDT
|
||||||
Link Africa/Cairo Egypt
|
Link Africa/Cairo Egypt
|
||||||
Link Europe/Dublin Eire
|
Link Europe/Dublin Eire
|
||||||
# Vanguard section, for most .zi parsers.
|
# Vanguard section, for most .zi parsers.
|
||||||
@@ -119,6 +125,9 @@ Link America/Jamaica Jamaica
|
|||||||
Link Asia/Tokyo Japan
|
Link Asia/Tokyo Japan
|
||||||
Link Pacific/Kwajalein Kwajalein
|
Link Pacific/Kwajalein Kwajalein
|
||||||
Link Africa/Tripoli Libya
|
Link Africa/Tripoli Libya
|
||||||
|
Link Europe/Brussels MET
|
||||||
|
Link America/Phoenix MST
|
||||||
|
Link America/Denver MST7MDT
|
||||||
Link America/Tijuana Mexico/BajaNorte
|
Link America/Tijuana Mexico/BajaNorte
|
||||||
Link America/Mazatlan Mexico/BajaSur
|
Link America/Mazatlan Mexico/BajaSur
|
||||||
Link America/Mexico_City Mexico/General
|
Link America/Mexico_City Mexico/General
|
||||||
@@ -298,6 +307,7 @@ Link America/Denver America/Shiprock
|
|||||||
Link America/Toronto America/Thunder_Bay
|
Link America/Toronto America/Thunder_Bay
|
||||||
Link America/Edmonton America/Yellowknife
|
Link America/Edmonton America/Yellowknife
|
||||||
Link Pacific/Auckland Antarctica/South_Pole
|
Link Pacific/Auckland Antarctica/South_Pole
|
||||||
|
Link Asia/Ulaanbaatar Asia/Choibalsan
|
||||||
Link Asia/Shanghai Asia/Chongqing
|
Link Asia/Shanghai Asia/Chongqing
|
||||||
Link Asia/Shanghai Asia/Harbin
|
Link Asia/Shanghai Asia/Harbin
|
||||||
Link Asia/Urumqi Asia/Kashgar
|
Link Asia/Urumqi Asia/Kashgar
|
||||||
@@ -312,6 +322,7 @@ Link Europe/Kyiv Europe/Zaporozhye
|
|||||||
Link Pacific/Kanton Pacific/Enderbury
|
Link Pacific/Kanton Pacific/Enderbury
|
||||||
Link Pacific/Honolulu Pacific/Johnston
|
Link Pacific/Honolulu Pacific/Johnston
|
||||||
Link Pacific/Port_Moresby Pacific/Yap
|
Link Pacific/Port_Moresby Pacific/Yap
|
||||||
|
Link Europe/Lisbon WET
|
||||||
|
|
||||||
|
|
||||||
# Alternate names for the same location
|
# Alternate names for the same location
|
||||||
@@ -337,5 +348,7 @@ Link Europe/Kyiv Europe/Kiev
|
|||||||
# Classically, Cyprus is in Asia; e.g. see Herodotus, Histories, I.72.
|
# Classically, Cyprus is in Asia; e.g. see Herodotus, Histories, I.72.
|
||||||
# However, for various reasons many users expect to find it under Europe.
|
# However, for various reasons many users expect to find it under Europe.
|
||||||
Link Asia/Nicosia Europe/Nicosia
|
Link Asia/Nicosia Europe/Nicosia
|
||||||
|
Link Pacific/Honolulu HST
|
||||||
|
Link America/Los_Angeles PST8PDT
|
||||||
Link Pacific/Guadalcanal Pacific/Ponape #= Pacific/Pohnpei
|
Link Pacific/Guadalcanal Pacific/Ponape #= Pacific/Pohnpei
|
||||||
Link Pacific/Port_Moresby Pacific/Truk #= Pacific/Chuuk
|
Link Pacific/Port_Moresby Pacific/Truk #= Pacific/Chuuk
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
|
|
||||||
# These entries are for uses not otherwise covered by the tz database.
|
# These entries are for uses not otherwise covered by the tz database.
|
||||||
# Their main practical use is for platforms like Android that lack
|
# Their main practical use is for platforms like Android that lack
|
||||||
# support for POSIX.1-2017-style TZ strings. On such platforms these entries
|
# support for POSIX proleptic TZ strings. On such platforms these entries
|
||||||
# can be useful if the timezone database is wrong or if a ship or
|
# can be useful if the timezone database is wrong or if a ship or
|
||||||
# aircraft at sea is not in a timezone.
|
# aircraft at sea is not in a timezone.
|
||||||
|
|
||||||
@@ -74,29 +74,29 @@ Link Etc/GMT GMT
|
|||||||
# so we moved the names into the Etc subdirectory.
|
# so we moved the names into the Etc subdirectory.
|
||||||
# Also, the time zone abbreviations are now compatible with %z.
|
# Also, the time zone abbreviations are now compatible with %z.
|
||||||
|
|
||||||
Zone Etc/GMT-14 14 - +14
|
Zone Etc/GMT-14 14 - %z
|
||||||
Zone Etc/GMT-13 13 - +13
|
Zone Etc/GMT-13 13 - %z
|
||||||
Zone Etc/GMT-12 12 - +12
|
Zone Etc/GMT-12 12 - %z
|
||||||
Zone Etc/GMT-11 11 - +11
|
Zone Etc/GMT-11 11 - %z
|
||||||
Zone Etc/GMT-10 10 - +10
|
Zone Etc/GMT-10 10 - %z
|
||||||
Zone Etc/GMT-9 9 - +09
|
Zone Etc/GMT-9 9 - %z
|
||||||
Zone Etc/GMT-8 8 - +08
|
Zone Etc/GMT-8 8 - %z
|
||||||
Zone Etc/GMT-7 7 - +07
|
Zone Etc/GMT-7 7 - %z
|
||||||
Zone Etc/GMT-6 6 - +06
|
Zone Etc/GMT-6 6 - %z
|
||||||
Zone Etc/GMT-5 5 - +05
|
Zone Etc/GMT-5 5 - %z
|
||||||
Zone Etc/GMT-4 4 - +04
|
Zone Etc/GMT-4 4 - %z
|
||||||
Zone Etc/GMT-3 3 - +03
|
Zone Etc/GMT-3 3 - %z
|
||||||
Zone Etc/GMT-2 2 - +02
|
Zone Etc/GMT-2 2 - %z
|
||||||
Zone Etc/GMT-1 1 - +01
|
Zone Etc/GMT-1 1 - %z
|
||||||
Zone Etc/GMT+1 -1 - -01
|
Zone Etc/GMT+1 -1 - %z
|
||||||
Zone Etc/GMT+2 -2 - -02
|
Zone Etc/GMT+2 -2 - %z
|
||||||
Zone Etc/GMT+3 -3 - -03
|
Zone Etc/GMT+3 -3 - %z
|
||||||
Zone Etc/GMT+4 -4 - -04
|
Zone Etc/GMT+4 -4 - %z
|
||||||
Zone Etc/GMT+5 -5 - -05
|
Zone Etc/GMT+5 -5 - %z
|
||||||
Zone Etc/GMT+6 -6 - -06
|
Zone Etc/GMT+6 -6 - %z
|
||||||
Zone Etc/GMT+7 -7 - -07
|
Zone Etc/GMT+7 -7 - %z
|
||||||
Zone Etc/GMT+8 -8 - -08
|
Zone Etc/GMT+8 -8 - %z
|
||||||
Zone Etc/GMT+9 -9 - -09
|
Zone Etc/GMT+9 -9 - %z
|
||||||
Zone Etc/GMT+10 -10 - -10
|
Zone Etc/GMT+10 -10 - %z
|
||||||
Zone Etc/GMT+11 -11 - -11
|
Zone Etc/GMT+11 -11 - %z
|
||||||
Zone Etc/GMT+12 -12 - -12
|
Zone Etc/GMT+12 -12 - %z
|
||||||
|
|||||||
@@ -753,14 +753,6 @@ Rule Russia 1996 2010 - Oct lastSun 2:00s 0 -
|
|||||||
# Take "abolishing daylight saving time" to mean that time is now considered
|
# Take "abolishing daylight saving time" to mean that time is now considered
|
||||||
# to be standard.
|
# to be standard.
|
||||||
|
|
||||||
# These are for backward compatibility with older versions.
|
|
||||||
|
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
|
||||||
Zone WET 0:00 EU WE%sT
|
|
||||||
Zone CET 1:00 C-Eur CE%sT
|
|
||||||
Zone MET 1:00 C-Eur ME%sT
|
|
||||||
Zone EET 2:00 EU EE%sT
|
|
||||||
|
|
||||||
# Previous editions of this database used abbreviations like MET DST
|
# Previous editions of this database used abbreviations like MET DST
|
||||||
# for Central European Summer Time, but this didn't agree with common usage.
|
# for Central European Summer Time, but this didn't agree with common usage.
|
||||||
|
|
||||||
@@ -894,7 +886,7 @@ Zone Europe/Minsk 1:50:16 - LMT 1880
|
|||||||
3:00 Russia MSK/MSD 1990
|
3:00 Russia MSK/MSD 1990
|
||||||
3:00 - MSK 1991 Mar 31 2:00s
|
3:00 - MSK 1991 Mar 31 2:00s
|
||||||
2:00 Russia EE%sT 2011 Mar 27 2:00s
|
2:00 Russia EE%sT 2011 Mar 27 2:00s
|
||||||
3:00 - +03
|
3:00 - %z
|
||||||
|
|
||||||
# Belgium
|
# Belgium
|
||||||
# Luxembourg
|
# Luxembourg
|
||||||
@@ -1199,22 +1191,22 @@ Rule Thule 2007 max - Nov Sun>=1 2:00 0 S
|
|||||||
#
|
#
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone America/Danmarkshavn -1:14:40 - LMT 1916 Jul 28
|
Zone America/Danmarkshavn -1:14:40 - LMT 1916 Jul 28
|
||||||
-3:00 - -03 1980 Apr 6 2:00
|
-3:00 - %z 1980 Apr 6 2:00
|
||||||
-3:00 EU -03/-02 1996
|
-3:00 EU %z 1996
|
||||||
0:00 - GMT
|
0:00 - GMT
|
||||||
#
|
#
|
||||||
# Use the old name Scoresbysund, as the current name Ittoqqortoormiit
|
# Use the old name Scoresbysund, as the current name Ittoqqortoormiit
|
||||||
# exceeds tzdb's 14-letter limit and has no common English abbreviation.
|
# exceeds tzdb's 14-letter limit and has no common English abbreviation.
|
||||||
Zone America/Scoresbysund -1:27:52 - LMT 1916 Jul 28 # Ittoqqortoormiit
|
Zone America/Scoresbysund -1:27:52 - LMT 1916 Jul 28 # Ittoqqortoormiit
|
||||||
-2:00 - -02 1980 Apr 6 2:00
|
-2:00 - %z 1980 Apr 6 2:00
|
||||||
-2:00 C-Eur -02/-01 1981 Mar 29
|
-2:00 C-Eur %z 1981 Mar 29
|
||||||
-1:00 EU -01/+00 2024 Mar 31
|
-1:00 EU %z 2024 Mar 31
|
||||||
-2:00 EU -02/-01
|
-2:00 EU %z
|
||||||
Zone America/Nuuk -3:26:56 - LMT 1916 Jul 28 # Godthåb
|
Zone America/Nuuk -3:26:56 - LMT 1916 Jul 28 # Godthåb
|
||||||
-3:00 - -03 1980 Apr 6 2:00
|
-3:00 - %z 1980 Apr 6 2:00
|
||||||
-3:00 EU -03/-02 2023 Mar 26 1:00u
|
-3:00 EU %z 2023 Mar 26 1:00u
|
||||||
-2:00 - -02 2023 Oct 29 1:00u
|
-2:00 - %z 2023 Oct 29 1:00u
|
||||||
-2:00 EU -02/-01
|
-2:00 EU %z
|
||||||
Zone America/Thule -4:35:08 - LMT 1916 Jul 28 # Pituffik
|
Zone America/Thule -4:35:08 - LMT 1916 Jul 28 # Pituffik
|
||||||
-4:00 Thule A%sT
|
-4:00 Thule A%sT
|
||||||
|
|
||||||
@@ -2086,10 +2078,39 @@ Zone Europe/Warsaw 1:24:00 - LMT 1880
|
|||||||
|
|
||||||
# Portugal
|
# Portugal
|
||||||
|
|
||||||
# From Paul Eggert (2014-08-11), after a heads-up from Stephen Colebourne:
|
# From Tim Parenti (2024-07-01), per Alois Treindl (2021-02-07) and Michael
|
||||||
# According to a Portuguese decree (1911-05-26)
|
# Deckers (2021-02-10):
|
||||||
# https://dre.pt/application/dir/pdf1sdip/1911/05/12500/23132313.pdf
|
# http://oal.ul.pt/documentos/2018/01/hl1911a2018.pdf/
|
||||||
# Lisbon was at -0:36:44.68, but switched to GMT on 1912-01-01 at 00:00.
|
# The Astronomical Observatory of Lisbon has published a list detailing the
|
||||||
|
# historical transitions in legal time within continental Portugal. It
|
||||||
|
# directly references many decrees and ordinances which are, in turn,
|
||||||
|
# referenced below. They can be viewed in the public archives of the Diário da
|
||||||
|
# República (until 1976-04-09 known as the Diário do Govêrno) at
|
||||||
|
# https://dre.pt/ (in Portuguese).
|
||||||
|
#
|
||||||
|
# Most of the Rules below have been updated simply to match the Observatory's
|
||||||
|
# listing for continental (mainland) Portugal. Although there are over 50
|
||||||
|
# referenced decrees and ordinances, only the handful with comments below have
|
||||||
|
# been verified against the text, typically to provide additional confidence
|
||||||
|
# wherever dates provided by Whitman and Shanks & Pottenger had disagreed.
|
||||||
|
# See further below for the Azores and Madeira.
|
||||||
|
|
||||||
|
# From Tim Parenti (2024-07-01), per Paul Eggert (2014-08-11), after a
|
||||||
|
# heads-up from Stephen Colebourne:
|
||||||
|
# According to a 1911-05-24 Portuguese decree, Lisbon was at -0:36:44.68, but
|
||||||
|
# switched to GMT on 1912-01-01 at 00:00.
|
||||||
|
# https://dre.pt/dr/detalhe/decreto/593090
|
||||||
|
# https://dre.pt/application/conteudo/593090
|
||||||
|
# The decree made legal time throughout Portugal and her possessions
|
||||||
|
# "subordinate to the Greenwich meridian, according to the principle adopted at
|
||||||
|
# the Washington Convention in 1884" and eliminated the "difference of five
|
||||||
|
# minutes between the internal and external clocks of railway stations".
|
||||||
|
#
|
||||||
|
# The decree was gazetted in the 1911-05-30 issue of Diário do Govêrno, and is
|
||||||
|
# considered to be dated 1911-05-24 by that issue's summary; however, the text
|
||||||
|
# of the decree itself is dated 1911-05-26. The Diário da República website
|
||||||
|
# notes the discrepancy, but later laws and the Observatory all seem to refer
|
||||||
|
# to this decree by the 1911-05-24 date.
|
||||||
#
|
#
|
||||||
# From Michael Deckers (2018-02-15):
|
# From Michael Deckers (2018-02-15):
|
||||||
# article 5 [of the 1911 decree; Deckers's translation] ...:
|
# article 5 [of the 1911 decree; Deckers's translation] ...:
|
||||||
@@ -2097,37 +2118,62 @@ Zone Europe/Warsaw 1:24:00 - LMT 1880
|
|||||||
# according to the 2nd article, the civil day January 1, 1912 begins,
|
# according to the 2nd article, the civil day January 1, 1912 begins,
|
||||||
# all clocks therefore having to be advanced or set back correspondingly ...
|
# 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.
|
|
||||||
#
|
|
||||||
# Martin Bruckmann (1996-02-29) reports via Peter Ilieve
|
|
||||||
# that Portugal is reverting to 0:00 by not moving its clocks this spring.
|
|
||||||
# The new Prime Minister was fed up with getting up in the dark in the winter.
|
|
||||||
#
|
|
||||||
# From Paul Eggert (1996-11-12):
|
|
||||||
# IATA SSIM (1991-09) reports several 1991-09 and 1992-09 transitions
|
|
||||||
# at 02:00u, not 01:00u. Assume that these are typos.
|
|
||||||
# IATA SSIM (1991/1992) reports that the Azores were at -1:00.
|
|
||||||
# IATA SSIM (1993-02) says +0:00; later issues (through 1996-09) say -1:00.
|
|
||||||
# Guess that the Azores changed to EU rules in 1992 (since that's when Portugal
|
|
||||||
# harmonized with EU rules), and that they stayed +0:00 that winter.
|
|
||||||
#
|
|
||||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||||
# DSH writes that despite Decree 1,469 (1915), the change to the clocks was not
|
# From Tim Parenti (2024-07-01), per Paul Eggert (1999-01-30):
|
||||||
# done every year, depending on what Spain did, because of railroad schedules.
|
# DSH writes in their history that Decreto 1469 of 1915-03-30 established
|
||||||
# Go with Shanks & Pottenger.
|
# summer time and that, "despite" this, the change to the clocks was not done
|
||||||
|
# every year, depending on what Spain did, because of railroad schedules.
|
||||||
|
# In fact, that decree had nothing to do with DST; rather, it regulated the
|
||||||
|
# sending of time signals. But we do see linkage to Spain in the 1920s below.
|
||||||
|
# https://dre.pt/dr/detalhe/decreto/1469-1915-285721
|
||||||
|
# https://dre.pt/application/conteudo/285721
|
||||||
|
#
|
||||||
|
# According to the Observatory, standard time was first advanced by Decreto
|
||||||
|
# 2433 of 1916-06-09 and restored by Decreto 2712 of 1916-10-28. While Whitman
|
||||||
|
# gives 1916-10-31 for the latter transition, Shanks & Pottenger agrees more
|
||||||
|
# closely with the decree, which stated that its provision "will start sixty
|
||||||
|
# minutes after the end of 31 October, according to the current time," i.e.,
|
||||||
|
# 01:00 on 1 November.
|
||||||
|
# https://dre.pt/dr/detalhe/decreto/2433-1916-267192
|
||||||
|
# https://dre.pt/application/conteudo/267192
|
||||||
|
# https://dre.pt/dr/detalhe/decreto/2712-1916-590937
|
||||||
|
# https://dre.pt/application/conteudo/590937
|
||||||
Rule Port 1916 only - Jun 17 23:00 1:00 S
|
Rule Port 1916 only - Jun 17 23:00 1:00 S
|
||||||
# Whitman gives 1916 Oct 31; go with Shanks & Pottenger.
|
|
||||||
Rule Port 1916 only - Nov 1 1:00 0 -
|
Rule Port 1916 only - Nov 1 1:00 0 -
|
||||||
Rule Port 1917 only - Feb 28 23:00s 1:00 S
|
# From Tim Parenti (2024-07-01):
|
||||||
Rule Port 1917 1921 - Oct 14 23:00s 0 -
|
# Article 7 of Decreto 2922 of 1916-12-30 stated that "the legal time will be
|
||||||
Rule Port 1918 only - Mar 1 23:00s 1:00 S
|
# advanced by sixty minutes from 1 March to 31 October." Per Article 15, this
|
||||||
Rule Port 1919 only - Feb 28 23:00s 1:00 S
|
# came into force from 1917-01-01. Just before the first fall back, Decreto
|
||||||
Rule Port 1920 only - Feb 29 23:00s 1:00 S
|
# 3446 of 1917-10-11 changed the annual end date to 14 October.
|
||||||
Rule Port 1921 only - Feb 28 23:00s 1:00 S
|
# https://dre.pt/dr/detalhe/decreto/2922-1916-261894
|
||||||
|
# https://dre.pt/application/conteudo/261894
|
||||||
|
# https://dre.pt/dr/detalhe/decreto/3446-1917-495161
|
||||||
|
# https://dre.pt/application/conteudo/495161
|
||||||
|
# This annual change was revoked by Decreto 8038 of 1922-02-18.
|
||||||
|
# https://dre.pt/dr/detalhe/decreto/8038-1922-569751
|
||||||
|
# https://dre.pt/application/conteudo/569751
|
||||||
|
Rule Port 1917 1921 - Mar 1 0:00 1:00 S
|
||||||
|
Rule Port 1917 1921 - Oct 14 24:00 0 -
|
||||||
|
# From Tim Parenti (2024-07-01):
|
||||||
|
# Decreto 9592 of 1924-04-14 noted that "France maintains the advance of legal
|
||||||
|
# time in the summer and Spain has now adopted it for the first time" and
|
||||||
|
# considered "that the absence of similar measures would cause serious
|
||||||
|
# difficulties for international rail connections with consequent repercussions
|
||||||
|
# on domestic service hours..." along with "inconvenient analogues...for postal
|
||||||
|
# and telegraph services." Summer time would be in effect from 17 April to 4
|
||||||
|
# October, with the spring change explicitly specified by bringing clocks
|
||||||
|
# forward from 16 April 23:00.
|
||||||
|
# https://dre.pt/dr/detalhe/decreto/9592-1924-652133
|
||||||
|
# https://dre.pt/application/conteudo/652133
|
||||||
|
#
|
||||||
|
# Decreto 10700, issued 1925-04-16, noted that Spain had not continued summer
|
||||||
|
# time, declared that "the current legal hour prior to 17 April remains
|
||||||
|
# unchanged from that day forward", and revoked legislation to the contrary,
|
||||||
|
# just a day before summer time would have otherwise resumed.
|
||||||
|
# https://dre.pt/dr/detalhe/decreto/10700-1925-437826
|
||||||
|
# https://dre.pt/application/conteudo/437826
|
||||||
Rule Port 1924 only - Apr 16 23:00s 1:00 S
|
Rule Port 1924 only - Apr 16 23:00s 1:00 S
|
||||||
Rule Port 1924 only - Oct 14 23:00s 0 -
|
Rule Port 1924 only - Oct 4 23:00s 0 -
|
||||||
Rule Port 1926 only - Apr 17 23:00s 1:00 S
|
Rule Port 1926 only - Apr 17 23:00s 1:00 S
|
||||||
Rule Port 1926 1929 - Oct Sat>=1 23:00s 0 -
|
Rule Port 1926 1929 - Oct Sat>=1 23:00s 0 -
|
||||||
Rule Port 1927 only - Apr 9 23:00s 1:00 S
|
Rule Port 1927 only - Apr 9 23:00s 1:00 S
|
||||||
@@ -2139,6 +2185,8 @@ Rule Port 1931 1932 - Oct Sat>=1 23:00s 0 -
|
|||||||
Rule Port 1932 only - Apr 2 23:00s 1:00 S
|
Rule Port 1932 only - Apr 2 23:00s 1:00 S
|
||||||
Rule Port 1934 only - Apr 7 23:00s 1:00 S
|
Rule Port 1934 only - Apr 7 23:00s 1:00 S
|
||||||
# Whitman gives 1934 Oct 5; go with Shanks & Pottenger.
|
# Whitman gives 1934 Oct 5; go with Shanks & Pottenger.
|
||||||
|
# Note: The 1935 law specified 10-06 00:00, not 10-05 24:00, but the following
|
||||||
|
# is equivalent and more succinct.
|
||||||
Rule Port 1934 1938 - Oct Sat>=1 23:00s 0 -
|
Rule Port 1934 1938 - Oct Sat>=1 23:00s 0 -
|
||||||
# Shanks & Pottenger give 1935 Apr 30; go with Whitman.
|
# Shanks & Pottenger give 1935 Apr 30; go with Whitman.
|
||||||
Rule Port 1935 only - Mar 30 23:00s 1:00 S
|
Rule Port 1935 only - Mar 30 23:00s 1:00 S
|
||||||
@@ -2149,10 +2197,19 @@ Rule Port 1938 only - Mar 26 23:00s 1:00 S
|
|||||||
Rule Port 1939 only - Apr 15 23:00s 1:00 S
|
Rule Port 1939 only - Apr 15 23:00s 1:00 S
|
||||||
# Whitman gives 1939 Oct 7; go with Shanks & Pottenger.
|
# Whitman gives 1939 Oct 7; go with Shanks & Pottenger.
|
||||||
Rule Port 1939 only - Nov 18 23:00s 0 -
|
Rule Port 1939 only - Nov 18 23:00s 0 -
|
||||||
|
# From Tim Parenti (2024-07-01):
|
||||||
|
# Portaria 9465 of 1940-02-17 advanced clocks from Saturday 1940-02-24 23:00.
|
||||||
|
# The clocks were restored by Portaria 9658, issued Monday 1940-10-07,
|
||||||
|
# effective from 24:00 that very night, which agrees with Shanks & Pottenger;
|
||||||
|
# Whitman gives Saturday 1940-10-05 instead.
|
||||||
|
# https://dre.pt/dr/detalhe/portaria/9465-1940-189096
|
||||||
|
# https://dre.pt/application/conteudo/189096
|
||||||
|
# https://dre.pt/dr/detalhe/portaria/9658-1940-196729
|
||||||
|
# https://dre.pt/application/conteudo/196729
|
||||||
Rule Port 1940 only - Feb 24 23:00s 1:00 S
|
Rule Port 1940 only - Feb 24 23:00s 1:00 S
|
||||||
# Shanks & Pottenger give 1940 Oct 7; go with Whitman.
|
Rule Port 1940 only - Oct 7 23:00s 0 -
|
||||||
Rule Port 1940 1941 - Oct 5 23:00s 0 -
|
|
||||||
Rule Port 1941 only - Apr 5 23:00s 1:00 S
|
Rule Port 1941 only - Apr 5 23:00s 1:00 S
|
||||||
|
Rule Port 1941 only - Oct 5 23:00s 0 -
|
||||||
Rule Port 1942 1945 - Mar Sat>=8 23:00s 1:00 S
|
Rule Port 1942 1945 - Mar Sat>=8 23:00s 1:00 S
|
||||||
Rule Port 1942 only - Apr 25 22:00s 2:00 M # Midsummer
|
Rule Port 1942 only - Apr 25 22:00s 2:00 M # Midsummer
|
||||||
Rule Port 1942 only - Aug 15 22:00s 1:00 S
|
Rule Port 1942 only - Aug 15 22:00s 1:00 S
|
||||||
@@ -2162,66 +2219,195 @@ Rule Port 1943 1945 - Aug Sat>=25 22:00s 1:00 S
|
|||||||
Rule Port 1944 1945 - Apr Sat>=21 22:00s 2:00 M
|
Rule Port 1944 1945 - Apr Sat>=21 22:00s 2:00 M
|
||||||
Rule Port 1946 only - Apr Sat>=1 23:00s 1:00 S
|
Rule Port 1946 only - Apr Sat>=1 23:00s 1:00 S
|
||||||
Rule Port 1946 only - Oct Sat>=1 23:00s 0 -
|
Rule Port 1946 only - Oct Sat>=1 23:00s 0 -
|
||||||
# Whitman says DST was not observed in 1950; go with Shanks & Pottenger.
|
# From Tim Parenti (2024-07-01), per Alois Treindl (2021-02-07):
|
||||||
# Whitman gives Oct lastSun for 1952 on; go with Shanks & Pottenger.
|
# The Astronomical Observatory of Lisbon cites Portaria 11767 of 1947-03-28 for
|
||||||
Rule Port 1947 1965 - Apr Sun>=1 2:00s 1:00 S
|
# 1947 and Portaria 12286 of 1948-02-19 for 1948.
|
||||||
|
# https://dre.pt/dr/detalhe/portaria/11767-1947-414787
|
||||||
|
# https://dre.pt/application/conteudo/414787
|
||||||
|
# https://dre.pt/dr/detalhe/portaria/12286-1948-152953
|
||||||
|
# https://dre.pt/application/conteudo/152953
|
||||||
|
#
|
||||||
|
# Although the latter ordinance explicitly had the 1948-10-03 transition
|
||||||
|
# scheduled for 02:00 rather than 03:00 as had been used in 1947, Decreto-Lei
|
||||||
|
# 37048 of 1948-09-07 recognized "that it is advisable to definitely set...the
|
||||||
|
# 'summer time' regime", and fixed the fall transition at 03:00 moving forward.
|
||||||
|
# https://dre.pt/dr/detalhe/decreto-lei/37048-1948-373810
|
||||||
|
# https://dre.pt/application/conteudo/373810
|
||||||
|
# While the Observatory only cites this act for 1949-1965 and not for 1948, it
|
||||||
|
# does not appear to have had any provision delaying its effect, so assume that
|
||||||
|
# it overrode the prior ordinance for 1948-10-03.
|
||||||
|
#
|
||||||
|
# Whitman says DST was not observed in 1950 and gives Oct lastSun for 1952 on.
|
||||||
|
# The Observatory, however, agrees with Shanks & Pottenger that 1950 was not an
|
||||||
|
# exception and that Oct Sun>=1 was maintained through 1965.
|
||||||
|
Rule Port 1947 1966 - Apr Sun>=1 2:00s 1:00 S
|
||||||
Rule Port 1947 1965 - Oct Sun>=1 2:00s 0 -
|
Rule Port 1947 1965 - Oct Sun>=1 2:00s 0 -
|
||||||
Rule Port 1977 only - Mar 27 0:00s 1:00 S
|
# From Tim Parenti (2024-07-01):
|
||||||
Rule Port 1977 only - Sep 25 0:00s 0 -
|
# Decreto-Lei 47233 of 1966-10-01 considered that the "duality" in time was
|
||||||
Rule Port 1978 1979 - Apr Sun>=1 0:00s 1:00 S
|
# "the cause of serious disturbances" and noted that "the countries with which
|
||||||
Rule Port 1978 only - Oct 1 0:00s 0 -
|
# we have the most frequent contacts...have already adopted" a solution
|
||||||
Rule Port 1979 1982 - Sep lastSun 1:00s 0 -
|
# coinciding with the extant "summer time". It established that the former
|
||||||
Rule Port 1980 only - Mar lastSun 0:00s 1:00 S
|
# "summer time" would apply year-round on the mainland and adjacent islands
|
||||||
Rule Port 1981 1982 - Mar lastSun 1:00s 1:00 S
|
# with immediate effect, as the fall back would have otherwise occurred later
|
||||||
Rule Port 1983 only - Mar lastSun 2:00s 1:00 S
|
# that evening.
|
||||||
|
# https://dre.pt/dr/detalhe/decreto-lei/47233-1966-293729
|
||||||
|
# Model this by changing zones without changing clocks at the
|
||||||
|
# previously-appointed fall back time.
|
||||||
|
#
|
||||||
|
# Decreto-Lei 309/76 of 1976-04-27 acknowledged that those international
|
||||||
|
# contacts had returned to adopting seasonal times, and considered that the
|
||||||
|
# year-round advancement "entails considerable sacrifices for the vast majority
|
||||||
|
# of the working population during the winter months", including morning
|
||||||
|
# visibility concerns for schoolchildren. It specified, beginning 1976-09-26
|
||||||
|
# 01:00, an annual return to UT+00 on the mainland from 00:00 UT on Sep lastSun
|
||||||
|
# to 00:00 UT on Mar lastSun (unless the latter date fell on Easter, in which
|
||||||
|
# case it was to be brought forward to the preceding Sunday). It also assigned
|
||||||
|
# the Permanent Time Commission to study and propose revisions for the Azores
|
||||||
|
# and Madeira, neither of which resumed DST until 1982 (as described further
|
||||||
|
# below).
|
||||||
|
# https://dre.pt/dr/detalhe/decreto-lei/309-1976-502063
|
||||||
|
Rule Port 1976 only - Sep lastSun 1:00 0 -
|
||||||
|
Rule Port 1977 only - Mar lastSun 0:00s 1:00 S
|
||||||
|
Rule Port 1977 only - Sep lastSun 0:00s 0 -
|
||||||
|
# From Tim Parenti (2024-07-01):
|
||||||
|
# Beginning in 1978, rather than triggering the Easter rule of the 1976 decree
|
||||||
|
# (Easter fell on 1978-03-26), Article 5 was used instead, which allowed DST
|
||||||
|
# dates to be changed by order of the Minister of Education and Scientific
|
||||||
|
# Research, upon consultation with the Permanent Time Commission, "whenever
|
||||||
|
# considered convenient." As such, a series of one-off ordinances were
|
||||||
|
# promulgated for the mainland in 1978 through 1980, after which the 1976
|
||||||
|
# decree naturally came back into force from 1981.
|
||||||
|
Rule Port 1978 1980 - Apr Sun>=1 1:00s 1:00 S
|
||||||
|
Rule Port 1978 only - Oct 1 1:00s 0 -
|
||||||
|
Rule Port 1979 1980 - Sep lastSun 1:00s 0 -
|
||||||
|
Rule Port 1981 1986 - Mar lastSun 0:00s 1:00 S
|
||||||
|
Rule Port 1981 1985 - Sep lastSun 0:00s 0 -
|
||||||
|
# From Tim Parenti (2024-07-01):
|
||||||
|
# Decreto-Lei 44-B/86 of 1986-03-07 switched mainland Portugal's transition
|
||||||
|
# times from 0:00s to 1:00u to harmonize with the EEC from 1986-03-30.
|
||||||
|
# https://dre.pt/dr/detalhe/decreto-lei/44-b-1986-628280
|
||||||
|
# (Transitions of 1:00s as previously reported and used by the W-Eur rules,
|
||||||
|
# though equivalent, appear to have been fiction here.) Madeira continued to
|
||||||
|
# use 0:00s for spring 1986 before joining with the mainland using 1:00u in the
|
||||||
|
# fall; meanwhile, in the Azores the two were equivalent, so the law specifying
|
||||||
|
# 0:00s wasn't touched until 1992. (See below for more on the islands.)
|
||||||
|
#
|
||||||
|
# From Rui Pedro Salgueiro (1992-11-12):
|
||||||
|
# Portugal has recently (September, 27) changed timezone
|
||||||
|
# (from WET to MET or CET) to harmonize with EEC.
|
||||||
|
#
|
||||||
|
# Martin Bruckmann (1996-02-29) reports via Peter Ilieve
|
||||||
|
# that Portugal is reverting to 0:00 by not moving its clocks this spring.
|
||||||
|
# The new Prime Minister was fed up with getting up in the dark in the winter.
|
||||||
|
#
|
||||||
|
# From Paul Eggert (1996-11-12):
|
||||||
|
# IATA SSIM (1991-09) reports several 1991-09 and 1992-09 transitions
|
||||||
|
# at 02:00u, not 01:00u. Assume that these are typos.
|
||||||
#
|
#
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
#STDOFF -0:36:44.68
|
#STDOFF -0:36:44.68
|
||||||
Zone Europe/Lisbon -0:36:45 - LMT 1884
|
Zone Europe/Lisbon -0:36:45 - LMT 1884
|
||||||
-0:36:45 - LMT 1912 Jan 1 0:00u # Lisbon MT
|
-0:36:45 - LMT 1912 Jan 1 0:00u # Lisbon MT
|
||||||
0:00 Port WE%sT 1966 Apr 3 2:00
|
0:00 Port WE%sT 1966 Oct 2 2:00s
|
||||||
1:00 - CET 1976 Sep 26 1:00
|
1:00 - CET 1976 Sep 26 1:00
|
||||||
0:00 Port WE%sT 1983 Sep 25 1:00s
|
0:00 Port WE%sT 1986
|
||||||
0:00 W-Eur WE%sT 1992 Sep 27 1:00s
|
0:00 EU WE%sT 1992 Sep 27 1:00u
|
||||||
1:00 EU CE%sT 1996 Mar 31 1:00u
|
1:00 EU CE%sT 1996 Mar 31 1:00u
|
||||||
0:00 EU WE%sT
|
0:00 EU WE%sT
|
||||||
|
|
||||||
|
# From Tim Parenti (2024-07-01):
|
||||||
|
# For the Azores and Madeira, legislation was followed from the laws currently
|
||||||
|
# in force as listed at:
|
||||||
|
# https://oal.ul.pt/hora-legal/legislacao/
|
||||||
|
# working backward through references of revocation and abrogation to
|
||||||
|
# Decreto-Lei 47233 of 1966-10-01, the last time DST was abolished across the
|
||||||
|
# mainland and its adjacent islands. Because of that reference, it is
|
||||||
|
# therefore assumed that DST rules in the islands prior to 1966 were like that
|
||||||
|
# of the mainland, though most legislation of the time didn't explicitly
|
||||||
|
# specify DST practices for the islands.
|
||||||
Zone Atlantic/Azores -1:42:40 - LMT 1884 # Ponta Delgada
|
Zone Atlantic/Azores -1:42:40 - LMT 1884 # Ponta Delgada
|
||||||
-1:54:32 - HMT 1912 Jan 1 2:00u # Horta MT
|
-1:54:32 - HMT 1912 Jan 1 2:00u # Horta MT
|
||||||
# Vanguard section, for zic and other parsers that support %z.
|
# Vanguard section, for zic and other parsers that support %z.
|
||||||
# -2:00 Port %z 1966 Apr 3 2:00
|
-2:00 Port %z 1966 Oct 2 2:00s
|
||||||
# -1:00 Port %z 1983 Sep 25 1:00s
|
# From Tim Parenti (2024-07-01):
|
||||||
# -1:00 W-Eur %z 1992 Sep 27 1:00s
|
# While Decreto-Lei 309/76 of 1976-04-27 reintroduced DST on the mainland by
|
||||||
|
# falling back on 1976-09-26, it assigned the Permanent Time Commission to
|
||||||
|
# study and propose revisions for the Azores and Madeira. Decreto Regional
|
||||||
|
# 9/77/A of 1977-05-17 affirmed that "the legal time remained unchanged in the
|
||||||
|
# Azores" at UT-1, and would remain there year-round.
|
||||||
|
# https://dre.pt/dr/detalhe/decreto-regional/9-1977-252066
|
||||||
|
#
|
||||||
|
# Decreto Regional 2/82/A, published 1982-03-02, adopted DST in the same
|
||||||
|
# fashion as the mainland used at the time.
|
||||||
|
# https://dre.pt/dr/detalhe/decreto-regional/2-1982-599965
|
||||||
|
# Though transitions in the Azores officially remained at 0:00s through 1992,
|
||||||
|
# this was equivalent to the EU-style 1:00u adopted by the mainland in 1986, so
|
||||||
|
# model it as such.
|
||||||
|
-1:00 - %z 1982 Mar 28 0:00s
|
||||||
|
-1:00 Port %z 1986
|
||||||
# Rearguard section, for parsers lacking %z; see ziguard.awk.
|
# Rearguard section, for parsers lacking %z; see ziguard.awk.
|
||||||
-2:00 Port -02/-01 1942 Apr 25 22:00s
|
# -2:00 Port -02/-01 1942 Apr 25 22:00s
|
||||||
-2:00 Port +00 1942 Aug 15 22:00s
|
# -2:00 Port +00 1942 Aug 15 22:00s
|
||||||
-2:00 Port -02/-01 1943 Apr 17 22:00s
|
# -2:00 Port -02/-01 1943 Apr 17 22:00s
|
||||||
-2:00 Port +00 1943 Aug 28 22:00s
|
# -2:00 Port +00 1943 Aug 28 22:00s
|
||||||
-2:00 Port -02/-01 1944 Apr 22 22:00s
|
# -2:00 Port -02/-01 1944 Apr 22 22:00s
|
||||||
-2:00 Port +00 1944 Aug 26 22:00s
|
# -2:00 Port +00 1944 Aug 26 22:00s
|
||||||
-2:00 Port -02/-01 1945 Apr 21 22:00s
|
# -2:00 Port -02/-01 1945 Apr 21 22:00s
|
||||||
-2:00 Port +00 1945 Aug 25 22:00s
|
# -2:00 Port +00 1945 Aug 25 22:00s
|
||||||
-2:00 Port -02/-01 1966 Apr 3 2:00
|
# -2:00 Port -02/-01 1966 Oct 2 2:00s
|
||||||
-1:00 Port -01/+00 1983 Sep 25 1:00s
|
# -1:00 - -01 1982 Mar 28 0:00s
|
||||||
-1:00 W-Eur -01/+00 1992 Sep 27 1:00s
|
# -1:00 Port -01/+00 1986
|
||||||
# End of rearguard section.
|
# End of rearguard section.
|
||||||
0:00 EU WE%sT 1993 Mar 28 1:00u
|
#
|
||||||
-1:00 EU -01/+00
|
# From Paul Eggert (1996-11-12):
|
||||||
|
# IATA SSIM (1991/1992) reports that the Azores were at -1:00.
|
||||||
|
# IATA SSIM (1993-02) says +0:00; later issues (through 1996-09) say -1:00.
|
||||||
|
#
|
||||||
|
# From Tim Parenti (2024-07-01):
|
||||||
|
# After mainland Portugal had shifted forward an hour from 1992-09-27, Decreto
|
||||||
|
# Legislativo Regional 29/92/A of 1992-12-23 sought to "reduce the time
|
||||||
|
# difference" by shifting the Azores forward as well from 1992-12-27. Just six
|
||||||
|
# months later, this was revoked by Decreto Legislativo Regional 9/93/A, citing
|
||||||
|
# "major changes in work habits and way of life." Though the revocation didn't
|
||||||
|
# give a transition time, it was signed Wednesday 1993-06-16; assume it took
|
||||||
|
# effect later that evening, and that an EU-style spring forward (to +01) was
|
||||||
|
# still observed in the interim on 1993-03-28.
|
||||||
|
# https://dre.pt/dr/detalhe/decreto-legislativo-regional/29-1992-621553
|
||||||
|
# https://dre.pt/dr/detalhe/decreto-legislativo-regional/9-1993-389633
|
||||||
|
-1:00 EU %z 1992 Dec 27 1:00s
|
||||||
|
0:00 EU WE%sT 1993 Jun 17 1:00u
|
||||||
|
-1:00 EU %z
|
||||||
|
|
||||||
Zone Atlantic/Madeira -1:07:36 - LMT 1884 # Funchal
|
Zone Atlantic/Madeira -1:07:36 - LMT 1884 # Funchal
|
||||||
-1:07:36 - FMT 1912 Jan 1 1:00u # Funchal MT
|
-1:07:36 - FMT 1912 Jan 1 1:00u # Funchal MT
|
||||||
# Vanguard section, for zic and other parsers that support %z.
|
# Vanguard section, for zic and other parsers that support %z.
|
||||||
# -1:00 Port %z 1966 Apr 3 2:00
|
-1:00 Port %z 1966 Oct 2 2:00s
|
||||||
# Rearguard section, for parsers lacking %z; see ziguard.awk.
|
# Rearguard section, for parsers lacking %z; see ziguard.awk.
|
||||||
-1:00 Port -01/+00 1942 Apr 25 22:00s
|
# -1:00 Port -01/+00 1942 Apr 25 22:00s
|
||||||
-1:00 Port +01 1942 Aug 15 22:00s
|
# -1:00 Port +01 1942 Aug 15 22:00s
|
||||||
-1:00 Port -01/+00 1943 Apr 17 22:00s
|
# -1:00 Port -01/+00 1943 Apr 17 22:00s
|
||||||
-1:00 Port +01 1943 Aug 28 22:00s
|
# -1:00 Port +01 1943 Aug 28 22:00s
|
||||||
-1:00 Port -01/+00 1944 Apr 22 22:00s
|
# -1:00 Port -01/+00 1944 Apr 22 22:00s
|
||||||
-1:00 Port +01 1944 Aug 26 22:00s
|
# -1:00 Port +01 1944 Aug 26 22:00s
|
||||||
-1:00 Port -01/+00 1945 Apr 21 22:00s
|
# -1:00 Port -01/+00 1945 Apr 21 22:00s
|
||||||
-1:00 Port +01 1945 Aug 25 22:00s
|
# -1:00 Port +01 1945 Aug 25 22:00s
|
||||||
-1:00 Port -01/+00 1966 Apr 3 2:00
|
# -1:00 Port -01/+00 1966 Oct 2 2:00s
|
||||||
# End of rearguard section.
|
# End of rearguard section.
|
||||||
0:00 Port WE%sT 1983 Sep 25 1:00s
|
#
|
||||||
|
# From Tim Parenti (2024-07-01):
|
||||||
|
# Decreto Regional 5/82/M, published 1982-04-03, established DST transitions at
|
||||||
|
# 0:00u, which for Madeira is equivalent to the mainland's rules (0:00s) at the
|
||||||
|
# time. It came into effect the day following its publication, Sunday
|
||||||
|
# 1982-04-04, thus resuming Madeira's DST practice about a week later than the
|
||||||
|
# mainland and the Azores.
|
||||||
|
# https://dre.pt/dr/detalhe/decreto-regional/5-1982-608273
|
||||||
|
#
|
||||||
|
# Decreto Legislativo Regional 18/86/M, published 1986-10-01, adopted EU-style
|
||||||
|
# rules (1:00u) and entered into immediate force after being signed on
|
||||||
|
# 1986-07-31.
|
||||||
|
# https://dre.pt/dr/detalhe/decreto-legislativo-regional/18-1986-221705
|
||||||
|
0:00 - WET 1982 Apr 4
|
||||||
|
0:00 Port WE%sT 1986 Jul 31
|
||||||
0:00 EU WE%sT
|
0:00 EU WE%sT
|
||||||
|
|
||||||
# Romania
|
# Romania
|
||||||
@@ -2433,7 +2619,7 @@ Zone Europe/Kaliningrad 1:22:00 - LMT 1893 Apr
|
|||||||
2:00 Poland EE%sT 1946 Apr 7
|
2:00 Poland EE%sT 1946 Apr 7
|
||||||
3:00 Russia MSK/MSD 1989 Mar 26 2:00s
|
3:00 Russia MSK/MSD 1989 Mar 26 2:00s
|
||||||
2:00 Russia EE%sT 2011 Mar 27 2:00s
|
2:00 Russia EE%sT 2011 Mar 27 2:00s
|
||||||
3:00 - +03 2014 Oct 26 2:00s
|
3:00 - %z 2014 Oct 26 2:00s
|
||||||
2:00 - EET
|
2:00 - EET
|
||||||
|
|
||||||
|
|
||||||
@@ -2683,14 +2869,14 @@ Zone Europe/Simferopol 2:16:24 - LMT 1880
|
|||||||
# http://publication.pravo.gov.ru/Document/View/0001201602150056
|
# http://publication.pravo.gov.ru/Document/View/0001201602150056
|
||||||
|
|
||||||
Zone Europe/Astrakhan 3:12:12 - LMT 1924 May
|
Zone Europe/Astrakhan 3:12:12 - LMT 1924 May
|
||||||
3:00 - +03 1930 Jun 21
|
3:00 - %z 1930 Jun 21
|
||||||
4:00 Russia +04/+05 1989 Mar 26 2:00s
|
4:00 Russia %z 1989 Mar 26 2:00s
|
||||||
3:00 Russia +03/+04 1991 Mar 31 2:00s
|
3:00 Russia %z 1991 Mar 31 2:00s
|
||||||
4:00 - +04 1992 Mar 29 2:00s
|
4:00 - %z 1992 Mar 29 2:00s
|
||||||
3:00 Russia +03/+04 2011 Mar 27 2:00s
|
3:00 Russia %z 2011 Mar 27 2:00s
|
||||||
4:00 - +04 2014 Oct 26 2:00s
|
4:00 - %z 2014 Oct 26 2:00s
|
||||||
3:00 - +03 2016 Mar 27 2:00s
|
3:00 - %z 2016 Mar 27 2:00s
|
||||||
4:00 - +04
|
4:00 - %z
|
||||||
|
|
||||||
# From Paul Eggert (2016-11-11):
|
# From Paul Eggert (2016-11-11):
|
||||||
# Europe/Volgograd covers:
|
# Europe/Volgograd covers:
|
||||||
@@ -2720,15 +2906,15 @@ Zone Europe/Astrakhan 3:12:12 - LMT 1924 May
|
|||||||
# http://publication.pravo.gov.ru/Document/View/0001202012220002
|
# http://publication.pravo.gov.ru/Document/View/0001202012220002
|
||||||
|
|
||||||
Zone Europe/Volgograd 2:57:40 - LMT 1920 Jan 3
|
Zone Europe/Volgograd 2:57:40 - LMT 1920 Jan 3
|
||||||
3:00 - +03 1930 Jun 21
|
3:00 - %z 1930 Jun 21
|
||||||
4:00 - +04 1961 Nov 11
|
4:00 - %z 1961 Nov 11
|
||||||
4:00 Russia +04/+05 1988 Mar 27 2:00s
|
4:00 Russia %z 1988 Mar 27 2:00s
|
||||||
3:00 Russia MSK/MSD 1991 Mar 31 2:00s
|
3:00 Russia MSK/MSD 1991 Mar 31 2:00s
|
||||||
4:00 - +04 1992 Mar 29 2:00s
|
4:00 - %z 1992 Mar 29 2:00s
|
||||||
3:00 Russia MSK/MSD 2011 Mar 27 2:00s
|
3:00 Russia MSK/MSD 2011 Mar 27 2:00s
|
||||||
4:00 - MSK 2014 Oct 26 2:00s
|
4:00 - MSK 2014 Oct 26 2:00s
|
||||||
3:00 - MSK 2018 Oct 28 2:00s
|
3:00 - MSK 2018 Oct 28 2:00s
|
||||||
4:00 - +04 2020 Dec 27 2:00s
|
4:00 - %z 2020 Dec 27 2:00s
|
||||||
3:00 - MSK
|
3:00 - MSK
|
||||||
|
|
||||||
# From Paul Eggert (2016-11-11):
|
# From Paul Eggert (2016-11-11):
|
||||||
@@ -2743,14 +2929,14 @@ Zone Europe/Volgograd 2:57:40 - LMT 1920 Jan 3
|
|||||||
# http://publication.pravo.gov.ru/Document/View/0001201611220031
|
# http://publication.pravo.gov.ru/Document/View/0001201611220031
|
||||||
|
|
||||||
Zone Europe/Saratov 3:04:18 - LMT 1919 Jul 1 0:00u
|
Zone Europe/Saratov 3:04:18 - LMT 1919 Jul 1 0:00u
|
||||||
3:00 - +03 1930 Jun 21
|
3:00 - %z 1930 Jun 21
|
||||||
4:00 Russia +04/+05 1988 Mar 27 2:00s
|
4:00 Russia %z 1988 Mar 27 2:00s
|
||||||
3:00 Russia +03/+04 1991 Mar 31 2:00s
|
3:00 Russia %z 1991 Mar 31 2:00s
|
||||||
4:00 - +04 1992 Mar 29 2:00s
|
4:00 - %z 1992 Mar 29 2:00s
|
||||||
3:00 Russia +03/+04 2011 Mar 27 2:00s
|
3:00 Russia %z 2011 Mar 27 2:00s
|
||||||
4:00 - +04 2014 Oct 26 2:00s
|
4:00 - %z 2014 Oct 26 2:00s
|
||||||
3:00 - +03 2016 Dec 4 2:00s
|
3:00 - %z 2016 Dec 4 2:00s
|
||||||
4:00 - +04
|
4:00 - %z
|
||||||
|
|
||||||
# From Paul Eggert (2016-03-18):
|
# From Paul Eggert (2016-03-18):
|
||||||
# Europe/Kirov covers:
|
# Europe/Kirov covers:
|
||||||
@@ -2758,10 +2944,10 @@ Zone Europe/Saratov 3:04:18 - LMT 1919 Jul 1 0:00u
|
|||||||
# The 1989 transition is from USSR act No. 227 (1989-03-14).
|
# The 1989 transition is from USSR act No. 227 (1989-03-14).
|
||||||
#
|
#
|
||||||
Zone Europe/Kirov 3:18:48 - LMT 1919 Jul 1 0:00u
|
Zone Europe/Kirov 3:18:48 - LMT 1919 Jul 1 0:00u
|
||||||
3:00 - +03 1930 Jun 21
|
3:00 - %z 1930 Jun 21
|
||||||
4:00 Russia +04/+05 1989 Mar 26 2:00s
|
4:00 Russia %z 1989 Mar 26 2:00s
|
||||||
3:00 Russia MSK/MSD 1991 Mar 31 2:00s
|
3:00 Russia MSK/MSD 1991 Mar 31 2:00s
|
||||||
4:00 - +04 1992 Mar 29 2:00s
|
4:00 - %z 1992 Mar 29 2:00s
|
||||||
3:00 Russia MSK/MSD 2011 Mar 27 2:00s
|
3:00 Russia MSK/MSD 2011 Mar 27 2:00s
|
||||||
4:00 - MSK 2014 Oct 26 2:00s
|
4:00 - MSK 2014 Oct 26 2:00s
|
||||||
3:00 - MSK
|
3:00 - MSK
|
||||||
@@ -2776,15 +2962,15 @@ Zone Europe/Kirov 3:18:48 - LMT 1919 Jul 1 0:00u
|
|||||||
# The 1989 transition is from USSR act No. 227 (1989-03-14).
|
# The 1989 transition is from USSR act No. 227 (1989-03-14).
|
||||||
|
|
||||||
Zone Europe/Samara 3:20:20 - LMT 1919 Jul 1 0:00u
|
Zone Europe/Samara 3:20:20 - LMT 1919 Jul 1 0:00u
|
||||||
3:00 - +03 1930 Jun 21
|
3:00 - %z 1930 Jun 21
|
||||||
4:00 - +04 1935 Jan 27
|
4:00 - %z 1935 Jan 27
|
||||||
4:00 Russia +04/+05 1989 Mar 26 2:00s
|
4:00 Russia %z 1989 Mar 26 2:00s
|
||||||
3:00 Russia +03/+04 1991 Mar 31 2:00s
|
3:00 Russia %z 1991 Mar 31 2:00s
|
||||||
2:00 Russia +02/+03 1991 Sep 29 2:00s
|
2:00 Russia %z 1991 Sep 29 2:00s
|
||||||
3:00 - +03 1991 Oct 20 3:00
|
3:00 - %z 1991 Oct 20 3:00
|
||||||
4:00 Russia +04/+05 2010 Mar 28 2:00s
|
4:00 Russia %z 2010 Mar 28 2:00s
|
||||||
3:00 Russia +03/+04 2011 Mar 27 2:00s
|
3:00 Russia %z 2011 Mar 27 2:00s
|
||||||
4:00 - +04
|
4:00 - %z
|
||||||
|
|
||||||
# From Paul Eggert (2016-03-18):
|
# From Paul Eggert (2016-03-18):
|
||||||
# Europe/Ulyanovsk covers:
|
# Europe/Ulyanovsk covers:
|
||||||
@@ -2800,14 +2986,14 @@ Zone Europe/Samara 3:20:20 - LMT 1919 Jul 1 0:00u
|
|||||||
# http://publication.pravo.gov.ru/Document/View/0001201603090051
|
# http://publication.pravo.gov.ru/Document/View/0001201603090051
|
||||||
|
|
||||||
Zone Europe/Ulyanovsk 3:13:36 - LMT 1919 Jul 1 0:00u
|
Zone Europe/Ulyanovsk 3:13:36 - LMT 1919 Jul 1 0:00u
|
||||||
3:00 - +03 1930 Jun 21
|
3:00 - %z 1930 Jun 21
|
||||||
4:00 Russia +04/+05 1989 Mar 26 2:00s
|
4:00 Russia %z 1989 Mar 26 2:00s
|
||||||
3:00 Russia +03/+04 1991 Mar 31 2:00s
|
3:00 Russia %z 1991 Mar 31 2:00s
|
||||||
2:00 Russia +02/+03 1992 Jan 19 2:00s
|
2:00 Russia %z 1992 Jan 19 2:00s
|
||||||
3:00 Russia +03/+04 2011 Mar 27 2:00s
|
3:00 Russia %z 2011 Mar 27 2:00s
|
||||||
4:00 - +04 2014 Oct 26 2:00s
|
4:00 - %z 2014 Oct 26 2:00s
|
||||||
3:00 - +03 2016 Mar 27 2:00s
|
3:00 - %z 2016 Mar 27 2:00s
|
||||||
4:00 - +04
|
4:00 - %z
|
||||||
|
|
||||||
# From Tim Parenti (2014-07-03), per Oscar van Vlijmen (2001-08-25):
|
# From Tim Parenti (2014-07-03), per Oscar van Vlijmen (2001-08-25):
|
||||||
# Asia/Yekaterinburg covers...
|
# Asia/Yekaterinburg covers...
|
||||||
@@ -2832,12 +3018,12 @@ Zone Europe/Ulyanovsk 3:13:36 - LMT 1919 Jul 1 0:00u
|
|||||||
#STDOFF 4:02:32.9
|
#STDOFF 4:02:32.9
|
||||||
Zone Asia/Yekaterinburg 4:02:33 - LMT 1916 Jul 3
|
Zone Asia/Yekaterinburg 4:02:33 - LMT 1916 Jul 3
|
||||||
3:45:05 - PMT 1919 Jul 15 4:00
|
3:45:05 - PMT 1919 Jul 15 4:00
|
||||||
4:00 - +04 1930 Jun 21
|
4:00 - %z 1930 Jun 21
|
||||||
5:00 Russia +05/+06 1991 Mar 31 2:00s
|
5:00 Russia %z 1991 Mar 31 2:00s
|
||||||
4:00 Russia +04/+05 1992 Jan 19 2:00s
|
4:00 Russia %z 1992 Jan 19 2:00s
|
||||||
5:00 Russia +05/+06 2011 Mar 27 2:00s
|
5:00 Russia %z 2011 Mar 27 2:00s
|
||||||
6:00 - +06 2014 Oct 26 2:00s
|
6:00 - %z 2014 Oct 26 2:00s
|
||||||
5:00 - +05
|
5:00 - %z
|
||||||
|
|
||||||
|
|
||||||
# From Tim Parenti (2014-07-03), per Oscar van Vlijmen (2001-08-25):
|
# From Tim Parenti (2014-07-03), per Oscar van Vlijmen (2001-08-25):
|
||||||
@@ -2847,12 +3033,12 @@ Zone Asia/Yekaterinburg 4:02:33 - LMT 1916 Jul 3
|
|||||||
# Byalokoz 1919 says Omsk was 4:53:30.
|
# Byalokoz 1919 says Omsk was 4:53:30.
|
||||||
|
|
||||||
Zone Asia/Omsk 4:53:30 - LMT 1919 Nov 14
|
Zone Asia/Omsk 4:53:30 - LMT 1919 Nov 14
|
||||||
5:00 - +05 1930 Jun 21
|
5:00 - %z 1930 Jun 21
|
||||||
6:00 Russia +06/+07 1991 Mar 31 2:00s
|
6:00 Russia %z 1991 Mar 31 2:00s
|
||||||
5:00 Russia +05/+06 1992 Jan 19 2:00s
|
5:00 Russia %z 1992 Jan 19 2:00s
|
||||||
6:00 Russia +06/+07 2011 Mar 27 2:00s
|
6:00 Russia %z 2011 Mar 27 2:00s
|
||||||
7:00 - +07 2014 Oct 26 2:00s
|
7:00 - %z 2014 Oct 26 2:00s
|
||||||
6:00 - +06
|
6:00 - %z
|
||||||
|
|
||||||
# From Paul Eggert (2016-02-22):
|
# From Paul Eggert (2016-02-22):
|
||||||
# Asia/Barnaul covers:
|
# Asia/Barnaul covers:
|
||||||
@@ -2885,14 +3071,14 @@ Zone Asia/Omsk 4:53:30 - LMT 1919 Nov 14
|
|||||||
# http://publication.pravo.gov.ru/Document/View/0001201603090038
|
# http://publication.pravo.gov.ru/Document/View/0001201603090038
|
||||||
|
|
||||||
Zone Asia/Barnaul 5:35:00 - LMT 1919 Dec 10
|
Zone Asia/Barnaul 5:35:00 - LMT 1919 Dec 10
|
||||||
6:00 - +06 1930 Jun 21
|
6:00 - %z 1930 Jun 21
|
||||||
7:00 Russia +07/+08 1991 Mar 31 2:00s
|
7:00 Russia %z 1991 Mar 31 2:00s
|
||||||
6:00 Russia +06/+07 1992 Jan 19 2:00s
|
6:00 Russia %z 1992 Jan 19 2:00s
|
||||||
7:00 Russia +07/+08 1995 May 28
|
7:00 Russia %z 1995 May 28
|
||||||
6:00 Russia +06/+07 2011 Mar 27 2:00s
|
6:00 Russia %z 2011 Mar 27 2:00s
|
||||||
7:00 - +07 2014 Oct 26 2:00s
|
7:00 - %z 2014 Oct 26 2:00s
|
||||||
6:00 - +06 2016 Mar 27 2:00s
|
6:00 - %z 2016 Mar 27 2:00s
|
||||||
7:00 - +07
|
7:00 - %z
|
||||||
|
|
||||||
# From Paul Eggert (2016-03-18):
|
# From Paul Eggert (2016-03-18):
|
||||||
# Asia/Novosibirsk covers:
|
# Asia/Novosibirsk covers:
|
||||||
@@ -2906,14 +3092,14 @@ Zone Asia/Barnaul 5:35:00 - LMT 1919 Dec 10
|
|||||||
# http://publication.pravo.gov.ru/Document/View/0001201607040064
|
# http://publication.pravo.gov.ru/Document/View/0001201607040064
|
||||||
|
|
||||||
Zone Asia/Novosibirsk 5:31:40 - LMT 1919 Dec 14 6:00
|
Zone Asia/Novosibirsk 5:31:40 - LMT 1919 Dec 14 6:00
|
||||||
6:00 - +06 1930 Jun 21
|
6:00 - %z 1930 Jun 21
|
||||||
7:00 Russia +07/+08 1991 Mar 31 2:00s
|
7:00 Russia %z 1991 Mar 31 2:00s
|
||||||
6:00 Russia +06/+07 1992 Jan 19 2:00s
|
6:00 Russia %z 1992 Jan 19 2:00s
|
||||||
7:00 Russia +07/+08 1993 May 23 # say Shanks & P.
|
7:00 Russia %z 1993 May 23 # say Shanks & P.
|
||||||
6:00 Russia +06/+07 2011 Mar 27 2:00s
|
6:00 Russia %z 2011 Mar 27 2:00s
|
||||||
7:00 - +07 2014 Oct 26 2:00s
|
7:00 - %z 2014 Oct 26 2:00s
|
||||||
6:00 - +06 2016 Jul 24 2:00s
|
6:00 - %z 2016 Jul 24 2:00s
|
||||||
7:00 - +07
|
7:00 - %z
|
||||||
|
|
||||||
# From Paul Eggert (2016-03-18):
|
# From Paul Eggert (2016-03-18):
|
||||||
# Asia/Tomsk covers:
|
# Asia/Tomsk covers:
|
||||||
@@ -2958,14 +3144,14 @@ Zone Asia/Novosibirsk 5:31:40 - LMT 1919 Dec 14 6:00
|
|||||||
# http://publication.pravo.gov.ru/Document/View/0001201604260048
|
# http://publication.pravo.gov.ru/Document/View/0001201604260048
|
||||||
|
|
||||||
Zone Asia/Tomsk 5:39:51 - LMT 1919 Dec 22
|
Zone Asia/Tomsk 5:39:51 - LMT 1919 Dec 22
|
||||||
6:00 - +06 1930 Jun 21
|
6:00 - %z 1930 Jun 21
|
||||||
7:00 Russia +07/+08 1991 Mar 31 2:00s
|
7:00 Russia %z 1991 Mar 31 2:00s
|
||||||
6:00 Russia +06/+07 1992 Jan 19 2:00s
|
6:00 Russia %z 1992 Jan 19 2:00s
|
||||||
7:00 Russia +07/+08 2002 May 1 3:00
|
7:00 Russia %z 2002 May 1 3:00
|
||||||
6:00 Russia +06/+07 2011 Mar 27 2:00s
|
6:00 Russia %z 2011 Mar 27 2:00s
|
||||||
7:00 - +07 2014 Oct 26 2:00s
|
7:00 - %z 2014 Oct 26 2:00s
|
||||||
6:00 - +06 2016 May 29 2:00s
|
6:00 - %z 2016 May 29 2:00s
|
||||||
7:00 - +07
|
7:00 - %z
|
||||||
|
|
||||||
|
|
||||||
# From Tim Parenti (2014-07-03):
|
# From Tim Parenti (2014-07-03):
|
||||||
@@ -2996,12 +3182,12 @@ Zone Asia/Tomsk 5:39:51 - LMT 1919 Dec 22
|
|||||||
# realigning itself with KRAT.
|
# realigning itself with KRAT.
|
||||||
|
|
||||||
Zone Asia/Novokuznetsk 5:48:48 - LMT 1924 May 1
|
Zone Asia/Novokuznetsk 5:48:48 - LMT 1924 May 1
|
||||||
6:00 - +06 1930 Jun 21
|
6:00 - %z 1930 Jun 21
|
||||||
7:00 Russia +07/+08 1991 Mar 31 2:00s
|
7:00 Russia %z 1991 Mar 31 2:00s
|
||||||
6:00 Russia +06/+07 1992 Jan 19 2:00s
|
6:00 Russia %z 1992 Jan 19 2:00s
|
||||||
7:00 Russia +07/+08 2010 Mar 28 2:00s
|
7:00 Russia %z 2010 Mar 28 2:00s
|
||||||
6:00 Russia +06/+07 2011 Mar 27 2:00s
|
6:00 Russia %z 2011 Mar 27 2:00s
|
||||||
7:00 - +07
|
7:00 - %z
|
||||||
|
|
||||||
# From Tim Parenti (2014-07-03), per Oscar van Vlijmen (2001-08-25):
|
# From Tim Parenti (2014-07-03), per Oscar van Vlijmen (2001-08-25):
|
||||||
# Asia/Krasnoyarsk covers...
|
# Asia/Krasnoyarsk covers...
|
||||||
@@ -3015,12 +3201,12 @@ Zone Asia/Novokuznetsk 5:48:48 - LMT 1924 May 1
|
|||||||
# Byalokoz 1919 says Krasnoyarsk was 6:11:26.
|
# Byalokoz 1919 says Krasnoyarsk was 6:11:26.
|
||||||
|
|
||||||
Zone Asia/Krasnoyarsk 6:11:26 - LMT 1920 Jan 6
|
Zone Asia/Krasnoyarsk 6:11:26 - LMT 1920 Jan 6
|
||||||
6:00 - +06 1930 Jun 21
|
6:00 - %z 1930 Jun 21
|
||||||
7:00 Russia +07/+08 1991 Mar 31 2:00s
|
7:00 Russia %z 1991 Mar 31 2:00s
|
||||||
6:00 Russia +06/+07 1992 Jan 19 2:00s
|
6:00 Russia %z 1992 Jan 19 2:00s
|
||||||
7:00 Russia +07/+08 2011 Mar 27 2:00s
|
7:00 Russia %z 2011 Mar 27 2:00s
|
||||||
8:00 - +08 2014 Oct 26 2:00s
|
8:00 - %z 2014 Oct 26 2:00s
|
||||||
7:00 - +07
|
7:00 - %z
|
||||||
|
|
||||||
|
|
||||||
# From Tim Parenti (2014-07-03), per Oscar van Vlijmen (2001-08-25):
|
# From Tim Parenti (2014-07-03), per Oscar van Vlijmen (2001-08-25):
|
||||||
@@ -3037,12 +3223,12 @@ Zone Asia/Krasnoyarsk 6:11:26 - LMT 1920 Jan 6
|
|||||||
|
|
||||||
Zone Asia/Irkutsk 6:57:05 - LMT 1880
|
Zone Asia/Irkutsk 6:57:05 - LMT 1880
|
||||||
6:57:05 - IMT 1920 Jan 25 # Irkutsk Mean Time
|
6:57:05 - IMT 1920 Jan 25 # Irkutsk Mean Time
|
||||||
7:00 - +07 1930 Jun 21
|
7:00 - %z 1930 Jun 21
|
||||||
8:00 Russia +08/+09 1991 Mar 31 2:00s
|
8:00 Russia %z 1991 Mar 31 2:00s
|
||||||
7:00 Russia +07/+08 1992 Jan 19 2:00s
|
7:00 Russia %z 1992 Jan 19 2:00s
|
||||||
8:00 Russia +08/+09 2011 Mar 27 2:00s
|
8:00 Russia %z 2011 Mar 27 2:00s
|
||||||
9:00 - +09 2014 Oct 26 2:00s
|
9:00 - %z 2014 Oct 26 2:00s
|
||||||
8:00 - +08
|
8:00 - %z
|
||||||
|
|
||||||
|
|
||||||
# From Tim Parenti (2014-07-06):
|
# From Tim Parenti (2014-07-06):
|
||||||
@@ -3059,13 +3245,13 @@ Zone Asia/Irkutsk 6:57:05 - LMT 1880
|
|||||||
# http://publication.pravo.gov.ru/Document/View/0001201512300107
|
# http://publication.pravo.gov.ru/Document/View/0001201512300107
|
||||||
|
|
||||||
Zone Asia/Chita 7:33:52 - LMT 1919 Dec 15
|
Zone Asia/Chita 7:33:52 - LMT 1919 Dec 15
|
||||||
8:00 - +08 1930 Jun 21
|
8:00 - %z 1930 Jun 21
|
||||||
9:00 Russia +09/+10 1991 Mar 31 2:00s
|
9:00 Russia %z 1991 Mar 31 2:00s
|
||||||
8:00 Russia +08/+09 1992 Jan 19 2:00s
|
8:00 Russia %z 1992 Jan 19 2:00s
|
||||||
9:00 Russia +09/+10 2011 Mar 27 2:00s
|
9:00 Russia %z 2011 Mar 27 2:00s
|
||||||
10:00 - +10 2014 Oct 26 2:00s
|
10:00 - %z 2014 Oct 26 2:00s
|
||||||
8:00 - +08 2016 Mar 27 2:00
|
8:00 - %z 2016 Mar 27 2:00
|
||||||
9:00 - +09
|
9:00 - %z
|
||||||
|
|
||||||
|
|
||||||
# From Tim Parenti (2014-07-03), per Oscar van Vlijmen (2009-11-29):
|
# From Tim Parenti (2014-07-03), per Oscar van Vlijmen (2009-11-29):
|
||||||
@@ -3105,12 +3291,12 @@ Zone Asia/Chita 7:33:52 - LMT 1919 Dec 15
|
|||||||
# Byalokoz 1919 says Yakutsk was 8:38:58.
|
# Byalokoz 1919 says Yakutsk was 8:38:58.
|
||||||
|
|
||||||
Zone Asia/Yakutsk 8:38:58 - LMT 1919 Dec 15
|
Zone Asia/Yakutsk 8:38:58 - LMT 1919 Dec 15
|
||||||
8:00 - +08 1930 Jun 21
|
8:00 - %z 1930 Jun 21
|
||||||
9:00 Russia +09/+10 1991 Mar 31 2:00s
|
9:00 Russia %z 1991 Mar 31 2:00s
|
||||||
8:00 Russia +08/+09 1992 Jan 19 2:00s
|
8:00 Russia %z 1992 Jan 19 2:00s
|
||||||
9:00 Russia +09/+10 2011 Mar 27 2:00s
|
9:00 Russia %z 2011 Mar 27 2:00s
|
||||||
10:00 - +10 2014 Oct 26 2:00s
|
10:00 - %z 2014 Oct 26 2:00s
|
||||||
9:00 - +09
|
9:00 - %z
|
||||||
|
|
||||||
|
|
||||||
# From Tim Parenti (2014-07-03), per Oscar van Vlijmen (2009-11-29):
|
# From Tim Parenti (2014-07-03), per Oscar van Vlijmen (2009-11-29):
|
||||||
@@ -3128,12 +3314,12 @@ Zone Asia/Yakutsk 8:38:58 - LMT 1919 Dec 15
|
|||||||
# Go with Byalokoz.
|
# Go with Byalokoz.
|
||||||
|
|
||||||
Zone Asia/Vladivostok 8:47:31 - LMT 1922 Nov 15
|
Zone Asia/Vladivostok 8:47:31 - LMT 1922 Nov 15
|
||||||
9:00 - +09 1930 Jun 21
|
9:00 - %z 1930 Jun 21
|
||||||
10:00 Russia +10/+11 1991 Mar 31 2:00s
|
10:00 Russia %z 1991 Mar 31 2:00s
|
||||||
9:00 Russia +09/+10 1992 Jan 19 2:00s
|
9:00 Russia %z 1992 Jan 19 2:00s
|
||||||
10:00 Russia +10/+11 2011 Mar 27 2:00s
|
10:00 Russia %z 2011 Mar 27 2:00s
|
||||||
11:00 - +11 2014 Oct 26 2:00s
|
11:00 - %z 2014 Oct 26 2:00s
|
||||||
10:00 - +10
|
10:00 - %z
|
||||||
|
|
||||||
|
|
||||||
# From Tim Parenti (2014-07-03):
|
# From Tim Parenti (2014-07-03):
|
||||||
@@ -3151,14 +3337,14 @@ Zone Asia/Vladivostok 8:47:31 - LMT 1922 Nov 15
|
|||||||
# This transition is no doubt wrong, but we have no better info.
|
# This transition is no doubt wrong, but we have no better info.
|
||||||
|
|
||||||
Zone Asia/Khandyga 9:02:13 - LMT 1919 Dec 15
|
Zone Asia/Khandyga 9:02:13 - LMT 1919 Dec 15
|
||||||
8:00 - +08 1930 Jun 21
|
8:00 - %z 1930 Jun 21
|
||||||
9:00 Russia +09/+10 1991 Mar 31 2:00s
|
9:00 Russia %z 1991 Mar 31 2:00s
|
||||||
8:00 Russia +08/+09 1992 Jan 19 2:00s
|
8:00 Russia %z 1992 Jan 19 2:00s
|
||||||
9:00 Russia +09/+10 2004
|
9:00 Russia %z 2004
|
||||||
10:00 Russia +10/+11 2011 Mar 27 2:00s
|
10:00 Russia %z 2011 Mar 27 2:00s
|
||||||
11:00 - +11 2011 Sep 13 0:00s # Decree 725?
|
11:00 - %z 2011 Sep 13 0:00s # Decree 725?
|
||||||
10:00 - +10 2014 Oct 26 2:00s
|
10:00 - %z 2014 Oct 26 2:00s
|
||||||
9:00 - +09
|
9:00 - %z
|
||||||
|
|
||||||
|
|
||||||
# From Tim Parenti (2014-07-03):
|
# From Tim Parenti (2014-07-03):
|
||||||
@@ -3174,14 +3360,14 @@ Zone Asia/Khandyga 9:02:13 - LMT 1919 Dec 15
|
|||||||
|
|
||||||
# The Zone name should be Asia/Yuzhno-Sakhalinsk, but that's too long.
|
# The Zone name should be Asia/Yuzhno-Sakhalinsk, but that's too long.
|
||||||
Zone Asia/Sakhalin 9:30:48 - LMT 1905 Aug 23
|
Zone Asia/Sakhalin 9:30:48 - LMT 1905 Aug 23
|
||||||
9:00 - +09 1945 Aug 25
|
9:00 - %z 1945 Aug 25
|
||||||
11:00 Russia +11/+12 1991 Mar 31 2:00s # Sakhalin T
|
11:00 Russia %z 1991 Mar 31 2:00s # Sakhalin T
|
||||||
10:00 Russia +10/+11 1992 Jan 19 2:00s
|
10:00 Russia %z 1992 Jan 19 2:00s
|
||||||
11:00 Russia +11/+12 1997 Mar lastSun 2:00s
|
11:00 Russia %z 1997 Mar lastSun 2:00s
|
||||||
10:00 Russia +10/+11 2011 Mar 27 2:00s
|
10:00 Russia %z 2011 Mar 27 2:00s
|
||||||
11:00 - +11 2014 Oct 26 2:00s
|
11:00 - %z 2014 Oct 26 2:00s
|
||||||
10:00 - +10 2016 Mar 27 2:00s
|
10:00 - %z 2016 Mar 27 2:00s
|
||||||
11:00 - +11
|
11:00 - %z
|
||||||
|
|
||||||
|
|
||||||
# From Tim Parenti (2014-07-03), per Oscar van Vlijmen (2009-11-29):
|
# From Tim Parenti (2014-07-03), per Oscar van Vlijmen (2009-11-29):
|
||||||
@@ -3204,13 +3390,13 @@ Zone Asia/Sakhalin 9:30:48 - LMT 1905 Aug 23
|
|||||||
# http://publication.pravo.gov.ru/Document/View/0001201604050038
|
# http://publication.pravo.gov.ru/Document/View/0001201604050038
|
||||||
|
|
||||||
Zone Asia/Magadan 10:03:12 - LMT 1924 May 2
|
Zone Asia/Magadan 10:03:12 - LMT 1924 May 2
|
||||||
10:00 - +10 1930 Jun 21 # Magadan Time
|
10:00 - %z 1930 Jun 21 # Magadan Time
|
||||||
11:00 Russia +11/+12 1991 Mar 31 2:00s
|
11:00 Russia %z 1991 Mar 31 2:00s
|
||||||
10:00 Russia +10/+11 1992 Jan 19 2:00s
|
10:00 Russia %z 1992 Jan 19 2:00s
|
||||||
11:00 Russia +11/+12 2011 Mar 27 2:00s
|
11:00 Russia %z 2011 Mar 27 2:00s
|
||||||
12:00 - +12 2014 Oct 26 2:00s
|
12:00 - %z 2014 Oct 26 2:00s
|
||||||
10:00 - +10 2016 Apr 24 2:00s
|
10:00 - %z 2016 Apr 24 2:00s
|
||||||
11:00 - +11
|
11:00 - %z
|
||||||
|
|
||||||
|
|
||||||
# From Tim Parenti (2014-07-06):
|
# From Tim Parenti (2014-07-06):
|
||||||
@@ -3255,12 +3441,12 @@ Zone Asia/Magadan 10:03:12 - LMT 1924 May 2
|
|||||||
# Go with Srednekolymsk.
|
# Go with Srednekolymsk.
|
||||||
|
|
||||||
Zone Asia/Srednekolymsk 10:14:52 - LMT 1924 May 2
|
Zone Asia/Srednekolymsk 10:14:52 - LMT 1924 May 2
|
||||||
10:00 - +10 1930 Jun 21
|
10:00 - %z 1930 Jun 21
|
||||||
11:00 Russia +11/+12 1991 Mar 31 2:00s
|
11:00 Russia %z 1991 Mar 31 2:00s
|
||||||
10:00 Russia +10/+11 1992 Jan 19 2:00s
|
10:00 Russia %z 1992 Jan 19 2:00s
|
||||||
11:00 Russia +11/+12 2011 Mar 27 2:00s
|
11:00 Russia %z 2011 Mar 27 2:00s
|
||||||
12:00 - +12 2014 Oct 26 2:00s
|
12:00 - %z 2014 Oct 26 2:00s
|
||||||
11:00 - +11
|
11:00 - %z
|
||||||
|
|
||||||
|
|
||||||
# From Tim Parenti (2014-07-03):
|
# From Tim Parenti (2014-07-03):
|
||||||
@@ -3278,14 +3464,14 @@ Zone Asia/Srednekolymsk 10:14:52 - LMT 1924 May 2
|
|||||||
# UTC+12 since at least then, too.
|
# UTC+12 since at least then, too.
|
||||||
|
|
||||||
Zone Asia/Ust-Nera 9:32:54 - LMT 1919 Dec 15
|
Zone Asia/Ust-Nera 9:32:54 - LMT 1919 Dec 15
|
||||||
8:00 - +08 1930 Jun 21
|
8:00 - %z 1930 Jun 21
|
||||||
9:00 Russia +09/+10 1981 Apr 1
|
9:00 Russia %z 1981 Apr 1
|
||||||
11:00 Russia +11/+12 1991 Mar 31 2:00s
|
11:00 Russia %z 1991 Mar 31 2:00s
|
||||||
10:00 Russia +10/+11 1992 Jan 19 2:00s
|
10:00 Russia %z 1992 Jan 19 2:00s
|
||||||
11:00 Russia +11/+12 2011 Mar 27 2:00s
|
11:00 Russia %z 2011 Mar 27 2:00s
|
||||||
12:00 - +12 2011 Sep 13 0:00s # Decree 725?
|
12:00 - %z 2011 Sep 13 0:00s # Decree 725?
|
||||||
11:00 - +11 2014 Oct 26 2:00s
|
11:00 - %z 2014 Oct 26 2:00s
|
||||||
10:00 - +10
|
10:00 - %z
|
||||||
|
|
||||||
|
|
||||||
# From Tim Parenti (2014-07-03), per Oscar van Vlijmen (2001-08-25):
|
# From Tim Parenti (2014-07-03), per Oscar van Vlijmen (2001-08-25):
|
||||||
@@ -3298,12 +3484,12 @@ Zone Asia/Ust-Nera 9:32:54 - LMT 1919 Dec 15
|
|||||||
# The Zone name should be Asia/Petropavlovsk-Kamchatski or perhaps
|
# The Zone name should be Asia/Petropavlovsk-Kamchatski or perhaps
|
||||||
# Asia/Petropavlovsk-Kamchatsky, but these are too long.
|
# Asia/Petropavlovsk-Kamchatsky, but these are too long.
|
||||||
Zone Asia/Kamchatka 10:34:36 - LMT 1922 Nov 10
|
Zone Asia/Kamchatka 10:34:36 - LMT 1922 Nov 10
|
||||||
11:00 - +11 1930 Jun 21
|
11:00 - %z 1930 Jun 21
|
||||||
12:00 Russia +12/+13 1991 Mar 31 2:00s
|
12:00 Russia %z 1991 Mar 31 2:00s
|
||||||
11:00 Russia +11/+12 1992 Jan 19 2:00s
|
11:00 Russia %z 1992 Jan 19 2:00s
|
||||||
12:00 Russia +12/+13 2010 Mar 28 2:00s
|
12:00 Russia %z 2010 Mar 28 2:00s
|
||||||
11:00 Russia +11/+12 2011 Mar 27 2:00s
|
11:00 Russia %z 2011 Mar 27 2:00s
|
||||||
12:00 - +12
|
12:00 - %z
|
||||||
|
|
||||||
|
|
||||||
# From Tim Parenti (2014-07-03):
|
# From Tim Parenti (2014-07-03):
|
||||||
@@ -3311,13 +3497,13 @@ Zone Asia/Kamchatka 10:34:36 - LMT 1922 Nov 10
|
|||||||
# 87 RU-CHU Chukotka Autonomous Okrug
|
# 87 RU-CHU Chukotka Autonomous Okrug
|
||||||
|
|
||||||
Zone Asia/Anadyr 11:49:56 - LMT 1924 May 2
|
Zone Asia/Anadyr 11:49:56 - LMT 1924 May 2
|
||||||
12:00 - +12 1930 Jun 21
|
12:00 - %z 1930 Jun 21
|
||||||
13:00 Russia +13/+14 1982 Apr 1 0:00s
|
13:00 Russia %z 1982 Apr 1 0:00s
|
||||||
12:00 Russia +12/+13 1991 Mar 31 2:00s
|
12:00 Russia %z 1991 Mar 31 2:00s
|
||||||
11:00 Russia +11/+12 1992 Jan 19 2:00s
|
11:00 Russia %z 1992 Jan 19 2:00s
|
||||||
12:00 Russia +12/+13 2010 Mar 28 2:00s
|
12:00 Russia %z 2010 Mar 28 2:00s
|
||||||
11:00 Russia +11/+12 2011 Mar 27 2:00s
|
11:00 Russia %z 2011 Mar 27 2:00s
|
||||||
12:00 - +12
|
12:00 - %z
|
||||||
|
|
||||||
# Bosnia & Herzegovina
|
# Bosnia & Herzegovina
|
||||||
# Croatia
|
# Croatia
|
||||||
@@ -3436,7 +3622,7 @@ Zone Africa/Ceuta -0:21:16 - LMT 1901 Jan 1 0:00u
|
|||||||
1:00 - CET 1986
|
1:00 - CET 1986
|
||||||
1:00 EU CE%sT
|
1:00 EU CE%sT
|
||||||
Zone Atlantic/Canary -1:01:36 - LMT 1922 Mar # Las Palmas de Gran C.
|
Zone Atlantic/Canary -1:01:36 - LMT 1922 Mar # Las Palmas de Gran C.
|
||||||
-1:00 - -01 1946 Sep 30 1:00
|
-1:00 - %z 1946 Sep 30 1:00
|
||||||
0:00 - WET 1980 Apr 6 0:00s
|
0:00 - WET 1980 Apr 6 0:00s
|
||||||
0:00 1:00 WEST 1980 Sep 28 1:00u
|
0:00 1:00 WEST 1980 Sep 28 1:00u
|
||||||
0:00 EU WE%sT
|
0:00 EU WE%sT
|
||||||
@@ -3517,8 +3703,8 @@ Zone Atlantic/Canary -1:01:36 - LMT 1922 Mar # Las Palmas de Gran C.
|
|||||||
# but if no one is present after 11 at night, could be postponed until one
|
# but if no one is present after 11 at night, could be postponed until one
|
||||||
# hour before the beginning of service.
|
# hour before the beginning of service.
|
||||||
|
|
||||||
# From Paul Eggert (2013-09-11):
|
# From Paul Eggert (2024-05-24):
|
||||||
# Round BMT to the nearest even second, 0:29:46.
|
# Express BMT as 0:29:45.500, approximately the same precision 7° 26' 22.50".
|
||||||
#
|
#
|
||||||
# We can find no reliable source for Shanks's assertion that all of Switzerland
|
# We can find no reliable source for Shanks's assertion that all of Switzerland
|
||||||
# except Geneva switched to Bern Mean Time at 00:00 on 1848-09-12. This book:
|
# except Geneva switched to Bern Mean Time at 00:00 on 1848-09-12. This book:
|
||||||
@@ -3557,6 +3743,7 @@ Rule Swiss 1941 1942 - May Mon>=1 1:00 1:00 S
|
|||||||
Rule Swiss 1941 1942 - Oct Mon>=1 2:00 0 -
|
Rule Swiss 1941 1942 - Oct Mon>=1 2:00 0 -
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Europe/Zurich 0:34:08 - LMT 1853 Jul 16 # See above comment.
|
Zone Europe/Zurich 0:34:08 - LMT 1853 Jul 16 # See above comment.
|
||||||
|
#STDOFF 0:29:45.500
|
||||||
0:29:46 - BMT 1894 Jun # Bern Mean Time
|
0:29:46 - BMT 1894 Jun # Bern Mean Time
|
||||||
1:00 Swiss CE%sT 1981
|
1:00 Swiss CE%sT 1981
|
||||||
1:00 EU CE%sT
|
1:00 EU CE%sT
|
||||||
@@ -3754,7 +3941,7 @@ Rule Turkey 1996 2006 - Oct lastSun 1:00s 0 -
|
|||||||
Zone Europe/Istanbul 1:55:52 - LMT 1880
|
Zone Europe/Istanbul 1:55:52 - LMT 1880
|
||||||
1:56:56 - IMT 1910 Oct # Istanbul Mean Time?
|
1:56:56 - IMT 1910 Oct # Istanbul Mean Time?
|
||||||
2:00 Turkey EE%sT 1978 Jun 29
|
2:00 Turkey EE%sT 1978 Jun 29
|
||||||
3:00 Turkey +03/+04 1984 Nov 1 2:00
|
3:00 Turkey %z 1984 Nov 1 2:00
|
||||||
2:00 Turkey EE%sT 2007
|
2:00 Turkey EE%sT 2007
|
||||||
2:00 EU EE%sT 2011 Mar 27 1:00u
|
2:00 EU EE%sT 2011 Mar 27 1:00u
|
||||||
2:00 - EET 2011 Mar 28 1:00u
|
2:00 - EET 2011 Mar 28 1:00u
|
||||||
@@ -3763,7 +3950,7 @@ Zone Europe/Istanbul 1:55:52 - LMT 1880
|
|||||||
2:00 EU EE%sT 2015 Oct 25 1:00u
|
2:00 EU EE%sT 2015 Oct 25 1:00u
|
||||||
2:00 1:00 EEST 2015 Nov 8 1:00u
|
2:00 1:00 EEST 2015 Nov 8 1:00u
|
||||||
2:00 EU EE%sT 2016 Sep 7
|
2:00 EU EE%sT 2016 Sep 7
|
||||||
3:00 - +03
|
3:00 - %z
|
||||||
|
|
||||||
# Ukraine
|
# Ukraine
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -92,11 +92,11 @@ Leap 2016 Dec 31 23:59:60 + S
|
|||||||
# Any additional leap seconds will come after this.
|
# Any additional leap seconds will come after this.
|
||||||
# This Expires line is commented out for now,
|
# This Expires line is commented out for now,
|
||||||
# so that pre-2020a zic implementations do not reject this file.
|
# so that pre-2020a zic implementations do not reject this file.
|
||||||
#Expires 2024 Dec 28 00:00:00
|
#Expires 2025 Jun 28 00:00:00
|
||||||
|
|
||||||
# POSIX timestamps for the data in this file:
|
# POSIX timestamps for the data in this file:
|
||||||
#updated 1704708379 (2024-01-08 10:06:19 UTC)
|
#updated 1720104763 (2024-07-04 14:52:43 UTC)
|
||||||
#expires 1735344000 (2024-12-28 00:00:00 UTC)
|
#expires 1751068800 (2025-06-28 00:00:00 UTC)
|
||||||
|
|
||||||
# Updated through IERS Bulletin C (https://hpiers.obspm.fr/iers/bul/bulc/bulletinc.dat)
|
# Updated through IERS Bulletin C (https://hpiers.obspm.fr/iers/bul/bulc/bulletinc.dat)
|
||||||
# File expires on 28 December 2024
|
# File expires on 28 June 2025
|
||||||
|
|||||||
@@ -208,26 +208,6 @@ Rule US 1987 2006 - Apr Sun>=1 2:00 1:00 D
|
|||||||
Rule US 2007 max - Mar Sun>=8 2:00 1:00 D
|
Rule US 2007 max - Mar Sun>=8 2:00 1:00 D
|
||||||
Rule US 2007 max - Nov Sun>=1 2:00 0 S
|
Rule US 2007 max - Nov Sun>=1 2:00 0 S
|
||||||
|
|
||||||
# From Arthur David Olson, 2005-12-19
|
|
||||||
# We generate the files specified below to guard against old files with
|
|
||||||
# obsolete information being left in the time zone binary directory.
|
|
||||||
# We limit the list to names that have appeared in previous versions of
|
|
||||||
# this time zone package.
|
|
||||||
# We do these as separate Zones rather than as Links to avoid problems if
|
|
||||||
# a particular place changes whether it observes DST.
|
|
||||||
# We put these specifications here in the northamerica file both to
|
|
||||||
# increase the chances that they'll actually get compiled and to
|
|
||||||
# avoid the need to duplicate the US rules in another file.
|
|
||||||
|
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
|
||||||
Zone EST -5:00 - EST
|
|
||||||
Zone MST -7:00 - MST
|
|
||||||
Zone HST -10:00 - HST
|
|
||||||
Zone EST5EDT -5:00 US E%sT
|
|
||||||
Zone CST6CDT -6:00 US C%sT
|
|
||||||
Zone MST7MDT -7:00 US M%sT
|
|
||||||
Zone PST8PDT -8:00 US P%sT
|
|
||||||
|
|
||||||
# From U. S. Naval Observatory (1989-01-19):
|
# From U. S. Naval Observatory (1989-01-19):
|
||||||
# USA EASTERN 5 H BEHIND UTC NEW YORK, WASHINGTON
|
# USA EASTERN 5 H BEHIND UTC NEW YORK, WASHINGTON
|
||||||
# USA EASTERN 4 H BEHIND UTC APR 3 - OCT 30
|
# USA EASTERN 4 H BEHIND UTC APR 3 - OCT 30
|
||||||
@@ -2396,6 +2376,81 @@ Zone America/Dawson -9:17:40 - LMT 1900 Aug 20
|
|||||||
# the researchers who prepared the Decrees page failed to find some of
|
# the researchers who prepared the Decrees page failed to find some of
|
||||||
# the relevant documents.
|
# the relevant documents.
|
||||||
|
|
||||||
|
# From Heitor David Pinto (2024-08-04):
|
||||||
|
# In 1931, the decree implementing DST specified that it would take
|
||||||
|
# effect on 30 April....
|
||||||
|
# https://www.dof.gob.mx/nota_to_imagen_fs.php?cod_diario=192270&pagina=2&seccion=1
|
||||||
|
#
|
||||||
|
# In 1981, the decree changing Campeche, Yucatán and Quintana Roo to UTC-5
|
||||||
|
# specified that it would enter into force on 26 December 1981 at 2:00....
|
||||||
|
# https://www.dof.gob.mx/nota_to_imagen_fs.php?codnota=4705667&fecha=23/12/1981&cod_diario=202796
|
||||||
|
#
|
||||||
|
# In 1982, the decree returning Campeche and Yucatán to UTC-6 specified that
|
||||||
|
# it would enter into force on 2 November 1982 at 2:00....
|
||||||
|
# https://www.dof.gob.mx/nota_to_imagen_fs.php?cod_diario=205689&pagina=3&seccion=0
|
||||||
|
#
|
||||||
|
# Quintana Roo changed to UTC-6 on 4 January 1983 at 0:00, and again
|
||||||
|
# to UTC-5 on 26 October 1997 at 2:00....
|
||||||
|
# https://www.dof.gob.mx/nota_to_imagen_fs.php?codnota=4787355&fecha=28/12/1982&cod_diario=206112
|
||||||
|
# https://www.dof.gob.mx/nota_to_imagen_fs.php?cod_diario=209559&pagina=15&seccion=0
|
||||||
|
#
|
||||||
|
# Durango, Coahuila, Nuevo León and Tamaulipas were set to UTC-7 on 1 January
|
||||||
|
# 1922, and changed to UTC-6 on 10 June 1927. Then Durango, Coahuila and
|
||||||
|
# Nuevo León (but not Tamaulipas) returned to UTC-7 on 15 November 1930,
|
||||||
|
# observed DST in 1931, and changed again to UTC-6 on 1 April 1932....
|
||||||
|
# https://www.dof.gob.mx/nota_to_imagen_fs.php?codnota=4441846&fecha=29/12/1921&cod_diario=187468
|
||||||
|
# https://www.dof.gob.mx/nota_to_imagen_fs.php?codnota=4541520&fecha=09/06/1927&cod_diario=193920
|
||||||
|
# https://www.dof.gob.mx/nota_to_imagen_fs.php?codnota=4491963&fecha=15/11/1930&cod_diario=190835
|
||||||
|
# https://www.dof.gob.mx/nota_to_imagen_fs.php?codnota=4418437&fecha=21/01/1932&cod_diario=185588
|
||||||
|
#
|
||||||
|
# ... the ... 10 June 1927 ... decree only said 10 June 1927, without
|
||||||
|
# specifying a time, so I suppose that it should be considered at 0:00.
|
||||||
|
# https://www.dof.gob.mx/nota_to_imagen_fs.php?codnota=4541520&fecha=09/06/1927&cod_diario=193920
|
||||||
|
#
|
||||||
|
# In 1942, the decree changing Baja California, Baja California Sur, Sonora,
|
||||||
|
# Sinaloa and Nayarit to UTC-7 was published on 24 April, but it said that it
|
||||||
|
# would apply from 1 April, so it's unclear when the change actually
|
||||||
|
# occurred. The database currently shows 24 April 1942.
|
||||||
|
# https://www.dof.gob.mx/nota_to_imagen_fs.php?cod_diario=192203&pagina=2&seccion=1
|
||||||
|
#
|
||||||
|
# Baja California Sur, Sonora, Sinaloa and Nayarit never used UTC-8. The ...
|
||||||
|
# 14 January 1949 ... change [to UTC-8] only occurred in Baja California.
|
||||||
|
# https://www.dof.gob.mx/nota_to_imagen_fs.php?codnota=4515613&fecha=13/01/1949&cod_diario=192309
|
||||||
|
#
|
||||||
|
# In 1945, the decree changing Baja California to UTC-8 specified that it
|
||||||
|
# would take effect on the third day from its publication.
|
||||||
|
# It was published on 12 November, so it would take effect on 15 November....
|
||||||
|
# https://www.dof.gob.mx/nota_to_imagen_fs.php?codnota=4555049&fecha=12/11/1945&cod_diario=194763
|
||||||
|
#
|
||||||
|
# In 1948, the decree changing Baja California to UTC-7 specified that it
|
||||||
|
# would take effect on "this date". The decree was made on 13 March,
|
||||||
|
# but published on 5 April, so it's unclear when the change actually occurred.
|
||||||
|
# The database currently shows 5 April 1948.
|
||||||
|
# https://www.dof.gob.mx/nota_to_imagen_fs.php?cod_diario=188624&pagina=2&seccion=0
|
||||||
|
#
|
||||||
|
# In 1949, the decree changing Baja California to UTC-8 was published on 13
|
||||||
|
# January, but it said that it would apply from 1 January, so it's unclear when
|
||||||
|
# the change actually occurred. The database currently shows 14 January 1949.
|
||||||
|
# https://www.dof.gob.mx/nota_to_imagen_fs.php?codnota=4515613&fecha=13/01/1949&cod_diario=192309
|
||||||
|
#
|
||||||
|
# Baja California also observed UTC-7 from 1 May to 24 September 1950,
|
||||||
|
# from 29 April to 30 September 1951 at 2:00,
|
||||||
|
# and from 27 April to 28 September 1952 at 2:00....
|
||||||
|
# https://www.dof.gob.mx/nota_to_imagen_fs.php?codnota=4600403&fecha=29/04/1950&cod_diario=197505
|
||||||
|
# https://www.dof.gob.mx/nota_to_imagen_fs.php?codnota=4623553&fecha=23/09/1950&cod_diario=198805
|
||||||
|
# https://www.dof.gob.mx/nota_to_imagen_fs.php?codnota=4469444&fecha=27/04/1951&cod_diario=189317
|
||||||
|
# https://www.dof.gob.mx/nota_to_imagen_fs.php?codnota=4533868&fecha=10/03/1952&cod_diario=193465
|
||||||
|
#
|
||||||
|
# All changes in Baja California from 1948 to 1952 match those in California,
|
||||||
|
# on the same dates or with a difference of one day.
|
||||||
|
# So it may be easier to implement these changes as DST with rule CA
|
||||||
|
# during this whole period.
|
||||||
|
#
|
||||||
|
# From Paul Eggert (2024-08-18):
|
||||||
|
# For now, maintain the slightly-different history for Baja California,
|
||||||
|
# as we have no information on whether 1948/1952 clocks in Tijuana followed
|
||||||
|
# the decrees or followed San Diego.
|
||||||
|
|
||||||
# From Alan Perry (1996-02-15):
|
# From Alan Perry (1996-02-15):
|
||||||
# A guy from our Mexico subsidiary finally found the Presidential Decree
|
# A guy from our Mexico subsidiary finally found the Presidential Decree
|
||||||
# outlining the timezone changes in Mexico.
|
# outlining the timezone changes in Mexico.
|
||||||
@@ -2599,7 +2654,7 @@ Zone America/Dawson -9:17:40 - LMT 1900 Aug 20
|
|||||||
# http://puentelibre.mx/noticia/ciudad_juarez_cambio_horario_noviembre_2022/
|
# http://puentelibre.mx/noticia/ciudad_juarez_cambio_horario_noviembre_2022/
|
||||||
|
|
||||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||||
Rule Mexico 1931 only - May 1 23:00 1:00 D
|
Rule Mexico 1931 only - April 30 0:00 1:00 D
|
||||||
Rule Mexico 1931 only - Oct 1 0:00 0 S
|
Rule Mexico 1931 only - Oct 1 0:00 0 S
|
||||||
Rule Mexico 1939 only - Feb 5 0:00 1:00 D
|
Rule Mexico 1939 only - Feb 5 0:00 1:00 D
|
||||||
Rule Mexico 1939 only - Jun 25 0:00 0 S
|
Rule Mexico 1939 only - Jun 25 0:00 0 S
|
||||||
@@ -2618,14 +2673,16 @@ Rule Mexico 2002 2022 - Oct lastSun 2:00 0 S
|
|||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
# Quintana Roo; represented by Cancún
|
# Quintana Roo; represented by Cancún
|
||||||
Zone America/Cancun -5:47:04 - LMT 1922 Jan 1 6:00u
|
Zone America/Cancun -5:47:04 - LMT 1922 Jan 1 6:00u
|
||||||
-6:00 - CST 1981 Dec 23
|
-6:00 - CST 1981 Dec 26 2:00
|
||||||
|
-5:00 - EST 1983 Jan 4 0:00
|
||||||
|
-6:00 Mexico C%sT 1997 Oct 26 2:00
|
||||||
-5:00 Mexico E%sT 1998 Aug 2 2:00
|
-5:00 Mexico E%sT 1998 Aug 2 2:00
|
||||||
-6:00 Mexico C%sT 2015 Feb 1 2:00
|
-6:00 Mexico C%sT 2015 Feb 1 2:00
|
||||||
-5:00 - EST
|
-5:00 - EST
|
||||||
# Campeche, Yucatán; represented by Mérida
|
# Campeche, Yucatán; represented by Mérida
|
||||||
Zone America/Merida -5:58:28 - LMT 1922 Jan 1 6:00u
|
Zone America/Merida -5:58:28 - LMT 1922 Jan 1 6:00u
|
||||||
-6:00 - CST 1981 Dec 23
|
-6:00 - CST 1981 Dec 26 2:00
|
||||||
-5:00 - EST 1982 Dec 2
|
-5:00 - EST 1982 Nov 2 2:00
|
||||||
-6:00 Mexico C%sT
|
-6:00 Mexico C%sT
|
||||||
# Coahuila, Nuevo León, Tamaulipas (near US border)
|
# Coahuila, Nuevo León, Tamaulipas (near US border)
|
||||||
# This includes the following municipios:
|
# This includes the following municipios:
|
||||||
@@ -2642,12 +2699,15 @@ Zone America/Matamoros -6:30:00 - LMT 1922 Jan 1 6:00u
|
|||||||
-6:00 US C%sT
|
-6:00 US C%sT
|
||||||
# Durango; Coahuila, Nuevo León, Tamaulipas (away from US border)
|
# Durango; Coahuila, Nuevo León, Tamaulipas (away from US border)
|
||||||
Zone America/Monterrey -6:41:16 - LMT 1922 Jan 1 6:00u
|
Zone America/Monterrey -6:41:16 - LMT 1922 Jan 1 6:00u
|
||||||
|
-7:00 - MST 1927 Jun 10
|
||||||
|
-6:00 - CST 1930 Nov 15
|
||||||
|
-7:00 Mexico M%sT 1932 Apr 1
|
||||||
-6:00 - CST 1988
|
-6:00 - CST 1988
|
||||||
-6:00 US C%sT 1989
|
-6:00 US C%sT 1989
|
||||||
-6:00 Mexico C%sT
|
-6:00 Mexico C%sT
|
||||||
# Central Mexico
|
# Central Mexico
|
||||||
Zone America/Mexico_City -6:36:36 - LMT 1922 Jan 1 7:00u
|
Zone America/Mexico_City -6:36:36 - LMT 1922 Jan 1 7:00u
|
||||||
-7:00 - MST 1927 Jun 10 23:00
|
-7:00 - MST 1927 Jun 10
|
||||||
-6:00 - CST 1930 Nov 15
|
-6:00 - CST 1930 Nov 15
|
||||||
-7:00 Mexico M%sT 1932 Apr 1
|
-7:00 Mexico M%sT 1932 Apr 1
|
||||||
-6:00 Mexico C%sT 2001 Sep 30 2:00
|
-6:00 Mexico C%sT 2001 Sep 30 2:00
|
||||||
@@ -2658,7 +2718,7 @@ Zone America/Mexico_City -6:36:36 - LMT 1922 Jan 1 7:00u
|
|||||||
# Práxedis G Guerrero.
|
# Práxedis G Guerrero.
|
||||||
# http://gaceta.diputados.gob.mx/PDF/65/2a022/nov/20221124-VII.pdf
|
# http://gaceta.diputados.gob.mx/PDF/65/2a022/nov/20221124-VII.pdf
|
||||||
Zone America/Ciudad_Juarez -7:05:56 - LMT 1922 Jan 1 7:00u
|
Zone America/Ciudad_Juarez -7:05:56 - LMT 1922 Jan 1 7:00u
|
||||||
-7:00 - MST 1927 Jun 10 23:00
|
-7:00 - MST 1927 Jun 10
|
||||||
-6:00 - CST 1930 Nov 15
|
-6:00 - CST 1930 Nov 15
|
||||||
-7:00 Mexico M%sT 1932 Apr 1
|
-7:00 Mexico M%sT 1932 Apr 1
|
||||||
-6:00 - CST 1996
|
-6:00 - CST 1996
|
||||||
@@ -2673,7 +2733,7 @@ Zone America/Ciudad_Juarez -7:05:56 - LMT 1922 Jan 1 7:00u
|
|||||||
# Benavides.
|
# Benavides.
|
||||||
# http://gaceta.diputados.gob.mx/PDF/65/2a022/nov/20221124-VII.pdf
|
# http://gaceta.diputados.gob.mx/PDF/65/2a022/nov/20221124-VII.pdf
|
||||||
Zone America/Ojinaga -6:57:40 - LMT 1922 Jan 1 7:00u
|
Zone America/Ojinaga -6:57:40 - LMT 1922 Jan 1 7:00u
|
||||||
-7:00 - MST 1927 Jun 10 23:00
|
-7:00 - MST 1927 Jun 10
|
||||||
-6:00 - CST 1930 Nov 15
|
-6:00 - CST 1930 Nov 15
|
||||||
-7:00 Mexico M%sT 1932 Apr 1
|
-7:00 Mexico M%sT 1932 Apr 1
|
||||||
-6:00 - CST 1996
|
-6:00 - CST 1996
|
||||||
@@ -2685,7 +2745,7 @@ Zone America/Ojinaga -6:57:40 - LMT 1922 Jan 1 7:00u
|
|||||||
-6:00 US C%sT
|
-6:00 US C%sT
|
||||||
# Chihuahua (away from US border)
|
# Chihuahua (away from US border)
|
||||||
Zone America/Chihuahua -7:04:20 - LMT 1922 Jan 1 7:00u
|
Zone America/Chihuahua -7:04:20 - LMT 1922 Jan 1 7:00u
|
||||||
-7:00 - MST 1927 Jun 10 23:00
|
-7:00 - MST 1927 Jun 10
|
||||||
-6:00 - CST 1930 Nov 15
|
-6:00 - CST 1930 Nov 15
|
||||||
-7:00 Mexico M%sT 1932 Apr 1
|
-7:00 Mexico M%sT 1932 Apr 1
|
||||||
-6:00 - CST 1996
|
-6:00 - CST 1996
|
||||||
@@ -2695,23 +2755,21 @@ Zone America/Chihuahua -7:04:20 - LMT 1922 Jan 1 7:00u
|
|||||||
-6:00 - CST
|
-6:00 - CST
|
||||||
# Sonora
|
# Sonora
|
||||||
Zone America/Hermosillo -7:23:52 - LMT 1922 Jan 1 7:00u
|
Zone America/Hermosillo -7:23:52 - LMT 1922 Jan 1 7:00u
|
||||||
-7:00 - MST 1927 Jun 10 23:00
|
-7:00 - MST 1927 Jun 10
|
||||||
-6:00 - CST 1930 Nov 15
|
-6:00 - CST 1930 Nov 15
|
||||||
-7:00 Mexico M%sT 1932 Apr 1
|
-7:00 Mexico M%sT 1932 Apr 1
|
||||||
-6:00 - CST 1942 Apr 24
|
-6:00 - CST 1942 Apr 24
|
||||||
-7:00 - MST 1949 Jan 14
|
-7:00 - MST 1996
|
||||||
-8:00 - PST 1970
|
|
||||||
-7:00 Mexico M%sT 1999
|
-7:00 Mexico M%sT 1999
|
||||||
-7:00 - MST
|
-7:00 - MST
|
||||||
|
|
||||||
# Baja California Sur, Nayarit (except Bahía de Banderas), Sinaloa
|
# Baja California Sur, Nayarit (except Bahía de Banderas), Sinaloa
|
||||||
Zone America/Mazatlan -7:05:40 - LMT 1922 Jan 1 7:00u
|
Zone America/Mazatlan -7:05:40 - LMT 1922 Jan 1 7:00u
|
||||||
-7:00 - MST 1927 Jun 10 23:00
|
-7:00 - MST 1927 Jun 10
|
||||||
-6:00 - CST 1930 Nov 15
|
-6:00 - CST 1930 Nov 15
|
||||||
-7:00 Mexico M%sT 1932 Apr 1
|
-7:00 Mexico M%sT 1932 Apr 1
|
||||||
-6:00 - CST 1942 Apr 24
|
-6:00 - CST 1942 Apr 24
|
||||||
-7:00 - MST 1949 Jan 14
|
-7:00 - MST 1970
|
||||||
-8:00 - PST 1970
|
|
||||||
-7:00 Mexico M%sT
|
-7:00 Mexico M%sT
|
||||||
|
|
||||||
# Bahía de Banderas
|
# Bahía de Banderas
|
||||||
@@ -2744,27 +2802,32 @@ Zone America/Mazatlan -7:05:40 - LMT 1922 Jan 1 7:00u
|
|||||||
# Use "Bahia_Banderas" to keep the name to fourteen characters.
|
# Use "Bahia_Banderas" to keep the name to fourteen characters.
|
||||||
|
|
||||||
Zone America/Bahia_Banderas -7:01:00 - LMT 1922 Jan 1 7:00u
|
Zone America/Bahia_Banderas -7:01:00 - LMT 1922 Jan 1 7:00u
|
||||||
-7:00 - MST 1927 Jun 10 23:00
|
-7:00 - MST 1927 Jun 10
|
||||||
-6:00 - CST 1930 Nov 15
|
-6:00 - CST 1930 Nov 15
|
||||||
-7:00 Mexico M%sT 1932 Apr 1
|
-7:00 Mexico M%sT 1932 Apr 1
|
||||||
-6:00 - CST 1942 Apr 24
|
-6:00 - CST 1942 Apr 24
|
||||||
-7:00 - MST 1949 Jan 14
|
-7:00 - MST 1970
|
||||||
-8:00 - PST 1970
|
|
||||||
-7:00 Mexico M%sT 2010 Apr 4 2:00
|
-7:00 Mexico M%sT 2010 Apr 4 2:00
|
||||||
-6:00 Mexico C%sT
|
-6:00 Mexico C%sT
|
||||||
|
|
||||||
# Baja California
|
# Baja California
|
||||||
Zone America/Tijuana -7:48:04 - LMT 1922 Jan 1 7:00u
|
Zone America/Tijuana -7:48:04 - LMT 1922 Jan 1 7:00u
|
||||||
-7:00 - MST 1924
|
-7:00 - MST 1924
|
||||||
-8:00 - PST 1927 Jun 10 23:00
|
-8:00 - PST 1927 Jun 10
|
||||||
-7:00 - MST 1930 Nov 15
|
-7:00 - MST 1930 Nov 15
|
||||||
-8:00 - PST 1931 Apr 1
|
-8:00 - PST 1931 Apr 1
|
||||||
-8:00 1:00 PDT 1931 Sep 30
|
-8:00 1:00 PDT 1931 Sep 30
|
||||||
-8:00 - PST 1942 Apr 24
|
-8:00 - PST 1942 Apr 24
|
||||||
-8:00 1:00 PWT 1945 Aug 14 23:00u
|
-8:00 1:00 PWT 1945 Aug 14 23:00u
|
||||||
-8:00 1:00 PPT 1945 Nov 12 # Peace
|
-8:00 1:00 PPT 1945 Nov 15 # Peace
|
||||||
-8:00 - PST 1948 Apr 5
|
-8:00 - PST 1948 Apr 5
|
||||||
-8:00 1:00 PDT 1949 Jan 14
|
-8:00 1:00 PDT 1949 Jan 14
|
||||||
|
-8:00 - PST 1950 May 1
|
||||||
|
-8:00 1:00 PDT 1950 Sep 24
|
||||||
|
-8:00 - PST 1951 Apr 29 2:00
|
||||||
|
-8:00 1:00 PDT 1951 Sep 30 2:00
|
||||||
|
-8:00 - PST 1952 Apr 27 2:00
|
||||||
|
-8:00 1:00 PDT 1952 Sep 28 2:00
|
||||||
-8:00 - PST 1954
|
-8:00 - PST 1954
|
||||||
-8:00 CA P%sT 1961
|
-8:00 CA P%sT 1961
|
||||||
-8:00 - PST 1976
|
-8:00 - PST 1976
|
||||||
@@ -3573,8 +3636,8 @@ Zone America/Puerto_Rico -4:24:25 - LMT 1899 Mar 28 12:00 # San Juan
|
|||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone America/Miquelon -3:44:40 - LMT 1911 Jun 15 # St Pierre
|
Zone America/Miquelon -3:44:40 - LMT 1911 Jun 15 # St Pierre
|
||||||
-4:00 - AST 1980 May
|
-4:00 - AST 1980 May
|
||||||
-3:00 - -03 1987
|
-3:00 - %z 1987
|
||||||
-3:00 Canada -03/-02
|
-3:00 Canada %z
|
||||||
|
|
||||||
# Turks and Caicos
|
# Turks and Caicos
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -425,11 +425,11 @@ Rule Arg 2008 only - Oct Sun>=15 0:00 1:00 -
|
|||||||
Zone America/Argentina/Buenos_Aires -3:53:48 - LMT 1894 Oct 31
|
Zone America/Argentina/Buenos_Aires -3:53:48 - LMT 1894 Oct 31
|
||||||
#STDOFF -4:16:48.25
|
#STDOFF -4:16:48.25
|
||||||
-4:16:48 - CMT 1920 May # Córdoba Mean Time
|
-4:16:48 - CMT 1920 May # Córdoba Mean Time
|
||||||
-4:00 - -04 1930 Dec
|
-4:00 - %z 1930 Dec
|
||||||
-4:00 Arg -04/-03 1969 Oct 5
|
-4:00 Arg %z 1969 Oct 5
|
||||||
-3:00 Arg -03/-02 1999 Oct 3
|
-3:00 Arg %z 1999 Oct 3
|
||||||
-4:00 Arg -04/-03 2000 Mar 3
|
-4:00 Arg %z 2000 Mar 3
|
||||||
-3:00 Arg -03/-02
|
-3:00 Arg %z
|
||||||
#
|
#
|
||||||
# Córdoba (CB), Santa Fe (SF), Entre Ríos (ER), Corrientes (CN), Misiones (MN),
|
# Córdoba (CB), Santa Fe (SF), Entre Ríos (ER), Corrientes (CN), Misiones (MN),
|
||||||
# Chaco (CC), Formosa (FM), Santiago del Estero (SE)
|
# Chaco (CC), Formosa (FM), Santiago del Estero (SE)
|
||||||
@@ -444,120 +444,120 @@ Zone America/Argentina/Buenos_Aires -3:53:48 - LMT 1894 Oct 31
|
|||||||
#STDOFF -4:16:48.25
|
#STDOFF -4:16:48.25
|
||||||
Zone America/Argentina/Cordoba -4:16:48 - LMT 1894 Oct 31
|
Zone America/Argentina/Cordoba -4:16:48 - LMT 1894 Oct 31
|
||||||
-4:16:48 - CMT 1920 May
|
-4:16:48 - CMT 1920 May
|
||||||
-4:00 - -04 1930 Dec
|
-4:00 - %z 1930 Dec
|
||||||
-4:00 Arg -04/-03 1969 Oct 5
|
-4:00 Arg %z 1969 Oct 5
|
||||||
-3:00 Arg -03/-02 1991 Mar 3
|
-3:00 Arg %z 1991 Mar 3
|
||||||
-4:00 - -04 1991 Oct 20
|
-4:00 - %z 1991 Oct 20
|
||||||
-3:00 Arg -03/-02 1999 Oct 3
|
-3:00 Arg %z 1999 Oct 3
|
||||||
-4:00 Arg -04/-03 2000 Mar 3
|
-4:00 Arg %z 2000 Mar 3
|
||||||
-3:00 Arg -03/-02
|
-3:00 Arg %z
|
||||||
#
|
#
|
||||||
# Salta (SA), La Pampa (LP), Neuquén (NQ), Rio Negro (RN)
|
# Salta (SA), La Pampa (LP), Neuquén (NQ), Rio Negro (RN)
|
||||||
Zone America/Argentina/Salta -4:21:40 - LMT 1894 Oct 31
|
Zone America/Argentina/Salta -4:21:40 - LMT 1894 Oct 31
|
||||||
#STDOFF -4:16:48.25
|
#STDOFF -4:16:48.25
|
||||||
-4:16:48 - CMT 1920 May
|
-4:16:48 - CMT 1920 May
|
||||||
-4:00 - -04 1930 Dec
|
-4:00 - %z 1930 Dec
|
||||||
-4:00 Arg -04/-03 1969 Oct 5
|
-4:00 Arg %z 1969 Oct 5
|
||||||
-3:00 Arg -03/-02 1991 Mar 3
|
-3:00 Arg %z 1991 Mar 3
|
||||||
-4:00 - -04 1991 Oct 20
|
-4:00 - %z 1991 Oct 20
|
||||||
-3:00 Arg -03/-02 1999 Oct 3
|
-3:00 Arg %z 1999 Oct 3
|
||||||
-4:00 Arg -04/-03 2000 Mar 3
|
-4:00 Arg %z 2000 Mar 3
|
||||||
-3:00 Arg -03/-02 2008 Oct 18
|
-3:00 Arg %z 2008 Oct 18
|
||||||
-3:00 - -03
|
-3:00 - %z
|
||||||
#
|
#
|
||||||
# Tucumán (TM)
|
# Tucumán (TM)
|
||||||
Zone America/Argentina/Tucuman -4:20:52 - LMT 1894 Oct 31
|
Zone America/Argentina/Tucuman -4:20:52 - LMT 1894 Oct 31
|
||||||
#STDOFF -4:16:48.25
|
#STDOFF -4:16:48.25
|
||||||
-4:16:48 - CMT 1920 May
|
-4:16:48 - CMT 1920 May
|
||||||
-4:00 - -04 1930 Dec
|
-4:00 - %z 1930 Dec
|
||||||
-4:00 Arg -04/-03 1969 Oct 5
|
-4:00 Arg %z 1969 Oct 5
|
||||||
-3:00 Arg -03/-02 1991 Mar 3
|
-3:00 Arg %z 1991 Mar 3
|
||||||
-4:00 - -04 1991 Oct 20
|
-4:00 - %z 1991 Oct 20
|
||||||
-3:00 Arg -03/-02 1999 Oct 3
|
-3:00 Arg %z 1999 Oct 3
|
||||||
-4:00 Arg -04/-03 2000 Mar 3
|
-4:00 Arg %z 2000 Mar 3
|
||||||
-3:00 - -03 2004 Jun 1
|
-3:00 - %z 2004 Jun 1
|
||||||
-4:00 - -04 2004 Jun 13
|
-4:00 - %z 2004 Jun 13
|
||||||
-3:00 Arg -03/-02
|
-3:00 Arg %z
|
||||||
#
|
#
|
||||||
# La Rioja (LR)
|
# La Rioja (LR)
|
||||||
Zone America/Argentina/La_Rioja -4:27:24 - LMT 1894 Oct 31
|
Zone America/Argentina/La_Rioja -4:27:24 - LMT 1894 Oct 31
|
||||||
#STDOFF -4:16:48.25
|
#STDOFF -4:16:48.25
|
||||||
-4:16:48 - CMT 1920 May
|
-4:16:48 - CMT 1920 May
|
||||||
-4:00 - -04 1930 Dec
|
-4:00 - %z 1930 Dec
|
||||||
-4:00 Arg -04/-03 1969 Oct 5
|
-4:00 Arg %z 1969 Oct 5
|
||||||
-3:00 Arg -03/-02 1991 Mar 1
|
-3:00 Arg %z 1991 Mar 1
|
||||||
-4:00 - -04 1991 May 7
|
-4:00 - %z 1991 May 7
|
||||||
-3:00 Arg -03/-02 1999 Oct 3
|
-3:00 Arg %z 1999 Oct 3
|
||||||
-4:00 Arg -04/-03 2000 Mar 3
|
-4:00 Arg %z 2000 Mar 3
|
||||||
-3:00 - -03 2004 Jun 1
|
-3:00 - %z 2004 Jun 1
|
||||||
-4:00 - -04 2004 Jun 20
|
-4:00 - %z 2004 Jun 20
|
||||||
-3:00 Arg -03/-02 2008 Oct 18
|
-3:00 Arg %z 2008 Oct 18
|
||||||
-3:00 - -03
|
-3:00 - %z
|
||||||
#
|
#
|
||||||
# San Juan (SJ)
|
# San Juan (SJ)
|
||||||
Zone America/Argentina/San_Juan -4:34:04 - LMT 1894 Oct 31
|
Zone America/Argentina/San_Juan -4:34:04 - LMT 1894 Oct 31
|
||||||
#STDOFF -4:16:48.25
|
#STDOFF -4:16:48.25
|
||||||
-4:16:48 - CMT 1920 May
|
-4:16:48 - CMT 1920 May
|
||||||
-4:00 - -04 1930 Dec
|
-4:00 - %z 1930 Dec
|
||||||
-4:00 Arg -04/-03 1969 Oct 5
|
-4:00 Arg %z 1969 Oct 5
|
||||||
-3:00 Arg -03/-02 1991 Mar 1
|
-3:00 Arg %z 1991 Mar 1
|
||||||
-4:00 - -04 1991 May 7
|
-4:00 - %z 1991 May 7
|
||||||
-3:00 Arg -03/-02 1999 Oct 3
|
-3:00 Arg %z 1999 Oct 3
|
||||||
-4:00 Arg -04/-03 2000 Mar 3
|
-4:00 Arg %z 2000 Mar 3
|
||||||
-3:00 - -03 2004 May 31
|
-3:00 - %z 2004 May 31
|
||||||
-4:00 - -04 2004 Jul 25
|
-4:00 - %z 2004 Jul 25
|
||||||
-3:00 Arg -03/-02 2008 Oct 18
|
-3:00 Arg %z 2008 Oct 18
|
||||||
-3:00 - -03
|
-3:00 - %z
|
||||||
#
|
#
|
||||||
# Jujuy (JY)
|
# Jujuy (JY)
|
||||||
Zone America/Argentina/Jujuy -4:21:12 - LMT 1894 Oct 31
|
Zone America/Argentina/Jujuy -4:21:12 - LMT 1894 Oct 31
|
||||||
#STDOFF -4:16:48.25
|
#STDOFF -4:16:48.25
|
||||||
-4:16:48 - CMT 1920 May
|
-4:16:48 - CMT 1920 May
|
||||||
-4:00 - -04 1930 Dec
|
-4:00 - %z 1930 Dec
|
||||||
-4:00 Arg -04/-03 1969 Oct 5
|
-4:00 Arg %z 1969 Oct 5
|
||||||
-3:00 Arg -03/-02 1990 Mar 4
|
-3:00 Arg %z 1990 Mar 4
|
||||||
-4:00 - -04 1990 Oct 28
|
-4:00 - %z 1990 Oct 28
|
||||||
-4:00 1:00 -03 1991 Mar 17
|
-4:00 1:00 %z 1991 Mar 17
|
||||||
-4:00 - -04 1991 Oct 6
|
-4:00 - %z 1991 Oct 6
|
||||||
-3:00 1:00 -02 1992
|
-3:00 1:00 %z 1992
|
||||||
-3:00 Arg -03/-02 1999 Oct 3
|
-3:00 Arg %z 1999 Oct 3
|
||||||
-4:00 Arg -04/-03 2000 Mar 3
|
-4:00 Arg %z 2000 Mar 3
|
||||||
-3:00 Arg -03/-02 2008 Oct 18
|
-3:00 Arg %z 2008 Oct 18
|
||||||
-3:00 - -03
|
-3:00 - %z
|
||||||
#
|
#
|
||||||
# Catamarca (CT), Chubut (CH)
|
# Catamarca (CT), Chubut (CH)
|
||||||
Zone America/Argentina/Catamarca -4:23:08 - LMT 1894 Oct 31
|
Zone America/Argentina/Catamarca -4:23:08 - LMT 1894 Oct 31
|
||||||
#STDOFF -4:16:48.25
|
#STDOFF -4:16:48.25
|
||||||
-4:16:48 - CMT 1920 May
|
-4:16:48 - CMT 1920 May
|
||||||
-4:00 - -04 1930 Dec
|
-4:00 - %z 1930 Dec
|
||||||
-4:00 Arg -04/-03 1969 Oct 5
|
-4:00 Arg %z 1969 Oct 5
|
||||||
-3:00 Arg -03/-02 1991 Mar 3
|
-3:00 Arg %z 1991 Mar 3
|
||||||
-4:00 - -04 1991 Oct 20
|
-4:00 - %z 1991 Oct 20
|
||||||
-3:00 Arg -03/-02 1999 Oct 3
|
-3:00 Arg %z 1999 Oct 3
|
||||||
-4:00 Arg -04/-03 2000 Mar 3
|
-4:00 Arg %z 2000 Mar 3
|
||||||
-3:00 - -03 2004 Jun 1
|
-3:00 - %z 2004 Jun 1
|
||||||
-4:00 - -04 2004 Jun 20
|
-4:00 - %z 2004 Jun 20
|
||||||
-3:00 Arg -03/-02 2008 Oct 18
|
-3:00 Arg %z 2008 Oct 18
|
||||||
-3:00 - -03
|
-3:00 - %z
|
||||||
#
|
#
|
||||||
# Mendoza (MZ)
|
# Mendoza (MZ)
|
||||||
Zone America/Argentina/Mendoza -4:35:16 - LMT 1894 Oct 31
|
Zone America/Argentina/Mendoza -4:35:16 - LMT 1894 Oct 31
|
||||||
#STDOFF -4:16:48.25
|
#STDOFF -4:16:48.25
|
||||||
-4:16:48 - CMT 1920 May
|
-4:16:48 - CMT 1920 May
|
||||||
-4:00 - -04 1930 Dec
|
-4:00 - %z 1930 Dec
|
||||||
-4:00 Arg -04/-03 1969 Oct 5
|
-4:00 Arg %z 1969 Oct 5
|
||||||
-3:00 Arg -03/-02 1990 Mar 4
|
-3:00 Arg %z 1990 Mar 4
|
||||||
-4:00 - -04 1990 Oct 15
|
-4:00 - %z 1990 Oct 15
|
||||||
-4:00 1:00 -03 1991 Mar 1
|
-4:00 1:00 %z 1991 Mar 1
|
||||||
-4:00 - -04 1991 Oct 15
|
-4:00 - %z 1991 Oct 15
|
||||||
-4:00 1:00 -03 1992 Mar 1
|
-4:00 1:00 %z 1992 Mar 1
|
||||||
-4:00 - -04 1992 Oct 18
|
-4:00 - %z 1992 Oct 18
|
||||||
-3:00 Arg -03/-02 1999 Oct 3
|
-3:00 Arg %z 1999 Oct 3
|
||||||
-4:00 Arg -04/-03 2000 Mar 3
|
-4:00 Arg %z 2000 Mar 3
|
||||||
-3:00 - -03 2004 May 23
|
-3:00 - %z 2004 May 23
|
||||||
-4:00 - -04 2004 Sep 26
|
-4:00 - %z 2004 Sep 26
|
||||||
-3:00 Arg -03/-02 2008 Oct 18
|
-3:00 Arg %z 2008 Oct 18
|
||||||
-3:00 - -03
|
-3:00 - %z
|
||||||
#
|
#
|
||||||
# San Luis (SL)
|
# San Luis (SL)
|
||||||
|
|
||||||
@@ -567,53 +567,53 @@ Rule SanLuis 2007 2008 - Oct Sun>=8 0:00 1:00 -
|
|||||||
Zone America/Argentina/San_Luis -4:25:24 - LMT 1894 Oct 31
|
Zone America/Argentina/San_Luis -4:25:24 - LMT 1894 Oct 31
|
||||||
#STDOFF -4:16:48.25
|
#STDOFF -4:16:48.25
|
||||||
-4:16:48 - CMT 1920 May
|
-4:16:48 - CMT 1920 May
|
||||||
-4:00 - -04 1930 Dec
|
-4:00 - %z 1930 Dec
|
||||||
-4:00 Arg -04/-03 1969 Oct 5
|
-4:00 Arg %z 1969 Oct 5
|
||||||
-3:00 Arg -03/-02 1990
|
-3:00 Arg %z 1990
|
||||||
-3:00 1:00 -02 1990 Mar 14
|
-3:00 1:00 %z 1990 Mar 14
|
||||||
-4:00 - -04 1990 Oct 15
|
-4:00 - %z 1990 Oct 15
|
||||||
-4:00 1:00 -03 1991 Mar 1
|
-4:00 1:00 %z 1991 Mar 1
|
||||||
-4:00 - -04 1991 Jun 1
|
-4:00 - %z 1991 Jun 1
|
||||||
-3:00 - -03 1999 Oct 3
|
-3:00 - %z 1999 Oct 3
|
||||||
-4:00 1:00 -03 2000 Mar 3
|
-4:00 1:00 %z 2000 Mar 3
|
||||||
-3:00 - -03 2004 May 31
|
-3:00 - %z 2004 May 31
|
||||||
-4:00 - -04 2004 Jul 25
|
-4:00 - %z 2004 Jul 25
|
||||||
-3:00 Arg -03/-02 2008 Jan 21
|
-3:00 Arg %z 2008 Jan 21
|
||||||
-4:00 SanLuis -04/-03 2009 Oct 11
|
-4:00 SanLuis %z 2009 Oct 11
|
||||||
-3:00 - -03
|
-3:00 - %z
|
||||||
#
|
#
|
||||||
# Santa Cruz (SC)
|
# Santa Cruz (SC)
|
||||||
Zone America/Argentina/Rio_Gallegos -4:36:52 - LMT 1894 Oct 31
|
Zone America/Argentina/Rio_Gallegos -4:36:52 - LMT 1894 Oct 31
|
||||||
#STDOFF -4:16:48.25
|
#STDOFF -4:16:48.25
|
||||||
-4:16:48 - CMT 1920 May
|
-4:16:48 - CMT 1920 May
|
||||||
-4:00 - -04 1930 Dec
|
-4:00 - %z 1930 Dec
|
||||||
-4:00 Arg -04/-03 1969 Oct 5
|
-4:00 Arg %z 1969 Oct 5
|
||||||
-3:00 Arg -03/-02 1999 Oct 3
|
-3:00 Arg %z 1999 Oct 3
|
||||||
-4:00 Arg -04/-03 2000 Mar 3
|
-4:00 Arg %z 2000 Mar 3
|
||||||
-3:00 - -03 2004 Jun 1
|
-3:00 - %z 2004 Jun 1
|
||||||
-4:00 - -04 2004 Jun 20
|
-4:00 - %z 2004 Jun 20
|
||||||
-3:00 Arg -03/-02 2008 Oct 18
|
-3:00 Arg %z 2008 Oct 18
|
||||||
-3:00 - -03
|
-3:00 - %z
|
||||||
#
|
#
|
||||||
# Tierra del Fuego, Antártida e Islas del Atlántico Sur (TF)
|
# Tierra del Fuego, Antártida e Islas del Atlántico Sur (TF)
|
||||||
Zone America/Argentina/Ushuaia -4:33:12 - LMT 1894 Oct 31
|
Zone America/Argentina/Ushuaia -4:33:12 - LMT 1894 Oct 31
|
||||||
#STDOFF -4:16:48.25
|
#STDOFF -4:16:48.25
|
||||||
-4:16:48 - CMT 1920 May
|
-4:16:48 - CMT 1920 May
|
||||||
-4:00 - -04 1930 Dec
|
-4:00 - %z 1930 Dec
|
||||||
-4:00 Arg -04/-03 1969 Oct 5
|
-4:00 Arg %z 1969 Oct 5
|
||||||
-3:00 Arg -03/-02 1999 Oct 3
|
-3:00 Arg %z 1999 Oct 3
|
||||||
-4:00 Arg -04/-03 2000 Mar 3
|
-4:00 Arg %z 2000 Mar 3
|
||||||
-3:00 - -03 2004 May 30
|
-3:00 - %z 2004 May 30
|
||||||
-4:00 - -04 2004 Jun 20
|
-4:00 - %z 2004 Jun 20
|
||||||
-3:00 Arg -03/-02 2008 Oct 18
|
-3:00 Arg %z 2008 Oct 18
|
||||||
-3:00 - -03
|
-3:00 - %z
|
||||||
|
|
||||||
# Bolivia
|
# Bolivia
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone America/La_Paz -4:32:36 - LMT 1890
|
Zone America/La_Paz -4:32:36 - LMT 1890
|
||||||
-4:32:36 - CMT 1931 Oct 15 # Calamarca MT
|
-4:32:36 - CMT 1931 Oct 15 # Calamarca MT
|
||||||
-4:32:36 1:00 BST 1932 Mar 21 # Bolivia ST
|
-4:32:36 1:00 BST 1932 Mar 21 # Bolivia ST
|
||||||
-4:00 - -04
|
-4:00 - %z
|
||||||
|
|
||||||
# Brazil
|
# Brazil
|
||||||
|
|
||||||
@@ -984,12 +984,12 @@ Rule Brazil 2018 only - Nov Sun>=1 0:00 1:00 -
|
|||||||
#
|
#
|
||||||
# Fernando de Noronha (administratively part of PE)
|
# Fernando de Noronha (administratively part of PE)
|
||||||
Zone America/Noronha -2:09:40 - LMT 1914
|
Zone America/Noronha -2:09:40 - LMT 1914
|
||||||
-2:00 Brazil -02/-01 1990 Sep 17
|
-2:00 Brazil %z 1990 Sep 17
|
||||||
-2:00 - -02 1999 Sep 30
|
-2:00 - %z 1999 Sep 30
|
||||||
-2:00 Brazil -02/-01 2000 Oct 15
|
-2:00 Brazil %z 2000 Oct 15
|
||||||
-2:00 - -02 2001 Sep 13
|
-2:00 - %z 2001 Sep 13
|
||||||
-2:00 Brazil -02/-01 2002 Oct 1
|
-2:00 Brazil %z 2002 Oct 1
|
||||||
-2:00 - -02
|
-2:00 - %z
|
||||||
# Other Atlantic islands have no permanent settlement.
|
# Other Atlantic islands have no permanent settlement.
|
||||||
# These include Trindade and Martim Vaz (administratively part of ES),
|
# These include Trindade and Martim Vaz (administratively part of ES),
|
||||||
# Rocas Atoll (RN), and the St Peter and St Paul Archipelago (PE).
|
# Rocas Atoll (RN), and the St Peter and St Paul Archipelago (PE).
|
||||||
@@ -1002,119 +1002,119 @@ Zone America/Noronha -2:09:40 - LMT 1914
|
|||||||
# In the north a very small part from the river Javary (now Jari I guess,
|
# In the north a very small part from the river Javary (now Jari I guess,
|
||||||
# the border with Amapá) to the Amazon, then to the Xingu.
|
# the border with Amapá) to the Amazon, then to the Xingu.
|
||||||
Zone America/Belem -3:13:56 - LMT 1914
|
Zone America/Belem -3:13:56 - LMT 1914
|
||||||
-3:00 Brazil -03/-02 1988 Sep 12
|
-3:00 Brazil %z 1988 Sep 12
|
||||||
-3:00 - -03
|
-3:00 - %z
|
||||||
#
|
#
|
||||||
# west Pará (PA)
|
# west Pará (PA)
|
||||||
# West Pará includes Altamira, Óbidos, Prainha, Oriximiná, and Santarém.
|
# West Pará includes Altamira, Óbidos, Prainha, Oriximiná, and Santarém.
|
||||||
Zone America/Santarem -3:38:48 - LMT 1914
|
Zone America/Santarem -3:38:48 - LMT 1914
|
||||||
-4:00 Brazil -04/-03 1988 Sep 12
|
-4:00 Brazil %z 1988 Sep 12
|
||||||
-4:00 - -04 2008 Jun 24 0:00
|
-4:00 - %z 2008 Jun 24 0:00
|
||||||
-3:00 - -03
|
-3:00 - %z
|
||||||
#
|
#
|
||||||
# Maranhão (MA), Piauí (PI), Ceará (CE), Rio Grande do Norte (RN),
|
# Maranhão (MA), Piauí (PI), Ceará (CE), Rio Grande do Norte (RN),
|
||||||
# Paraíba (PB)
|
# Paraíba (PB)
|
||||||
Zone America/Fortaleza -2:34:00 - LMT 1914
|
Zone America/Fortaleza -2:34:00 - LMT 1914
|
||||||
-3:00 Brazil -03/-02 1990 Sep 17
|
-3:00 Brazil %z 1990 Sep 17
|
||||||
-3:00 - -03 1999 Sep 30
|
-3:00 - %z 1999 Sep 30
|
||||||
-3:00 Brazil -03/-02 2000 Oct 22
|
-3:00 Brazil %z 2000 Oct 22
|
||||||
-3:00 - -03 2001 Sep 13
|
-3:00 - %z 2001 Sep 13
|
||||||
-3:00 Brazil -03/-02 2002 Oct 1
|
-3:00 Brazil %z 2002 Oct 1
|
||||||
-3:00 - -03
|
-3:00 - %z
|
||||||
#
|
#
|
||||||
# Pernambuco (PE) (except Atlantic islands)
|
# Pernambuco (PE) (except Atlantic islands)
|
||||||
Zone America/Recife -2:19:36 - LMT 1914
|
Zone America/Recife -2:19:36 - LMT 1914
|
||||||
-3:00 Brazil -03/-02 1990 Sep 17
|
-3:00 Brazil %z 1990 Sep 17
|
||||||
-3:00 - -03 1999 Sep 30
|
-3:00 - %z 1999 Sep 30
|
||||||
-3:00 Brazil -03/-02 2000 Oct 15
|
-3:00 Brazil %z 2000 Oct 15
|
||||||
-3:00 - -03 2001 Sep 13
|
-3:00 - %z 2001 Sep 13
|
||||||
-3:00 Brazil -03/-02 2002 Oct 1
|
-3:00 Brazil %z 2002 Oct 1
|
||||||
-3:00 - -03
|
-3:00 - %z
|
||||||
#
|
#
|
||||||
# Tocantins (TO)
|
# Tocantins (TO)
|
||||||
Zone America/Araguaina -3:12:48 - LMT 1914
|
Zone America/Araguaina -3:12:48 - LMT 1914
|
||||||
-3:00 Brazil -03/-02 1990 Sep 17
|
-3:00 Brazil %z 1990 Sep 17
|
||||||
-3:00 - -03 1995 Sep 14
|
-3:00 - %z 1995 Sep 14
|
||||||
-3:00 Brazil -03/-02 2003 Sep 24
|
-3:00 Brazil %z 2003 Sep 24
|
||||||
-3:00 - -03 2012 Oct 21
|
-3:00 - %z 2012 Oct 21
|
||||||
-3:00 Brazil -03/-02 2013 Sep
|
-3:00 Brazil %z 2013 Sep
|
||||||
-3:00 - -03
|
-3:00 - %z
|
||||||
#
|
#
|
||||||
# Alagoas (AL), Sergipe (SE)
|
# Alagoas (AL), Sergipe (SE)
|
||||||
Zone America/Maceio -2:22:52 - LMT 1914
|
Zone America/Maceio -2:22:52 - LMT 1914
|
||||||
-3:00 Brazil -03/-02 1990 Sep 17
|
-3:00 Brazil %z 1990 Sep 17
|
||||||
-3:00 - -03 1995 Oct 13
|
-3:00 - %z 1995 Oct 13
|
||||||
-3:00 Brazil -03/-02 1996 Sep 4
|
-3:00 Brazil %z 1996 Sep 4
|
||||||
-3:00 - -03 1999 Sep 30
|
-3:00 - %z 1999 Sep 30
|
||||||
-3:00 Brazil -03/-02 2000 Oct 22
|
-3:00 Brazil %z 2000 Oct 22
|
||||||
-3:00 - -03 2001 Sep 13
|
-3:00 - %z 2001 Sep 13
|
||||||
-3:00 Brazil -03/-02 2002 Oct 1
|
-3:00 Brazil %z 2002 Oct 1
|
||||||
-3:00 - -03
|
-3:00 - %z
|
||||||
#
|
#
|
||||||
# Bahia (BA)
|
# Bahia (BA)
|
||||||
# There are too many Salvadors elsewhere, so use America/Bahia instead
|
# There are too many Salvadors elsewhere, so use America/Bahia instead
|
||||||
# of America/Salvador.
|
# of America/Salvador.
|
||||||
Zone America/Bahia -2:34:04 - LMT 1914
|
Zone America/Bahia -2:34:04 - LMT 1914
|
||||||
-3:00 Brazil -03/-02 2003 Sep 24
|
-3:00 Brazil %z 2003 Sep 24
|
||||||
-3:00 - -03 2011 Oct 16
|
-3:00 - %z 2011 Oct 16
|
||||||
-3:00 Brazil -03/-02 2012 Oct 21
|
-3:00 Brazil %z 2012 Oct 21
|
||||||
-3:00 - -03
|
-3:00 - %z
|
||||||
#
|
#
|
||||||
# Goiás (GO), Distrito Federal (DF), Minas Gerais (MG),
|
# Goiás (GO), Distrito Federal (DF), Minas Gerais (MG),
|
||||||
# Espírito Santo (ES), Rio de Janeiro (RJ), São Paulo (SP), Paraná (PR),
|
# Espírito Santo (ES), Rio de Janeiro (RJ), São Paulo (SP), Paraná (PR),
|
||||||
# Santa Catarina (SC), Rio Grande do Sul (RS)
|
# Santa Catarina (SC), Rio Grande do Sul (RS)
|
||||||
Zone America/Sao_Paulo -3:06:28 - LMT 1914
|
Zone America/Sao_Paulo -3:06:28 - LMT 1914
|
||||||
-3:00 Brazil -03/-02 1963 Oct 23 0:00
|
-3:00 Brazil %z 1963 Oct 23 0:00
|
||||||
-3:00 1:00 -02 1964
|
-3:00 1:00 %z 1964
|
||||||
-3:00 Brazil -03/-02
|
-3:00 Brazil %z
|
||||||
#
|
#
|
||||||
# Mato Grosso do Sul (MS)
|
# Mato Grosso do Sul (MS)
|
||||||
Zone America/Campo_Grande -3:38:28 - LMT 1914
|
Zone America/Campo_Grande -3:38:28 - LMT 1914
|
||||||
-4:00 Brazil -04/-03
|
-4:00 Brazil %z
|
||||||
#
|
#
|
||||||
# Mato Grosso (MT)
|
# Mato Grosso (MT)
|
||||||
Zone America/Cuiaba -3:44:20 - LMT 1914
|
Zone America/Cuiaba -3:44:20 - LMT 1914
|
||||||
-4:00 Brazil -04/-03 2003 Sep 24
|
-4:00 Brazil %z 2003 Sep 24
|
||||||
-4:00 - -04 2004 Oct 1
|
-4:00 - %z 2004 Oct 1
|
||||||
-4:00 Brazil -04/-03
|
-4:00 Brazil %z
|
||||||
#
|
#
|
||||||
# Rondônia (RO)
|
# Rondônia (RO)
|
||||||
Zone America/Porto_Velho -4:15:36 - LMT 1914
|
Zone America/Porto_Velho -4:15:36 - LMT 1914
|
||||||
-4:00 Brazil -04/-03 1988 Sep 12
|
-4:00 Brazil %z 1988 Sep 12
|
||||||
-4:00 - -04
|
-4:00 - %z
|
||||||
#
|
#
|
||||||
# Roraima (RR)
|
# Roraima (RR)
|
||||||
Zone America/Boa_Vista -4:02:40 - LMT 1914
|
Zone America/Boa_Vista -4:02:40 - LMT 1914
|
||||||
-4:00 Brazil -04/-03 1988 Sep 12
|
-4:00 Brazil %z 1988 Sep 12
|
||||||
-4:00 - -04 1999 Sep 30
|
-4:00 - %z 1999 Sep 30
|
||||||
-4:00 Brazil -04/-03 2000 Oct 15
|
-4:00 Brazil %z 2000 Oct 15
|
||||||
-4:00 - -04
|
-4:00 - %z
|
||||||
#
|
#
|
||||||
# east Amazonas (AM): Boca do Acre, Jutaí, Manaus, Floriano Peixoto
|
# east Amazonas (AM): Boca do Acre, Jutaí, Manaus, Floriano Peixoto
|
||||||
# The great circle line from Tabatinga to Porto Acre divides
|
# The great circle line from Tabatinga to Porto Acre divides
|
||||||
# east from west Amazonas.
|
# east from west Amazonas.
|
||||||
Zone America/Manaus -4:00:04 - LMT 1914
|
Zone America/Manaus -4:00:04 - LMT 1914
|
||||||
-4:00 Brazil -04/-03 1988 Sep 12
|
-4:00 Brazil %z 1988 Sep 12
|
||||||
-4:00 - -04 1993 Sep 28
|
-4:00 - %z 1993 Sep 28
|
||||||
-4:00 Brazil -04/-03 1994 Sep 22
|
-4:00 Brazil %z 1994 Sep 22
|
||||||
-4:00 - -04
|
-4:00 - %z
|
||||||
#
|
#
|
||||||
# west Amazonas (AM): Atalaia do Norte, Boca do Maoco, Benjamin Constant,
|
# west Amazonas (AM): Atalaia do Norte, Boca do Maoco, Benjamin Constant,
|
||||||
# Eirunepé, Envira, Ipixuna
|
# Eirunepé, Envira, Ipixuna
|
||||||
Zone America/Eirunepe -4:39:28 - LMT 1914
|
Zone America/Eirunepe -4:39:28 - LMT 1914
|
||||||
-5:00 Brazil -05/-04 1988 Sep 12
|
-5:00 Brazil %z 1988 Sep 12
|
||||||
-5:00 - -05 1993 Sep 28
|
-5:00 - %z 1993 Sep 28
|
||||||
-5:00 Brazil -05/-04 1994 Sep 22
|
-5:00 Brazil %z 1994 Sep 22
|
||||||
-5:00 - -05 2008 Jun 24 0:00
|
-5:00 - %z 2008 Jun 24 0:00
|
||||||
-4:00 - -04 2013 Nov 10
|
-4:00 - %z 2013 Nov 10
|
||||||
-5:00 - -05
|
-5:00 - %z
|
||||||
#
|
#
|
||||||
# Acre (AC)
|
# Acre (AC)
|
||||||
Zone America/Rio_Branco -4:31:12 - LMT 1914
|
Zone America/Rio_Branco -4:31:12 - LMT 1914
|
||||||
-5:00 Brazil -05/-04 1988 Sep 12
|
-5:00 Brazil %z 1988 Sep 12
|
||||||
-5:00 - -05 2008 Jun 24 0:00
|
-5:00 - %z 2008 Jun 24 0:00
|
||||||
-4:00 - -04 2013 Nov 10
|
-4:00 - %z 2013 Nov 10
|
||||||
-5:00 - -05
|
-5:00 - %z
|
||||||
|
|
||||||
# Chile
|
# Chile
|
||||||
|
|
||||||
@@ -1382,36 +1382,36 @@ Rule Chile 2023 max - Sep Sun>=2 4:00u 1:00 -
|
|||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone America/Santiago -4:42:45 - LMT 1890
|
Zone America/Santiago -4:42:45 - LMT 1890
|
||||||
-4:42:45 - SMT 1910 Jan 10 # Santiago Mean Time
|
-4:42:45 - SMT 1910 Jan 10 # Santiago Mean Time
|
||||||
-5:00 - -05 1916 Jul 1
|
-5:00 - %z 1916 Jul 1
|
||||||
-4:42:45 - SMT 1918 Sep 10
|
-4:42:45 - SMT 1918 Sep 10
|
||||||
-4:00 - -04 1919 Jul 1
|
-4:00 - %z 1919 Jul 1
|
||||||
-4:42:45 - SMT 1927 Sep 1
|
-4:42:45 - SMT 1927 Sep 1
|
||||||
-5:00 Chile -05/-04 1932 Sep 1
|
-5:00 Chile %z 1932 Sep 1
|
||||||
-4:00 - -04 1942 Jun 1
|
-4:00 - %z 1942 Jun 1
|
||||||
-5:00 - -05 1942 Aug 1
|
-5:00 - %z 1942 Aug 1
|
||||||
-4:00 - -04 1946 Jul 14 24:00
|
-4:00 - %z 1946 Jul 14 24:00
|
||||||
-4:00 1:00 -03 1946 Aug 28 24:00 # central CL
|
-4:00 1:00 %z 1946 Aug 28 24:00 # central CL
|
||||||
-5:00 1:00 -04 1947 Mar 31 24:00
|
-5:00 1:00 %z 1947 Mar 31 24:00
|
||||||
-5:00 - -05 1947 May 21 23:00
|
-5:00 - %z 1947 May 21 23:00
|
||||||
-4:00 Chile -04/-03
|
-4:00 Chile %z
|
||||||
Zone America/Punta_Arenas -4:43:40 - LMT 1890
|
Zone America/Punta_Arenas -4:43:40 - LMT 1890
|
||||||
-4:42:45 - SMT 1910 Jan 10
|
-4:42:45 - SMT 1910 Jan 10
|
||||||
-5:00 - -05 1916 Jul 1
|
-5:00 - %z 1916 Jul 1
|
||||||
-4:42:45 - SMT 1918 Sep 10
|
-4:42:45 - SMT 1918 Sep 10
|
||||||
-4:00 - -04 1919 Jul 1
|
-4:00 - %z 1919 Jul 1
|
||||||
-4:42:45 - SMT 1927 Sep 1
|
-4:42:45 - SMT 1927 Sep 1
|
||||||
-5:00 Chile -05/-04 1932 Sep 1
|
-5:00 Chile %z 1932 Sep 1
|
||||||
-4:00 - -04 1942 Jun 1
|
-4:00 - %z 1942 Jun 1
|
||||||
-5:00 - -05 1942 Aug 1
|
-5:00 - %z 1942 Aug 1
|
||||||
-4:00 - -04 1946 Aug 28 24:00
|
-4:00 - %z 1946 Aug 28 24:00
|
||||||
-5:00 1:00 -04 1947 Mar 31 24:00
|
-5:00 1:00 %z 1947 Mar 31 24:00
|
||||||
-5:00 - -05 1947 May 21 23:00
|
-5:00 - %z 1947 May 21 23:00
|
||||||
-4:00 Chile -04/-03 2016 Dec 4
|
-4:00 Chile %z 2016 Dec 4
|
||||||
-3:00 - -03
|
-3:00 - %z
|
||||||
Zone Pacific/Easter -7:17:28 - LMT 1890
|
Zone Pacific/Easter -7:17:28 - LMT 1890
|
||||||
-7:17:28 - EMT 1932 Sep # Easter Mean Time
|
-7:17:28 - EMT 1932 Sep # Easter Mean Time
|
||||||
-7:00 Chile -07/-06 1982 Mar 14 3:00u # Easter Time
|
-7:00 Chile %z 1982 Mar 14 3:00u # Easter Time
|
||||||
-6:00 Chile -06/-05
|
-6:00 Chile %z
|
||||||
#
|
#
|
||||||
# Salas y Gómez Island is uninhabited.
|
# Salas y Gómez Island is uninhabited.
|
||||||
# Other Chilean locations, including Juan Fernández Is, Desventuradas Is,
|
# Other Chilean locations, including Juan Fernández Is, Desventuradas Is,
|
||||||
@@ -1431,10 +1431,10 @@ Zone Pacific/Easter -7:17:28 - LMT 1890
|
|||||||
#
|
#
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Antarctica/Palmer 0 - -00 1965
|
Zone Antarctica/Palmer 0 - -00 1965
|
||||||
-4:00 Arg -04/-03 1969 Oct 5
|
-4:00 Arg %z 1969 Oct 5
|
||||||
-3:00 Arg -03/-02 1982 May
|
-3:00 Arg %z 1982 May
|
||||||
-4:00 Chile -04/-03 2016 Dec 4
|
-4:00 Chile %z 2016 Dec 4
|
||||||
-3:00 - -03
|
-3:00 - %z
|
||||||
|
|
||||||
# Colombia
|
# Colombia
|
||||||
|
|
||||||
@@ -1453,7 +1453,7 @@ Rule CO 1993 only - Feb 6 24:00 0 -
|
|||||||
#STDOFF -4:56:16.4
|
#STDOFF -4:56:16.4
|
||||||
Zone America/Bogota -4:56:16 - LMT 1884 Mar 13
|
Zone America/Bogota -4:56:16 - LMT 1884 Mar 13
|
||||||
-4:56:16 - BMT 1914 Nov 23 # Bogotá Mean Time
|
-4:56:16 - BMT 1914 Nov 23 # Bogotá Mean Time
|
||||||
-5:00 CO -05/-04
|
-5:00 CO %z
|
||||||
# Malpelo, Providencia, San Andres
|
# Malpelo, Providencia, San Andres
|
||||||
# no information; probably like America/Bogota
|
# no information; probably like America/Bogota
|
||||||
|
|
||||||
@@ -1484,10 +1484,10 @@ Rule Ecuador 1993 only - Feb 5 0:00 0 -
|
|||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone America/Guayaquil -5:19:20 - LMT 1890
|
Zone America/Guayaquil -5:19:20 - LMT 1890
|
||||||
-5:14:00 - QMT 1931 # Quito Mean Time
|
-5:14:00 - QMT 1931 # Quito Mean Time
|
||||||
-5:00 Ecuador -05/-04
|
-5:00 Ecuador %z
|
||||||
Zone Pacific/Galapagos -5:58:24 - LMT 1931 # Puerto Baquerizo Moreno
|
Zone Pacific/Galapagos -5:58:24 - LMT 1931 # Puerto Baquerizo Moreno
|
||||||
-5:00 - -05 1986
|
-5:00 - %z 1986
|
||||||
-6:00 Ecuador -06/-05
|
-6:00 Ecuador %z
|
||||||
|
|
||||||
# Falklands
|
# Falklands
|
||||||
|
|
||||||
@@ -1587,10 +1587,10 @@ Rule Falk 2001 2010 - Sep Sun>=1 2:00 1:00 -
|
|||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Atlantic/Stanley -3:51:24 - LMT 1890
|
Zone Atlantic/Stanley -3:51:24 - LMT 1890
|
||||||
-3:51:24 - SMT 1912 Mar 12 # Stanley Mean Time
|
-3:51:24 - SMT 1912 Mar 12 # Stanley Mean Time
|
||||||
-4:00 Falk -04/-03 1983 May
|
-4:00 Falk %z 1983 May
|
||||||
-3:00 Falk -03/-02 1985 Sep 15
|
-3:00 Falk %z 1985 Sep 15
|
||||||
-4:00 Falk -04/-03 2010 Sep 5 2:00
|
-4:00 Falk %z 2010 Sep 5 2:00
|
||||||
-3:00 - -03
|
-3:00 - %z
|
||||||
|
|
||||||
# French Guiana
|
# French Guiana
|
||||||
# For the 1911/1912 establishment of standard time in French possessions, see:
|
# For the 1911/1912 establishment of standard time in French possessions, see:
|
||||||
@@ -1598,8 +1598,8 @@ Zone Atlantic/Stanley -3:51:24 - LMT 1890
|
|||||||
# page 752, 18b.
|
# page 752, 18b.
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone America/Cayenne -3:29:20 - LMT 1911 Jul 1
|
Zone America/Cayenne -3:29:20 - LMT 1911 Jul 1
|
||||||
-4:00 - -04 1967 Oct
|
-4:00 - %z 1967 Oct
|
||||||
-3:00 - -03
|
-3:00 - %z
|
||||||
|
|
||||||
# Guyana
|
# Guyana
|
||||||
|
|
||||||
@@ -1633,10 +1633,10 @@ Zone America/Cayenne -3:29:20 - LMT 1911 Jul 1
|
|||||||
|
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone America/Guyana -3:52:39 - LMT 1911 Aug 1 # Georgetown
|
Zone America/Guyana -3:52:39 - LMT 1911 Aug 1 # Georgetown
|
||||||
-4:00 - -04 1915 Mar 1
|
-4:00 - %z 1915 Mar 1
|
||||||
-3:45 - -0345 1975 Aug 1
|
-3:45 - %z 1975 Aug 1
|
||||||
-3:00 - -03 1992 Mar 29 1:00
|
-3:00 - %z 1992 Mar 29 1:00
|
||||||
-4:00 - -04
|
-4:00 - %z
|
||||||
|
|
||||||
# Paraguay
|
# Paraguay
|
||||||
#
|
#
|
||||||
@@ -1734,9 +1734,9 @@ Rule Para 2013 max - Mar Sun>=22 0:00 0 -
|
|||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone America/Asuncion -3:50:40 - LMT 1890
|
Zone America/Asuncion -3:50:40 - LMT 1890
|
||||||
-3:50:40 - AMT 1931 Oct 10 # Asunción Mean Time
|
-3:50:40 - AMT 1931 Oct 10 # Asunción Mean Time
|
||||||
-4:00 - -04 1972 Oct
|
-4:00 - %z 1972 Oct
|
||||||
-3:00 - -03 1974 Apr
|
-3:00 - %z 1974 Apr
|
||||||
-4:00 Para -04/-03
|
-4:00 Para %z
|
||||||
|
|
||||||
# Peru
|
# Peru
|
||||||
#
|
#
|
||||||
@@ -1763,12 +1763,12 @@ Rule Peru 1994 only - Apr 1 0:00 0 -
|
|||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone America/Lima -5:08:12 - LMT 1890
|
Zone America/Lima -5:08:12 - LMT 1890
|
||||||
-5:08:36 - LMT 1908 Jul 28 # Lima Mean Time?
|
-5:08:36 - LMT 1908 Jul 28 # Lima Mean Time?
|
||||||
-5:00 Peru -05/-04
|
-5:00 Peru %z
|
||||||
|
|
||||||
# South Georgia
|
# South Georgia
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Atlantic/South_Georgia -2:26:08 - LMT 1890 # Grytviken
|
Zone Atlantic/South_Georgia -2:26:08 - LMT 1890 # Grytviken
|
||||||
-2:00 - -02
|
-2:00 - %z
|
||||||
|
|
||||||
# South Sandwich Is
|
# South Sandwich Is
|
||||||
# uninhabited; scientific personnel have wintered
|
# uninhabited; scientific personnel have wintered
|
||||||
@@ -1778,8 +1778,8 @@ Zone Atlantic/South_Georgia -2:26:08 - LMT 1890 # Grytviken
|
|||||||
Zone America/Paramaribo -3:40:40 - LMT 1911
|
Zone America/Paramaribo -3:40:40 - LMT 1911
|
||||||
-3:40:52 - PMT 1935 # Paramaribo Mean Time
|
-3:40:52 - PMT 1935 # Paramaribo Mean Time
|
||||||
-3:40:36 - PMT 1945 Oct # The capital moved?
|
-3:40:36 - PMT 1945 Oct # The capital moved?
|
||||||
-3:30 - -0330 1984 Oct
|
-3:30 - %z 1984 Oct
|
||||||
-3:00 - -03
|
-3:00 - %z
|
||||||
|
|
||||||
# Uruguay
|
# Uruguay
|
||||||
# From Paul Eggert (1993-11-18):
|
# From Paul Eggert (1993-11-18):
|
||||||
@@ -1994,15 +1994,15 @@ Rule Uruguay 2006 2014 - Oct Sun>=1 2:00 1:00 -
|
|||||||
# This Zone can be simplified once we assume zic %z.
|
# This Zone can be simplified once we assume zic %z.
|
||||||
Zone America/Montevideo -3:44:51 - LMT 1908 Jun 10
|
Zone America/Montevideo -3:44:51 - LMT 1908 Jun 10
|
||||||
-3:44:51 - MMT 1920 May 1 # Montevideo MT
|
-3:44:51 - MMT 1920 May 1 # Montevideo MT
|
||||||
-4:00 - -04 1923 Oct 1
|
-4:00 - %z 1923 Oct 1
|
||||||
-3:30 Uruguay -0330/-03 1942 Dec 14
|
-3:30 Uruguay %z 1942 Dec 14
|
||||||
-3:00 Uruguay -03/-0230 1960
|
-3:00 Uruguay %z 1960
|
||||||
-3:00 Uruguay -03/-02 1968
|
-3:00 Uruguay %z 1968
|
||||||
-3:00 Uruguay -03/-0230 1970
|
-3:00 Uruguay %z 1970
|
||||||
-3:00 Uruguay -03/-02 1974
|
-3:00 Uruguay %z 1974
|
||||||
-3:00 Uruguay -03/-0130 1974 Mar 10
|
-3:00 Uruguay %z 1974 Mar 10
|
||||||
-3:00 Uruguay -03/-0230 1974 Dec 22
|
-3:00 Uruguay %z 1974 Dec 22
|
||||||
-3:00 Uruguay -03/-02
|
-3:00 Uruguay %z
|
||||||
|
|
||||||
# Venezuela
|
# Venezuela
|
||||||
#
|
#
|
||||||
@@ -2036,7 +2036,7 @@ Zone America/Montevideo -3:44:51 - LMT 1908 Jun 10
|
|||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone America/Caracas -4:27:44 - LMT 1890
|
Zone America/Caracas -4:27:44 - LMT 1890
|
||||||
-4:27:40 - CMT 1912 Feb 12 # Caracas Mean Time?
|
-4:27:40 - CMT 1912 Feb 12 # Caracas Mean Time?
|
||||||
-4:30 - -0430 1965 Jan 1 0:00
|
-4:30 - %z 1965 Jan 1 0:00
|
||||||
-4:00 - -04 2007 Dec 9 3:00
|
-4:00 - %z 2007 Dec 9 3:00
|
||||||
-4:30 - -0430 2016 May 1 2:30
|
-4:30 - %z 2016 May 1 2:30
|
||||||
-4:00 - -04
|
-4:00 - %z
|
||||||
|
|||||||
@@ -287,8 +287,7 @@ MK +4159+02126 Europe/Skopje
|
|||||||
ML +1239-00800 Africa/Bamako
|
ML +1239-00800 Africa/Bamako
|
||||||
MM +1647+09610 Asia/Yangon
|
MM +1647+09610 Asia/Yangon
|
||||||
MN +4755+10653 Asia/Ulaanbaatar most of Mongolia
|
MN +4755+10653 Asia/Ulaanbaatar most of Mongolia
|
||||||
MN +4801+09139 Asia/Hovd Bayan-Olgiy, Govi-Altai, Hovd, Uvs, Zavkhan
|
MN +4801+09139 Asia/Hovd Bayan-Olgii, Hovd, Uvs
|
||||||
MN +4804+11430 Asia/Choibalsan Dornod, Sukhbaatar
|
|
||||||
MO +221150+1133230 Asia/Macau
|
MO +221150+1133230 Asia/Macau
|
||||||
MP +1512+14545 Pacific/Saipan
|
MP +1512+14545 Pacific/Saipan
|
||||||
MQ +1436-06105 America/Martinique
|
MQ +1436-06105 America/Martinique
|
||||||
|
|||||||
@@ -77,11 +77,14 @@ $(eval $(call SetupNativeCompilation, BUILD_GTEST_LIBJVM, \
|
|||||||
CFLAGS_windows := -EHsc, \
|
CFLAGS_windows := -EHsc, \
|
||||||
CFLAGS_solaris := -DGTEST_HAS_EXCEPTIONS=0 -library=stlport4 +d, \
|
CFLAGS_solaris := -DGTEST_HAS_EXCEPTIONS=0 -library=stlport4 +d, \
|
||||||
CFLAGS_macosx := -DGTEST_OS_MAC=1, \
|
CFLAGS_macosx := -DGTEST_OS_MAC=1, \
|
||||||
DISABLED_WARNINGS_gcc := undef stringop-overflow, \
|
DISABLED_WARNINGS_gcc := $(DISABLED_WARNINGS_gcc) \
|
||||||
DISABLED_WARNINGS_clang := undef switch format-nonliteral \
|
undef, \
|
||||||
tautological-undefined-compare $(BUILD_LIBJVM_DISABLED_WARNINGS_clang), \
|
DISABLED_WARNINGS_clang := $(DISABLED_WARNINGS_clang) \
|
||||||
DISABLED_WARNINGS_solstudio := identexpected, \
|
undef switch format-nonliteral tautological-undefined-compare, \
|
||||||
DISABLED_WARNINGS_microsoft := 4146, \
|
DISABLED_WARNINGS_solstudio := $(DISABLED_WARNINGS_solstudio) \
|
||||||
|
identexpected, \
|
||||||
|
DISABLED_WARNINGS_microsoft := $(DISABLED_WARNINGS_microsoft) \
|
||||||
|
4146, \
|
||||||
LDFLAGS := $(JVM_LDFLAGS), \
|
LDFLAGS := $(JVM_LDFLAGS), \
|
||||||
LDFLAGS_solaris := -library=stlport4 $(call SET_SHARED_LIBRARY_ORIGIN), \
|
LDFLAGS_solaris := -library=stlport4 $(call SET_SHARED_LIBRARY_ORIGIN), \
|
||||||
LIBS := $(JVM_LIBS), \
|
LIBS := $(JVM_LIBS), \
|
||||||
|
|||||||
@@ -81,6 +81,25 @@ CFLAGS_VM_VERSION := \
|
|||||||
-DCPU='"$(OPENJDK_TARGET_CPU_VM_VERSION)"' \
|
-DCPU='"$(OPENJDK_TARGET_CPU_VM_VERSION)"' \
|
||||||
#
|
#
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Disabled warnings
|
||||||
|
|
||||||
|
DISABLED_WARNINGS_gcc := extra all
|
||||||
|
ifeq ($(call check-jvm-feature, zero), true)
|
||||||
|
DISABLED_WARNINGS_gcc += return-type
|
||||||
|
endif
|
||||||
|
|
||||||
|
DISABLED_WARNINGS_clang := extra all tautological-compare deprecated-declarations
|
||||||
|
|
||||||
|
DISABLED_WARNINGS_solstudio :=
|
||||||
|
|
||||||
|
DISABLED_WARNINGS_xlc := 1540-0216 1540-0198 1540-1090 1540-1639 1540-1088 \
|
||||||
|
1500-010
|
||||||
|
|
||||||
|
DISABLED_WARNINGS_microsoft :=
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Platform specific setup
|
# Platform specific setup
|
||||||
|
|
||||||
@@ -117,7 +136,7 @@ ifeq ($(call isTargetOs, solaris), true)
|
|||||||
endif
|
endif
|
||||||
# Exclude warnings in devstudio 12.6
|
# Exclude warnings in devstudio 12.6
|
||||||
ifeq ($(CC_VERSION_NUMBER), 5.15)
|
ifeq ($(CC_VERSION_NUMBER), 5.15)
|
||||||
DISABLED_WARNINGS_solstudio := SEC_ARR_OUTSIDE_BOUND_READ \
|
DISABLED_WARNINGS_solstudio += SEC_ARR_OUTSIDE_BOUND_READ \
|
||||||
SEC_ARR_OUTSIDE_BOUND_WRITE
|
SEC_ARR_OUTSIDE_BOUND_WRITE
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
@@ -162,11 +181,11 @@ $(eval $(call SetupNativeCompilation, BUILD_LIBJVM, \
|
|||||||
CFLAGS := $(JVM_CFLAGS), \
|
CFLAGS := $(JVM_CFLAGS), \
|
||||||
abstract_vm_version.cpp_CXXFLAGS := $(CFLAGS_VM_VERSION), \
|
abstract_vm_version.cpp_CXXFLAGS := $(CFLAGS_VM_VERSION), \
|
||||||
arguments.cpp_CXXFLAGS := $(CFLAGS_VM_VERSION), \
|
arguments.cpp_CXXFLAGS := $(CFLAGS_VM_VERSION), \
|
||||||
DISABLED_WARNINGS_clang := tautological-compare, \
|
DISABLED_WARNINGS_gcc := $(DISABLED_WARNINGS_gcc), \
|
||||||
|
DISABLED_WARNINGS_clang := $(DISABLED_WARNINGS_clang), \
|
||||||
DISABLED_WARNINGS_solstudio := $(DISABLED_WARNINGS_solstudio), \
|
DISABLED_WARNINGS_solstudio := $(DISABLED_WARNINGS_solstudio), \
|
||||||
DISABLED_WARNINGS_xlc := 1540-0216 1540-0198 1540-1090 1540-1639 \
|
DISABLED_WARNINGS_xlc := $(DISABLED_WARNINGS_xlc), \
|
||||||
1540-1088 1500-010, \
|
DISABLED_WARNINGS_microsoft := $(DISABLED_WARNINGS_microsoft) 4146, \
|
||||||
DISABLED_WARNINGS_microsoft := 4146, \
|
|
||||||
ASFLAGS := $(JVM_ASFLAGS), \
|
ASFLAGS := $(JVM_ASFLAGS), \
|
||||||
LDFLAGS := $(JVM_LDFLAGS), \
|
LDFLAGS := $(JVM_LDFLAGS), \
|
||||||
LIBS := $(JVM_LIBS), \
|
LIBS := $(JVM_LIBS), \
|
||||||
|
|||||||
@@ -67,10 +67,12 @@ JVM_CFLAGS_TARGET_DEFINES += \
|
|||||||
#
|
#
|
||||||
|
|
||||||
ifeq ($(DEBUG_LEVEL), release)
|
ifeq ($(DEBUG_LEVEL), release)
|
||||||
|
# release builds disable uses of assert macro from <assert.h>.
|
||||||
|
JVM_CFLAGS_DEBUGLEVEL := -DNDEBUG
|
||||||
# For hotspot, release builds differ internally between "optimized" and "product"
|
# For hotspot, release builds differ internally between "optimized" and "product"
|
||||||
# in that "optimize" does not define PRODUCT.
|
# in that "optimize" does not define PRODUCT.
|
||||||
ifneq ($(HOTSPOT_DEBUG_LEVEL), optimized)
|
ifneq ($(HOTSPOT_DEBUG_LEVEL), optimized)
|
||||||
JVM_CFLAGS_DEBUGLEVEL := -DPRODUCT
|
JVM_CFLAGS_DEBUGLEVEL += -DPRODUCT
|
||||||
endif
|
endif
|
||||||
else ifeq ($(DEBUG_LEVEL), fastdebug)
|
else ifeq ($(DEBUG_LEVEL), fastdebug)
|
||||||
JVM_CFLAGS_DEBUGLEVEL := -DASSERT
|
JVM_CFLAGS_DEBUGLEVEL := -DASSERT
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2012, 2020, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2012, 2023, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@@ -39,6 +39,7 @@ import java.util.Locale;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.TreeMap;
|
import java.util.TreeMap;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This tool reads the IANA Language Subtag Registry data file downloaded from
|
* This tool reads the IANA Language Subtag Registry data file downloaded from
|
||||||
@@ -134,10 +135,29 @@ public class EquivMapsGenerator {
|
|||||||
}
|
}
|
||||||
} else { // language, extlang, legacy, and redundant
|
} else { // language, extlang, legacy, and redundant
|
||||||
if (!initialLanguageMap.containsKey(preferred)) {
|
if (!initialLanguageMap.containsKey(preferred)) {
|
||||||
|
// IANA update 4/13 introduced case where a preferred value
|
||||||
|
// can have a preferred value itself.
|
||||||
|
// eg: ar-ajp has pref ajp which has pref apc
|
||||||
|
boolean foundInOther = false;
|
||||||
|
Pattern pattern = Pattern.compile(","+preferred+"(,|$)");
|
||||||
|
// Check if current pref exists inside a value for another pref
|
||||||
|
List<StringBuilder> doublePrefs = initialLanguageMap
|
||||||
|
.values()
|
||||||
|
.stream()
|
||||||
|
.filter(e -> pattern.matcher(e.toString()).find())
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
for (StringBuilder otherPrefVal : doublePrefs) {
|
||||||
|
otherPrefVal.append(",");
|
||||||
|
otherPrefVal.append(tag);
|
||||||
|
foundInOther = true;
|
||||||
|
}
|
||||||
|
if (!foundInOther) {
|
||||||
|
// does not exist in any other pref's values, so add as new entry
|
||||||
sb = new StringBuilder(preferred);
|
sb = new StringBuilder(preferred);
|
||||||
sb.append(',');
|
sb.append(',');
|
||||||
sb.append(tag);
|
sb.append(tag);
|
||||||
initialLanguageMap.put(preferred, sb);
|
initialLanguageMap.put(preferred, sb);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
sb = initialLanguageMap.get(preferred);
|
sb = initialLanguageMap.get(preferred);
|
||||||
sb.append(',');
|
sb.append(',');
|
||||||
@@ -263,11 +283,11 @@ public class EquivMapsGenerator {
|
|||||||
Paths.get(fileName))) {
|
Paths.get(fileName))) {
|
||||||
writer.write(getOpenJDKCopyright());
|
writer.write(getOpenJDKCopyright());
|
||||||
writer.write(headerText
|
writer.write(headerText
|
||||||
+ (int)(sortedLanguageMap1.size() / 0.75f + 1) + ");\n"
|
+ sortedLanguageMap1.size() + ");\n"
|
||||||
+ " multiEquivsMap = new HashMap<>("
|
+ " multiEquivsMap = new HashMap<>("
|
||||||
+ (int)(sortedLanguageMap2.size() / 0.75f + 1) + ");\n"
|
+ sortedLanguageMap2.size() + ");\n"
|
||||||
+ " regionVariantEquivMap = new HashMap<>("
|
+ " regionVariantEquivMap = new HashMap<>("
|
||||||
+ (int)(sortedRegionVariantMap.size() / 0.75f + 1) + ");\n\n"
|
+ sortedRegionVariantMap.size() + ");\n\n"
|
||||||
+ " // This is an auto-generated file and should not be manually edited.\n"
|
+ " // This is an auto-generated file and should not be manually edited.\n"
|
||||||
+ " // LSR Revision: " + LSRrevisionDate);
|
+ " // LSR Revision: " + LSRrevisionDate);
|
||||||
writer.newLine();
|
writer.newLine();
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2012, 2019, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2012, 2024, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@@ -273,7 +273,7 @@ public final class TzdbZoneRulesCompiler {
|
|||||||
// link version-region-rules
|
// link version-region-rules
|
||||||
out.writeShort(builtZones.size());
|
out.writeShort(builtZones.size());
|
||||||
for (Map.Entry<String, ZoneRules> entry : builtZones.entrySet()) {
|
for (Map.Entry<String, ZoneRules> entry : builtZones.entrySet()) {
|
||||||
int regionIndex = Arrays.binarySearch(regionArray, entry.getKey());
|
int regionIndex = findRegionIndex(regionArray, entry.getKey());
|
||||||
int rulesIndex = rulesList.indexOf(entry.getValue());
|
int rulesIndex = rulesList.indexOf(entry.getValue());
|
||||||
out.writeShort(regionIndex);
|
out.writeShort(regionIndex);
|
||||||
out.writeShort(rulesIndex);
|
out.writeShort(rulesIndex);
|
||||||
@@ -281,8 +281,8 @@ public final class TzdbZoneRulesCompiler {
|
|||||||
// alias-region
|
// alias-region
|
||||||
out.writeShort(links.size());
|
out.writeShort(links.size());
|
||||||
for (Map.Entry<String, String> entry : links.entrySet()) {
|
for (Map.Entry<String, String> entry : links.entrySet()) {
|
||||||
int aliasIndex = Arrays.binarySearch(regionArray, entry.getKey());
|
int aliasIndex = findRegionIndex(regionArray, entry.getKey());
|
||||||
int regionIndex = Arrays.binarySearch(regionArray, entry.getValue());
|
int regionIndex = findRegionIndex(regionArray, entry.getValue());
|
||||||
out.writeShort(aliasIndex);
|
out.writeShort(aliasIndex);
|
||||||
out.writeShort(regionIndex);
|
out.writeShort(regionIndex);
|
||||||
}
|
}
|
||||||
@@ -294,6 +294,14 @@ public final class TzdbZoneRulesCompiler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static int findRegionIndex(String[] regionArray, String region) {
|
||||||
|
int index = Arrays.binarySearch(regionArray, region);
|
||||||
|
if (index < 0) {
|
||||||
|
throw new IllegalArgumentException("Unknown region: " + region);
|
||||||
|
}
|
||||||
|
return index;
|
||||||
|
}
|
||||||
|
|
||||||
/** Whether to output verbose messages. */
|
/** Whether to output verbose messages. */
|
||||||
private boolean verbose;
|
private boolean verbose;
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2014, 2019, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2014, 2024, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@@ -163,7 +163,8 @@ class TzdbZoneRulesProvider {
|
|||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (line.startsWith("Zone")) { // parse Zone line
|
int token0len = tokens.length > 0 ? tokens[0].length() : line.length();
|
||||||
|
if (line.regionMatches(true, 0, "Zone", 0, token0len)) { // parse Zone line
|
||||||
String name = tokens[1];
|
String name = tokens[1];
|
||||||
if (excludedZones.contains(name)){
|
if (excludedZones.contains(name)){
|
||||||
continue;
|
continue;
|
||||||
@@ -181,13 +182,13 @@ class TzdbZoneRulesProvider {
|
|||||||
if (zLine.parse(tokens, 2)) {
|
if (zLine.parse(tokens, 2)) {
|
||||||
openZone = null;
|
openZone = null;
|
||||||
}
|
}
|
||||||
} else if (line.startsWith("Rule")) { // parse Rule line
|
} else if (line.regionMatches(true, 0, "Rule", 0, token0len)) { // parse Rule line
|
||||||
String name = tokens[1];
|
String name = tokens[1];
|
||||||
if (!rules.containsKey(name)) {
|
if (!rules.containsKey(name)) {
|
||||||
rules.put(name, new ArrayList<RuleLine>(10));
|
rules.put(name, new ArrayList<RuleLine>(10));
|
||||||
}
|
}
|
||||||
rules.get(name).add(new RuleLine().parse(tokens));
|
rules.get(name).add(new RuleLine().parse(tokens));
|
||||||
} else if (line.startsWith("Link")) { // parse link line
|
} else if (line.regionMatches(true, 0, "Link", 0, token0len)) { // parse link line
|
||||||
if (tokens.length >= 3) {
|
if (tokens.length >= 3) {
|
||||||
String realId = tokens[1];
|
String realId = tokens[1];
|
||||||
String aliasId = tokens[2];
|
String aliasId = tokens[2];
|
||||||
@@ -303,7 +304,7 @@ class TzdbZoneRulesProvider {
|
|||||||
month = parseMonth(tokens[off++]);
|
month = parseMonth(tokens[off++]);
|
||||||
if (off < tokens.length) {
|
if (off < tokens.length) {
|
||||||
String dayRule = tokens[off++];
|
String dayRule = tokens[off++];
|
||||||
if (dayRule.startsWith("last")) {
|
if (dayRule.regionMatches(true, 0, "last", 0, 4)) {
|
||||||
dayOfMonth = -1;
|
dayOfMonth = -1;
|
||||||
dayOfWeek = parseDayOfWeek(dayRule.substring(4));
|
dayOfWeek = parseDayOfWeek(dayRule.substring(4));
|
||||||
adjustForwards = false;
|
adjustForwards = false;
|
||||||
@@ -354,42 +355,45 @@ class TzdbZoneRulesProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int parseYear(String year, int defaultYear) {
|
int parseYear(String year, int defaultYear) {
|
||||||
switch (year.toLowerCase()) {
|
int len = year.length();
|
||||||
case "min": return 1900;
|
|
||||||
case "max": return Year.MAX_VALUE;
|
if (year.regionMatches(true, 0, "minimum", 0, len)) return 1900;
|
||||||
case "only": return defaultYear;
|
if (year.regionMatches(true, 0, "maximum", 0, len)) return Year.MAX_VALUE;
|
||||||
}
|
if (year.regionMatches(true, 0, "only", 0, len)) return defaultYear;
|
||||||
|
|
||||||
return Integer.parseInt(year);
|
return Integer.parseInt(year);
|
||||||
}
|
}
|
||||||
|
|
||||||
Month parseMonth(String mon) {
|
Month parseMonth(String mon) {
|
||||||
switch (mon) {
|
int len = mon.length();
|
||||||
case "Jan": return Month.JANUARY;
|
|
||||||
case "Feb": return Month.FEBRUARY;
|
if (mon.regionMatches(true, 0, "January", 0, len)) return Month.JANUARY;
|
||||||
case "Mar": return Month.MARCH;
|
if (mon.regionMatches(true, 0, "February", 0, len)) return Month.FEBRUARY;
|
||||||
case "Apr": return Month.APRIL;
|
if (mon.regionMatches(true, 0, "March", 0, len)) return Month.MARCH;
|
||||||
case "May": return Month.MAY;
|
if (mon.regionMatches(true, 0, "April", 0, len)) return Month.APRIL;
|
||||||
case "Jun": return Month.JUNE;
|
if (mon.regionMatches(true, 0, "May", 0, len)) return Month.MAY;
|
||||||
case "Jul": return Month.JULY;
|
if (mon.regionMatches(true, 0, "June", 0, len)) return Month.JUNE;
|
||||||
case "Aug": return Month.AUGUST;
|
if (mon.regionMatches(true, 0, "July", 0, len)) return Month.JULY;
|
||||||
case "Sep": return Month.SEPTEMBER;
|
if (mon.regionMatches(true, 0, "August", 0, len)) return Month.AUGUST;
|
||||||
case "Oct": return Month.OCTOBER;
|
if (mon.regionMatches(true, 0, "September", 0, len)) return Month.SEPTEMBER;
|
||||||
case "Nov": return Month.NOVEMBER;
|
if (mon.regionMatches(true, 0, "October", 0, len)) return Month.OCTOBER;
|
||||||
case "Dec": return Month.DECEMBER;
|
if (mon.regionMatches(true, 0, "November", 0, len)) return Month.NOVEMBER;
|
||||||
}
|
if (mon.regionMatches(true, 0, "December", 0, len)) return Month.DECEMBER;
|
||||||
|
|
||||||
throw new IllegalArgumentException("Unknown month: " + mon);
|
throw new IllegalArgumentException("Unknown month: " + mon);
|
||||||
}
|
}
|
||||||
|
|
||||||
DayOfWeek parseDayOfWeek(String dow) {
|
DayOfWeek parseDayOfWeek(String dow) {
|
||||||
switch (dow) {
|
int len = dow.length();
|
||||||
case "Mon": return DayOfWeek.MONDAY;
|
|
||||||
case "Tue": return DayOfWeek.TUESDAY;
|
if (dow.regionMatches(true, 0, "Monday", 0, len)) return DayOfWeek.MONDAY;
|
||||||
case "Wed": return DayOfWeek.WEDNESDAY;
|
if (dow.regionMatches(true, 0, "Tuesday", 0, len)) return DayOfWeek.TUESDAY;
|
||||||
case "Thu": return DayOfWeek.THURSDAY;
|
if (dow.regionMatches(true, 0, "Wednesday", 0, len)) return DayOfWeek.WEDNESDAY;
|
||||||
case "Fri": return DayOfWeek.FRIDAY;
|
if (dow.regionMatches(true, 0, "Thursday", 0, len)) return DayOfWeek.THURSDAY;
|
||||||
case "Sat": return DayOfWeek.SATURDAY;
|
if (dow.regionMatches(true, 0, "Friday", 0, len)) return DayOfWeek.FRIDAY;
|
||||||
case "Sun": return DayOfWeek.SUNDAY;
|
if (dow.regionMatches(true, 0, "Saturday", 0, len)) return DayOfWeek.SATURDAY;
|
||||||
}
|
if (dow.regionMatches(true, 0, "Sunday", 0, len)) return DayOfWeek.SUNDAY;
|
||||||
|
|
||||||
throw new IllegalArgumentException("Unknown day-of-week: " + dow);
|
throw new IllegalArgumentException("Unknown day-of-week: " + dow);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -358,8 +358,6 @@ endif
|
|||||||
# The fast floor code loses precision.
|
# The fast floor code loses precision.
|
||||||
LCMS_CFLAGS=-DCMS_DONT_USE_FAST_FLOOR
|
LCMS_CFLAGS=-DCMS_DONT_USE_FAST_FLOOR
|
||||||
|
|
||||||
LCMS_CFLAGS_JDKLIB := $(filter-out -xc99=%none, $(CFLAGS_JDKLIB))
|
|
||||||
|
|
||||||
ifeq ($(USE_EXTERNAL_LCMS), true)
|
ifeq ($(USE_EXTERNAL_LCMS), true)
|
||||||
# If we're using an external library, we'll just need the wrapper part.
|
# If we're using an external library, we'll just need the wrapper part.
|
||||||
# By including it explicitly, all other files will be excluded.
|
# By including it explicitly, all other files will be excluded.
|
||||||
@@ -382,7 +380,7 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBLCMS, \
|
|||||||
NAME := lcms, \
|
NAME := lcms, \
|
||||||
INCLUDE_FILES := $(BUILD_LIBLCMS_INCLUDE_FILES), \
|
INCLUDE_FILES := $(BUILD_LIBLCMS_INCLUDE_FILES), \
|
||||||
OPTIMIZATION := HIGHEST, \
|
OPTIMIZATION := HIGHEST, \
|
||||||
CFLAGS := $(LCMS_CFLAGS_JDKLIB) \
|
CFLAGS := $(CFLAGS_JDKLIB) \
|
||||||
$(LCMS_CFLAGS), \
|
$(LCMS_CFLAGS), \
|
||||||
CFLAGS_solaris := -xc99=no_lib, \
|
CFLAGS_solaris := -xc99=no_lib, \
|
||||||
CFLAGS_windows := -DCMS_IS_WINDOWS_, \
|
CFLAGS_windows := -DCMS_IS_WINDOWS_, \
|
||||||
|
|||||||
@@ -59,6 +59,7 @@ $(eval $(call SetupNativeCompilation, BUILD_LIBFDLIBM, \
|
|||||||
CFLAGS_windows_debug := -DLOGGING, \
|
CFLAGS_windows_debug := -DLOGGING, \
|
||||||
CFLAGS_aix := -qfloat=nomaf, \
|
CFLAGS_aix := -qfloat=nomaf, \
|
||||||
DISABLED_WARNINGS_gcc := sign-compare misleading-indentation array-bounds, \
|
DISABLED_WARNINGS_gcc := sign-compare misleading-indentation array-bounds, \
|
||||||
|
DISABLED_WARNINGS_gcc_k_rem_pio2.c := maybe-uninitialized, \
|
||||||
DISABLED_WARNINGS_microsoft := 4146 4244 4018, \
|
DISABLED_WARNINGS_microsoft := 4146 4244 4018, \
|
||||||
ARFLAGS := $(ARFLAGS), \
|
ARFLAGS := $(ARFLAGS), \
|
||||||
OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libfdlibm, \
|
OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libfdlibm, \
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ if [ "$OPENJDK_TARGET_OS" = "macosx" ]; then
|
|||||||
LDD_CMD="$OTOOL -L"
|
LDD_CMD="$OTOOL -L"
|
||||||
DIS_CMD="$OTOOL -v -V -t"
|
DIS_CMD="$OTOOL -v -V -t"
|
||||||
STAT_PRINT_SIZE="-f %z"
|
STAT_PRINT_SIZE="-f %z"
|
||||||
|
STRIP="$STRIP -no_code_signature_warning"
|
||||||
elif [ "$OPENJDK_TARGET_OS" = "windows" ]; then
|
elif [ "$OPENJDK_TARGET_OS" = "windows" ]; then
|
||||||
FULLDUMP_CMD="$DUMPBIN -all"
|
FULLDUMP_CMD="$DUMPBIN -all"
|
||||||
LDD_CMD="$DUMPBIN -dependents"
|
LDD_CMD="$DUMPBIN -dependents"
|
||||||
@@ -638,14 +639,22 @@ compare_bin_file() {
|
|||||||
ORIG_THIS_FILE="$THIS_FILE"
|
ORIG_THIS_FILE="$THIS_FILE"
|
||||||
ORIG_OTHER_FILE="$OTHER_FILE"
|
ORIG_OTHER_FILE="$OTHER_FILE"
|
||||||
|
|
||||||
if [ "$STRIP_ALL" = "true" ] || [[ "$STRIP_BEFORE_COMPARE" = *"$BIN_FILE"* ]]; then
|
if [ "$STRIP_ALL" = "true" ] || [[ "$STRIP_BEFORE_COMPARE" = *"$BIN_FILE"* ]] \
|
||||||
|
|| [ "$OPENJDK_TARGET_OS" = "macosx" ]; then
|
||||||
THIS_STRIPPED_FILE=$FILE_WORK_DIR/this/$NAME
|
THIS_STRIPPED_FILE=$FILE_WORK_DIR/this/$NAME
|
||||||
OTHER_STRIPPED_FILE=$FILE_WORK_DIR/other/$NAME
|
OTHER_STRIPPED_FILE=$FILE_WORK_DIR/other/$NAME
|
||||||
$MKDIR -p $FILE_WORK_DIR/this $FILE_WORK_DIR/other
|
$MKDIR -p $FILE_WORK_DIR/this $FILE_WORK_DIR/other
|
||||||
$CP $THIS_FILE $THIS_STRIPPED_FILE
|
$CP $THIS_FILE $THIS_STRIPPED_FILE
|
||||||
$CP $OTHER_FILE $OTHER_STRIPPED_FILE
|
$CP $OTHER_FILE $OTHER_STRIPPED_FILE
|
||||||
|
if [ "$STRIP_ALL" = "true" ] || [[ "$STRIP_BEFORE_COMPARE" = *"$BIN_FILE"* ]]; then
|
||||||
$STRIP $THIS_STRIPPED_FILE
|
$STRIP $THIS_STRIPPED_FILE
|
||||||
$STRIP $OTHER_STRIPPED_FILE
|
$STRIP $OTHER_STRIPPED_FILE
|
||||||
|
fi
|
||||||
|
# On macosx, always remove any signature before comparing
|
||||||
|
if [ "$OPENJDK_TARGET_OS" = "macosx" ]; then
|
||||||
|
$CODESIGN --remove-signature $THIS_STRIPPED_FILE
|
||||||
|
$CODESIGN --remove-signature $OTHER_STRIPPED_FILE
|
||||||
|
fi
|
||||||
THIS_FILE="$THIS_STRIPPED_FILE"
|
THIS_FILE="$THIS_STRIPPED_FILE"
|
||||||
OTHER_FILE="$OTHER_STRIPPED_FILE"
|
OTHER_FILE="$OTHER_STRIPPED_FILE"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -45,12 +45,14 @@ $(eval $(call SetupJavaCompilation, BUILD_WB_JAR, \
|
|||||||
|
|
||||||
TARGETS += $(BUILD_WB_JAR)
|
TARGETS += $(BUILD_WB_JAR)
|
||||||
|
|
||||||
# test-lib.jar will contain only hprof classes until JDK-8081381 is resolved
|
|
||||||
$(eval $(call SetupJavaCompilation, BUILD_TEST_LIB_JAR, \
|
$(eval $(call SetupJavaCompilation, BUILD_TEST_LIB_JAR, \
|
||||||
SETUP := GENERATE_USINGJDKBYTECODE, \
|
SETUP := GENERATE_USINGJDKBYTECODE, \
|
||||||
SRC := $(TEST_LIB_SOURCE_DIR)/jdk/test/lib/hprof, \
|
SRC := $(TEST_LIB_SOURCE_DIR), \
|
||||||
|
EXCLUDES := jdk/test/lib/containers jdk/test/lib/security, \
|
||||||
BIN := $(TEST_LIB_SUPPORT)/test-lib_classes, \
|
BIN := $(TEST_LIB_SUPPORT)/test-lib_classes, \
|
||||||
|
HEADERS := $(TEST_LIB_SUPPORT)/test-lib_headers, \
|
||||||
JAR := $(TEST_LIB_SUPPORT)/test-lib.jar, \
|
JAR := $(TEST_LIB_SUPPORT)/test-lib.jar, \
|
||||||
|
DISABLED_WARNINGS := try deprecation rawtypes unchecked serial cast, \
|
||||||
))
|
))
|
||||||
|
|
||||||
TARGETS += $(BUILD_TEST_LIB_JAR)
|
TARGETS += $(BUILD_TEST_LIB_JAR)
|
||||||
|
|||||||
83
make/test/BuildTestLibNative.gmk
Normal file
83
make/test/BuildTestLibNative.gmk
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
#
|
||||||
|
# Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
|
||||||
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
|
#
|
||||||
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
|
# under the terms of the GNU General Public License version 2 only, as
|
||||||
|
# published by the Free Software Foundation. Oracle designates this
|
||||||
|
# particular file as subject to the "Classpath" exception as provided
|
||||||
|
# by Oracle in the LICENSE file that accompanied this code.
|
||||||
|
#
|
||||||
|
# This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
# version 2 for more details (a copy is included in the LICENSE file that
|
||||||
|
# accompanied this code).
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License version
|
||||||
|
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||||
|
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
#
|
||||||
|
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||||
|
# or visit www.oracle.com if you need additional information or have any
|
||||||
|
# questions.
|
||||||
|
#
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# This file builds the native component of testlib.
|
||||||
|
# It also covers the test-image part, where the built files are copied to the
|
||||||
|
# test image.
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
default: all
|
||||||
|
|
||||||
|
include $(SPEC)
|
||||||
|
include MakeBase.gmk
|
||||||
|
include TestFilesCompilation.gmk
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Targets for building the native tests themselves.
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
BUILD_LIBTEST_NATIVE_SRC := $(TOPDIR)/test/lib
|
||||||
|
|
||||||
|
BUILD_LIBTEST_OUTPUT_DIR := $(OUTPUTDIR)/support/test/lib/native
|
||||||
|
|
||||||
|
BUILD_LIBTEST_IMAGE_DIR := $(TEST_IMAGE_DIR)/lib
|
||||||
|
|
||||||
|
# This evaluation is expensive and should only be done if this target was
|
||||||
|
# explicitly called.
|
||||||
|
ifneq ($(filter build-test-lib-native, $(MAKECMDGOALS)), )
|
||||||
|
$(eval $(call SetupTestFilesCompilation, BUILD_LIBTEST_LIBRARIES, \
|
||||||
|
TYPE := LIBRARY, \
|
||||||
|
SOURCE_DIRS := $(BUILD_LIBTEST_NATIVE_SRC), \
|
||||||
|
OUTPUT_DIR := $(BUILD_LIBTEST_OUTPUT_DIR), \
|
||||||
|
))
|
||||||
|
endif
|
||||||
|
|
||||||
|
build-test-lib-native: $(BUILD_LIBTEST_LIBRARIES)
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Targets for building test-image.
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
# Copy to testlib test image. We need it in both hotspot and jdk.
|
||||||
|
$(eval $(call SetupCopyFiles, COPY_LIBTEST_NATIVE_TO_HOTSPOT, \
|
||||||
|
SRC := $(BUILD_LIBTEST_OUTPUT_DIR), \
|
||||||
|
DEST := $(TEST_IMAGE_DIR)/hotspot/jtreg/native, \
|
||||||
|
FILES := $(wildcard $(addprefix $(BUILD_LIBTEST_OUTPUT_DIR), /lib/*)), \
|
||||||
|
FLATTEN := true, \
|
||||||
|
))
|
||||||
|
|
||||||
|
$(eval $(call SetupCopyFiles, COPY_LIBTEST_NATIVE_TO_JDK, \
|
||||||
|
SRC := $(BUILD_LIBTEST_OUTPUT_DIR), \
|
||||||
|
DEST := $(TEST_IMAGE_DIR)/jdk/jtreg/native, \
|
||||||
|
FILES := $(wildcard $(addprefix $(BUILD_LIBTEST_OUTPUT_DIR), /lib/*)), \
|
||||||
|
FLATTEN := true, \
|
||||||
|
))
|
||||||
|
|
||||||
|
test-image-lib-native: $(COPY_LIBTEST_NATIVE_TO_HOTSPOT) $(COPY_LIBTEST_NATIVE_TO_JDK)
|
||||||
|
|
||||||
|
all: build-test-lib-native
|
||||||
|
|
||||||
|
.PHONY: default all build-test-lib-native test-image-lib-native
|
||||||
@@ -449,6 +449,9 @@ void ArrayCopyStub::emit_code(LIR_Assembler* ce) {
|
|||||||
__ extsw(R7_ARG5, length()->as_register());
|
__ extsw(R7_ARG5, length()->as_register());
|
||||||
|
|
||||||
ce->emit_static_call_stub();
|
ce->emit_static_call_stub();
|
||||||
|
if (ce->compilation()->bailed_out()) {
|
||||||
|
return; // CodeCache is full
|
||||||
|
}
|
||||||
|
|
||||||
bool success = ce->emit_trampoline_stub_for_call(SharedRuntime::get_resolve_static_call_stub());
|
bool success = ce->emit_trampoline_stub_for_call(SharedRuntime::get_resolve_static_call_stub());
|
||||||
if (!success) { return; }
|
if (!success) { return; }
|
||||||
|
|||||||
@@ -2162,7 +2162,10 @@ int HandlerImpl::emit_exception_handler(CodeBuffer &cbuf) {
|
|||||||
MacroAssembler _masm(&cbuf);
|
MacroAssembler _masm(&cbuf);
|
||||||
|
|
||||||
address base = __ start_a_stub(size_exception_handler());
|
address base = __ start_a_stub(size_exception_handler());
|
||||||
if (base == NULL) return 0; // CodeBuffer::expand failed
|
if (base == NULL) {
|
||||||
|
ciEnv::current()->record_failure("CodeCache is full");
|
||||||
|
return 0; // CodeBuffer::expand failed
|
||||||
|
}
|
||||||
|
|
||||||
int offset = __ offset();
|
int offset = __ offset();
|
||||||
__ b64_patchable((address)OptoRuntime::exception_blob()->content_begin(),
|
__ b64_patchable((address)OptoRuntime::exception_blob()->content_begin(),
|
||||||
@@ -2179,7 +2182,10 @@ int HandlerImpl::emit_deopt_handler(CodeBuffer& cbuf) {
|
|||||||
MacroAssembler _masm(&cbuf);
|
MacroAssembler _masm(&cbuf);
|
||||||
|
|
||||||
address base = __ start_a_stub(size_deopt_handler());
|
address base = __ start_a_stub(size_deopt_handler());
|
||||||
if (base == NULL) return 0; // CodeBuffer::expand failed
|
if (base == NULL) {
|
||||||
|
ciEnv::current()->record_failure("CodeCache is full");
|
||||||
|
return 0; // CodeBuffer::expand failed
|
||||||
|
}
|
||||||
|
|
||||||
int offset = __ offset();
|
int offset = __ offset();
|
||||||
__ bl64_patchable((address)SharedRuntime::deopt_blob()->unpack(),
|
__ bl64_patchable((address)SharedRuntime::deopt_blob()->unpack(),
|
||||||
@@ -2950,15 +2956,16 @@ encode %{
|
|||||||
intptr_t val = $src$$constant;
|
intptr_t val = $src$$constant;
|
||||||
relocInfo::relocType constant_reloc = $src->constant_reloc(); // src
|
relocInfo::relocType constant_reloc = $src->constant_reloc(); // src
|
||||||
address const_toc_addr;
|
address const_toc_addr;
|
||||||
|
RelocationHolder r; // Initializes type to none.
|
||||||
if (constant_reloc == relocInfo::oop_type) {
|
if (constant_reloc == relocInfo::oop_type) {
|
||||||
// Create an oop constant and a corresponding relocation.
|
// Create an oop constant and a corresponding relocation.
|
||||||
AddressLiteral a = __ allocate_oop_address((jobject)val);
|
AddressLiteral a = __ constant_oop_address((jobject)val);
|
||||||
const_toc_addr = __ address_constant((address)a.value(), RelocationHolder::none);
|
const_toc_addr = __ address_constant((address)a.value(), RelocationHolder::none);
|
||||||
__ relocate(a.rspec());
|
r = a.rspec();
|
||||||
} else if (constant_reloc == relocInfo::metadata_type) {
|
} else if (constant_reloc == relocInfo::metadata_type) {
|
||||||
|
// Notify OOP recorder (don't need the relocation)
|
||||||
AddressLiteral a = __ constant_metadata_address((Metadata *)val);
|
AddressLiteral a = __ constant_metadata_address((Metadata *)val);
|
||||||
const_toc_addr = __ address_constant((address)a.value(), RelocationHolder::none);
|
const_toc_addr = __ address_constant((address)a.value(), RelocationHolder::none);
|
||||||
__ relocate(a.rspec());
|
|
||||||
} else {
|
} else {
|
||||||
// Create a non-oop constant, no relocation needed.
|
// Create a non-oop constant, no relocation needed.
|
||||||
const_toc_addr = __ long_constant((jlong)$src$$constant);
|
const_toc_addr = __ long_constant((jlong)$src$$constant);
|
||||||
@@ -2968,6 +2975,7 @@ encode %{
|
|||||||
ciEnv::current()->record_out_of_memory_failure();
|
ciEnv::current()->record_out_of_memory_failure();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
__ relocate(r); // If set above.
|
||||||
// Get the constant's TOC offset.
|
// Get the constant's TOC offset.
|
||||||
toc_offset = __ offset_to_method_toc(const_toc_addr);
|
toc_offset = __ offset_to_method_toc(const_toc_addr);
|
||||||
|
|
||||||
@@ -2982,15 +2990,16 @@ encode %{
|
|||||||
intptr_t val = $src$$constant;
|
intptr_t val = $src$$constant;
|
||||||
relocInfo::relocType constant_reloc = $src->constant_reloc(); // src
|
relocInfo::relocType constant_reloc = $src->constant_reloc(); // src
|
||||||
address const_toc_addr;
|
address const_toc_addr;
|
||||||
|
RelocationHolder r; // Initializes type to none.
|
||||||
if (constant_reloc == relocInfo::oop_type) {
|
if (constant_reloc == relocInfo::oop_type) {
|
||||||
// Create an oop constant and a corresponding relocation.
|
// Create an oop constant and a corresponding relocation.
|
||||||
AddressLiteral a = __ allocate_oop_address((jobject)val);
|
AddressLiteral a = __ constant_oop_address((jobject)val);
|
||||||
const_toc_addr = __ address_constant((address)a.value(), RelocationHolder::none);
|
const_toc_addr = __ address_constant((address)a.value(), RelocationHolder::none);
|
||||||
__ relocate(a.rspec());
|
r = a.rspec();
|
||||||
} else if (constant_reloc == relocInfo::metadata_type) {
|
} else if (constant_reloc == relocInfo::metadata_type) {
|
||||||
|
// Notify OOP recorder (don't need the relocation)
|
||||||
AddressLiteral a = __ constant_metadata_address((Metadata *)val);
|
AddressLiteral a = __ constant_metadata_address((Metadata *)val);
|
||||||
const_toc_addr = __ address_constant((address)a.value(), RelocationHolder::none);
|
const_toc_addr = __ address_constant((address)a.value(), RelocationHolder::none);
|
||||||
__ relocate(a.rspec());
|
|
||||||
} else { // non-oop pointers, e.g. card mark base, heap top
|
} else { // non-oop pointers, e.g. card mark base, heap top
|
||||||
// Create a non-oop constant, no relocation needed.
|
// Create a non-oop constant, no relocation needed.
|
||||||
const_toc_addr = __ long_constant((jlong)$src$$constant);
|
const_toc_addr = __ long_constant((jlong)$src$$constant);
|
||||||
@@ -3000,6 +3009,7 @@ encode %{
|
|||||||
ciEnv::current()->record_out_of_memory_failure();
|
ciEnv::current()->record_out_of_memory_failure();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
__ relocate(r); // If set above.
|
||||||
// Get the constant's TOC offset.
|
// Get the constant's TOC offset.
|
||||||
const int toc_offset = __ offset_to_method_toc(const_toc_addr);
|
const int toc_offset = __ offset_to_method_toc(const_toc_addr);
|
||||||
// Store the toc offset of the constant.
|
// Store the toc offset of the constant.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2016, 2024, Oracle and/or its affiliates. All rights reserved.
|
||||||
* Copyright (c) 2016, 2018 SAP SE. All rights reserved.
|
* Copyright (c) 2016, 2024 SAP SE. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@@ -440,6 +440,7 @@ void ArrayCopyStub::emit_code(LIR_Assembler* ce) {
|
|||||||
"must be aligned");
|
"must be aligned");
|
||||||
|
|
||||||
ce->emit_static_call_stub();
|
ce->emit_static_call_stub();
|
||||||
|
CHECK_BAILOUT();
|
||||||
|
|
||||||
// Prepend each BRASL with a nop.
|
// Prepend each BRASL with a nop.
|
||||||
__ relocate(relocInfo::static_call_type);
|
__ relocate(relocInfo::static_call_type);
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
//
|
//
|
||||||
// Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
|
// Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
|
||||||
// Copyright (c) 2017, SAP SE. All rights reserved.
|
// Copyright (c) 2017, 2024 SAP SE. All rights reserved.
|
||||||
// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
//
|
//
|
||||||
// This code is free software; you can redistribute it and/or modify it
|
// This code is free software; you can redistribute it and/or modify it
|
||||||
@@ -1430,6 +1430,7 @@ int HandlerImpl::emit_exception_handler(CodeBuffer &cbuf) {
|
|||||||
|
|
||||||
address base = __ start_a_stub(size_exception_handler());
|
address base = __ start_a_stub(size_exception_handler());
|
||||||
if (base == NULL) {
|
if (base == NULL) {
|
||||||
|
ciEnv::current()->record_failure("CodeCache is full");
|
||||||
return 0; // CodeBuffer::expand failed
|
return 0; // CodeBuffer::expand failed
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1451,6 +1452,7 @@ int HandlerImpl::emit_deopt_handler(CodeBuffer& cbuf) {
|
|||||||
address base = __ start_a_stub(size_deopt_handler());
|
address base = __ start_a_stub(size_deopt_handler());
|
||||||
|
|
||||||
if (base == NULL) {
|
if (base == NULL) {
|
||||||
|
ciEnv::current()->record_failure("CodeCache is full");
|
||||||
return 0; // CodeBuffer::expand failed
|
return 0; // CodeBuffer::expand failed
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1313,10 +1313,9 @@ bool os::dll_address_to_library_name(address addr, char* buf,
|
|||||||
|
|
||||||
// Loads .dll/.so and in case of error it checks if .dll/.so was built
|
// Loads .dll/.so and in case of error it checks if .dll/.so was built
|
||||||
// for the same architecture as Hotspot is running on.
|
// for the same architecture as Hotspot is running on.
|
||||||
void *os::dll_load(const char *filename, char *ebuf, int ebuflen) {
|
static void* dll_load_library(const char *filename, char *ebuf, int ebuflen) {
|
||||||
|
|
||||||
log_info(os)("attempting shared library load of %s", filename);
|
log_info(os)("attempting shared library load of %s", filename);
|
||||||
|
|
||||||
if (ebuf && ebuflen > 0) {
|
if (ebuf && ebuflen > 0) {
|
||||||
ebuf[0] = '\0';
|
ebuf[0] = '\0';
|
||||||
ebuf[ebuflen - 1] = '\0';
|
ebuf[ebuflen - 1] = '\0';
|
||||||
@@ -1359,6 +1358,26 @@ void* os::dll_lookup(void* handle, const char* name) {
|
|||||||
void* os::get_default_process_handle() {
|
void* os::get_default_process_handle() {
|
||||||
return (void*)::dlopen(NULL, RTLD_LAZY);
|
return (void*)::dlopen(NULL, RTLD_LAZY);
|
||||||
}
|
}
|
||||||
|
// Load library named <filename>
|
||||||
|
// If filename matches <name>.so, and loading fails, repeat with <name>.a.
|
||||||
|
void *os::dll_load(const char *filename, char *ebuf, int ebuflen) {
|
||||||
|
void* result = nullptr;
|
||||||
|
char* const file_path = strdup(filename);
|
||||||
|
char* const pointer_to_dot = strrchr(file_path, '.');
|
||||||
|
const char old_extension[] = ".so";
|
||||||
|
const char new_extension[] = ".a";
|
||||||
|
STATIC_ASSERT(sizeof(old_extension) >= sizeof(new_extension));
|
||||||
|
// First try to load the existing file.
|
||||||
|
result = dll_load_library(filename, ebuf, ebuflen);
|
||||||
|
// If the load fails,we try to reload by changing the extension to .a for .so files only.
|
||||||
|
// Shared object in .so format dont have braces, hence they get removed for archives with members.
|
||||||
|
if (result == nullptr && pointer_to_dot != nullptr && strcmp(pointer_to_dot, old_extension) == 0) {
|
||||||
|
snprintf(pointer_to_dot, sizeof(old_extension), "%s", new_extension);
|
||||||
|
result = dll_load_library(file_path, ebuf, ebuflen);
|
||||||
|
}
|
||||||
|
FREE_C_HEAP_ARRAY(char, file_path);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
void os::print_dll_info(outputStream *st) {
|
void os::print_dll_info(outputStream *st) {
|
||||||
st->print_cr("Dynamic libraries:");
|
st->print_cr("Dynamic libraries:");
|
||||||
|
|||||||
@@ -142,10 +142,6 @@ inline int os::connect(int fd, struct sockaddr *him, socklen_t len) {
|
|||||||
RESTARTABLE_RETURN_INT(::connect(fd, him, len));
|
RESTARTABLE_RETURN_INT(::connect(fd, him, len));
|
||||||
}
|
}
|
||||||
|
|
||||||
inline struct hostent* os::get_host_by_name(char* name) {
|
|
||||||
return ::gethostbyname(name);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline bool os::supports_monotonic_clock() {
|
inline bool os::supports_monotonic_clock() {
|
||||||
// mread_real_time() is monotonic on AIX (see os::javaTimeNanos() comments)
|
// mread_real_time() is monotonic on AIX (see os::javaTimeNanos() comments)
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -144,10 +144,6 @@ inline int os::connect(int fd, struct sockaddr* him, socklen_t len) {
|
|||||||
RESTARTABLE_RETURN_INT(::connect(fd, him, len));
|
RESTARTABLE_RETURN_INT(::connect(fd, him, len));
|
||||||
}
|
}
|
||||||
|
|
||||||
inline struct hostent* os::get_host_by_name(char* name) {
|
|
||||||
return ::gethostbyname(name);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline bool os::supports_monotonic_clock() {
|
inline bool os::supports_monotonic_clock() {
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1999, 2022, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1999, 2024, Oracle and/or its affiliates. All rights reserved.
|
||||||
* Copyright (c) 2015, 2022 SAP SE. All rights reserved.
|
* Copyright (c) 2015, 2024 SAP SE. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@@ -368,7 +368,7 @@ pid_t os::Linux::gettid() {
|
|||||||
julong os::Linux::host_swap() {
|
julong os::Linux::host_swap() {
|
||||||
struct sysinfo si;
|
struct sysinfo si;
|
||||||
sysinfo(&si);
|
sysinfo(&si);
|
||||||
return (julong)si.totalswap;
|
return (julong)(si.totalswap * si.mem_unit);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Most versions of linux have a bug where the number of processors are
|
// Most versions of linux have a bug where the number of processors are
|
||||||
@@ -1697,14 +1697,6 @@ const char* os::dll_file_extension() { return ".so"; }
|
|||||||
// directory not the java application's temp directory, ala java.io.tmpdir.
|
// directory not the java application's temp directory, ala java.io.tmpdir.
|
||||||
const char* os::get_temp_directory() { return "/tmp"; }
|
const char* os::get_temp_directory() { return "/tmp"; }
|
||||||
|
|
||||||
static bool file_exists(const char* filename) {
|
|
||||||
struct stat statbuf;
|
|
||||||
if (filename == NULL || strlen(filename) == 0) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return os::stat(filename, &statbuf) == 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// check if addr is inside libjvm.so
|
// check if addr is inside libjvm.so
|
||||||
bool os::address_is_in_vm(address addr) {
|
bool os::address_is_in_vm(address addr) {
|
||||||
static address libjvm_base_addr;
|
static address libjvm_base_addr;
|
||||||
@@ -2313,7 +2305,6 @@ const char* distro_files[] = {
|
|||||||
"/etc/mandrake-release",
|
"/etc/mandrake-release",
|
||||||
"/etc/sun-release",
|
"/etc/sun-release",
|
||||||
"/etc/redhat-release",
|
"/etc/redhat-release",
|
||||||
"/etc/SuSE-release",
|
|
||||||
"/etc/lsb-release",
|
"/etc/lsb-release",
|
||||||
"/etc/turbolinux-release",
|
"/etc/turbolinux-release",
|
||||||
"/etc/gentoo-release",
|
"/etc/gentoo-release",
|
||||||
@@ -2321,6 +2312,7 @@ const char* distro_files[] = {
|
|||||||
"/etc/angstrom-version",
|
"/etc/angstrom-version",
|
||||||
"/etc/system-release",
|
"/etc/system-release",
|
||||||
"/etc/os-release",
|
"/etc/os-release",
|
||||||
|
"/etc/SuSE-release", // Deprecated in favor of os-release since SuSE 12
|
||||||
NULL };
|
NULL };
|
||||||
|
|
||||||
void os::Linux::print_distro_info(outputStream* st) {
|
void os::Linux::print_distro_info(outputStream* st) {
|
||||||
@@ -2738,7 +2730,7 @@ static void print_sys_devices_cpu_info(outputStream* st, char* buf, size_t bufle
|
|||||||
snprintf(hbuf_type, 60, "/sys/devices/system/cpu/cpu0/cache/index%u/type", i);
|
snprintf(hbuf_type, 60, "/sys/devices/system/cpu/cpu0/cache/index%u/type", i);
|
||||||
snprintf(hbuf_size, 60, "/sys/devices/system/cpu/cpu0/cache/index%u/size", i);
|
snprintf(hbuf_size, 60, "/sys/devices/system/cpu/cpu0/cache/index%u/size", i);
|
||||||
snprintf(hbuf_coherency_line_size, 80, "/sys/devices/system/cpu/cpu0/cache/index%u/coherency_line_size", i);
|
snprintf(hbuf_coherency_line_size, 80, "/sys/devices/system/cpu/cpu0/cache/index%u/coherency_line_size", i);
|
||||||
if (file_exists(hbuf_level)) {
|
if (os::file_exists(hbuf_level)) {
|
||||||
_print_ascii_file_h("cache level", hbuf_level, st);
|
_print_ascii_file_h("cache level", hbuf_level, st);
|
||||||
_print_ascii_file_h("cache type", hbuf_type, st);
|
_print_ascii_file_h("cache type", hbuf_type, st);
|
||||||
_print_ascii_file_h("cache size", hbuf_size, st);
|
_print_ascii_file_h("cache size", hbuf_size, st);
|
||||||
|
|||||||
@@ -136,10 +136,6 @@ inline int os::connect(int fd, struct sockaddr* him, socklen_t len) {
|
|||||||
RESTARTABLE_RETURN_INT(::connect(fd, him, len));
|
RESTARTABLE_RETURN_INT(::connect(fd, him, len));
|
||||||
}
|
}
|
||||||
|
|
||||||
inline struct hostent* os::get_host_by_name(char* name) {
|
|
||||||
return ::gethostbyname(name);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline bool os::supports_monotonic_clock() {
|
inline bool os::supports_monotonic_clock() {
|
||||||
return Linux::_clock_gettime != NULL;
|
return Linux::_clock_gettime != NULL;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -837,7 +837,7 @@ SystemProcessInterface::SystemProcesses::ProcessIterator::ProcessIterator() {
|
|||||||
bool SystemProcessInterface::SystemProcesses::ProcessIterator::initialize() {
|
bool SystemProcessInterface::SystemProcesses::ProcessIterator::initialize() {
|
||||||
_dir = os::opendir("/proc");
|
_dir = os::opendir("/proc");
|
||||||
_entry = NULL;
|
_entry = NULL;
|
||||||
_valid = true;
|
_valid = _dir != NULL; // May be null if /proc is not accessible.
|
||||||
next_process();
|
next_process();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -92,10 +92,6 @@ inline int os::socket(int domain, int type, int protocol) {
|
|||||||
return ::socket(domain, type, protocol);
|
return ::socket(domain, type, protocol);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline struct hostent* os::get_host_by_name(char* name) {
|
|
||||||
return ::gethostbyname(name);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline bool os::supports_monotonic_clock() {
|
inline bool os::supports_monotonic_clock() {
|
||||||
// javaTimeNanos() is monotonic on Solaris, see getTimeNanos() comments
|
// javaTimeNanos() is monotonic on Solaris, see getTimeNanos() comments
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -5565,10 +5565,6 @@ static jint initSock() {
|
|||||||
return JNI_OK;
|
return JNI_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct hostent* os::get_host_by_name(char* name) {
|
|
||||||
return (struct hostent*)gethostbyname(name);
|
|
||||||
}
|
|
||||||
|
|
||||||
int os::socket_close(int fd) {
|
int os::socket_close(int fd) {
|
||||||
return ::closesocket(fd);
|
return ::closesocket(fd);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1046,10 +1046,11 @@ class CodeString: public CHeapObj<mtCode> {
|
|||||||
friend class CodeStrings;
|
friend class CodeStrings;
|
||||||
const char * _string;
|
const char * _string;
|
||||||
CodeString* _next;
|
CodeString* _next;
|
||||||
|
CodeString* _prev;
|
||||||
intptr_t _offset;
|
intptr_t _offset;
|
||||||
|
|
||||||
~CodeString() {
|
~CodeString() {
|
||||||
assert(_next == NULL, "wrong interface for freeing list");
|
assert(_next == NULL && _prev == NULL, "wrong interface for freeing list");
|
||||||
os::free((void*)_string);
|
os::free((void*)_string);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1057,7 +1058,7 @@ class CodeString: public CHeapObj<mtCode> {
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
CodeString(const char * string, intptr_t offset = -1)
|
CodeString(const char * string, intptr_t offset = -1)
|
||||||
: _next(NULL), _offset(offset) {
|
: _next(NULL), _prev(NULL), _offset(offset) {
|
||||||
_string = os::strdup(string, mtCode);
|
_string = os::strdup(string, mtCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1065,7 +1066,12 @@ class CodeString: public CHeapObj<mtCode> {
|
|||||||
intptr_t offset() const { assert(_offset >= 0, "offset for non comment?"); return _offset; }
|
intptr_t offset() const { assert(_offset >= 0, "offset for non comment?"); return _offset; }
|
||||||
CodeString* next() const { return _next; }
|
CodeString* next() const { return _next; }
|
||||||
|
|
||||||
void set_next(CodeString* next) { _next = next; }
|
void set_next(CodeString* next) {
|
||||||
|
_next = next;
|
||||||
|
if (next != NULL) {
|
||||||
|
next->_prev = this;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
CodeString* first_comment() {
|
CodeString* first_comment() {
|
||||||
if (is_comment()) {
|
if (is_comment()) {
|
||||||
@@ -1093,12 +1099,9 @@ CodeString* CodeStrings::find(intptr_t offset) const {
|
|||||||
|
|
||||||
// Convenience for add_comment.
|
// Convenience for add_comment.
|
||||||
CodeString* CodeStrings::find_last(intptr_t offset) const {
|
CodeString* CodeStrings::find_last(intptr_t offset) const {
|
||||||
CodeString* a = find(offset);
|
CodeString* a = _strings_last;
|
||||||
if (a != NULL) {
|
while (a != NULL && !a->is_comment() && a->offset() > offset) {
|
||||||
CodeString* c = NULL;
|
a = a->_prev;
|
||||||
while (((c = a->next_comment()) != NULL) && (c->offset() == offset)) {
|
|
||||||
a = c;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
@@ -1117,12 +1120,16 @@ void CodeStrings::add_comment(intptr_t offset, const char * comment) {
|
|||||||
c->set_next(_strings);
|
c->set_next(_strings);
|
||||||
_strings = c;
|
_strings = c;
|
||||||
}
|
}
|
||||||
|
if (c->next() == NULL) {
|
||||||
|
_strings_last = c;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CodeStrings::assign(CodeStrings& other) {
|
void CodeStrings::assign(CodeStrings& other) {
|
||||||
other.check_valid();
|
other.check_valid();
|
||||||
assert(is_null(), "Cannot assign onto non-empty CodeStrings");
|
assert(is_null(), "Cannot assign onto non-empty CodeStrings");
|
||||||
_strings = other._strings;
|
_strings = other._strings;
|
||||||
|
_strings_last = other._strings_last;
|
||||||
#ifdef ASSERT
|
#ifdef ASSERT
|
||||||
_defunct = false;
|
_defunct = false;
|
||||||
#endif
|
#endif
|
||||||
@@ -1138,8 +1145,11 @@ void CodeStrings::copy(CodeStrings& other) {
|
|||||||
assert(is_null(), "Cannot copy onto non-empty CodeStrings");
|
assert(is_null(), "Cannot copy onto non-empty CodeStrings");
|
||||||
CodeString* n = other._strings;
|
CodeString* n = other._strings;
|
||||||
CodeString** ps = &_strings;
|
CodeString** ps = &_strings;
|
||||||
|
CodeString* prev = NULL;
|
||||||
while (n != NULL) {
|
while (n != NULL) {
|
||||||
*ps = new CodeString(n->string(),n->offset());
|
*ps = new CodeString(n->string(),n->offset());
|
||||||
|
(*ps)->_prev = prev;
|
||||||
|
prev = *ps;
|
||||||
ps = &((*ps)->_next);
|
ps = &((*ps)->_next);
|
||||||
n = n->next();
|
n = n->next();
|
||||||
}
|
}
|
||||||
@@ -1168,6 +1178,10 @@ void CodeStrings::free() {
|
|||||||
// unlink the node from the list saving a pointer to the next
|
// unlink the node from the list saving a pointer to the next
|
||||||
CodeString* p = n->next();
|
CodeString* p = n->next();
|
||||||
n->set_next(NULL);
|
n->set_next(NULL);
|
||||||
|
if (p != NULL) {
|
||||||
|
assert(p->_prev == n, "missing prev link");
|
||||||
|
p->_prev = NULL;
|
||||||
|
}
|
||||||
delete n;
|
delete n;
|
||||||
n = p;
|
n = p;
|
||||||
}
|
}
|
||||||
@@ -1178,6 +1192,9 @@ const char* CodeStrings::add_string(const char * string) {
|
|||||||
check_valid();
|
check_valid();
|
||||||
CodeString* s = new CodeString(string);
|
CodeString* s = new CodeString(string);
|
||||||
s->set_next(_strings);
|
s->set_next(_strings);
|
||||||
|
if (_strings == NULL) {
|
||||||
|
_strings_last = s;
|
||||||
|
}
|
||||||
_strings = s;
|
_strings = s;
|
||||||
assert(s->string() != NULL, "should have a string");
|
assert(s->string() != NULL, "should have a string");
|
||||||
return s->string();
|
return s->string();
|
||||||
|
|||||||
@@ -249,6 +249,7 @@ class CodeStrings {
|
|||||||
private:
|
private:
|
||||||
#ifndef PRODUCT
|
#ifndef PRODUCT
|
||||||
CodeString* _strings;
|
CodeString* _strings;
|
||||||
|
CodeString* _strings_last;
|
||||||
#ifdef ASSERT
|
#ifdef ASSERT
|
||||||
// Becomes true after copy-out, forbids further use.
|
// Becomes true after copy-out, forbids further use.
|
||||||
bool _defunct; // Zero bit pattern is "valid", see memset call in decode_env::decode_env
|
bool _defunct; // Zero bit pattern is "valid", see memset call in decode_env::decode_env
|
||||||
@@ -262,6 +263,7 @@ private:
|
|||||||
void set_null_and_invalidate() {
|
void set_null_and_invalidate() {
|
||||||
#ifndef PRODUCT
|
#ifndef PRODUCT
|
||||||
_strings = NULL;
|
_strings = NULL;
|
||||||
|
_strings_last = NULL;
|
||||||
#ifdef ASSERT
|
#ifdef ASSERT
|
||||||
_defunct = true;
|
_defunct = true;
|
||||||
#endif
|
#endif
|
||||||
@@ -272,6 +274,7 @@ public:
|
|||||||
CodeStrings() {
|
CodeStrings() {
|
||||||
#ifndef PRODUCT
|
#ifndef PRODUCT
|
||||||
_strings = NULL;
|
_strings = NULL;
|
||||||
|
_strings_last = NULL;
|
||||||
#ifdef ASSERT
|
#ifdef ASSERT
|
||||||
_defunct = false;
|
_defunct = false;
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2012, 2023, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2012, 2024, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@@ -446,14 +446,14 @@ void RangeCheckEliminator::in_block_motion(BlockBegin *block, AccessIndexedList
|
|||||||
|
|
||||||
if (c) {
|
if (c) {
|
||||||
jint value = c->type()->as_IntConstant()->value();
|
jint value = c->type()->as_IntConstant()->value();
|
||||||
if (value != min_jint) {
|
if (ao->op() == Bytecodes::_iadd) {
|
||||||
if (ao->op() == Bytecodes::_isub) {
|
|
||||||
value = -value;
|
|
||||||
}
|
|
||||||
base = java_add(base, value);
|
base = java_add(base, value);
|
||||||
|
} else {
|
||||||
|
assert(ao->op() == Bytecodes::_isub, "unexpected bytecode");
|
||||||
|
base = java_subtract(base, value);
|
||||||
|
}
|
||||||
last_integer = base;
|
last_integer = base;
|
||||||
last_instruction = other;
|
last_instruction = other;
|
||||||
}
|
|
||||||
index = other;
|
index = other;
|
||||||
} else {
|
} else {
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2024, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@@ -301,7 +301,23 @@ unsigned int SymbolTable::hash_shared_symbol(const char* s, int len) {
|
|||||||
// entries in the symbol table during normal execution (only during
|
// entries in the symbol table during normal execution (only during
|
||||||
// safepoints).
|
// safepoints).
|
||||||
|
|
||||||
|
// Symbols should represent entities from the constant pool that are
|
||||||
|
// limited to <64K in length, but usage errors creep in allowing Symbols
|
||||||
|
// to be used for arbitrary strings. For debug builds we will assert if
|
||||||
|
// a string is too long, whereas product builds will truncate it.
|
||||||
|
static int check_length(const char* name, int len) {
|
||||||
|
assert(len <= Symbol::max_length(),
|
||||||
|
"String length %d exceeds the maximum Symbol length of %d", len, Symbol::max_length());
|
||||||
|
if (len > Symbol::max_length()) {
|
||||||
|
warning("A string \"%.80s ... %.80s\" exceeds the maximum Symbol "
|
||||||
|
"length of %d and has been truncated", name, (name + len - 80), Symbol::max_length());
|
||||||
|
len = Symbol::max_length();
|
||||||
|
}
|
||||||
|
return len;
|
||||||
|
}
|
||||||
|
|
||||||
Symbol* SymbolTable::lookup(const char* name, int len, TRAPS) {
|
Symbol* SymbolTable::lookup(const char* name, int len, TRAPS) {
|
||||||
|
len = check_length(name, len);
|
||||||
unsigned int hashValue = hash_symbol(name, len);
|
unsigned int hashValue = hash_symbol(name, len);
|
||||||
int index = the_table()->hash_to_index(hashValue);
|
int index = the_table()->hash_to_index(hashValue);
|
||||||
|
|
||||||
@@ -432,6 +448,7 @@ void SymbolTable::add(ClassLoaderData* loader_data, const constantPoolHandle& cp
|
|||||||
for (int i=0; i<names_count; i++) {
|
for (int i=0; i<names_count; i++) {
|
||||||
int index = table->hash_to_index(hashValues[i]);
|
int index = table->hash_to_index(hashValues[i]);
|
||||||
bool c_heap = !loader_data->is_the_null_class_loader_data();
|
bool c_heap = !loader_data->is_the_null_class_loader_data();
|
||||||
|
assert(lengths[i] <= Symbol::max_length(), "must be - these come from the constant pool");
|
||||||
Symbol* sym = table->basic_add(index, (u1*)names[i], lengths[i], hashValues[i], c_heap, CHECK);
|
Symbol* sym = table->basic_add(index, (u1*)names[i], lengths[i], hashValues[i], c_heap, CHECK);
|
||||||
cp->symbol_at_put(cp_indices[i], sym);
|
cp->symbol_at_put(cp_indices[i], sym);
|
||||||
}
|
}
|
||||||
@@ -440,7 +457,8 @@ void SymbolTable::add(ClassLoaderData* loader_data, const constantPoolHandle& cp
|
|||||||
|
|
||||||
Symbol* SymbolTable::new_permanent_symbol(const char* name, TRAPS) {
|
Symbol* SymbolTable::new_permanent_symbol(const char* name, TRAPS) {
|
||||||
unsigned int hash;
|
unsigned int hash;
|
||||||
Symbol* result = SymbolTable::lookup_only((char*)name, (int)strlen(name), hash);
|
int len = check_length(name, (int)strlen(name));
|
||||||
|
Symbol* result = SymbolTable::lookup_only((char*)name, len, hash);
|
||||||
if (result != NULL) {
|
if (result != NULL) {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -449,13 +467,14 @@ Symbol* SymbolTable::new_permanent_symbol(const char* name, TRAPS) {
|
|||||||
|
|
||||||
SymbolTable* table = the_table();
|
SymbolTable* table = the_table();
|
||||||
int index = table->hash_to_index(hash);
|
int index = table->hash_to_index(hash);
|
||||||
return table->basic_add(index, (u1*)name, (int)strlen(name), hash, false, THREAD);
|
return table->basic_add(index, (u1*)name, len, hash, false, THREAD);
|
||||||
}
|
}
|
||||||
|
|
||||||
Symbol* SymbolTable::basic_add(int index_arg, u1 *name, int len,
|
Symbol* SymbolTable::basic_add(int index_arg, u1 *name, int len,
|
||||||
unsigned int hashValue_arg, bool c_heap, TRAPS) {
|
unsigned int hashValue_arg, bool c_heap, TRAPS) {
|
||||||
assert(!Universe::heap()->is_in_reserved(name),
|
assert(!Universe::heap()->is_in_reserved(name),
|
||||||
"proposed name of symbol must be stable");
|
"proposed name of symbol must be stable");
|
||||||
|
assert(len <= Symbol::max_length(), "caller should have ensured this");
|
||||||
|
|
||||||
// Don't allow symbols to be created which cannot fit in a Symbol*.
|
// Don't allow symbols to be created which cannot fit in a Symbol*.
|
||||||
if (len > Symbol::max_length()) {
|
if (len > Symbol::max_length()) {
|
||||||
|
|||||||
@@ -1364,7 +1364,9 @@ void CodeCache::report_codemem_full(int code_blob_type, bool print) {
|
|||||||
CodeHeap* heap = get_code_heap(code_blob_type);
|
CodeHeap* heap = get_code_heap(code_blob_type);
|
||||||
assert(heap != NULL, "heap is null");
|
assert(heap != NULL, "heap is null");
|
||||||
|
|
||||||
if ((heap->full_count() == 0) || print) {
|
heap->report_full();
|
||||||
|
|
||||||
|
if ((heap->full_count() == 1) || print) {
|
||||||
// Not yet reported for this heap, report
|
// Not yet reported for this heap, report
|
||||||
if (SegmentedCodeCache) {
|
if (SegmentedCodeCache) {
|
||||||
ResourceMark rm;
|
ResourceMark rm;
|
||||||
@@ -1401,7 +1403,7 @@ void CodeCache::report_codemem_full(int code_blob_type, bool print) {
|
|||||||
tty->print("%s", s.as_string());
|
tty->print("%s", s.as_string());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (heap->full_count() == 0) {
|
if (heap->full_count() == 1) {
|
||||||
LogTarget(Debug, codecache) lt;
|
LogTarget(Debug, codecache) lt;
|
||||||
if (lt.is_enabled()) {
|
if (lt.is_enabled()) {
|
||||||
CompileBroker::print_heapinfo(tty, "all", 4096); // details, may be a lot!
|
CompileBroker::print_heapinfo(tty, "all", 4096); // details, may be a lot!
|
||||||
@@ -1409,8 +1411,6 @@ void CodeCache::report_codemem_full(int code_blob_type, bool print) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
heap->report_full();
|
|
||||||
|
|
||||||
EventCodeCacheFull event;
|
EventCodeCacheFull event;
|
||||||
if (event.should_commit()) {
|
if (event.should_commit()) {
|
||||||
event.set_codeBlobType((u1)code_blob_type);
|
event.set_codeBlobType((u1)code_blob_type);
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ void InlineCacheBuffer::init_next_stub() {
|
|||||||
|
|
||||||
void InlineCacheBuffer::initialize() {
|
void InlineCacheBuffer::initialize() {
|
||||||
if (_buffer != NULL) return; // already initialized
|
if (_buffer != NULL) return; // already initialized
|
||||||
_buffer = new StubQueue(new ICStubInterface, 10*K, InlineCacheBuffer_lock, "InlineCacheBuffer");
|
_buffer = new StubQueue(new ICStubInterface, checked_cast<int>(InlineCacheBufferSize), InlineCacheBuffer_lock, "InlineCacheBuffer");
|
||||||
assert (_buffer != NULL, "cannot allocate InlineCacheBuffer");
|
assert (_buffer != NULL, "cannot allocate InlineCacheBuffer");
|
||||||
init_next_stub();
|
init_next_stub();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -214,8 +214,6 @@ void StubQueue::verify() {
|
|||||||
guarantee(0 <= _queue_begin && _queue_begin < _buffer_limit, "_queue_begin out of bounds");
|
guarantee(0 <= _queue_begin && _queue_begin < _buffer_limit, "_queue_begin out of bounds");
|
||||||
guarantee(0 <= _queue_end && _queue_end <= _buffer_limit, "_queue_end out of bounds");
|
guarantee(0 <= _queue_end && _queue_end <= _buffer_limit, "_queue_end out of bounds");
|
||||||
// verify alignment
|
// verify alignment
|
||||||
guarantee(_buffer_size % CodeEntryAlignment == 0, "_buffer_size not aligned");
|
|
||||||
guarantee(_buffer_limit % CodeEntryAlignment == 0, "_buffer_limit not aligned");
|
|
||||||
guarantee(_queue_begin % CodeEntryAlignment == 0, "_queue_begin not aligned");
|
guarantee(_queue_begin % CodeEntryAlignment == 0, "_queue_begin not aligned");
|
||||||
guarantee(_queue_end % CodeEntryAlignment == 0, "_queue_end not aligned");
|
guarantee(_queue_end % CodeEntryAlignment == 0, "_queue_end not aligned");
|
||||||
// verify buffer limit/size relationship
|
// verify buffer limit/size relationship
|
||||||
|
|||||||
@@ -313,6 +313,11 @@ bool CompilerConfig::check_args_consistency(bool status) {
|
|||||||
"Invalid NonNMethodCodeHeapSize=%dK. Must be at least %uK.\n", NonNMethodCodeHeapSize/K,
|
"Invalid NonNMethodCodeHeapSize=%dK. Must be at least %uK.\n", NonNMethodCodeHeapSize/K,
|
||||||
min_code_cache_size/K);
|
min_code_cache_size/K);
|
||||||
status = false;
|
status = false;
|
||||||
|
} else if (InlineCacheBufferSize > NonNMethodCodeHeapSize / 2) {
|
||||||
|
jio_fprintf(defaultStream::error_stream(),
|
||||||
|
"Invalid InlineCacheBufferSize=" SIZE_FORMAT "K. Must be less than or equal to " SIZE_FORMAT "K.\n",
|
||||||
|
InlineCacheBufferSize/K, NonNMethodCodeHeapSize/2/K);
|
||||||
|
status = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef _LP64
|
#ifdef _LP64
|
||||||
|
|||||||
@@ -150,8 +150,12 @@ int JfrThreadGroupsHelper::populate_thread_group_hierarchy(const JavaThread* jt,
|
|||||||
assert(current != NULL, "invariant");
|
assert(current != NULL, "invariant");
|
||||||
assert(_thread_group_hierarchy != NULL, "invariant");
|
assert(_thread_group_hierarchy != NULL, "invariant");
|
||||||
|
|
||||||
|
oop thread_oop = jt->threadObj();
|
||||||
|
if (thread_oop == NULL) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
// immediate thread group
|
// immediate thread group
|
||||||
Handle thread_group_handle(current, java_lang_Thread::threadGroup(jt->threadObj()));
|
Handle thread_group_handle(current, java_lang_Thread::threadGroup(thread_oop));
|
||||||
if (thread_group_handle == NULL) {
|
if (thread_group_handle == NULL) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ void JfrCheckpointThreadClosure::do_thread(Thread* t) {
|
|||||||
if (t->is_Java_thread()) {
|
if (t->is_Java_thread()) {
|
||||||
JavaThread* const jt = (JavaThread*)t;
|
JavaThread* const jt = (JavaThread*)t;
|
||||||
_writer.write(jt->name());
|
_writer.write(jt->name());
|
||||||
_writer.write(java_lang_Thread::thread_id(jt->threadObj()));
|
_writer.write(jt->threadObj() != NULL ? java_lang_Thread::thread_id(jt->threadObj()) : 0);
|
||||||
_writer.write(JfrThreadGroup::thread_group_id(jt, _curthread));
|
_writer.write(JfrThreadGroup::thread_group_id(jt, _curthread));
|
||||||
// since we are iterating threads during a safepoint, also issue notification
|
// since we are iterating threads during a safepoint, also issue notification
|
||||||
JfrJavaEventWriter::notify(jt);
|
JfrJavaEventWriter::notify(jt);
|
||||||
|
|||||||
@@ -83,11 +83,6 @@ static size_t parse_value(const char* value_str) {
|
|||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool file_exists(const char* filename) {
|
|
||||||
struct stat dummy_stat;
|
|
||||||
return os::stat(filename, &dummy_stat) == 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static uint number_of_digits(uint number) {
|
static uint number_of_digits(uint number) {
|
||||||
return number < 10 ? 1 : (number < 100 ? 2 : 3);
|
return number < 10 ? 1 : (number < 100 ? 2 : 3);
|
||||||
}
|
}
|
||||||
@@ -130,7 +125,7 @@ static uint next_file_number(const char* filename,
|
|||||||
assert(ret > 0 && static_cast<size_t>(ret) == len - 1,
|
assert(ret > 0 && static_cast<size_t>(ret) == len - 1,
|
||||||
"incorrect buffer length calculation");
|
"incorrect buffer length calculation");
|
||||||
|
|
||||||
if (file_exists(archive_name) && !is_regular_file(archive_name)) {
|
if (os::file_exists(archive_name) && !is_regular_file(archive_name)) {
|
||||||
// We've encountered something that's not a regular file among the
|
// We've encountered something that's not a regular file among the
|
||||||
// possible file rotation targets. Fail immediately to prevent
|
// possible file rotation targets. Fail immediately to prevent
|
||||||
// problems later.
|
// problems later.
|
||||||
@@ -141,7 +136,7 @@ static uint next_file_number(const char* filename,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Stop looking if we find an unused file name
|
// Stop looking if we find an unused file name
|
||||||
if (!file_exists(archive_name)) {
|
if (!os::file_exists(archive_name)) {
|
||||||
next_num = i;
|
next_num = i;
|
||||||
found = true;
|
found = true;
|
||||||
break;
|
break;
|
||||||
@@ -224,7 +219,7 @@ bool LogFileOutput::initialize(const char* options, outputStream* errstream) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool file_exist = file_exists(_file_name);
|
bool file_exist = os::file_exists(_file_name);
|
||||||
if (file_exist && _is_default_file_count && is_fifo_file(_file_name)) {
|
if (file_exist && _is_default_file_count && is_fifo_file(_file_name)) {
|
||||||
_file_count = 0; // Prevent file rotation for fifo's such as named pipes.
|
_file_count = 0; // Prevent file rotation for fifo's such as named pipes.
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -562,15 +562,14 @@ oop ConstantPoolCacheEntry::method_type_if_resolved(const constantPoolHandle& cp
|
|||||||
#if INCLUDE_JVMTI
|
#if INCLUDE_JVMTI
|
||||||
|
|
||||||
void log_adjust(const char* entry_type, Method* old_method, Method* new_method, bool* trace_name_printed) {
|
void log_adjust(const char* entry_type, Method* old_method, Method* new_method, bool* trace_name_printed) {
|
||||||
if (log_is_enabled(Info, redefine, class, update)) {
|
|
||||||
ResourceMark rm;
|
ResourceMark rm;
|
||||||
|
|
||||||
if (!(*trace_name_printed)) {
|
if (!(*trace_name_printed)) {
|
||||||
log_info(redefine, class, update)("adjust: name=%s", old_method->method_holder()->external_name());
|
log_info(redefine, class, update)("adjust: name=%s", old_method->method_holder()->external_name());
|
||||||
*trace_name_printed = true;
|
*trace_name_printed = true;
|
||||||
}
|
}
|
||||||
log_debug(redefine, class, update, constantpool)
|
log_trace(redefine, class, update, constantpool)
|
||||||
("cpc %s entry update: %s(%s)", entry_type, new_method->name()->as_C_string(), new_method->signature()->as_C_string());
|
("cpc %s entry update: %s", entry_type, new_method->external_name());
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// RedefineClasses() API support:
|
// RedefineClasses() API support:
|
||||||
@@ -606,7 +605,7 @@ void ConstantPoolCacheEntry::adjust_method_entry(Method* old_method,
|
|||||||
|
|
||||||
// a constant pool cache entry should never contain old or obsolete methods
|
// a constant pool cache entry should never contain old or obsolete methods
|
||||||
bool ConstantPoolCacheEntry::check_no_old_or_obsolete_entries() {
|
bool ConstantPoolCacheEntry::check_no_old_or_obsolete_entries() {
|
||||||
Method* m = get_interesting_method_entry(NULL);
|
Method* m = get_interesting_method_entry();
|
||||||
// return false if m refers to a non-deleted old or obsolete method
|
// return false if m refers to a non-deleted old or obsolete method
|
||||||
if (m != NULL) {
|
if (m != NULL) {
|
||||||
assert(m->is_valid() && m->is_method(), "m is a valid method");
|
assert(m->is_valid() && m->is_method(), "m is a valid method");
|
||||||
@@ -616,7 +615,7 @@ bool ConstantPoolCacheEntry::check_no_old_or_obsolete_entries() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Method* ConstantPoolCacheEntry::get_interesting_method_entry(Klass* k) {
|
Method* ConstantPoolCacheEntry::get_interesting_method_entry() {
|
||||||
if (!is_method_entry()) {
|
if (!is_method_entry()) {
|
||||||
// not a method entry so not interesting by default
|
// not a method entry so not interesting by default
|
||||||
return NULL;
|
return NULL;
|
||||||
@@ -637,12 +636,9 @@ Method* ConstantPoolCacheEntry::get_interesting_method_entry(Klass* k) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
assert(m != NULL && m->is_method(), "sanity check");
|
assert(m != NULL && m->is_method(), "sanity check");
|
||||||
if (m == NULL || !m->is_method() || (k != NULL && m->method_holder() != k)) {
|
if (m == NULL || !m->is_method()) {
|
||||||
// robustness for above sanity checks or method is not in
|
|
||||||
// the interesting class
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
// the method is in the interesting class so the entry is interesting
|
|
||||||
return m;
|
return m;
|
||||||
}
|
}
|
||||||
#endif // INCLUDE_JVMTI
|
#endif // INCLUDE_JVMTI
|
||||||
@@ -801,10 +797,10 @@ void ConstantPoolCache::set_archived_references(oop o) {
|
|||||||
// RedefineClasses() API support:
|
// RedefineClasses() API support:
|
||||||
// If any entry of this ConstantPoolCache points to any of
|
// If any entry of this ConstantPoolCache points to any of
|
||||||
// old_methods, replace it with the corresponding new_method.
|
// old_methods, replace it with the corresponding new_method.
|
||||||
void ConstantPoolCache::adjust_method_entries(InstanceKlass* holder, bool * trace_name_printed) {
|
void ConstantPoolCache::adjust_method_entries(bool * trace_name_printed) {
|
||||||
for (int i = 0; i < length(); i++) {
|
for (int i = 0; i < length(); i++) {
|
||||||
ConstantPoolCacheEntry* entry = entry_at(i);
|
ConstantPoolCacheEntry* entry = entry_at(i);
|
||||||
Method* old_method = entry->get_interesting_method_entry(holder);
|
Method* old_method = entry->get_interesting_method_entry();
|
||||||
if (old_method == NULL || !old_method->is_old()) {
|
if (old_method == NULL || !old_method->is_old()) {
|
||||||
continue; // skip uninteresting entries
|
continue; // skip uninteresting entries
|
||||||
}
|
}
|
||||||
@@ -813,20 +809,20 @@ void ConstantPoolCache::adjust_method_entries(InstanceKlass* holder, bool * trac
|
|||||||
entry->initialize_entry(entry->constant_pool_index());
|
entry->initialize_entry(entry->constant_pool_index());
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
Method* new_method = holder->method_with_idnum(old_method->orig_method_idnum());
|
Method* new_method = old_method->get_new_method();
|
||||||
|
|
||||||
assert(new_method != NULL, "method_with_idnum() should not be NULL");
|
|
||||||
assert(old_method != new_method, "sanity check");
|
|
||||||
|
|
||||||
entry_at(i)->adjust_method_entry(old_method, new_method, trace_name_printed);
|
entry_at(i)->adjust_method_entry(old_method, new_method, trace_name_printed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// the constant pool cache should never contain old or obsolete methods
|
// the constant pool cache should never contain old or obsolete methods
|
||||||
bool ConstantPoolCache::check_no_old_or_obsolete_entries() {
|
bool ConstantPoolCache::check_no_old_or_obsolete_entries() {
|
||||||
|
ResourceMark rm;
|
||||||
for (int i = 1; i < length(); i++) {
|
for (int i = 1; i < length(); i++) {
|
||||||
if (entry_at(i)->get_interesting_method_entry(NULL) != NULL &&
|
Method* m = entry_at(i)->get_interesting_method_entry();
|
||||||
!entry_at(i)->check_no_old_or_obsolete_entries()) {
|
if (m != NULL && !entry_at(i)->check_no_old_or_obsolete_entries()) {
|
||||||
|
log_trace(redefine, class, update, constantpool)
|
||||||
|
("cpcache check found old method entry: class: %s, old: %d, obsolete: %d, method: %s",
|
||||||
|
constant_pool()->pool_holder()->external_name(), m->is_old(), m->is_obsolete(), m->external_name());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -835,7 +831,7 @@ bool ConstantPoolCache::check_no_old_or_obsolete_entries() {
|
|||||||
|
|
||||||
void ConstantPoolCache::dump_cache() {
|
void ConstantPoolCache::dump_cache() {
|
||||||
for (int i = 1; i < length(); i++) {
|
for (int i = 1; i < length(); i++) {
|
||||||
if (entry_at(i)->get_interesting_method_entry(NULL) != NULL) {
|
if (entry_at(i)->get_interesting_method_entry() != NULL) {
|
||||||
entry_at(i)->print(tty, i);
|
entry_at(i)->print(tty, i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -385,7 +385,7 @@ class ConstantPoolCacheEntry {
|
|||||||
void adjust_method_entry(Method* old_method, Method* new_method,
|
void adjust_method_entry(Method* old_method, Method* new_method,
|
||||||
bool* trace_name_printed);
|
bool* trace_name_printed);
|
||||||
bool check_no_old_or_obsolete_entries();
|
bool check_no_old_or_obsolete_entries();
|
||||||
Method* get_interesting_method_entry(Klass* k);
|
Method* get_interesting_method_entry();
|
||||||
#endif // INCLUDE_JVMTI
|
#endif // INCLUDE_JVMTI
|
||||||
|
|
||||||
// Debugging & Printing
|
// Debugging & Printing
|
||||||
@@ -506,7 +506,7 @@ class ConstantPoolCache: public MetaspaceObj {
|
|||||||
// trace_name_printed is set to true if the current call has
|
// trace_name_printed is set to true if the current call has
|
||||||
// printed the klass name so that other routines in the adjust_*
|
// printed the klass name so that other routines in the adjust_*
|
||||||
// group don't print the klass name.
|
// group don't print the klass name.
|
||||||
void adjust_method_entries(InstanceKlass* holder, bool* trace_name_printed);
|
void adjust_method_entries(bool* trace_name_printed);
|
||||||
bool check_no_old_or_obsolete_entries();
|
bool check_no_old_or_obsolete_entries();
|
||||||
void dump_cache();
|
void dump_cache();
|
||||||
#endif // INCLUDE_JVMTI
|
#endif // INCLUDE_JVMTI
|
||||||
|
|||||||
@@ -2949,22 +2949,18 @@ Method* InstanceKlass::method_at_itable(Klass* holder, int index, TRAPS) {
|
|||||||
// not yet in the vtable due to concurrent subclass define and superinterface
|
// not yet in the vtable due to concurrent subclass define and superinterface
|
||||||
// redefinition
|
// redefinition
|
||||||
// Note: those in the vtable, should have been updated via adjust_method_entries
|
// Note: those in the vtable, should have been updated via adjust_method_entries
|
||||||
void InstanceKlass::adjust_default_methods(InstanceKlass* holder, bool* trace_name_printed) {
|
void InstanceKlass::adjust_default_methods(bool* trace_name_printed) {
|
||||||
// search the default_methods for uses of either obsolete or EMCP methods
|
// search the default_methods for uses of either obsolete or EMCP methods
|
||||||
if (default_methods() != NULL) {
|
if (default_methods() != NULL) {
|
||||||
for (int index = 0; index < default_methods()->length(); index ++) {
|
for (int index = 0; index < default_methods()->length(); index ++) {
|
||||||
Method* old_method = default_methods()->at(index);
|
Method* old_method = default_methods()->at(index);
|
||||||
if (old_method == NULL || old_method->method_holder() != holder || !old_method->is_old()) {
|
if (old_method == NULL || !old_method->is_old()) {
|
||||||
continue; // skip uninteresting entries
|
continue; // skip uninteresting entries
|
||||||
}
|
}
|
||||||
assert(!old_method->is_deleted(), "default methods may not be deleted");
|
assert(!old_method->is_deleted(), "default methods may not be deleted");
|
||||||
|
Method* new_method = old_method->get_new_method();
|
||||||
Method* new_method = holder->method_with_idnum(old_method->orig_method_idnum());
|
|
||||||
|
|
||||||
assert(new_method != NULL, "method_with_idnum() should not be NULL");
|
|
||||||
assert(old_method != new_method, "sanity check");
|
|
||||||
|
|
||||||
default_methods()->at_put(index, new_method);
|
default_methods()->at_put(index, new_method);
|
||||||
|
|
||||||
if (log_is_enabled(Info, redefine, class, update)) {
|
if (log_is_enabled(Info, redefine, class, update)) {
|
||||||
ResourceMark rm;
|
ResourceMark rm;
|
||||||
if (!(*trace_name_printed)) {
|
if (!(*trace_name_printed)) {
|
||||||
|
|||||||
@@ -1155,7 +1155,7 @@ public:
|
|||||||
Method* method_at_itable(Klass* holder, int index, TRAPS);
|
Method* method_at_itable(Klass* holder, int index, TRAPS);
|
||||||
|
|
||||||
#if INCLUDE_JVMTI
|
#if INCLUDE_JVMTI
|
||||||
void adjust_default_methods(InstanceKlass* holder, bool* trace_name_printed);
|
void adjust_default_methods(bool* trace_name_printed);
|
||||||
#endif // INCLUDE_JVMTI
|
#endif // INCLUDE_JVMTI
|
||||||
|
|
||||||
void clean_weak_instanceklass_links();
|
void clean_weak_instanceklass_links();
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@@ -964,21 +964,20 @@ bool klassVtable::adjust_default_method(int vtable_index, Method* old_method, Me
|
|||||||
}
|
}
|
||||||
|
|
||||||
// search the vtable for uses of either obsolete or EMCP methods
|
// search the vtable for uses of either obsolete or EMCP methods
|
||||||
void klassVtable::adjust_method_entries(InstanceKlass* holder, bool * trace_name_printed) {
|
void klassVtable::adjust_method_entries(bool * trace_name_printed) {
|
||||||
int prn_enabled = 0;
|
int prn_enabled = 0;
|
||||||
|
ResourceMark rm;
|
||||||
|
|
||||||
for (int index = 0; index < length(); index++) {
|
for (int index = 0; index < length(); index++) {
|
||||||
Method* old_method = unchecked_method_at(index);
|
Method* old_method = unchecked_method_at(index);
|
||||||
if (old_method == NULL || old_method->method_holder() != holder || !old_method->is_old()) {
|
if (old_method == NULL || !old_method->is_old()) {
|
||||||
continue; // skip uninteresting entries
|
continue; // skip uninteresting entries
|
||||||
}
|
}
|
||||||
assert(!old_method->is_deleted(), "vtable methods may not be deleted");
|
assert(!old_method->is_deleted(), "vtable methods may not be deleted");
|
||||||
|
|
||||||
Method* new_method = holder->method_with_idnum(old_method->orig_method_idnum());
|
Method* new_method = old_method->get_new_method();
|
||||||
|
|
||||||
assert(new_method != NULL, "method_with_idnum() should not be NULL");
|
|
||||||
assert(old_method != new_method, "sanity check");
|
|
||||||
|
|
||||||
put_method_at(new_method, index);
|
put_method_at(new_method, index);
|
||||||
|
|
||||||
// For default methods, need to update the _default_methods array
|
// For default methods, need to update the _default_methods array
|
||||||
// which can only have one method entry for a given signature
|
// which can only have one method entry for a given signature
|
||||||
bool updated_default = false;
|
bool updated_default = false;
|
||||||
@@ -986,27 +985,29 @@ void klassVtable::adjust_method_entries(InstanceKlass* holder, bool * trace_name
|
|||||||
updated_default = adjust_default_method(index, old_method, new_method);
|
updated_default = adjust_default_method(index, old_method, new_method);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (log_is_enabled(Info, redefine, class, update)) {
|
|
||||||
ResourceMark rm;
|
|
||||||
if (!(*trace_name_printed)) {
|
if (!(*trace_name_printed)) {
|
||||||
log_info(redefine, class, update)
|
log_info(redefine, class, update)
|
||||||
("adjust: klassname=%s for methods from name=%s",
|
("adjust: klassname=%s for methods from name=%s",
|
||||||
_klass->external_name(), old_method->method_holder()->external_name());
|
_klass->external_name(), old_method->method_holder()->external_name());
|
||||||
*trace_name_printed = true;
|
*trace_name_printed = true;
|
||||||
}
|
}
|
||||||
log_debug(redefine, class, update, vtables)
|
log_trace(redefine, class, update, vtables)
|
||||||
("vtable method update: %s(%s), updated default = %s",
|
("vtable method update: class: %s method: %s, updated default = %s",
|
||||||
new_method->name()->as_C_string(), new_method->signature()->as_C_string(), updated_default ? "true" : "false");
|
_klass->external_name(), new_method->external_name(), updated_default ? "true" : "false");
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// a vtable should never contain old or obsolete methods
|
// a vtable should never contain old or obsolete methods
|
||||||
bool klassVtable::check_no_old_or_obsolete_entries() {
|
bool klassVtable::check_no_old_or_obsolete_entries() {
|
||||||
|
ResourceMark rm;
|
||||||
|
|
||||||
for (int i = 0; i < length(); i++) {
|
for (int i = 0; i < length(); i++) {
|
||||||
Method* m = unchecked_method_at(i);
|
Method* m = unchecked_method_at(i);
|
||||||
if (m != NULL &&
|
if (m != NULL &&
|
||||||
(NOT_PRODUCT(!m->is_valid() ||) m->is_old() || m->is_obsolete())) {
|
(NOT_PRODUCT(!m->is_valid() ||) m->is_old() || m->is_obsolete())) {
|
||||||
|
log_trace(redefine, class, update, vtables)
|
||||||
|
("vtable check found old method entry: class: %s old: %d obsolete: %d, method: %s",
|
||||||
|
_klass->external_name(), m->is_old(), m->is_obsolete(), m->external_name());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1294,42 +1295,40 @@ void klassItable::initialize_itable_for_interface(int method_table_offset, Klass
|
|||||||
|
|
||||||
#if INCLUDE_JVMTI
|
#if INCLUDE_JVMTI
|
||||||
// search the itable for uses of either obsolete or EMCP methods
|
// search the itable for uses of either obsolete or EMCP methods
|
||||||
void klassItable::adjust_method_entries(InstanceKlass* holder, bool * trace_name_printed) {
|
void klassItable::adjust_method_entries(bool * trace_name_printed) {
|
||||||
|
ResourceMark rm;
|
||||||
itableMethodEntry* ime = method_entry(0);
|
itableMethodEntry* ime = method_entry(0);
|
||||||
|
|
||||||
for (int i = 0; i < _size_method_table; i++, ime++) {
|
for (int i = 0; i < _size_method_table; i++, ime++) {
|
||||||
Method* old_method = ime->method();
|
Method* old_method = ime->method();
|
||||||
if (old_method == NULL || old_method->method_holder() != holder || !old_method->is_old()) {
|
if (old_method == NULL || !old_method->is_old()) {
|
||||||
continue; // skip uninteresting entries
|
continue; // skip uninteresting entries
|
||||||
}
|
}
|
||||||
assert(!old_method->is_deleted(), "itable methods may not be deleted");
|
assert(!old_method->is_deleted(), "itable methods may not be deleted");
|
||||||
|
Method* new_method = old_method->get_new_method();
|
||||||
Method* new_method = holder->method_with_idnum(old_method->orig_method_idnum());
|
|
||||||
|
|
||||||
assert(new_method != NULL, "method_with_idnum() should not be NULL");
|
|
||||||
assert(old_method != new_method, "sanity check");
|
|
||||||
|
|
||||||
ime->initialize(new_method);
|
ime->initialize(new_method);
|
||||||
|
|
||||||
if (log_is_enabled(Info, redefine, class, update)) {
|
|
||||||
ResourceMark rm;
|
|
||||||
if (!(*trace_name_printed)) {
|
if (!(*trace_name_printed)) {
|
||||||
log_info(redefine, class, update)("adjust: name=%s", old_method->method_holder()->external_name());
|
log_info(redefine, class, update)("adjust: name=%s", old_method->method_holder()->external_name());
|
||||||
*trace_name_printed = true;
|
*trace_name_printed = true;
|
||||||
}
|
}
|
||||||
log_trace(redefine, class, update, itables)
|
log_trace(redefine, class, update, itables)
|
||||||
("itable method update: %s(%s)", new_method->name()->as_C_string(), new_method->signature()->as_C_string());
|
("itable method update: class: %s method: %s", _klass->external_name(), new_method->external_name());
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// an itable should never contain old or obsolete methods
|
// an itable should never contain old or obsolete methods
|
||||||
bool klassItable::check_no_old_or_obsolete_entries() {
|
bool klassItable::check_no_old_or_obsolete_entries() {
|
||||||
|
ResourceMark rm;
|
||||||
itableMethodEntry* ime = method_entry(0);
|
itableMethodEntry* ime = method_entry(0);
|
||||||
|
|
||||||
for (int i = 0; i < _size_method_table; i++) {
|
for (int i = 0; i < _size_method_table; i++) {
|
||||||
Method* m = ime->method();
|
Method* m = ime->method();
|
||||||
if (m != NULL &&
|
if (m != NULL &&
|
||||||
(NOT_PRODUCT(!m->is_valid() ||) m->is_old() || m->is_obsolete())) {
|
(NOT_PRODUCT(!m->is_valid() ||) m->is_old() || m->is_obsolete())) {
|
||||||
|
log_trace(redefine, class, update, itables)
|
||||||
|
("itable check found old method entry: class: %s old: %d obsolete: %d, method: %s",
|
||||||
|
_klass->external_name(), m->is_old(), m->is_obsolete(), m->external_name());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
ime++;
|
ime++;
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ class klassVtable {
|
|||||||
// printed the klass name so that other routines in the adjust_*
|
// printed the klass name so that other routines in the adjust_*
|
||||||
// group don't print the klass name.
|
// group don't print the klass name.
|
||||||
bool adjust_default_method(int vtable_index, Method* old_method, Method* new_method);
|
bool adjust_default_method(int vtable_index, Method* old_method, Method* new_method);
|
||||||
void adjust_method_entries(InstanceKlass* holder, bool * trace_name_printed);
|
void adjust_method_entries(bool* trace_name_printed);
|
||||||
bool check_no_old_or_obsolete_entries();
|
bool check_no_old_or_obsolete_entries();
|
||||||
void dump_vtable();
|
void dump_vtable();
|
||||||
#endif // INCLUDE_JVMTI
|
#endif // INCLUDE_JVMTI
|
||||||
@@ -322,7 +322,7 @@ class klassItable {
|
|||||||
// trace_name_printed is set to true if the current call has
|
// trace_name_printed is set to true if the current call has
|
||||||
// printed the klass name so that other routines in the adjust_*
|
// printed the klass name so that other routines in the adjust_*
|
||||||
// group don't print the klass name.
|
// group don't print the klass name.
|
||||||
void adjust_method_entries(InstanceKlass* holder, bool * trace_name_printed);
|
void adjust_method_entries(bool* trace_name_printed);
|
||||||
bool check_no_old_or_obsolete_entries();
|
bool check_no_old_or_obsolete_entries();
|
||||||
void dump_itable();
|
void dump_itable();
|
||||||
#endif // INCLUDE_JVMTI
|
#endif // INCLUDE_JVMTI
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2024, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@@ -37,6 +37,7 @@
|
|||||||
#include "runtime/signature.hpp"
|
#include "runtime/signature.hpp"
|
||||||
|
|
||||||
Symbol::Symbol(const u1* name, int length, int refcount) {
|
Symbol::Symbol(const u1* name, int length, int refcount) {
|
||||||
|
assert(length <= max_length(), "SymbolTable should have caught this!");
|
||||||
_refcount = refcount;
|
_refcount = refcount;
|
||||||
_length = length;
|
_length = length;
|
||||||
_identity_hash = (short)os::random();
|
_identity_hash = (short)os::random();
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2024, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@@ -128,6 +128,7 @@ class Symbol : public MetaspaceObj {
|
|||||||
return (int)heap_word_size(byte_size(length));
|
return (int)heap_word_size(byte_size(length));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Constructor is private for use only by SymbolTable.
|
||||||
Symbol(const u1* name, int length, int refcount);
|
Symbol(const u1* name, int length, int refcount);
|
||||||
void* operator new(size_t size, int len, TRAPS) throw();
|
void* operator new(size_t size, int len, TRAPS) throw();
|
||||||
void* operator new(size_t size, int len, Arena* arena, TRAPS) throw();
|
void* operator new(size_t size, int len, Arena* arena, TRAPS) throw();
|
||||||
|
|||||||
@@ -1034,6 +1034,140 @@ const Type *MinINode::add_ring( const Type *t0, const Type *t1 ) const {
|
|||||||
return TypeInt::make( MIN2(r0->_lo,r1->_lo), MIN2(r0->_hi,r1->_hi), MAX2(r0->_widen,r1->_widen) );
|
return TypeInt::make( MIN2(r0->_lo,r1->_lo), MIN2(r0->_hi,r1->_hi), MAX2(r0->_widen,r1->_widen) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Collapse the "addition with overflow-protection" pattern, and the symmetrical
|
||||||
|
// "subtraction with underflow-protection" pattern. These are created during the
|
||||||
|
// unrolling, when we have to adjust the limit by subtracting the stride, but want
|
||||||
|
// to protect against underflow: MaxL(SubL(limit, stride), min_jint).
|
||||||
|
// If we have more than one of those in a sequence:
|
||||||
|
//
|
||||||
|
// x con2
|
||||||
|
// | |
|
||||||
|
// AddL clamp2
|
||||||
|
// | |
|
||||||
|
// Max/MinL con1
|
||||||
|
// | |
|
||||||
|
// AddL clamp1
|
||||||
|
// | |
|
||||||
|
// Max/MinL (n)
|
||||||
|
//
|
||||||
|
// We want to collapse it to:
|
||||||
|
//
|
||||||
|
// x con1 con2
|
||||||
|
// | | |
|
||||||
|
// | AddLNode (new_con)
|
||||||
|
// | |
|
||||||
|
// AddLNode clamp1
|
||||||
|
// | |
|
||||||
|
// Max/MinL (n)
|
||||||
|
//
|
||||||
|
// Note: we assume that SubL was already replaced by an AddL, and that the stride
|
||||||
|
// has its sign flipped: SubL(limit, stride) -> AddL(limit, -stride).
|
||||||
|
static bool is_clamp(PhaseGVN* phase, Node* n, Node* c) {
|
||||||
|
// Check that the two clamps have the correct values.
|
||||||
|
jlong clamp = (n->Opcode() == Op_MaxL) ? min_jint : max_jint;
|
||||||
|
const TypeLong* t = phase->type(c)->isa_long();
|
||||||
|
return t != NULL && t->is_con() &&
|
||||||
|
t->get_con() == clamp;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool is_sub_con(PhaseGVN* phase, Node* n, Node* c) {
|
||||||
|
// Check that the constants are negative if MaxL, and positive if MinL.
|
||||||
|
const TypeLong* t = phase->type(c)->isa_long();
|
||||||
|
return t != NULL && t->is_con() &&
|
||||||
|
t->get_con() < max_jint && t->get_con() > min_jint &&
|
||||||
|
(t->get_con() < 0) == (n->Opcode() == Op_MaxL);
|
||||||
|
}
|
||||||
|
|
||||||
|
Node* fold_subI_no_underflow_pattern(Node* n, PhaseGVN* phase) {
|
||||||
|
assert(n->Opcode() == Op_MaxL || n->Opcode() == Op_MinL, "sanity");
|
||||||
|
// Verify the graph level by level:
|
||||||
|
Node* add1 = n->in(1);
|
||||||
|
Node* clamp1 = n->in(2);
|
||||||
|
if (add1->Opcode() == Op_AddL && is_clamp(phase, n, clamp1)) {
|
||||||
|
Node* max2 = add1->in(1);
|
||||||
|
Node* con1 = add1->in(2);
|
||||||
|
if (max2->Opcode() == n->Opcode() && is_sub_con(phase, n, con1)) {
|
||||||
|
Node* add2 = max2->in(1);
|
||||||
|
Node* clamp2 = max2->in(2);
|
||||||
|
if (add2->Opcode() == Op_AddL && is_clamp(phase, n, clamp2)) {
|
||||||
|
Node* x = add2->in(1);
|
||||||
|
Node* con2 = add2->in(2);
|
||||||
|
if (is_sub_con(phase, n, con2)) {
|
||||||
|
Node* new_con = phase->transform(new AddLNode(con1, con2));
|
||||||
|
Node* new_sub = phase->transform(new AddLNode(x, new_con));
|
||||||
|
n->set_req_X(1, new_sub, phase);
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
const Type* MaxLNode::add_ring(const Type* t0, const Type* t1) const {
|
||||||
|
const TypeLong* r0 = t0->is_long();
|
||||||
|
const TypeLong* r1 = t1->is_long();
|
||||||
|
|
||||||
|
return TypeLong::make(MAX2(r0->_lo, r1->_lo), MAX2(r0->_hi, r1->_hi), MAX2(r0->_widen, r1->_widen));
|
||||||
|
}
|
||||||
|
|
||||||
|
Node* MaxLNode::Identity(PhaseGVN* phase) {
|
||||||
|
const TypeLong* t1 = phase->type(in(1))->is_long();
|
||||||
|
const TypeLong* t2 = phase->type(in(2))->is_long();
|
||||||
|
|
||||||
|
// Can we determine maximum statically?
|
||||||
|
if (t1->_lo >= t2->_hi) {
|
||||||
|
return in(1);
|
||||||
|
} else if (t2->_lo >= t1->_hi) {
|
||||||
|
return in(2);
|
||||||
|
}
|
||||||
|
|
||||||
|
return MaxNode::Identity(phase);
|
||||||
|
}
|
||||||
|
|
||||||
|
Node* MaxLNode::Ideal(PhaseGVN* phase, bool can_reshape) {
|
||||||
|
Node* n = AddNode::Ideal(phase, can_reshape);
|
||||||
|
if (n != NULL) {
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
if (can_reshape) {
|
||||||
|
return fold_subI_no_underflow_pattern(this, phase);
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
const Type* MinLNode::add_ring(const Type* t0, const Type* t1) const {
|
||||||
|
const TypeLong* r0 = t0->is_long();
|
||||||
|
const TypeLong* r1 = t1->is_long();
|
||||||
|
|
||||||
|
return TypeLong::make(MIN2(r0->_lo, r1->_lo), MIN2(r0->_hi, r1->_hi), MIN2(r0->_widen, r1->_widen));
|
||||||
|
}
|
||||||
|
|
||||||
|
Node* MinLNode::Identity(PhaseGVN* phase) {
|
||||||
|
const TypeLong* t1 = phase->type(in(1))->is_long();
|
||||||
|
const TypeLong* t2 = phase->type(in(2))->is_long();
|
||||||
|
|
||||||
|
// Can we determine minimum statically?
|
||||||
|
if (t1->_lo >= t2->_hi) {
|
||||||
|
return in(2);
|
||||||
|
} else if (t2->_lo >= t1->_hi) {
|
||||||
|
return in(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
return MaxNode::Identity(phase);
|
||||||
|
}
|
||||||
|
|
||||||
|
Node* MinLNode::Ideal(PhaseGVN* phase, bool can_reshape) {
|
||||||
|
Node* n = AddNode::Ideal(phase, can_reshape);
|
||||||
|
if (n != NULL) {
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
if (can_reshape) {
|
||||||
|
return fold_subI_no_underflow_pattern(this, phase);
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
//------------------------------add_ring---------------------------------------
|
//------------------------------add_ring---------------------------------------
|
||||||
const Type *MinFNode::add_ring( const Type *t0, const Type *t1 ) const {
|
const Type *MinFNode::add_ring( const Type *t0, const Type *t1 ) const {
|
||||||
const TypeF *r0 = t0->is_float_constant();
|
const TypeF *r0 = t0->is_float_constant();
|
||||||
|
|||||||
@@ -279,6 +279,40 @@ public:
|
|||||||
virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
|
virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//------------------------------MaxLNode---------------------------------------
|
||||||
|
// MAXimum of 2 longs.
|
||||||
|
class MaxLNode : public MaxNode {
|
||||||
|
public:
|
||||||
|
MaxLNode(Compile* C, Node* in1, Node* in2) : MaxNode(in1, in2) {
|
||||||
|
init_flags(Flag_is_macro);
|
||||||
|
C->add_macro_node(this);
|
||||||
|
}
|
||||||
|
virtual int Opcode() const;
|
||||||
|
virtual const Type* add_ring(const Type* t0, const Type* t1) const;
|
||||||
|
virtual const Type* add_id() const { return TypeLong::make(min_jlong); }
|
||||||
|
virtual const Type* bottom_type() const { return TypeLong::LONG; }
|
||||||
|
virtual uint ideal_reg() const { return Op_RegL; }
|
||||||
|
virtual Node* Identity(PhaseGVN* phase);
|
||||||
|
virtual Node* Ideal(PhaseGVN *phase, bool can_reshape);
|
||||||
|
};
|
||||||
|
|
||||||
|
//------------------------------MinLNode---------------------------------------
|
||||||
|
// MINimum of 2 longs.
|
||||||
|
class MinLNode : public MaxNode {
|
||||||
|
public:
|
||||||
|
MinLNode(Compile* C, Node* in1, Node* in2) : MaxNode(in1, in2) {
|
||||||
|
init_flags(Flag_is_macro);
|
||||||
|
C->add_macro_node(this);
|
||||||
|
}
|
||||||
|
virtual int Opcode() const;
|
||||||
|
virtual const Type* add_ring(const Type* t0, const Type* t1) const;
|
||||||
|
virtual const Type* add_id() const { return TypeLong::make(max_jlong); }
|
||||||
|
virtual const Type* bottom_type() const { return TypeLong::LONG; }
|
||||||
|
virtual uint ideal_reg() const { return Op_RegL; }
|
||||||
|
virtual Node* Identity(PhaseGVN* phase);
|
||||||
|
virtual Node* Ideal(PhaseGVN* phase, bool can_reshape);
|
||||||
|
};
|
||||||
|
|
||||||
//------------------------------MaxFNode---------------------------------------
|
//------------------------------MaxFNode---------------------------------------
|
||||||
// Maximum of 2 floats.
|
// Maximum of 2 floats.
|
||||||
class MaxFNode : public MaxNode {
|
class MaxFNode : public MaxNode {
|
||||||
|
|||||||
@@ -206,6 +206,7 @@ macro(MachProj)
|
|||||||
macro(MaxD)
|
macro(MaxD)
|
||||||
macro(MaxF)
|
macro(MaxF)
|
||||||
macro(MaxI)
|
macro(MaxI)
|
||||||
|
macro(MaxL)
|
||||||
macro(MemBarAcquire)
|
macro(MemBarAcquire)
|
||||||
macro(LoadFence)
|
macro(LoadFence)
|
||||||
macro(SetVectMaskI)
|
macro(SetVectMaskI)
|
||||||
@@ -220,6 +221,7 @@ macro(MergeMem)
|
|||||||
macro(MinD)
|
macro(MinD)
|
||||||
macro(MinF)
|
macro(MinF)
|
||||||
macro(MinI)
|
macro(MinI)
|
||||||
|
macro(MinL)
|
||||||
macro(ModD)
|
macro(ModD)
|
||||||
macro(ModF)
|
macro(ModF)
|
||||||
macro(ModI)
|
macro(ModI)
|
||||||
|
|||||||
@@ -260,6 +260,20 @@ const Type* ConvI2LNode::Value(PhaseGVN* phase) const {
|
|||||||
return tl;
|
return tl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Node* ConvI2LNode::Identity(PhaseGVN* phase) {
|
||||||
|
// If type is in "int" sub-range, we can
|
||||||
|
// convert I2L(L2I(x)) => x
|
||||||
|
// since the conversions have no effect.
|
||||||
|
if (in(1)->Opcode() == Op_ConvL2I) {
|
||||||
|
Node* x = in(1)->in(1);
|
||||||
|
const TypeLong* t = phase->type(x)->isa_long();
|
||||||
|
if (t != NULL && t->_lo >= min_jint && t->_hi <= max_jint) {
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef _LP64
|
#ifdef _LP64
|
||||||
static inline bool long_ranges_overlap(jlong lo1, jlong hi1,
|
static inline bool long_ranges_overlap(jlong lo1, jlong hi1,
|
||||||
jlong lo2, jlong hi2) {
|
jlong lo2, jlong hi2) {
|
||||||
|
|||||||
@@ -151,6 +151,7 @@ class ConvI2LNode : public TypeNode {
|
|||||||
virtual int Opcode() const;
|
virtual int Opcode() const;
|
||||||
virtual const Type* Value(PhaseGVN* phase) const;
|
virtual const Type* Value(PhaseGVN* phase) const;
|
||||||
virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
|
virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
|
||||||
|
virtual Node* Identity(PhaseGVN* phase);
|
||||||
virtual uint ideal_reg() const { return Op_RegL; }
|
virtual uint ideal_reg() const { return Op_RegL; }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user