mirror of
https://github.com/JetBrains/JetBrainsRuntime.git
synced 2025-12-06 09:29:38 +01:00
Compare commits
564 Commits
jdk-11.0.1
...
jdk-11.0.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5cad68f586 | ||
|
|
c0effc24b7 | ||
|
|
80919eb2ff | ||
|
|
ba6c4c163c | ||
|
|
80a27773cb | ||
|
|
68c63203f5 | ||
|
|
16cbd3290d | ||
|
|
6f9d287bbe | ||
|
|
ffa5ae86c9 | ||
|
|
4378844584 | ||
|
|
26e599dce2 | ||
|
|
259bbf5ff5 | ||
|
|
57003eea5e | ||
|
|
e2f792c549 | ||
|
|
d6bf0d1e7d | ||
|
|
b5f8c318f4 | ||
|
|
0aa5f75d7a | ||
|
|
69583df39b | ||
|
|
aa42c4d71f | ||
|
|
eb0708f75a | ||
|
|
fe17b44f36 | ||
|
|
fd7d0d3d68 | ||
|
|
bd420d2aad | ||
|
|
29eb422cb8 | ||
|
|
d79e7105cf | ||
|
|
6c26ba2599 | ||
|
|
f4e14a685e | ||
|
|
668c20035d | ||
|
|
6921496c51 | ||
|
|
1db4ed1a62 | ||
|
|
18a088335b | ||
|
|
cd7d8c6c5d | ||
|
|
288c9f7d6a | ||
|
|
afb94aeae8 | ||
|
|
562e4febbe | ||
|
|
b8cdf1ae18 | ||
|
|
ef5fff53ef | ||
|
|
8359d7fe09 | ||
|
|
01c38c4ffa | ||
|
|
85c81d9515 | ||
|
|
ef288cd3cc | ||
|
|
10b18394e2 | ||
|
|
6837e1484b | ||
|
|
b240c60427 | ||
|
|
b6df15056b | ||
|
|
84ed967160 | ||
|
|
8352e3857b | ||
|
|
9700ded633 | ||
|
|
e279d07852 | ||
|
|
e651f0943b | ||
|
|
d91ce05655 | ||
|
|
8ce956417d | ||
|
|
809b01573e | ||
|
|
efe46bbf2f | ||
|
|
716ceb71ce | ||
|
|
b5cae57381 | ||
|
|
914d48cbe8 | ||
|
|
ec039288ca | ||
|
|
cba6c0421b | ||
|
|
521144c8b1 | ||
|
|
f69e75f143 | ||
|
|
574c04c098 | ||
|
|
5ffd40d3eb | ||
|
|
0c4803b5ec | ||
|
|
3352b565dc | ||
|
|
ad94355583 | ||
|
|
9ca6369971 | ||
|
|
32219cae29 | ||
|
|
66bdaa2f57 | ||
|
|
4a5caa00b6 | ||
|
|
e7b89f7df9 | ||
|
|
5ab97c4d50 | ||
|
|
a29949b1bb | ||
|
|
538013a2a1 | ||
|
|
fac0f5a93a | ||
|
|
f5ade3e0ba | ||
|
|
89f4d44106 | ||
|
|
898b8de87d | ||
|
|
e3da580443 | ||
|
|
96c8499014 | ||
|
|
3a96302cf3 | ||
|
|
1453335629 | ||
|
|
55e5e04e87 | ||
|
|
2a9bda7736 | ||
|
|
256c17f853 | ||
|
|
00dc442f64 | ||
|
|
e79e383206 | ||
|
|
ffbef52899 | ||
|
|
40d7d034a9 | ||
|
|
c6780ba8cf | ||
|
|
1abce4779a | ||
|
|
32e9275c0a | ||
|
|
33a7c689cb | ||
|
|
0755ba5001 | ||
|
|
41825fa33d | ||
|
|
ed5e6b9cdd | ||
|
|
5a3a17bf2b | ||
|
|
f1a15a47dc | ||
|
|
1c7af7ecbb | ||
|
|
5c08cfd3b9 | ||
|
|
c3be0355d4 | ||
|
|
4c5fe8ef35 | ||
|
|
129fa0eaa0 | ||
|
|
8a80f1e2c1 | ||
|
|
b6eaa848e4 | ||
|
|
f02605c612 | ||
|
|
64c33bf431 | ||
|
|
1e56151345 | ||
|
|
9a62b8af48 | ||
|
|
1407f00626 | ||
|
|
2a9e5e3fee | ||
|
|
036205c29b | ||
|
|
6895d4a8c9 | ||
|
|
883ecfe002 | ||
|
|
03bfa8cf4d | ||
|
|
fee395598d | ||
|
|
f7998d6389 | ||
|
|
e1ee008c5c | ||
|
|
7e7043e8dc | ||
|
|
914fb55c3c | ||
|
|
a96e70c87b | ||
|
|
2ccf515bb6 | ||
|
|
fb3947698a | ||
|
|
be7343dfc9 | ||
|
|
de11e6b983 | ||
|
|
0096d51b05 | ||
|
|
d356b8988d | ||
|
|
62af7d0aae | ||
|
|
f74435eb83 | ||
|
|
ae91c19733 | ||
|
|
e4ddc368fa | ||
|
|
b081b10184 | ||
|
|
d13ee8190e | ||
|
|
3393744851 | ||
|
|
9fb29891b6 | ||
|
|
6fb1a9e467 | ||
|
|
994276cd10 | ||
|
|
175e23fdf4 | ||
|
|
8989823727 | ||
|
|
fdf21b6a3e | ||
|
|
2893731284 | ||
|
|
cd8ea374d1 | ||
|
|
fc54784ed3 | ||
|
|
bf7c965392 | ||
|
|
bd97b56531 | ||
|
|
d3c2dc0c89 | ||
|
|
ec89f1b6c3 | ||
|
|
b07b90fbbd | ||
|
|
86c2995eae | ||
|
|
4b6814546e | ||
|
|
90c933e6ed | ||
|
|
9363d55147 | ||
|
|
c94151b792 | ||
|
|
ba1a0e875c | ||
|
|
c8c546bc44 | ||
|
|
b77a165757 | ||
|
|
9bc99d878e | ||
|
|
180fbf08b4 | ||
|
|
cfff97ad53 | ||
|
|
a672963c8d | ||
|
|
98fb4f5e18 | ||
|
|
b68a942563 | ||
|
|
d665a4ec39 | ||
|
|
99870b4b8a | ||
|
|
16bfc05b11 | ||
|
|
a481c9a669 | ||
|
|
eaa4197ff8 | ||
|
|
15f3e0edf0 | ||
|
|
c3aaef39ce | ||
|
|
9bf52e6085 | ||
|
|
4beb4adcfd | ||
|
|
8878ffc74f | ||
|
|
554498d107 | ||
|
|
9b96ac982e | ||
|
|
eb2a92fdb0 | ||
|
|
d0445aa78e | ||
|
|
38bfb43c85 | ||
|
|
f5664eafd5 | ||
|
|
3a452af4d3 | ||
|
|
c82d66c4e8 | ||
|
|
f8ed0fecfd | ||
|
|
8fe5d595fb | ||
|
|
db702ee987 | ||
|
|
126a16ec22 | ||
|
|
9d07232c3f | ||
|
|
78ab2fb02b | ||
|
|
12ffc99d1d | ||
|
|
a0c349bdf2 | ||
|
|
35964ca9a4 | ||
|
|
d2ed8cdb69 | ||
|
|
596816e1a9 | ||
|
|
1f885a14cc | ||
|
|
e0cb8fa3b1 | ||
|
|
22186cb1fe | ||
|
|
d92b103460 | ||
|
|
5d99c71f5c | ||
|
|
a412974a3a | ||
|
|
2ea3786777 | ||
|
|
7f963cadd1 | ||
|
|
1aecb2880a | ||
|
|
ccb0ed39a5 | ||
|
|
9e695bb3d2 | ||
|
|
1e0bb2dc9e | ||
|
|
48dbaf1b1f | ||
|
|
242bbefec9 | ||
|
|
c395d4bca6 | ||
|
|
384750db6b | ||
|
|
b6a9e7e018 | ||
|
|
7bdb8ac7f9 | ||
|
|
19a1969967 | ||
|
|
e59323f998 | ||
|
|
48b5a6ab1d | ||
|
|
87c04f25fd | ||
|
|
84a339732b | ||
|
|
91c6420547 | ||
|
|
0b8e1b18b6 | ||
|
|
a7f1b72acc | ||
|
|
6d1c3c6960 | ||
|
|
9a1fce0147 | ||
|
|
6c6f9effec | ||
|
|
b3ef0ea7fc | ||
|
|
6a7a2d2c8f | ||
|
|
cd40782103 | ||
|
|
2e163414b2 | ||
|
|
4b5075e471 | ||
|
|
8fcfaefcb4 | ||
|
|
46c41b6d88 | ||
|
|
06e9f96021 | ||
|
|
dcc010d7c8 | ||
|
|
2fb8ca2b2f | ||
|
|
e2b7f1e6cf | ||
|
|
770a78ae82 | ||
|
|
63277a472f | ||
|
|
4b591db099 | ||
|
|
5e085484df | ||
|
|
9b94409625 | ||
|
|
ed9a41ba7e | ||
|
|
ccd7a6f9a5 | ||
|
|
d9b2c4ce6b | ||
|
|
1b4eb43026 | ||
|
|
0d0aa7ce81 | ||
|
|
394a5de072 | ||
|
|
c2cda03cbb | ||
|
|
35c045c363 | ||
|
|
3593e1eac1 | ||
|
|
9f7729a7cd | ||
|
|
63848c573d | ||
|
|
18f16db42b | ||
|
|
4b0cb2063b | ||
|
|
f8553d3cdb | ||
|
|
46d8523688 | ||
|
|
6ec651fdc1 | ||
|
|
e608a20a0c | ||
|
|
c6242ed718 | ||
|
|
1d6228497f | ||
|
|
2876be0e7a | ||
|
|
c406da1328 | ||
|
|
a15fa7a836 | ||
|
|
29ec865c86 | ||
|
|
a7a9ea8737 | ||
|
|
d8adeca9ad | ||
|
|
1e99800682 | ||
|
|
2221f37d09 | ||
|
|
0022605eb4 | ||
|
|
38a250503a | ||
|
|
299e6c8c08 | ||
|
|
3a3515807c | ||
|
|
1d2fee04f7 | ||
|
|
8dc5f1459b | ||
|
|
ca35b75409 | ||
|
|
73cbc728e0 | ||
|
|
889840b66f | ||
|
|
e929b18cb1 | ||
|
|
5aa125eb86 | ||
|
|
51390ac583 | ||
|
|
a855b6fc86 | ||
|
|
fe7ee62a84 | ||
|
|
1ae15632c7 | ||
|
|
ad40b61edb | ||
|
|
36e54fbd93 | ||
|
|
363ab5f885 | ||
|
|
ff65591f05 | ||
|
|
4a99728820 | ||
|
|
1c90fe0543 | ||
|
|
d2fb30759f | ||
|
|
fd22289a85 | ||
|
|
43f27bef42 | ||
|
|
9cc661690c | ||
|
|
8a9cda2d84 | ||
|
|
352672f5cf | ||
|
|
243fd3090b | ||
|
|
d8941d426f | ||
|
|
7acc631f8a | ||
|
|
3fb75281ec | ||
|
|
7c3f2d5a53 | ||
|
|
e216ee64c2 | ||
|
|
80e371c141 | ||
|
|
cfb1bd22ee | ||
|
|
73fd4dadba | ||
|
|
5495b791d6 | ||
|
|
25c33bc9a5 | ||
|
|
00255bd4fb | ||
|
|
1297c26cfb | ||
|
|
4b6e487432 | ||
|
|
5a2b2ac13b | ||
|
|
b449303166 | ||
|
|
cdc48c27c6 | ||
|
|
93e98ad4f0 | ||
|
|
1772cf1ec7 | ||
|
|
0f9d6bf062 | ||
|
|
f62113af14 | ||
|
|
eb03bf7804 | ||
|
|
d5017c378c | ||
|
|
bab6d940e0 | ||
|
|
b12211907f | ||
|
|
2847e34559 | ||
|
|
777ec9b757 | ||
|
|
bdf1d027cb | ||
|
|
8faf1c7bb9 | ||
|
|
fac11d38bc | ||
|
|
49681f25f4 | ||
|
|
611d729e75 | ||
|
|
b8c6841ee7 | ||
|
|
a2628a0d3b | ||
|
|
4a9c879e66 | ||
|
|
2c4ab76898 | ||
|
|
fcb396fe52 | ||
|
|
99ff268130 | ||
|
|
e2f830160f | ||
|
|
94893a5249 | ||
|
|
596677e816 | ||
|
|
b3926db99e | ||
|
|
4bdcad5924 | ||
|
|
dfb97b0f98 | ||
|
|
167c9f06c8 | ||
|
|
968c21e258 | ||
|
|
90d1bcbb10 | ||
|
|
15931e554a | ||
|
|
15384ad55a | ||
|
|
455750334b | ||
|
|
844c504bc1 | ||
|
|
4940e2e8d8 | ||
|
|
71f2c75111 | ||
|
|
dc2a8bc14f | ||
|
|
9965662cf7 | ||
|
|
80ba42a525 | ||
|
|
6dfe013d11 | ||
|
|
4ad48d9139 | ||
|
|
068ec8c952 | ||
|
|
cab496d6ff | ||
|
|
0e52ded77d | ||
|
|
f677a4c11a | ||
|
|
d5d203f9c5 | ||
|
|
a1a52dbc3b | ||
|
|
3e845813dd | ||
|
|
5c7e4d65e2 | ||
|
|
8dd74193a5 | ||
|
|
321fa9d539 | ||
|
|
3d2eced8df | ||
|
|
90bbbf71b9 | ||
|
|
0a71d8e3f6 | ||
|
|
d336b240c3 | ||
|
|
2a028c4683 | ||
|
|
7410b74fd7 | ||
|
|
fc2646b1c2 | ||
|
|
aa5d5f3175 | ||
|
|
ea3e5a1fa2 | ||
|
|
24843ba137 | ||
|
|
0eaadbd17c | ||
|
|
d68dd44f61 | ||
|
|
1b4b3ba846 | ||
|
|
89e2ce5e48 | ||
|
|
165170a92d | ||
|
|
1a1d2fa59d | ||
|
|
9512c471e9 | ||
|
|
bcee700e70 | ||
|
|
4e63adb56e | ||
|
|
82491fd2d2 | ||
|
|
d66464e94b | ||
|
|
75b513fba7 | ||
|
|
84fc3b73f9 | ||
|
|
65cab1ec75 | ||
|
|
158c0a8c16 | ||
|
|
a88c7386e8 | ||
|
|
f79ceaf471 | ||
|
|
eeab2f1999 | ||
|
|
63367e324b | ||
|
|
8bef412575 | ||
|
|
bd3c89482e | ||
|
|
4c8eba0b02 | ||
|
|
f859729ebf | ||
|
|
441b4de79c | ||
|
|
cbd6132b18 | ||
|
|
57aa3d8375 | ||
|
|
b367f677c7 | ||
|
|
cbdb8c2f3e | ||
|
|
b1bab7ffe1 | ||
|
|
58fe5e841f | ||
|
|
881ae69689 | ||
|
|
7f5569cde3 | ||
|
|
620726eed6 | ||
|
|
76511ca153 | ||
|
|
f248cebc7f | ||
|
|
f5e2a9d2d3 | ||
|
|
89aec263e9 | ||
|
|
456d4fbbee | ||
|
|
45d63a8632 | ||
|
|
5d6ddbed6f | ||
|
|
2897522c05 | ||
|
|
5865defe89 | ||
|
|
ceccbc35b9 | ||
|
|
ddc3288b8c | ||
|
|
5de08c55fb | ||
|
|
efef574b74 | ||
|
|
2b9261aa88 | ||
|
|
a2bd0a93ef | ||
|
|
6f51eb468b | ||
|
|
d86cf10b34 | ||
|
|
3b88f74d71 | ||
|
|
62851233d3 | ||
|
|
89ee6116cf | ||
|
|
f12af7e06c | ||
|
|
28dec4f39f | ||
|
|
e1cbfa51f6 | ||
|
|
6a784d2189 | ||
|
|
09ad2c0414 | ||
|
|
2990ff0659 | ||
|
|
f7a75dede8 | ||
|
|
9f8c13c42b | ||
|
|
a6ee356b21 | ||
|
|
23c3845e8c | ||
|
|
ed980600b6 | ||
|
|
b79e707f87 | ||
|
|
b9f01439e9 | ||
|
|
05cb444ead | ||
|
|
dce04a257c | ||
|
|
89d4ef2413 | ||
|
|
e5b1dbfb6d | ||
|
|
f1391712c2 | ||
|
|
97859e8368 | ||
|
|
245ccb2e6c | ||
|
|
2baf9ea2d7 | ||
|
|
11659aa62f | ||
|
|
b4b50cb12d | ||
|
|
ba3cc92209 | ||
|
|
cb4e287626 | ||
|
|
654ad1c287 | ||
|
|
d896cda7f8 | ||
|
|
3dc942c2f3 | ||
|
|
c3bdce8f59 | ||
|
|
c9855f114d | ||
|
|
8d780729c6 | ||
|
|
d655d00f5f | ||
|
|
9121f555c5 | ||
|
|
d3a8a9ea13 | ||
|
|
b433235d3b | ||
|
|
1476158036 | ||
|
|
d234b6d4ea | ||
|
|
d7ac85abae | ||
|
|
45906dc1e0 | ||
|
|
98f17dfa62 | ||
|
|
79118a1713 | ||
|
|
6414dec64a | ||
|
|
8e7259e178 | ||
|
|
c9c728849c | ||
|
|
1eb1ce8b58 | ||
|
|
f0e777966b | ||
|
|
8bf4dd7187 | ||
|
|
85b775664f | ||
|
|
3d21c7c51b | ||
|
|
7b1cf54577 | ||
|
|
426906b8f8 | ||
|
|
cbe5a58e3a | ||
|
|
4f3e01079c | ||
|
|
7e738413aa | ||
|
|
92e1f21df3 | ||
|
|
ae60ed6f05 | ||
|
|
43861d7a41 | ||
|
|
b9307bdf45 | ||
|
|
86cf496d4b | ||
|
|
0405d46158 | ||
|
|
133de427ea | ||
|
|
d78b4c78b1 | ||
|
|
8c2ceccbbf | ||
|
|
52c1288d64 | ||
|
|
8fc3d896bb | ||
|
|
16ef6020c3 | ||
|
|
ae849c1cb9 | ||
|
|
62207ef2b9 | ||
|
|
005b8b9178 | ||
|
|
a13296feda | ||
|
|
231fdea8de | ||
|
|
9accd6be61 | ||
|
|
0d49433af7 | ||
|
|
78e18d4576 | ||
|
|
7627023d4c | ||
|
|
8a2cb87148 | ||
|
|
86cd9ba29d | ||
|
|
18e519c4c4 | ||
|
|
0a40175740 | ||
|
|
ef06175605 | ||
|
|
b65b79b918 | ||
|
|
9f51a40028 | ||
|
|
a925af4e62 | ||
|
|
9d29c77a7e | ||
|
|
1bed6cda0f | ||
|
|
48e5f412b6 | ||
|
|
d754399d90 | ||
|
|
74c221b65f | ||
|
|
e34f04762f | ||
|
|
3bddee5a4c | ||
|
|
54a9e3c057 | ||
|
|
777039b1e6 | ||
|
|
e3f923f9dd | ||
|
|
89a1f2a465 | ||
|
|
295f8823a5 | ||
|
|
25cad2fea5 | ||
|
|
0da130ed41 | ||
|
|
376d422cd1 | ||
|
|
d79b68e347 | ||
|
|
2212683256 | ||
|
|
263d070e28 | ||
|
|
e9aaba422a | ||
|
|
579fbcba43 | ||
|
|
9437d45b4b | ||
|
|
3319efb2b7 | ||
|
|
87299f3239 | ||
|
|
625690e44f | ||
|
|
977ca313bf | ||
|
|
59f0ea3882 | ||
|
|
dc43ace97b | ||
|
|
1d09112ec3 | ||
|
|
97d37b8e9c | ||
|
|
77bbf1e08c | ||
|
|
124f3aca23 | ||
|
|
74eed68892 | ||
|
|
4af62d8397 | ||
|
|
1868c15d4e | ||
|
|
126f1a29e2 | ||
|
|
90ecf27b05 | ||
|
|
dee030c02b | ||
|
|
5a5d246a8c | ||
|
|
180bc526b0 | ||
|
|
bfb52f28c8 | ||
|
|
1e6682a730 | ||
|
|
4ea2edd7a3 | ||
|
|
a39375ef02 | ||
|
|
a013fe28b1 | ||
|
|
8da3a003be | ||
|
|
cf95c4cf0c | ||
|
|
ae0d088ece | ||
|
|
c88867ce00 | ||
|
|
1d1e4ce739 | ||
|
|
085dbe326d | ||
|
|
2de01c1e76 | ||
|
|
47e4bc9eb9 | ||
|
|
569688f56d | ||
|
|
1645dbe4df | ||
|
|
9efd897ed2 | ||
|
|
2908bbd259 | ||
|
|
ea1a1d86b9 | ||
|
|
9a5ba0b995 | ||
|
|
d41b37ff9f | ||
|
|
0ea1e0fe7a |
8
.github/workflows/submit.yml
vendored
8
.github/workflows/submit.yml
vendored
@@ -341,6 +341,7 @@ jobs:
|
||||
run: >
|
||||
if ! grep --include=test-summary.txt -lqr build/*/test-results -e "TEST SUCCESS" ; then
|
||||
cat build/*/test-results/*/text/newfailures.txt ;
|
||||
cat build/*/test-results/*/text/other_errors.txt ;
|
||||
exit 1 ;
|
||||
fi
|
||||
|
||||
@@ -809,6 +810,7 @@ jobs:
|
||||
run: >
|
||||
if ! grep --include=test-summary.txt -lqr build/*/test-results -e "TEST SUCCESS" ; then
|
||||
cat build/*/test-results/*/text/newfailures.txt ;
|
||||
cat build/*/test-results/*/text/other_errors.txt ;
|
||||
exit 1 ;
|
||||
fi
|
||||
|
||||
@@ -887,7 +889,7 @@ jobs:
|
||||
run: |
|
||||
New-Item -Force -ItemType directory -Path "$HOME\cygwin"
|
||||
& curl -L "https://www.cygwin.com/setup-x86_64.exe" -o "$HOME/cygwin/setup-x86_64.exe"
|
||||
Start-Process -FilePath "$HOME\cygwin\setup-x86_64.exe" -ArgumentList "--quiet-mode --packages autoconf,make,zip,unzip --root $HOME\cygwin\cygwin64 --local-package-dir $HOME\cygwin\packages --site http://mirrors.kernel.org/sourceware/cygwin --no-desktop --no-shortcuts --no-startmenu --no-admin" -Wait -NoNewWindow
|
||||
Start-Process -FilePath "$HOME\cygwin\setup-x86_64.exe" -ArgumentList "--quiet-mode --packages cygwin=3.2.0-1,autoconf,make,zip,unzip --root $HOME\cygwin\cygwin64 --local-package-dir $HOME\cygwin\packages --site http://mirrors.kernel.org/sourceware/cygwin --no-desktop --no-shortcuts --no-startmenu --no-admin" -Wait -NoNewWindow
|
||||
|
||||
- name: Checkout the source
|
||||
uses: actions/checkout@v2
|
||||
@@ -1051,7 +1053,7 @@ jobs:
|
||||
run: |
|
||||
New-Item -Force -ItemType directory -Path "$HOME\cygwin"
|
||||
& curl -L "https://www.cygwin.com/setup-x86_64.exe" -o "$HOME/cygwin/setup-x86_64.exe"
|
||||
Start-Process -FilePath "$HOME\cygwin\setup-x86_64.exe" -ArgumentList "--quiet-mode --packages autoconf,make,zip,unzip --root $HOME\cygwin\cygwin64 --local-package-dir $HOME\cygwin\packages --site http://mirrors.kernel.org/sourceware/cygwin --no-desktop --no-shortcuts --no-startmenu --no-admin" -Wait -NoNewWindow
|
||||
Start-Process -FilePath "$HOME\cygwin\setup-x86_64.exe" -ArgumentList "--quiet-mode --packages cygwin=3.2.0-1,autoconf,make,zip,unzip --root $HOME\cygwin\cygwin64 --local-package-dir $HOME\cygwin\packages --site http://mirrors.kernel.org/sourceware/cygwin --no-desktop --no-shortcuts --no-startmenu --no-admin" -Wait -NoNewWindow
|
||||
|
||||
- name: Restore jtreg artifact
|
||||
id: jtreg_restore
|
||||
@@ -1124,6 +1126,7 @@ jobs:
|
||||
run: >
|
||||
if ((Get-ChildItem -Path build\*\test-results\test-summary.txt -Recurse | Select-String -Pattern "TEST SUCCESS" ).Count -eq 0) {
|
||||
Get-Content -Path build\*\test-results\*\*\newfailures.txt ;
|
||||
Get-Content -Path build\*\test-results\*\*\other_errors.txt ;
|
||||
exit 1
|
||||
}
|
||||
|
||||
@@ -1409,6 +1412,7 @@ jobs:
|
||||
run: >
|
||||
if ! grep --include=test-summary.txt -lqr build/*/test-results -e "TEST SUCCESS" ; then
|
||||
cat build/*/test-results/*/text/newfailures.txt ;
|
||||
cat build/*/test-results/*/text/other_errors.txt ;
|
||||
exit 1 ;
|
||||
fi
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
[general]
|
||||
project=jdk-updates
|
||||
jbs=JDK
|
||||
version=11.0.13
|
||||
version=11.0.15
|
||||
|
||||
[checks]
|
||||
error=author,committer,reviewers,merge,issues,executable,symlink,message,hg-tag,whitespace
|
||||
|
||||
@@ -686,11 +686,24 @@ cp: cannot stat `arm-linux-gnueabihf/libXt.so': No such file or directory</c
|
||||
<li><p>Install cross-compiler on the <em>build</em> system:</p>
|
||||
<pre><code>apt install g++-aarch64-linux-gnu gcc-aarch64-linux-gnu</code></pre></li>
|
||||
<li><p>Create chroot on the <em>build</em> system, configuring it for <em>target</em> system:</p>
|
||||
<pre><code>sudo qemu-debootstrap --arch=arm64 --verbose \
|
||||
--include=fakeroot,build-essential,libx11-dev,libxext-dev,libxrender-dev,libxtst-dev,libxt-dev,libcups2-dev,libfontconfig1-dev,libasound2-dev,libfreetype6-dev,libpng12-dev \
|
||||
--resolve-deps jessie /chroots/arm64 http://httpredir.debian.org/debian/</code></pre></li>
|
||||
<pre><code>sudo qemu-debootstrap \
|
||||
--arch=arm64 \
|
||||
--verbose \
|
||||
--include=fakeroot,symlinks,build-essential,libx11-dev,libxext-dev,libxrender-dev,libxrandr-dev,libxtst-dev,libxt-dev,libcups2-dev,libfontconfig1-dev,libasound2-dev,libfreetype6-dev,libpng-dev \
|
||||
--resolve-deps \
|
||||
buster \
|
||||
~/sysroot-arm64 \
|
||||
http://httpredir.debian.org/debian/</code></pre></li>
|
||||
<li><p>Make sure the symlinks inside the newly created chroot point to proper locations:</p>
|
||||
<pre><code>sudo chroot ~/sysroot-arm64 symlinks -cr .</code></pre></li>
|
||||
<li><p>Configure and build with newly created chroot as sysroot/toolchain-path:</p>
|
||||
<pre><code>CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ sh ./configure --openjdk-target=aarch64-linux-gnu --with-sysroot=/chroots/arm64/ --with-toolchain-path=/chroots/arm64/
|
||||
<pre><code>CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ sh ./configure \
|
||||
--openjdk-target=aarch64-linux-gnu \
|
||||
--with-sysroot=~/sysroot-arm64 \
|
||||
--with-toolchain-path=~/sysroot-arm64 \
|
||||
--with-freetype-lib=~/sysroot-arm64/usr/lib/aarch64-linux-gnu/ \
|
||||
--with-freetype-include=~/sysroot-arm64/usr/include/freetype2/ \
|
||||
--x-libraries=~/sysroot-arm64/usr/lib/aarch64-linux-gnu/
|
||||
make images
|
||||
ls build/linux-aarch64-normal-server-release/</code></pre></li>
|
||||
</ul>
|
||||
|
||||
@@ -1100,23 +1100,39 @@ for foreign architectures with native compilation speed.
|
||||
For example, cross-compiling to AArch64 from x86_64 could be done like this:
|
||||
|
||||
* Install cross-compiler on the *build* system:
|
||||
```
|
||||
apt install g++-aarch64-linux-gnu gcc-aarch64-linux-gnu
|
||||
```
|
||||
```
|
||||
apt install g++-aarch64-linux-gnu gcc-aarch64-linux-gnu
|
||||
```
|
||||
|
||||
* Create chroot on the *build* system, configuring it for *target* system:
|
||||
```
|
||||
sudo qemu-debootstrap --arch=arm64 --verbose \
|
||||
--include=fakeroot,build-essential,libx11-dev,libxext-dev,libxrender-dev,libxtst-dev,libxt-dev,libcups2-dev,libfontconfig1-dev,libasound2-dev,libfreetype6-dev,libpng12-dev \
|
||||
--resolve-deps jessie /chroots/arm64 http://httpredir.debian.org/debian/
|
||||
```
|
||||
```
|
||||
sudo qemu-debootstrap \
|
||||
--arch=arm64 \
|
||||
--verbose \
|
||||
--include=fakeroot,symlinks,build-essential,libx11-dev,libxext-dev,libxrender-dev,libxrandr-dev,libxtst-dev,libxt-dev,libcups2-dev,libfontconfig1-dev,libasound2-dev,libfreetype6-dev,libpng-dev \
|
||||
--resolve-deps \
|
||||
buster \
|
||||
~/sysroot-arm64 \
|
||||
http://httpredir.debian.org/debian/
|
||||
```
|
||||
|
||||
* Make sure the symlinks inside the newly created chroot point to proper locations:
|
||||
```
|
||||
sudo chroot ~/sysroot-arm64 symlinks -cr .
|
||||
```
|
||||
|
||||
* Configure and build with newly created chroot as sysroot/toolchain-path:
|
||||
```
|
||||
CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ sh ./configure --openjdk-target=aarch64-linux-gnu --with-sysroot=/chroots/arm64/ --with-toolchain-path=/chroots/arm64/
|
||||
make images
|
||||
ls build/linux-aarch64-normal-server-release/
|
||||
```
|
||||
```
|
||||
CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ sh ./configure \
|
||||
--openjdk-target=aarch64-linux-gnu \
|
||||
--with-sysroot=~/sysroot-arm64 \
|
||||
--with-toolchain-path=~/sysroot-arm64 \
|
||||
--with-freetype-lib=~/sysroot-arm64/usr/lib/aarch64-linux-gnu/ \
|
||||
--with-freetype-include=~/sysroot-arm64/usr/include/freetype2/ \
|
||||
--x-libraries=~/sysroot-arm64/usr/lib/aarch64-linux-gnu/
|
||||
make images
|
||||
ls build/linux-aarch64-normal-server-release/
|
||||
```
|
||||
|
||||
The build does not create new files in that chroot, so it can be reused for multiple builds
|
||||
without additional cleanup.
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
<li><a href="#configuration">Configuration</a></li>
|
||||
</ul></li>
|
||||
<li><a href="#test-selection">Test selection</a><ul>
|
||||
<li><a href="#common-test-groups">Common Test Groups</a></li>
|
||||
<li><a href="#jtreg">JTReg</a></li>
|
||||
<li><a href="#gtest">Gtest</a></li>
|
||||
</ul></li>
|
||||
@@ -59,6 +60,19 @@ $ make exploded-run-test TEST=tier2</code></pre>
|
||||
<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>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>
|
||||
<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>The source tree currently defines a few common test groups in the relevant <code>TEST.groups</code> files. There are test groups that cover a specific component, for example <code>hotspot_gc</code>. It is a good idea to look into <code>TEST.groups</code> files to get a sense what tests are relevant to a particular JDK component.</p>
|
||||
<p>Component-specific tests may miss some unintended consequences of a change, so other tests should also be run. Again, it might be impractical to run all tests, and therefore <em>tiered</em> test groups exist. Tiered test groups are not component-specific, but rather cover the significant parts of the entire JDK.</p>
|
||||
<p>Multiple tiers allow balancing test coverage and testing costs. Lower test tiers are supposed to contain the simpler, quicker and more stable tests. Higher tiers are supposed to contain progressively more thorough, slower, and sometimes less stable tests, or the tests that require special configuration.</p>
|
||||
<p>Contributors are expected to run the tests for the areas that are changed, and the first N tiers they can afford to run, but at least tier1.</p>
|
||||
<p>A brief description of the tiered test groups:</p>
|
||||
<ul>
|
||||
<li><p><code>tier1</code>: This is the lowest test tier. Multiple developers run these tests every day. Because of the widespread use, the tests in <code>tier1</code> are carefully selected and optimized to run fast, and to run in the most stable manner. The test failures in <code>tier1</code> are usually followed up on quickly, either with fixes, or adding relevant tests to problem list. GitHub Actions workflows, if enabled, run <code>tier1</code> tests.</p></li>
|
||||
<li><p><code>tier2</code>: This test group covers even more ground. These contain, among other things, tests that either run for too long to be at <code>tier1</code>, or may require special configuration, or tests that are less stable, or cover the broader range of non-core JVM and JDK features/components (for example, XML).</p></li>
|
||||
<li><p><code>tier3</code>: This test group includes more stressful tests, the tests for corner cases not covered by previous tiers, plus the tests that require GUIs. As such, this suite should either be run with low concurrency (<code>TEST_JOBS=1</code>), or without headful tests (<code>JTREG_KEYWORDS=\!headful</code>), or both.</p></li>
|
||||
<li><p><code>tier4</code>: This test group includes every other test not covered by previous tiers. It includes, for example, <code>vmTestbase</code> suites for Hotspot, which run for many hours even on large machines. It also runs GUI tests, so the same <code>TEST_JOBS</code> and <code>JTREG_KEYWORDS</code> caveats apply.</p></li>
|
||||
</ul>
|
||||
<h3 id="jtreg">JTReg</h3>
|
||||
<p>JTReg tests can be selected either by picking a JTReg test group, or a selection of files or directories containing JTReg tests.</p>
|
||||
<p>JTReg test groups can be specified either without a test root, e.g. <code>:tier1</code> (or <code>tier1</code>, the initial colon is optional), or with, e.g. <code>hotspot:tier1</code>, <code>test/jdk:jdk_util</code> or <code>$(TOPDIR)/test/hotspot/jtreg:hotspot_all</code>. The test root can be specified either as an absolute path, or a path relative to the JDK top directory, or the <code>test</code> directory. For simplicity, the hotspot JTReg test root, which really is <code>hotspot/jtreg</code> can be abbreviated as just <code>hotspot</code>.</p>
|
||||
@@ -142,6 +156,8 @@ TEST FAILURE</code></pre>
|
||||
<p>Additional VM options to JTReg (<code>-vmoption</code>).</p>
|
||||
<h4 id="aot_modules-1">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>
|
||||
<h4 id="retry_count">RETRY_COUNT</h4>
|
||||
<p>Retry failed tests up to a set number of times. Defaults to 0.</p>
|
||||
<h3 id="gtest-keywords">Gtest keywords</h3>
|
||||
<h4 id="repeat">REPEAT</h4>
|
||||
<p>The number of times to repeat the tests (<code>--gtest_repeat</code>).</p>
|
||||
|
||||
@@ -52,6 +52,52 @@ jtreg:$(TOPDIR)/test/nashorn:tier1 jtreg:$(TOPDIR)/test/jaxp:tier1`. You can
|
||||
always submit a list of fully qualified test descriptors in the `TEST` variable
|
||||
if you want to shortcut the parser.
|
||||
|
||||
### Common Test Groups
|
||||
|
||||
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.
|
||||
|
||||
The source tree currently defines a few common test groups in the relevant `TEST.groups`
|
||||
files. There are test groups that cover a specific component, for example `hotspot_gc`.
|
||||
It is a good idea to look into `TEST.groups` files to get a sense what tests are relevant
|
||||
to a particular JDK component.
|
||||
|
||||
Component-specific tests may miss some unintended consequences of a change, so other
|
||||
tests should also be run. Again, it might be impractical to run all tests, and therefore
|
||||
_tiered_ test groups exist. Tiered test groups are not component-specific, but rather cover
|
||||
the significant parts of the entire JDK.
|
||||
|
||||
Multiple tiers allow balancing test coverage and testing costs. Lower test tiers are supposed to
|
||||
contain the simpler, quicker and more stable tests. Higher tiers are supposed to contain
|
||||
progressively more thorough, slower, and sometimes less stable tests, or the tests that require
|
||||
special configuration.
|
||||
|
||||
Contributors are expected to run the tests for the areas that are changed, and the first N tiers
|
||||
they can afford to run, but at least tier1.
|
||||
|
||||
A brief description of the tiered test groups:
|
||||
|
||||
- `tier1`: This is the lowest test tier. Multiple developers run these tests every day.
|
||||
Because of the widespread use, the tests in `tier1` are carefully selected and optimized to run
|
||||
fast, and to run in the most stable manner. The test failures in `tier1` are usually followed up
|
||||
on quickly, either with fixes, or adding relevant tests to problem list. GitHub Actions workflows,
|
||||
if enabled, run `tier1` tests.
|
||||
|
||||
- `tier2`: This test group covers even more ground. These contain, among other things,
|
||||
tests that either run for too long to be at `tier1`, or may require special configuration,
|
||||
or tests that are less stable, or cover the broader range of non-core JVM and JDK features/components
|
||||
(for example, XML).
|
||||
|
||||
- `tier3`: This test group includes more stressful tests, the tests for corner cases
|
||||
not covered by previous tiers, plus the tests that require GUIs. As such, this suite
|
||||
should either be run with low concurrency (`TEST_JOBS=1`), or without headful tests
|
||||
(`JTREG_KEYWORDS=\!headful`), or both.
|
||||
|
||||
- `tier4`: This test group includes every other test not covered by previous tiers. It includes,
|
||||
for example, `vmTestbase` suites for Hotspot, which run for many hours even on large
|
||||
machines. It also runs GUI tests, so the same `TEST_JOBS` and `JTREG_KEYWORDS` caveats
|
||||
apply.
|
||||
|
||||
### JTReg
|
||||
|
||||
JTReg tests can be selected either by picking a JTReg test group, or a selection
|
||||
@@ -269,6 +315,10 @@ 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 `%20`).
|
||||
|
||||
#### RETRY_COUNT
|
||||
|
||||
Retry failed tests up to a set number of times. Defaults to 0.
|
||||
|
||||
### Gtest keywords
|
||||
|
||||
#### REPEAT
|
||||
|
||||
@@ -276,7 +276,7 @@ $(eval $(call SetTestOpt,TIMEOUT_FACTOR,JTREG))
|
||||
|
||||
$(eval $(call ParseKeywordVariable, JTREG, \
|
||||
SINGLE_KEYWORDS := JOBS TIMEOUT_FACTOR TEST_MODE ASSERT VERBOSE RETAIN \
|
||||
MAX_MEM, \
|
||||
MAX_MEM RETRY_COUNT, \
|
||||
STRING_KEYWORDS := OPTIONS JAVA_OPTIONS VM_OPTIONS KEYWORDS \
|
||||
EXTRA_PROBLEM_LISTS AOT_MODULES, \
|
||||
))
|
||||
@@ -312,8 +312,6 @@ langtools_JTREG_PROBLEM_LIST += $(TOPDIR)/test/langtools/ProblemList.txt
|
||||
nashorn_JTREG_PROBLEM_LIST += $(TOPDIR)/test/nashorn/ProblemList.txt
|
||||
hotspot_JTREG_PROBLEM_LIST += $(TOPDIR)/test/hotspot/jtreg/ProblemList.txt
|
||||
|
||||
langtools_JTREG_MAX_MEM := 768m
|
||||
|
||||
################################################################################
|
||||
# Parse test selection
|
||||
#
|
||||
@@ -627,7 +625,7 @@ define SetupRunJtregTestBody
|
||||
# Convert JTREG_foo into $1_JTREG_foo with a suitable value.
|
||||
$$(eval $$(call SetJtregValue,$1,JTREG_TEST_MODE,agentvm))
|
||||
$$(eval $$(call SetJtregValue,$1,JTREG_ASSERT,true))
|
||||
$$(eval $$(call SetJtregValue,$1,JTREG_MAX_MEM,512m))
|
||||
$$(eval $$(call SetJtregValue,$1,JTREG_MAX_MEM,768m))
|
||||
$$(eval $$(call SetJtregValue,$1,JTREG_NATIVEPATH))
|
||||
$$(eval $$(call SetJtregValue,$1,JTREG_BASIC_OPTIONS))
|
||||
$$(eval $$(call SetJtregValue,$1,JTREG_PROBLEM_LIST))
|
||||
@@ -643,7 +641,7 @@ define SetupRunJtregTestBody
|
||||
|
||||
# Make sure MaxRAMPercentage is high enough to not cause OOM or swapping since
|
||||
# we may end up with a lot of JVM's
|
||||
$1_JTREG_MAX_RAM_PERCENTAGE := $$(shell $$(EXPR) 25 / $$($1_JTREG_JOBS))
|
||||
$1_JTREG_MAX_RAM_PERCENTAGE := $$(shell $(AWK) 'BEGIN { print 25 / $$($1_JTREG_JOBS); }')
|
||||
|
||||
# SPARC is in general slower per core so need to scale up timeouts a bit.
|
||||
ifeq ($(OPENJDK_TARGET_CPU_ARCH), sparc)
|
||||
@@ -653,6 +651,7 @@ define SetupRunJtregTestBody
|
||||
endif
|
||||
JTREG_VERBOSE ?= fail,error,summary
|
||||
JTREG_RETAIN ?= fail,error
|
||||
JTREG_RETRY_COUNT ?= 0
|
||||
|
||||
ifneq ($$($1_JTREG_MAX_MEM), 0)
|
||||
$1_JTREG_BASIC_OPTIONS += -vmoption:-Xmx$$($1_JTREG_MAX_MEM)
|
||||
@@ -742,24 +741,43 @@ define SetupRunJtregTestBody
|
||||
clean-workdir-$1:
|
||||
$$(RM) -r $$($1_TEST_SUPPORT_DIR)
|
||||
|
||||
$1_COMMAND_LINE := \
|
||||
$$(JAVA) $$($1_JTREG_LAUNCHER_OPTIONS) \
|
||||
-Dprogram=jtreg -jar $$(JT_HOME)/lib/jtreg.jar \
|
||||
$$($1_JTREG_BASIC_OPTIONS) \
|
||||
-testjdk:$$(JDK_IMAGE_DIR) \
|
||||
-dir:$$(JTREG_TOPDIR) \
|
||||
-reportDir:$$($1_TEST_RESULTS_DIR) \
|
||||
-workDir:$$($1_TEST_SUPPORT_DIR) \
|
||||
-status:$$$${JTREG_STATUS} \
|
||||
$$(JTREG_OPTIONS) \
|
||||
$$(JTREG_FAILURE_HANDLER_OPTIONS) \
|
||||
$$($1_TEST_NAME) \
|
||||
&& $$(ECHO) $$$$? > $$($1_EXITCODE) \
|
||||
|| $$(ECHO) $$$$? > $$($1_EXITCODE)
|
||||
|
||||
|
||||
ifneq ($$(JTREG_RETRY_COUNT), 0)
|
||||
$1_COMMAND_LINE := \
|
||||
for i in {0..$$(JTREG_RETRY_COUNT)}; do \
|
||||
if [ "$$$$i" != 0 ]; then \
|
||||
$$(PRINTF) "\nRetrying Jtreg run. Attempt: $$$$i\n"; \
|
||||
fi; \
|
||||
$$($1_COMMAND_LINE); \
|
||||
if [ "`$$(CAT) $$($1_EXITCODE)`" = "0" ]; then \
|
||||
break; \
|
||||
fi; \
|
||||
export JTREG_STATUS="-status:error,fail"; \
|
||||
done
|
||||
endif
|
||||
|
||||
run-test-$1: clean-workdir-$1 $$($1_AOT_TARGETS)
|
||||
$$(call LogWarn)
|
||||
$$(call LogWarn, Running test '$$($1_TEST)')
|
||||
$$(call MakeDir, $$($1_TEST_RESULTS_DIR) $$($1_TEST_SUPPORT_DIR) \
|
||||
$$($1_TEST_TMP_DIR))
|
||||
$$(call ExecuteWithLog, $$($1_TEST_SUPPORT_DIR)/jtreg, ( \
|
||||
$$(JAVA) $$($1_JTREG_LAUNCHER_OPTIONS) \
|
||||
-Dprogram=jtreg -jar $$(JT_HOME)/lib/jtreg.jar \
|
||||
$$($1_JTREG_BASIC_OPTIONS) \
|
||||
-testjdk:$$(JDK_IMAGE_DIR) \
|
||||
-dir:$$(JTREG_TOPDIR) \
|
||||
-reportDir:$$($1_TEST_RESULTS_DIR) \
|
||||
-workDir:$$($1_TEST_SUPPORT_DIR) \
|
||||
$$(JTREG_OPTIONS) \
|
||||
$$(JTREG_FAILURE_HANDLER_OPTIONS) \
|
||||
$$($1_TEST_NAME) \
|
||||
&& $$(ECHO) $$$$? > $$($1_EXITCODE) \
|
||||
|| $$(ECHO) $$$$? > $$($1_EXITCODE) \
|
||||
$$($1_COMMAND_LINE) \
|
||||
))
|
||||
|
||||
$1_RESULT_FILE := $$($1_TEST_RESULTS_DIR)/text/stats.txt
|
||||
|
||||
@@ -230,7 +230,7 @@ else ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||
NUM_CORES := $(shell /usr/sbin/sysctl -n hw.ncpu)
|
||||
MEMORY_SIZE := $(shell $(EXPR) `/usr/sbin/sysctl -n hw.memsize` / 1024 / 1024)
|
||||
else ifeq ($(OPENJDK_TARGET_OS), solaris)
|
||||
NUM_CORES := $(shell LC_MESSAGES=C /usr/sbin/psrinfo -v | $(GREP) -c on-line)
|
||||
NUM_CORES := $(shell /usr/sbin/psrinfo -v | $(GREP) -c on-line)
|
||||
MEMORY_SIZE := $(shell \
|
||||
/usr/sbin/prtconf 2> /dev/null | $(GREP) "^Memory [Ss]ize" | $(AWK) '{print $$3}' \
|
||||
)
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
# Fake minimalistic spec file for RunTestsPrebuilt.gmk.
|
||||
################################################################################
|
||||
|
||||
# Make sure all shell commands are executed with the C locale
|
||||
export LC_ALL := C
|
||||
|
||||
define VerifyVariable
|
||||
ifeq ($$($1), )
|
||||
$$(info Error: Variable $1 is missing, needed by RunTestPrebuiltSpec.gmk)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2011, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2021, 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
|
||||
@@ -73,9 +73,9 @@ TOOL_HASHER = $(JAVA_SMALL) -cp $(BUILDTOOLS_OUTPUTDIR)/jdk_tools_classes \
|
||||
TOOL_TZDB = $(JAVA_SMALL) -cp $(BUILDTOOLS_OUTPUTDIR)/jdk_tools_classes \
|
||||
build.tools.tzdb.TzdbZoneRulesCompiler
|
||||
|
||||
TOOL_BLACKLISTED_CERTS = $(JAVA_SMALL) -cp $(BUILDTOOLS_OUTPUTDIR)/jdk_tools_classes \
|
||||
TOOL_BLOCKED_CERTS = $(JAVA_SMALL) -cp $(BUILDTOOLS_OUTPUTDIR)/jdk_tools_classes \
|
||||
--add-exports java.base/sun.security.util=ALL-UNNAMED \
|
||||
build.tools.blacklistedcertsconverter.BlacklistedCertsConverter
|
||||
build.tools.blockedcertsconverter.BlockedCertsConverter
|
||||
|
||||
TOOL_MAKEJAVASECURITY = $(JAVA_SMALL) -cp $(BUILDTOOLS_OUTPUTDIR)/jdk_tools_classes \
|
||||
build.tools.makejavasecurity.MakeJavaSecurity
|
||||
|
||||
@@ -405,7 +405,7 @@ AC_DEFUN_ONCE([BASIC_INIT],
|
||||
# Save the path variable before it gets changed
|
||||
ORIGINAL_PATH="$PATH"
|
||||
AC_SUBST(ORIGINAL_PATH)
|
||||
DATE_WHEN_CONFIGURED=`LANG=C date`
|
||||
DATE_WHEN_CONFIGURED=`date`
|
||||
AC_SUBST(DATE_WHEN_CONFIGURED)
|
||||
AC_MSG_NOTICE([Configuration created at $DATE_WHEN_CONFIGURED.])
|
||||
])
|
||||
@@ -672,6 +672,16 @@ AC_DEFUN([BASIC_EVAL_DEVKIT_VARIABLE],
|
||||
fi
|
||||
])
|
||||
|
||||
###############################################################################
|
||||
# Evaluates platform specific overrides for build devkit variables.
|
||||
# $1: Name of variable
|
||||
AC_DEFUN([BASIC_EVAL_BUILD_DEVKIT_VARIABLE],
|
||||
[
|
||||
if test "x[$]$1" = x; then
|
||||
eval $1="\${$1_${OPENJDK_BUILD_CPU}}"
|
||||
fi
|
||||
])
|
||||
|
||||
###############################################################################
|
||||
AC_DEFUN_ONCE([BASIC_SETUP_DEVKIT],
|
||||
[
|
||||
|
||||
@@ -381,10 +381,44 @@ AC_DEFUN_ONCE([BASIC_COMPILE_FIXPATH],
|
||||
# called fixpath.
|
||||
FIXPATH=
|
||||
if test "x$OPENJDK_BUILD_OS" = xwindows; then
|
||||
AC_MSG_CHECKING([if fixpath can be created])
|
||||
FIXPATH_SRC="$TOPDIR/make/src/native/fixpath.c"
|
||||
FIXPATH_BIN="$CONFIGURESUPPORT_OUTPUTDIR/bin/fixpath.exe"
|
||||
FIXPATH_DIR="$CONFIGURESUPPORT_OUTPUTDIR/fixpath"
|
||||
|
||||
if test "x$OPENJDK_TARGET_CPU" != "xaarch64"; then
|
||||
AC_MSG_CHECKING([if fixpath can be created])
|
||||
|
||||
FIXPATH_BIN="$CONFIGURESUPPORT_OUTPUTDIR/bin/fixpath.exe"
|
||||
FIXPATH_SRC_W="$FIXPATH_SRC"
|
||||
FIXPATH_BIN_W="$FIXPATH_BIN"
|
||||
BASIC_WINDOWS_REWRITE_AS_WINDOWS_MIXED_PATH([FIXPATH_SRC_W])
|
||||
BASIC_WINDOWS_REWRITE_AS_WINDOWS_MIXED_PATH([FIXPATH_BIN_W])
|
||||
$RM -rf $FIXPATH_BIN $FIXPATH_DIR
|
||||
$MKDIR -p $FIXPATH_DIR $CONFIGURESUPPORT_OUTPUTDIR/bin
|
||||
cd $FIXPATH_DIR
|
||||
$CC $FIXPATH_SRC_W -Fe$FIXPATH_BIN_W > $FIXPATH_DIR/fixpath1.log 2>&1
|
||||
cd $CURDIR
|
||||
|
||||
if test ! -x $FIXPATH_BIN; then
|
||||
AC_MSG_RESULT([no])
|
||||
cat $FIXPATH_DIR/fixpath1.log
|
||||
AC_MSG_ERROR([Could not create $FIXPATH_BIN])
|
||||
fi
|
||||
AC_MSG_RESULT([yes])
|
||||
|
||||
else # OPENJDK_TARGET_CPU is aarch64
|
||||
AC_MSG_CHECKING([if fixpath is in place])
|
||||
|
||||
FIXPATH_BIN="$TOPDIR/fixpath.exe"
|
||||
$RM -rf $FIXPATH_DIR
|
||||
$MKDIR -p $FIXPATH_DIR
|
||||
|
||||
if test ! -x $FIXPATH_BIN; then
|
||||
AC_MSG_RESULT([no])
|
||||
AC_MSG_ERROR([Could not find fixpath.exe under $TOPDIR])
|
||||
fi
|
||||
AC_MSG_RESULT([yes])
|
||||
fi
|
||||
|
||||
if test "x$OPENJDK_BUILD_OS_ENV" = xwindows.cygwin; then
|
||||
# Important to keep the .exe suffix on Cygwin for Hotspot makefiles
|
||||
FIXPATH="$FIXPATH_BIN -c"
|
||||
@@ -396,22 +430,7 @@ AC_DEFUN_ONCE([BASIC_COMPILE_FIXPATH],
|
||||
fixpath_argument_list=`echo $all_unique_prefixes | tr ' ' '@'`
|
||||
FIXPATH="$FIXPATH_BIN -m$fixpath_argument_list"
|
||||
fi
|
||||
FIXPATH_SRC_W="$FIXPATH_SRC"
|
||||
FIXPATH_BIN_W="$FIXPATH_BIN"
|
||||
BASIC_WINDOWS_REWRITE_AS_WINDOWS_MIXED_PATH([FIXPATH_SRC_W])
|
||||
BASIC_WINDOWS_REWRITE_AS_WINDOWS_MIXED_PATH([FIXPATH_BIN_W])
|
||||
$RM -rf $FIXPATH_BIN $FIXPATH_DIR
|
||||
$MKDIR -p $FIXPATH_DIR $CONFIGURESUPPORT_OUTPUTDIR/bin
|
||||
cd $FIXPATH_DIR
|
||||
$CC $FIXPATH_SRC_W -Fe$FIXPATH_BIN_W > $FIXPATH_DIR/fixpath1.log 2>&1
|
||||
cd $CURDIR
|
||||
|
||||
if test ! -x $FIXPATH_BIN; then
|
||||
AC_MSG_RESULT([no])
|
||||
cat $FIXPATH_DIR/fixpath1.log
|
||||
AC_MSG_ERROR([Could not create $FIXPATH_BIN])
|
||||
fi
|
||||
AC_MSG_RESULT([yes])
|
||||
AC_MSG_CHECKING([if fixpath.exe works])
|
||||
cd $FIXPATH_DIR
|
||||
$FIXPATH $CC $FIXPATH_SRC -Fe$FIXPATH_DIR/fixpath2.exe \
|
||||
|
||||
20
make/autoconf/build-aux/config.guess
vendored
20
make/autoconf/build-aux/config.guess
vendored
@@ -1,6 +1,7 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2012, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2021, Azul Systems, Inc. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@@ -97,6 +98,23 @@ if [ "x$OUT" = x ]; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# Test and fix LoongArch64.
|
||||
if [ "x$OUT" = x ]; then
|
||||
if [ `uname -s` = Linux ]; then
|
||||
if [ `uname -m` = loongarch64 ]; then
|
||||
OUT=loongarch64-unknown-linux-gnu
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# Test and fix cpu on macos-aarch64, uname -p reports arm, buildsys expects aarch64
|
||||
echo $OUT | grep arm-apple-darwin > /dev/null 2> /dev/null
|
||||
if test $? = 0; then
|
||||
if [ `uname -m` = arm64 ]; then
|
||||
OUT=aarch64`echo $OUT | sed -e 's/[^-]*//'`
|
||||
fi
|
||||
fi
|
||||
|
||||
# Test and fix cpu on Macosx when C preprocessor is not on the path
|
||||
echo $OUT | grep i386-apple-darwin > /dev/null 2> /dev/null
|
||||
if test $? = 0; then
|
||||
|
||||
@@ -35,7 +35,7 @@ AC_DEFUN([BPERF_CHECK_CORES],
|
||||
FOUND_CORES=yes
|
||||
elif test -x /usr/sbin/psrinfo; then
|
||||
# Looks like a Solaris system
|
||||
NUM_CORES=`LC_MESSAGES=C /usr/sbin/psrinfo -v | grep -c on-line`
|
||||
NUM_CORES=`/usr/sbin/psrinfo -v | grep -c on-line`
|
||||
FOUND_CORES=yes
|
||||
elif test -x /usr/sbin/sysctl; then
|
||||
# Looks like a MacOSX system
|
||||
|
||||
3
make/autoconf/configure
vendored
3
make/autoconf/configure
vendored
@@ -43,6 +43,9 @@ fi
|
||||
export CONFIG_SHELL=$BASH
|
||||
export _as_can_reexec=no
|
||||
|
||||
# Make sure all shell commands are executed with the C locale
|
||||
export LC_ALL=C
|
||||
|
||||
if test "x$CUSTOM_CONFIG_DIR" != x; then
|
||||
custom_hook=$CUSTOM_CONFIG_DIR/custom-hook.m4
|
||||
if test ! -e $custom_hook; then
|
||||
|
||||
@@ -391,16 +391,6 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS],
|
||||
CFLAGS="$CFLAGS_OLD"
|
||||
CXXFLAGS="$CXXFLAGS_OLD"
|
||||
|
||||
# Tests are only ever compiled for TARGET
|
||||
CFLAGS_TESTLIB="$CFLAGS_JDKLIB"
|
||||
CXXFLAGS_TESTLIB="$CXXFLAGS_JDKLIB"
|
||||
CFLAGS_TESTEXE="$CFLAGS_JDKEXE"
|
||||
CXXFLAGS_TESTEXE="$CXXFLAGS_JDKEXE"
|
||||
|
||||
AC_SUBST(CFLAGS_TESTLIB)
|
||||
AC_SUBST(CFLAGS_TESTEXE)
|
||||
AC_SUBST(CXXFLAGS_TESTLIB)
|
||||
AC_SUBST(CXXFLAGS_TESTEXE)
|
||||
])
|
||||
|
||||
################################################################################
|
||||
@@ -705,7 +695,9 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_CPU_DEP],
|
||||
$1_DEFINES_CPU_JDK="${$1_DEFINES_CPU_JDK} -DcpuIntel -Di586 -D$FLAGS_CPU_LEGACY_LIB"
|
||||
fi
|
||||
elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
|
||||
if test "x$FLAGS_CPU" = xx86_64; then
|
||||
if test "x$FLAGS_CPU" = xaarch64; then
|
||||
$1_DEFINES_CPU_JDK="${$1_DEFINES_CPU_JDK} -D_ARM64_ -Darm64"
|
||||
elif test "x$FLAGS_CPU" = xx86_64; then
|
||||
$1_DEFINES_CPU_JDK="${$1_DEFINES_CPU_JDK} -D_AMD64_ -Damd64"
|
||||
else
|
||||
$1_DEFINES_CPU_JDK="${$1_DEFINES_CPU_JDK} -D_X86_ -Dx86"
|
||||
|
||||
@@ -51,9 +51,7 @@ AC_DEFUN([FLAGS_SETUP_LDFLAGS],
|
||||
|
||||
FLAGS_SETUP_LDFLAGS_CPU_DEP([BUILD], [OPENJDK_BUILD_])
|
||||
|
||||
LDFLAGS_TESTLIB="$LDFLAGS_JDKLIB"
|
||||
LDFLAGS_TESTEXE="$LDFLAGS_JDKEXE ${TARGET_LDFLAGS_JDK_LIBPATH}"
|
||||
AC_SUBST(LDFLAGS_TESTLIB)
|
||||
LDFLAGS_TESTEXE="${TARGET_LDFLAGS_JDK_LIBPATH}"
|
||||
AC_SUBST(LDFLAGS_TESTEXE)
|
||||
])
|
||||
|
||||
@@ -187,12 +185,14 @@ AC_DEFUN([FLAGS_SETUP_LDFLAGS_CPU_DEP],
|
||||
$1_CPU_LDFLAGS_JVM_ONLY="-xarch=sparc"
|
||||
fi
|
||||
|
||||
elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
|
||||
elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
|
||||
if test "x${OPENJDK_$1_CPU}" = "xx86"; then
|
||||
$1_CPU_LDFLAGS="-safeseh"
|
||||
# NOTE: Old build added -machine. Probably not needed.
|
||||
$1_CPU_LDFLAGS_JVM_ONLY="-machine:I386"
|
||||
$1_CPU_EXECUTABLE_LDFLAGS="-stack:327680"
|
||||
elif test "x${OPENJDK_$1_CPU}" = "xaarch64"; then
|
||||
$1_CPU_EXECUTABLE_LDFLAGS="-stack:1048576"
|
||||
else
|
||||
$1_CPU_LDFLAGS_JVM_ONLY="-machine:AMD64"
|
||||
$1_CPU_EXECUTABLE_LDFLAGS="-stack:1048576"
|
||||
|
||||
@@ -111,19 +111,25 @@ AC_DEFUN([FLAGS_SETUP_MACOSX_VERSION],
|
||||
[
|
||||
# Additional macosx handling
|
||||
if test "x$OPENJDK_TARGET_OS" = xmacosx; then
|
||||
# The expected format for <version> is either nn.n.n or nn.nn.nn. See
|
||||
# /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h
|
||||
|
||||
# MACOSX_VERSION_MIN specifies the lowest version of Macosx that the built
|
||||
# binaries should be compatible with, even if compiled on a newer version
|
||||
# of the OS. It currently has a hard coded value. Setting this also limits
|
||||
# exposure to API changes in header files. Bumping this is likely to
|
||||
# require code changes to build.
|
||||
MACOSX_VERSION_MIN=10.9.0
|
||||
if test "x$OPENJDK_TARGET_CPU_ARCH" = xaarch64; then
|
||||
MACOSX_VERSION_MIN=11.00.00
|
||||
else
|
||||
MACOSX_VERSION_MIN=10.9.0
|
||||
fi
|
||||
MACOSX_VERSION_MIN_NODOTS=${MACOSX_VERSION_MIN//\./}
|
||||
|
||||
AC_SUBST(MACOSX_VERSION_MIN)
|
||||
|
||||
# Setting --with-macosx-version-max=<version> makes it an error to build or
|
||||
# link to macosx APIs that are newer than the given OS version. The expected
|
||||
# format for <version> is either nn.n.n or nn.nn.nn. See /usr/include/AvailabilityMacros.h.
|
||||
# link to macosx APIs that are newer than the given OS version.
|
||||
AC_ARG_WITH([macosx-version-max], [AS_HELP_STRING([--with-macosx-version-max],
|
||||
[error on use of newer functionality. @<:@macosx@:>@])],
|
||||
[
|
||||
@@ -258,6 +264,14 @@ AC_DEFUN_ONCE([FLAGS_PRE_TOOLCHAIN],
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "x$OPENJDK_TARGET_OS" = xmacosx; then
|
||||
if test "x$OPENJDK_TARGET_CPU" = xaarch64; then
|
||||
MACHINE_FLAG="$MACHINE_FLAG -arch arm64"
|
||||
elif test "x$OPENJDK_TARGET_CPU" = xx86_64; then
|
||||
MACHINE_FLAG="$MACHINE_FLAG -arch x86_64"
|
||||
fi
|
||||
fi
|
||||
|
||||
# FIXME: global flags are not used yet...
|
||||
# The "global" flags will *always* be set. Without them, it is not possible to
|
||||
# get a working compilation.
|
||||
|
||||
@@ -90,7 +90,7 @@ apt_help() {
|
||||
devkit)
|
||||
PKGHANDLER_COMMAND="sudo apt-get install build-essential" ;;
|
||||
openjdk)
|
||||
PKGHANDLER_COMMAND="sudo apt-get install openjdk-8-jdk" ;;
|
||||
PKGHANDLER_COMMAND="sudo apt-get install openjdk-11-jdk" ;;
|
||||
alsa)
|
||||
PKGHANDLER_COMMAND="sudo apt-get install libasound2-dev" ;;
|
||||
cups)
|
||||
@@ -117,7 +117,7 @@ yum_help() {
|
||||
devkit)
|
||||
PKGHANDLER_COMMAND="sudo yum groupinstall \"Development Tools\"" ;;
|
||||
openjdk)
|
||||
PKGHANDLER_COMMAND="sudo yum install java-1.8.0-openjdk-devel" ;;
|
||||
PKGHANDLER_COMMAND="sudo yum install java-11-openjdk-devel" ;;
|
||||
alsa)
|
||||
PKGHANDLER_COMMAND="sudo yum install alsa-lib-devel" ;;
|
||||
cups)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2021, 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
|
||||
@@ -221,7 +221,7 @@ AC_DEFUN_ONCE([HOTSPOT_ENABLE_DISABLE_AOT],
|
||||
|
||||
if test "x$ENABLE_AOT" = "xtrue"; then
|
||||
# Only enable AOT on X64 platforms.
|
||||
if test "x$OPENJDK_TARGET_CPU" = "xx86_64" || test "x$OPENJDK_TARGET_CPU" = "xaarch64" ; then
|
||||
if test "x$OPENJDK_TARGET_CPU" = "xx86_64" || test "x$OPENJDK_TARGET_OS-$OPENJDK_TARGET_CPU" = "xlinux-aarch64" ; then
|
||||
if test -e "${TOPDIR}/src/jdk.aot"; then
|
||||
if test -e "${TOPDIR}/src/jdk.internal.vm.compiler"; then
|
||||
ENABLE_AOT="true"
|
||||
@@ -240,7 +240,7 @@ AC_DEFUN_ONCE([HOTSPOT_ENABLE_DISABLE_AOT],
|
||||
else
|
||||
ENABLE_AOT="false"
|
||||
if test "x$enable_aot" = "xyes"; then
|
||||
AC_MSG_ERROR([AOT is currently only supported on x86_64 and aarch64. Remove --enable-aot.])
|
||||
AC_MSG_ERROR([AOT is currently only supported on x86_64 and linux-aarch64. Remove --enable-aot.])
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
@@ -274,6 +274,14 @@ AC_DEFUN_ONCE([HOTSPOT_ENABLE_DISABLE_CDS],
|
||||
fi
|
||||
fi
|
||||
|
||||
# Disable CDS on macos-aarch64
|
||||
if test "x$OPENJDK_TARGET_OS" = "xmacosx" && test "x$OPENJDK_TARGET_CPU" = "xaarch64"; then
|
||||
ENABLE_CDS="false"
|
||||
if test "x$enable_cds" = "xyes"; then
|
||||
AC_MSG_ERROR([CDS is currently not supported on macOS/aarch64. Remove --enable-cds.])
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_SUBST(ENABLE_CDS)
|
||||
])
|
||||
|
||||
@@ -355,7 +363,8 @@ AC_DEFUN_ONCE([HOTSPOT_SETUP_JVM_FEATURES],
|
||||
# Only enable Shenandoah on supported arches, and only if requested
|
||||
AC_MSG_CHECKING([if shenandoah can be built])
|
||||
if HOTSPOT_CHECK_JVM_FEATURE(shenandoahgc); then
|
||||
if test "x$OPENJDK_TARGET_CPU_ARCH" = "xx86" || test "x$OPENJDK_TARGET_CPU" = "xaarch64" ; then
|
||||
if test "x$OPENJDK_TARGET_CPU_ARCH" = "xx86" || \
|
||||
test "x$OPENJDK_TARGET_CPU" = "xaarch64"; then
|
||||
AC_MSG_RESULT([yes])
|
||||
else
|
||||
DISABLED_JVM_FEATURES="$DISABLED_JVM_FEATURES shenandoahgc"
|
||||
@@ -443,10 +452,11 @@ AC_DEFUN_ONCE([HOTSPOT_SETUP_JVM_FEATURES],
|
||||
JVM_FEATURES_graal="graal"
|
||||
INCLUDE_GRAAL="true"
|
||||
else
|
||||
# By default enable graal build on x64 or where AOT is available.
|
||||
# By default enable graal build on x64/aarch64 or where AOT is available.
|
||||
# graal build requires jvmci.
|
||||
if test "x$JVM_FEATURES_jvmci" = "xjvmci" && \
|
||||
(test "x$OPENJDK_TARGET_CPU" = "xx86_64" || \
|
||||
test "x$OPENJDK_TARGET_CPU" = "xaarch64" || \
|
||||
test "x$ENABLE_AOT" = "xtrue") ; then
|
||||
AC_MSG_RESULT([yes])
|
||||
JVM_FEATURES_graal="graal"
|
||||
|
||||
@@ -66,6 +66,12 @@ AC_DEFUN([PLATFORM_EXTRACT_VARS_FROM_CPU],
|
||||
VAR_CPU_BITS=64
|
||||
VAR_CPU_ENDIAN=little
|
||||
;;
|
||||
loongarch64)
|
||||
VAR_CPU=loongarch64
|
||||
VAR_CPU_ARCH=loongarch
|
||||
VAR_CPU_BITS=64
|
||||
VAR_CPU_ENDIAN=little
|
||||
;;
|
||||
m68k)
|
||||
VAR_CPU=m68k
|
||||
VAR_CPU_ARCH=m68k
|
||||
@@ -114,6 +120,12 @@ AC_DEFUN([PLATFORM_EXTRACT_VARS_FROM_CPU],
|
||||
VAR_CPU_BITS=64
|
||||
VAR_CPU_ENDIAN=little
|
||||
;;
|
||||
riscv64)
|
||||
VAR_CPU=riscv64
|
||||
VAR_CPU_ARCH=riscv
|
||||
VAR_CPU_BITS=64
|
||||
VAR_CPU_ENDIAN=little
|
||||
;;
|
||||
s390)
|
||||
VAR_CPU=s390
|
||||
VAR_CPU_ARCH=s390
|
||||
@@ -510,6 +522,8 @@ AC_DEFUN([PLATFORM_SETUP_LEGACY_VARS_HELPER],
|
||||
HOTSPOT_$1_CPU_DEFINE=S390
|
||||
elif test "x$OPENJDK_$1_CPU" = xs390x; then
|
||||
HOTSPOT_$1_CPU_DEFINE=S390
|
||||
elif test "x$OPENJDK_$1_CPU" = xriscv64; then
|
||||
HOTSPOT_$1_CPU_DEFINE=RISCV
|
||||
elif test "x$OPENJDK_$1_CPU" != x; then
|
||||
HOTSPOT_$1_CPU_DEFINE=$(echo $OPENJDK_$1_CPU | tr a-z A-Z)
|
||||
fi
|
||||
|
||||
@@ -46,6 +46,9 @@ COMMA:=,
|
||||
# What make to use for main processing, after bootstrapping top-level Makefile.
|
||||
MAKE := @MAKE@
|
||||
|
||||
# Make sure all shell commands are executed with the C locale
|
||||
export LC_ALL := C
|
||||
|
||||
# The default make arguments
|
||||
MAKE_ARGS = $(MAKE_LOG_FLAGS) -r -R -I $(TOPDIR)/make/common SPEC=$(SPEC) \
|
||||
MAKE_LOG_FLAGS="$(MAKE_LOG_FLAGS)" $(MAKE_LOG_VARS)
|
||||
@@ -508,11 +511,6 @@ LDCXX:=@FIXPATH@ @LDCXX@
|
||||
LIBCXX:=@LIBCXX@
|
||||
|
||||
# Compiler and linker flags used when building native tests
|
||||
CFLAGS_TESTLIB:=@CFLAGS_TESTLIB@
|
||||
CXXFLAGS_TESTLIB:=@CXXFLAGS_TESTLIB@
|
||||
CFLAGS_TESTEXE:=@CFLAGS_TESTEXE@
|
||||
CXXFLAGS_TESTEXE:=@CXXFLAGS_TESTEXE@
|
||||
LDFLAGS_TESTLIB:=@LDFLAGS_TESTLIB@
|
||||
LDFLAGS_TESTEXE:=@LDFLAGS_TESTEXE@
|
||||
|
||||
# BUILD_CC/BUILD_LD is a compiler/linker that generates code that is runnable on the
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2022, 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
|
||||
@@ -229,7 +229,7 @@ AC_DEFUN_ONCE([TOOLCHAIN_DETERMINE_TOOLCHAIN_TYPE],
|
||||
if test "x$OPENJDK_TARGET_OS" = xmacosx; then
|
||||
if test -n "$XCODEBUILD"; then
|
||||
# On Mac OS X, default toolchain to clang after Xcode 5
|
||||
XCODE_VERSION_OUTPUT=`"$XCODEBUILD" -version 2>&1 | $HEAD -n 1`
|
||||
XCODE_VERSION_OUTPUT=`"$XCODEBUILD" -version | $HEAD -n 1`
|
||||
$ECHO "$XCODE_VERSION_OUTPUT" | $GREP "Xcode " > /dev/null
|
||||
if test $? -ne 0; then
|
||||
AC_MSG_ERROR([Failed to determine Xcode version.])
|
||||
@@ -918,14 +918,18 @@ AC_DEFUN_ONCE([TOOLCHAIN_SETUP_BUILD_COMPILERS],
|
||||
. $CONFIGURESUPPORT_OUTPUTDIR/build-devkit.info
|
||||
# This potentially sets the following:
|
||||
# A descriptive name of the devkit
|
||||
BASIC_EVAL_DEVKIT_VARIABLE([BUILD_DEVKIT_NAME])
|
||||
BASIC_EVAL_BUILD_DEVKIT_VARIABLE([BUILD_DEVKIT_NAME])
|
||||
# Corresponds to --with-extra-path
|
||||
BASIC_EVAL_DEVKIT_VARIABLE([BUILD_DEVKIT_EXTRA_PATH])
|
||||
BASIC_EVAL_BUILD_DEVKIT_VARIABLE([BUILD_DEVKIT_EXTRA_PATH])
|
||||
# Corresponds to --with-toolchain-path
|
||||
BASIC_EVAL_DEVKIT_VARIABLE([BUILD_DEVKIT_TOOLCHAIN_PATH])
|
||||
BASIC_EVAL_BUILD_DEVKIT_VARIABLE([BUILD_DEVKIT_TOOLCHAIN_PATH])
|
||||
# Corresponds to --with-sysroot
|
||||
BASIC_EVAL_DEVKIT_VARIABLE([BUILD_DEVKIT_SYSROOT])
|
||||
# Skip the Window specific parts
|
||||
BASIC_EVAL_BUILD_DEVKIT_VARIABLE([BUILD_DEVKIT_SYSROOT])
|
||||
|
||||
if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
|
||||
BASIC_EVAL_BUILD_DEVKIT_VARIABLE([BUILD_DEVKIT_VS_INCLUDE])
|
||||
BASIC_EVAL_BUILD_DEVKIT_VARIABLE([BUILD_DEVKIT_VS_LIB])
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_MSG_CHECKING([for build platform devkit])
|
||||
@@ -935,13 +939,22 @@ AC_DEFUN_ONCE([TOOLCHAIN_SETUP_BUILD_COMPILERS],
|
||||
AC_MSG_RESULT([$BUILD_DEVKIT_ROOT])
|
||||
fi
|
||||
|
||||
BUILD_SYSROOT="$BUILD_DEVKIT_SYSROOT"
|
||||
PATH="$BUILD_DEVKIT_EXTRA_PATH:$PATH"
|
||||
|
||||
# Fallback default of just /bin if DEVKIT_PATH is not defined
|
||||
# Fallback default of just /bin if DEVKIT_PATH is not defined
|
||||
if test "x$BUILD_DEVKIT_TOOLCHAIN_PATH" = x; then
|
||||
BUILD_DEVKIT_TOOLCHAIN_PATH="$BUILD_DEVKIT_ROOT/bin"
|
||||
fi
|
||||
PATH="$BUILD_DEVKIT_TOOLCHAIN_PATH:$BUILD_DEVKIT_EXTRA_PATH"
|
||||
PATH="$BUILD_DEVKIT_TOOLCHAIN_PATH:$PATH"
|
||||
|
||||
BUILD_SYSROOT="$BUILD_DEVKIT_SYSROOT"
|
||||
|
||||
if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
|
||||
BUILD_VS_INCLUDE="$BUILD_DEVKIT_VS_INCLUDE"
|
||||
BUILD_VS_LIB="$BUILD_DEVKIT_VS_LIB"
|
||||
|
||||
TOOLCHAIN_SETUP_VISUAL_STUDIO_SYSROOT_FLAGS([BUILD_])
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -967,9 +980,37 @@ AC_DEFUN_ONCE([TOOLCHAIN_SETUP_BUILD_COMPILERS],
|
||||
BASIC_FIXUP_EXECUTABLE(BUILD_STRIP)
|
||||
# Assume the C compiler is the assembler
|
||||
BUILD_AS="$BUILD_CC -c"
|
||||
# Just like for the target compiler, use the compiler as linker
|
||||
BUILD_LD="$BUILD_CC"
|
||||
BUILD_LDCXX="$BUILD_CXX"
|
||||
if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
|
||||
# In the Microsoft toolchain we have a separate LD command "link".
|
||||
# Make sure we reject /usr/bin/link (as determined in CYGWIN_LINK), which is
|
||||
# a cygwin program for something completely different.
|
||||
AC_CHECK_PROG([BUILD_LD], [link$EXE_SUFFIX],[link$EXE_SUFFIX],,, [$CYGWIN_LINK])
|
||||
BASIC_FIXUP_EXECUTABLE(BUILD_LD)
|
||||
# Verify that we indeed succeeded with this trick.
|
||||
AC_MSG_CHECKING([if the found link.exe is actually the Visual Studio linker])
|
||||
|
||||
# Reset PATH since it can contain a mix of WSL/linux paths and Windows paths from VS,
|
||||
# which, in combination with WSLENV, will make the WSL layer complain
|
||||
old_path="$PATH"
|
||||
PATH=
|
||||
|
||||
"$BUILD_LD" --version > /dev/null
|
||||
|
||||
if test $? -eq 0 ; then
|
||||
AC_MSG_RESULT([no])
|
||||
AC_MSG_ERROR([This is the Cygwin link tool. Please check your PATH and rerun configure.])
|
||||
else
|
||||
AC_MSG_RESULT([yes])
|
||||
fi
|
||||
|
||||
PATH="$old_path"
|
||||
|
||||
BUILD_LDCXX="$BUILD_LD"
|
||||
else
|
||||
# Just like for the target compiler, use the compiler as linker
|
||||
BUILD_LD="$BUILD_CC"
|
||||
BUILD_LDCXX="$BUILD_CXX"
|
||||
fi
|
||||
|
||||
PATH="$OLDPATH"
|
||||
|
||||
@@ -1025,6 +1066,10 @@ AC_DEFUN_ONCE([TOOLCHAIN_MISC_CHECKS],
|
||||
if test "x$COMPILER_CPU_TEST" != "xx64"; then
|
||||
AC_MSG_ERROR([Target CPU mismatch. We are building for $OPENJDK_TARGET_CPU but CL is for "$COMPILER_CPU_TEST"; expected "x64".])
|
||||
fi
|
||||
elif test "x$OPENJDK_TARGET_CPU" = "xaarch64"; then
|
||||
if test "x$COMPILER_CPU_TEST" != "xARM64"; then
|
||||
AC_MSG_ERROR([Target CPU mismatch. We are building for $OPENJDK_TARGET_CPU but CL is for "$COMPILER_CPU_TEST"; expected "arm64".])
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
@@ -126,11 +126,15 @@ AC_DEFUN([TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT],
|
||||
|
||||
if test -d "$VS_BASE"; then
|
||||
AC_MSG_NOTICE([Found Visual Studio installation at $VS_BASE using $METHOD])
|
||||
if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
|
||||
if test "x$OPENJDK_TARGET_CPU" = xx86; then
|
||||
VCVARSFILES="vc/bin/vcvars32.bat vc/auxiliary/build/vcvars32.bat"
|
||||
else
|
||||
elif test "x$OPENJDK_TARGET_CPU" = xx86_64; then
|
||||
VCVARSFILES="vc/bin/amd64/vcvars64.bat vc/bin/x86_amd64/vcvarsx86_amd64.bat \
|
||||
vc/auxiliary/build/vcvarsx86_amd64.bat vc/auxiliary/build/vcvars64.bat"
|
||||
elif test "x$OPENJDK_TARGET_CPU" = xaarch64; then
|
||||
# for host x86-64, target aarch64
|
||||
VCVARSFILES="vc/auxiliary/build/vcvarsamd64_arm64.bat \
|
||||
vc/auxiliary/build/vcvarsx86_arm64.bat"
|
||||
fi
|
||||
|
||||
for VCVARSFILE in $VCVARSFILES; do
|
||||
@@ -170,10 +174,12 @@ AC_DEFUN([TOOLCHAIN_CHECK_POSSIBLE_WIN_SDK_ROOT],
|
||||
elif test -f "$WIN_SDK_BASE/Bin/SetEnv.Cmd"; then
|
||||
AC_MSG_NOTICE([Found Windows SDK installation at $WIN_SDK_BASE using $METHOD])
|
||||
VS_ENV_CMD="$WIN_SDK_BASE/Bin/SetEnv.Cmd"
|
||||
if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
|
||||
if test "x$OPENJDK_TARGET_CPU" = xx86; then
|
||||
VS_ENV_ARGS="/x86"
|
||||
else
|
||||
elif test "x$OPENJDK_TARGET_CPU" = xx86_64; then
|
||||
VS_ENV_ARGS="/x64"
|
||||
elif test "x$OPENJDK_TARGET_CPU" = xaarch64; then
|
||||
VS_ENV_ARGS="/arm64"
|
||||
fi
|
||||
# PLATFORM_TOOLSET is used during the compilation of the freetype sources (see
|
||||
# 'LIB_BUILD_FREETYPE' in libraries.m4) and must be 'Windows7.1SDK' for Windows7.1SDK
|
||||
@@ -489,41 +495,7 @@ AC_DEFUN([TOOLCHAIN_SETUP_VISUAL_STUDIO_ENV],
|
||||
AC_SUBST(VS_INCLUDE)
|
||||
AC_SUBST(VS_LIB)
|
||||
|
||||
# Convert VS_INCLUDE into SYSROOT_CFLAGS
|
||||
OLDIFS="$IFS"
|
||||
IFS=";"
|
||||
for i in $VS_INCLUDE; do
|
||||
ipath=$i
|
||||
# Only process non-empty elements
|
||||
if test "x$ipath" != x; then
|
||||
IFS="$OLDIFS"
|
||||
# Check that directory exists before calling fixup_path
|
||||
testpath=$ipath
|
||||
BASIC_WINDOWS_REWRITE_AS_UNIX_PATH([testpath])
|
||||
if test -d "$testpath"; then
|
||||
BASIC_FIXUP_PATH([ipath])
|
||||
SYSROOT_CFLAGS="$SYSROOT_CFLAGS -I$ipath"
|
||||
fi
|
||||
IFS=";"
|
||||
fi
|
||||
done
|
||||
# Convert VS_LIB into SYSROOT_LDFLAGS
|
||||
for i in $VS_LIB; do
|
||||
libpath=$i
|
||||
# Only process non-empty elements
|
||||
if test "x$libpath" != x; then
|
||||
IFS="$OLDIFS"
|
||||
# Check that directory exists before calling fixup_path
|
||||
testpath=$libpath
|
||||
BASIC_WINDOWS_REWRITE_AS_UNIX_PATH([testpath])
|
||||
if test -d "$testpath"; then
|
||||
BASIC_FIXUP_PATH([libpath])
|
||||
SYSROOT_LDFLAGS="$SYSROOT_LDFLAGS -libpath:$libpath"
|
||||
fi
|
||||
IFS=";"
|
||||
fi
|
||||
done
|
||||
IFS="$OLDIFS"
|
||||
TOOLCHAIN_SETUP_VISUAL_STUDIO_SYSROOT_FLAGS
|
||||
fi
|
||||
else
|
||||
AC_MSG_RESULT([not found])
|
||||
@@ -560,10 +532,15 @@ AC_DEFUN([TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL],
|
||||
CORRECT_MSVCR_ARCH="PE32+ executable"
|
||||
fi
|
||||
else
|
||||
if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
|
||||
if test "x$OPENJDK_TARGET_CPU" = xx86; then
|
||||
CORRECT_MSVCR_ARCH=386
|
||||
else
|
||||
elif test "x$OPENJDK_TARGET_CPU" = xx86_64; then
|
||||
CORRECT_MSVCR_ARCH=x86-64
|
||||
elif test "x$OPENJDK_TARGET_CPU" = xaarch64; then
|
||||
# The cygwin 'file' command only returns "PE32+ executable (DLL) (console), for MS Windows",
|
||||
# without specifying which architecture it is for specifically. This has been fixed upstream.
|
||||
# https://github.com/file/file/commit/b849b1af098ddd530094bf779b58431395db2e10#diff-ff2eced09e6860de75057dd731d092aeR142
|
||||
CORRECT_MSVCR_ARCH="PE32+ executable"
|
||||
fi
|
||||
fi
|
||||
if $ECHO "$MSVC_DLL_FILETYPE" | $GREP "$CORRECT_MSVCR_ARCH" 2>&1 > /dev/null; then
|
||||
@@ -583,26 +560,26 @@ AC_DEFUN([TOOLCHAIN_SETUP_MSVC_DLL],
|
||||
DLL_NAME="$1"
|
||||
MSVC_DLL=
|
||||
|
||||
if test "x$OPENJDK_TARGET_CPU" = xx86; then
|
||||
vs_target_cpu=x86
|
||||
elif test "x$OPENJDK_TARGET_CPU" = xx86_64; then
|
||||
vs_target_cpu=x64
|
||||
elif test "x$OPENJDK_TARGET_CPU" = xaarch64; then
|
||||
vs_target_cpu=arm64
|
||||
fi
|
||||
|
||||
if test "x$MSVC_DLL" = x; then
|
||||
if test "x$VCINSTALLDIR" != x; then
|
||||
CYGWIN_VC_INSTALL_DIR="$VCINSTALLDIR"
|
||||
BASIC_FIXUP_PATH(CYGWIN_VC_INSTALL_DIR)
|
||||
if test "$VS_VERSION" -lt 2017; then
|
||||
# Probe: Using well-known location from Visual Studio 12.0 and older
|
||||
if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
|
||||
POSSIBLE_MSVC_DLL="$CYGWIN_VC_INSTALL_DIR/redist/x64/Microsoft.VC${VS_VERSION_INTERNAL}.CRT/$DLL_NAME"
|
||||
else
|
||||
POSSIBLE_MSVC_DLL="$CYGWIN_VC_INSTALL_DIR/redist/x86/Microsoft.VC${VS_VERSION_INTERNAL}.CRT/$DLL_NAME"
|
||||
fi
|
||||
POSSIBLE_MSVC_DLL="$CYGWIN_VC_INSTALL_DIR/redist/$vs_target_cpu/Microsoft.VC${VS_VERSION_INTERNAL}.CRT/$DLL_NAME"
|
||||
else
|
||||
CYGWIN_VC_TOOLS_REDIST_DIR="$VCToolsRedistDir"
|
||||
BASIC_FIXUP_PATH(CYGWIN_VC_TOOLS_REDIST_DIR)
|
||||
# Probe: Using well-known location from VS 2017 and VS 2019
|
||||
if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
|
||||
POSSIBLE_MSVC_DLL="`ls $CYGWIN_VC_TOOLS_REDIST_DIR/x64/Microsoft.VC${VS_VERSION_INTERNAL}.CRT/$DLL_NAME`"
|
||||
else
|
||||
POSSIBLE_MSVC_DLL="`ls $CYGWIN_VC_TOOLS_REDIST_DIR/x86/Microsoft.VC${VS_VERSION_INTERNAL}.CRT/$DLL_NAME`"
|
||||
fi
|
||||
POSSIBLE_MSVC_DLL="`ls $CYGWIN_VC_TOOLS_REDIST_DIR/$vs_target_cpu/Microsoft.VC${VS_VERSION_INTERNAL}.CRT/$DLL_NAME`"
|
||||
fi
|
||||
# In case any of the above finds more than one file, loop over them.
|
||||
for possible_msvc_dll in $POSSIBLE_MSVC_DLL; do
|
||||
@@ -634,13 +611,8 @@ AC_DEFUN([TOOLCHAIN_SETUP_MSVC_DLL],
|
||||
if test "x$VS100COMNTOOLS" != x; then
|
||||
CYGWIN_VS_TOOLS_DIR="$VS100COMNTOOLS/.."
|
||||
BASIC_WINDOWS_REWRITE_AS_UNIX_PATH(CYGWIN_VS_TOOLS_DIR)
|
||||
if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
|
||||
POSSIBLE_MSVC_DLL=`$FIND "$CYGWIN_VS_TOOLS_DIR" -name $DLL_NAME \
|
||||
| $GREP -i /x64/ | $HEAD --lines 1`
|
||||
else
|
||||
POSSIBLE_MSVC_DLL=`$FIND "$CYGWIN_VS_TOOLS_DIR" -name $DLL_NAME \
|
||||
| $GREP -i /x86/ | $HEAD --lines 1`
|
||||
fi
|
||||
POSSIBLE_MSVC_DLL=`$FIND "$CYGWIN_VS_TOOLS_DIR" -name $DLL_NAME \
|
||||
| $GREP -i /$vs_target_cpu/ | $HEAD --lines 1`
|
||||
TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL([$DLL_NAME], [$POSSIBLE_MSVC_DLL],
|
||||
[search of VS100COMNTOOLS])
|
||||
fi
|
||||
@@ -650,17 +622,17 @@ AC_DEFUN([TOOLCHAIN_SETUP_MSVC_DLL],
|
||||
# Probe: Search wildly in the VCINSTALLDIR. We've probably lost by now.
|
||||
# (This was the original behaviour; kept since it might turn something up)
|
||||
if test "x$CYGWIN_VC_INSTALL_DIR" != x; then
|
||||
if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
|
||||
if test "x$OPENJDK_TARGET_CPU" = xx86; then
|
||||
POSSIBLE_MSVC_DLL=`$FIND "$CYGWIN_VC_INSTALL_DIR" -name $DLL_NAME \
|
||||
| $GREP x64 | $HEAD --lines 1`
|
||||
else
|
||||
POSSIBLE_MSVC_DLL=`$FIND "$CYGWIN_VC_INSTALL_DIR" -name $DLL_NAME \
|
||||
| $GREP x86 | $GREP -v ia64 | $GREP -v x64 | $HEAD --lines 1`
|
||||
| $GREP x86 | $GREP -v ia64 | $GREP -v x64 | $GREP -v arm64 | $HEAD --lines 1`
|
||||
if test "x$POSSIBLE_MSVC_DLL" = x; then
|
||||
# We're grasping at straws now...
|
||||
POSSIBLE_MSVC_DLL=`$FIND "$CYGWIN_VC_INSTALL_DIR" -name $DLL_NAME \
|
||||
| $HEAD --lines 1`
|
||||
fi
|
||||
else
|
||||
POSSIBLE_MSVC_DLL=`$FIND "$CYGWIN_VC_INSTALL_DIR" -name $DLL_NAME \
|
||||
| $GREP $vs_target_cpu | $HEAD --lines 1`
|
||||
fi
|
||||
|
||||
TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL([$DLL_NAME], [$POSSIBLE_MSVC_DLL],
|
||||
@@ -744,8 +716,12 @@ AC_DEFUN([TOOLCHAIN_SETUP_VS_RUNTIME_DLLS],
|
||||
CYGWIN_WINDOWSSDKDIR="${WINDOWSSDKDIR}"
|
||||
BASIC_FIXUP_PATH([CYGWIN_WINDOWSSDKDIR])
|
||||
dll_subdir=$OPENJDK_TARGET_CPU
|
||||
if test "x$dll_subdir" = "xx86_64"; then
|
||||
if test "x$OPENJDK_TARGET_CPU" = "xaarch64"; then
|
||||
dll_subdir="arm64"
|
||||
elif test "x$OPENJDK_TARGET_CPU" = "xx86_64"; then
|
||||
dll_subdir="x64"
|
||||
elif test "x$OPENJDK_TARGET_CPU" = "xx86"; then
|
||||
dll_subdir="x86"
|
||||
fi
|
||||
UCRT_DLL_DIR="$CYGWIN_WINDOWSSDKDIR/Redist/ucrt/DLLs/$dll_subdir"
|
||||
if test -z "$(ls -d "$UCRT_DLL_DIR/"*.dll 2> /dev/null)"; then
|
||||
@@ -768,3 +744,49 @@ AC_DEFUN([TOOLCHAIN_SETUP_VS_RUNTIME_DLLS],
|
||||
fi
|
||||
AC_SUBST(UCRT_DLL_DIR)
|
||||
])
|
||||
|
||||
# Setup the sysroot flags and add them to global CFLAGS and LDFLAGS so
|
||||
# that configure can use them while detecting compilers.
|
||||
# TOOLCHAIN_TYPE is available here.
|
||||
# Param 1 - Optional prefix to all variables. (e.g BUILD_)
|
||||
AC_DEFUN([TOOLCHAIN_SETUP_VISUAL_STUDIO_SYSROOT_FLAGS],
|
||||
[
|
||||
# Convert $1VS_INCLUDE into $1SYSROOT_CFLAGS
|
||||
OLDIFS="$IFS"
|
||||
IFS=";"
|
||||
for i in [$]$1VS_INCLUDE; do
|
||||
ipath=$i
|
||||
# Only process non-empty elements
|
||||
if test "x$ipath" != x; then
|
||||
IFS="$OLDIFS"
|
||||
# Check that directory exists before calling fixup_path
|
||||
testpath=$ipath
|
||||
BASIC_WINDOWS_REWRITE_AS_UNIX_PATH([testpath])
|
||||
if test -d "$testpath"; then
|
||||
BASIC_FIXUP_PATH([ipath])
|
||||
$1SYSROOT_CFLAGS="[$]$1SYSROOT_CFLAGS -I$ipath"
|
||||
fi
|
||||
IFS=";"
|
||||
fi
|
||||
done
|
||||
# Convert $1VS_LIB into $1SYSROOT_LDFLAGS
|
||||
for i in [$]$1VS_LIB; do
|
||||
libpath=$i
|
||||
# Only process non-empty elements
|
||||
if test "x$libpath" != x; then
|
||||
IFS="$OLDIFS"
|
||||
# Check that directory exists before calling fixup_path
|
||||
testpath=$libpath
|
||||
BASIC_WINDOWS_REWRITE_AS_UNIX_PATH([testpath])
|
||||
if test -d "$testpath"; then
|
||||
BASIC_FIXUP_PATH([libpath])
|
||||
$1SYSROOT_LDFLAGS="[$]$1SYSROOT_LDFLAGS -libpath:$libpath"
|
||||
fi
|
||||
IFS=";"
|
||||
fi
|
||||
done
|
||||
IFS="$OLDIFS"
|
||||
|
||||
AC_SUBST($1SYSROOT_CFLAGS)
|
||||
AC_SUBST($1SYSROOT_LDFLAGS)
|
||||
])
|
||||
|
||||
@@ -28,12 +28,12 @@
|
||||
|
||||
DEFAULT_VERSION_FEATURE=11
|
||||
DEFAULT_VERSION_INTERIM=0
|
||||
DEFAULT_VERSION_UPDATE=13
|
||||
DEFAULT_VERSION_UPDATE=15
|
||||
DEFAULT_VERSION_PATCH=0
|
||||
DEFAULT_VERSION_EXTRA1=0
|
||||
DEFAULT_VERSION_EXTRA2=0
|
||||
DEFAULT_VERSION_EXTRA3=0
|
||||
DEFAULT_VERSION_DATE=2021-10-19
|
||||
DEFAULT_VERSION_DATE=2022-04-19
|
||||
DEFAULT_VERSION_CLASSFILE_MAJOR=55 # "`$EXPR $DEFAULT_VERSION_FEATURE + 44`"
|
||||
DEFAULT_VERSION_CLASSFILE_MINOR=0
|
||||
DEFAULT_ACCEPTABLE_BOOT_VERSIONS="10 11"
|
||||
|
||||
@@ -121,7 +121,7 @@ define add_file_to_clean
|
||||
$1_CLEAN_$$($2_TARGET) := 1
|
||||
$$($1_BIN)$$($1_MODULE_SUBDIR)$$($2_TARGET) : $2
|
||||
$(MKDIR) -p $$(@D)
|
||||
export LC_ALL=C ; ( $(CAT) $$< && $(ECHO) "" ) \
|
||||
( $(CAT) $$< && $(ECHO) "" ) \
|
||||
| $(SED) -e 's/\([^\\]\):/\1\\:/g' -e 's/\([^\\]\)=/\1\\=/g' \
|
||||
-e 's/\([^\\]\)!/\1\\!/g' -e 's/^[ ]*#.*/#/g' \
|
||||
| $(SED) -f "$(TOPDIR)/make/common/support/unicode2x.sed" \
|
||||
|
||||
@@ -1213,7 +1213,7 @@ define SetupNativeCompilationBody
|
||||
# This only works if the openjdk_codesign identity is present on the system. Let
|
||||
# silently fail otherwise.
|
||||
ifneq ($(CODESIGN), )
|
||||
$(CODESIGN) -s "$(MACOSX_CODESIGN_IDENTITY)" --timestamp --options runtime \
|
||||
$(CODESIGN) -f -s "$(MACOSX_CODESIGN_IDENTITY)" --timestamp --options runtime \
|
||||
--entitlements $$(call GetEntitlementsFile, $$@) $$@
|
||||
endif
|
||||
endif
|
||||
|
||||
@@ -60,14 +60,16 @@ define SetupTestFilesCompilationBody
|
||||
ifeq ($$($1_TYPE), LIBRARY)
|
||||
$1_PREFIX = lib
|
||||
$1_OUTPUT_SUBDIR := lib
|
||||
$1_CFLAGS := $(CFLAGS_TESTLIB)
|
||||
$1_LDFLAGS := $(LDFLAGS_TESTLIB) $(call SET_SHARED_LIBRARY_ORIGIN)
|
||||
$1_BASE_CFLAGS := $(CFLAGS_JDKLIB)
|
||||
$1_BASE_CXXFLAGS := $(CXXFLAGS_JDKLIB)
|
||||
$1_LDFLAGS := $(LDFLAGS_JDKLIB) $(call SET_SHARED_LIBRARY_ORIGIN)
|
||||
$1_COMPILATION_TYPE := LIBRARY
|
||||
else ifeq ($$($1_TYPE), PROGRAM)
|
||||
$1_PREFIX = exe
|
||||
$1_OUTPUT_SUBDIR := bin
|
||||
$1_CFLAGS := $(CFLAGS_TESTEXE)
|
||||
$1_LDFLAGS := $(LDFLAGS_TESTEXE)
|
||||
$1_BASE_CFLAGS := $(CFLAGS_JDKEXE)
|
||||
$1_BASE_CXXFLAGS := $(CXXFLAGS_JDKEXE)
|
||||
$1_LDFLAGS := $(LDFLAGS_JDKEXE) $(LDFLAGS_TESTEXE)
|
||||
$1_COMPILATION_TYPE := EXECUTABLE
|
||||
else
|
||||
$$(error Unknown type: $$($1_TYPE))
|
||||
@@ -75,7 +77,7 @@ define SetupTestFilesCompilationBody
|
||||
|
||||
# Locate all files with the matching prefix
|
||||
$1_FILE_LIST := \
|
||||
$$(call FindFiles, $$($1_SOURCE_DIRS), $$($1_PREFIX)*.c $$($1_PREFIX)*.m)
|
||||
$$(call FindFiles, $$($1_SOURCE_DIRS), $$($1_PREFIX)*.c $$($1_PREFIX)*.cpp $$($1_PREFIX)*.m)
|
||||
|
||||
$1_EXCLUDE_PATTERN := $$(addprefix %/, $$($1_EXCLUDE))
|
||||
$1_FILTERED_FILE_LIST := $$(filter-out $$($1_EXCLUDE_PATTERN), $$($1_FILE_LIST))
|
||||
@@ -91,9 +93,13 @@ define SetupTestFilesCompilationBody
|
||||
INCLUDE_FILES := $$(notdir $$(file)), \
|
||||
OBJECT_DIR := $$($1_OUTPUT_DIR)/support/$$(name), \
|
||||
OUTPUT_DIR := $$($1_OUTPUT_DIR)/$$($1_OUTPUT_SUBDIR), \
|
||||
CFLAGS := $$($1_CFLAGS) $$($1_CFLAGS_$$(name)), \
|
||||
CFLAGS := $$($1_BASE_CFLAGS) $$($1_CFLAGS) $$($1_CFLAGS_$$(name)), \
|
||||
CXXFLAGS := $$($1_BASE_CXXFLAGS) $$($1_CFLAGS) $$($1_CFLAGS_$$(name)), \
|
||||
LDFLAGS := $$($1_LDFLAGS) $$($1_LDFLAGS_$$(name)), \
|
||||
DISABLED_WARNINGS_CXX_solstudio := wvarhidenmem, \
|
||||
DISABLED_WARNINGS_CXX_gcc := format, \
|
||||
LIBS := $$($1_LIBS_$$(name)), \
|
||||
TOOLCHAIN := $(if $$(filter %.cpp, $$(file)), TOOLCHAIN_LINK_CXX, TOOLCHAIN_DEFAULT), \
|
||||
OPTIMIZATION := $$(if $$($1_OPTIMIZATION_$$(name)),$$($1_OPTIMIZATION_$$(name)),LOW), \
|
||||
COPY_DEBUG_SYMBOLS := false, \
|
||||
STRIP_SYMBOLS := false, \
|
||||
|
||||
@@ -242,7 +242,7 @@ var getJibProfilesCommon = function (input, data) {
|
||||
dependencies: ["boot_jdk", "gnumake", "jtreg", "jib", "autoconf"],
|
||||
default_make_targets: ["product-bundles", "test-bundles", "static-libs-bundles"],
|
||||
configure_args: concat(["--enable-jtreg-failure-handler"],
|
||||
"--with-exclude-translations=de,es,fr,it,ko,pt_BR,sv,ca,tr,cs,sk,ja_JP_A,ja_JP_HA,ja_JP_HI,ja_JP_I,zh_TW,zh_HK",
|
||||
"--with-exclude-translations=es,fr,it,ko,pt_BR,sv,ca,tr,cs,sk,ja_JP_A,ja_JP_HA,ja_JP_HI,ja_JP_I,zh_TW,zh_HK",
|
||||
"--disable-manpages",
|
||||
versionArgs(input, common))
|
||||
};
|
||||
@@ -854,7 +854,7 @@ var getJibProfilesDependencies = function (input, common) {
|
||||
|
||||
var devkit_platform_revisions = {
|
||||
linux_x64: "gcc7.3.0-OEL6.4+1.1",
|
||||
macosx_x64: "Xcode9.4-MacOSX10.13+1.0",
|
||||
macosx_x64: "Xcode11.3.1-MacOSX10.15+1.0",
|
||||
solaris_x64: "SS12u4-Solaris11u1+1.0",
|
||||
solaris_sparcv9: "SS12u4-Solaris11u1+1.1",
|
||||
windows_x64: "VS2017-15.9.16+1.0",
|
||||
|
||||
@@ -1,749 +0,0 @@
|
||||
#! java BlacklistedCertsConverter SHA-256
|
||||
|
||||
# The line above must be the first line of this file. Do not
|
||||
# remove it.
|
||||
|
||||
// Subject: CN=Digisign Server ID (Enrich),
|
||||
// OU=457608-K,
|
||||
// O=Digicert Sdn. Bhd.,
|
||||
// C=MY
|
||||
// Issuer: CN=GTE CyberTrust Global Root,
|
||||
// OU=GTE CyberTrust Solutions, Inc.,
|
||||
// O=GTE Corporation,
|
||||
// C=US
|
||||
// Serial: 120001705 (07:27:14:a9)
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDyzCCAzSgAwIBAgIEBycUqTANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQGEwJV
|
||||
UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU
|
||||
cnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEds
|
||||
b2JhbCBSb290MB4XDTA3MDcxNzE1MTc0OFoXDTEyMDcxNzE1MTY1NFowYzELMAkG
|
||||
A1UEBhMCTVkxGzAZBgNVBAoTEkRpZ2ljZXJ0IFNkbi4gQmhkLjERMA8GA1UECxMI
|
||||
NDU3NjA4LUsxJDAiBgNVBAMTG0RpZ2lzaWduIFNlcnZlciBJRCAoRW5yaWNoKTCB
|
||||
nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEArahkS02Hx4RZufuQRqCmicDx/tXa
|
||||
VII3DZkrRSYK6Fawf8qo9I5HhAGCKeOzarWR8/uVhbxyqGToCkCcxfRxrnt7agfq
|
||||
kBRPjYmvlKuyBtQCanuYH1m5Os1U+iDfsioK6bjdaZDAKdNO0JftZszFGUkGf/pe
|
||||
LHx7hRsyQt97lSUCAwEAAaOCAXgwggF0MBIGA1UdEwEB/wQIMAYBAf8CAQAwXAYD
|
||||
VR0gBFUwUzBIBgkrBgEEAbE+AQAwOzA5BggrBgEFBQcCARYtaHR0cDovL2N5YmVy
|
||||
dHJ1c3Qub21uaXJvb3QuY29tL3JlcG9zaXRvcnkuY2ZtMAcGBWCDSgEBMA4GA1Ud
|
||||
DwEB/wQEAwIB5jCBiQYDVR0jBIGBMH+heaR3MHUxCzAJBgNVBAYTAlVTMRgwFgYD
|
||||
VQQKEw9HVEUgQ29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNv
|
||||
bHV0aW9ucywgSW5jLjEjMCEGA1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJv
|
||||
b3SCAgGlMEUGA1UdHwQ+MDwwOqA4oDaGNGh0dHA6Ly93d3cucHVibGljLXRydXN0
|
||||
LmNvbS9jZ2ktYmluL0NSTC8yMDE4L2NkcC5jcmwwHQYDVR0OBBYEFMYWk04WF+wW
|
||||
royUdvOGbcV0boR3MA0GCSqGSIb3DQEBBQUAA4GBAHYAe6Z4K2Ydjl42xqSOBfIj
|
||||
knyTZ9P0wAp9iy3Z6tVvGvPhSilaIoRNUC9LDPL/hcJ7VdREgr5trGeOvLQfkpxR
|
||||
gBoU9m6rYYgLrRx/90tQUdZlG6ZHcRVesHHzNRTyN71jyNXwk1o0X9g96F33xR7A
|
||||
5c8fhiSpPAdmzcHSNmNZ
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
// Subject: CN=Digisign Server ID - (Enrich),
|
||||
// OU=457608-K,
|
||||
// O=Digicert Sdn. Bhd.,
|
||||
// C=MY
|
||||
// Issuer: CN=Entrust.net Certification Authority (2048)
|
||||
// OU=(c) 1999 Entrust.net Limited,
|
||||
// OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.),
|
||||
// O=Entrust.net
|
||||
// Serial: 1184644297 (4c:0e:63:6a)
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEzjCCA7agAwIBAgIETA5jajANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChML
|
||||
RW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBp
|
||||
bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5
|
||||
IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENlcnRp
|
||||
ZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw0xMDA3MTYxNzIzMzdaFw0xNTA3
|
||||
MTYxNzUzMzdaMGUxCzAJBgNVBAYTAk1ZMRswGQYDVQQKExJEaWdpY2VydCBTZG4u
|
||||
IEJoZC4xETAPBgNVBAsTCDQ1NzYwOC1LMSYwJAYDVQQDEx1EaWdpc2lnbiBTZXJ2
|
||||
ZXIgSUQgLSAoRW5yaWNoKTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
|
||||
AMWJ5PQNBkCSWccaszXRDkwqM/n4r8qef+65p21g9FTob9Wb8xtjMQRoctE0Foy0
|
||||
FyyX3nPF2JAVoBor9cuzSIZE8B2ITM5BQhrv9Qze/kDaOSD3BlU6ap1GwdJvpbLI
|
||||
Vz4po5zg6YV3ZuiYpyR+vsBZIOVEb7ZX2L7OwmV3WMZhQdF0BMh/SULFcqlyFu6M
|
||||
3RJdtErU0a9Qt9iqdXZorT5dqjBtYairEFs+E78z4K9EnTgiW+9ML6ZxJhUmyiiM
|
||||
2fqOjqmiFDXimySItPR/hZ2DTwehthSQNsQ0HI0mYW0Tb3i+6I8nx0uElqOGaAwj
|
||||
vgvsjJQAqQSKE5D334VsDLECAwEAAaOCATQwggEwMA4GA1UdDwEB/wQEAwIBBjAS
|
||||
BgNVHRMBAf8ECDAGAQH/AgEAMCcGA1UdJQQgMB4GCCsGAQUFBwMBBggrBgEFBQcD
|
||||
AgYIKwYBBQUHAwQwMwYIKwYBBQUHAQEEJzAlMCMGCCsGAQUFBzABhhdodHRwOi8v
|
||||
b2NzcC5lbnRydXN0Lm5ldDBEBgNVHSAEPTA7MDkGBWCDSgEBMDAwLgYIKwYBBQUH
|
||||
AgEWImh0dHA6Ly93d3cuZGlnaWNlcnQuY29tLm15L2Nwcy5odG0wMgYDVR0fBCsw
|
||||
KTAnoCWgI4YhaHR0cDovL2NybC5lbnRydXN0Lm5ldC8yMDQ4Y2EuY3JsMBEGA1Ud
|
||||
DgQKBAhMTswlKAMpgTAfBgNVHSMEGDAWgBRV5IHREYC+2Im5CKMx+aEkCRa5cDAN
|
||||
BgkqhkiG9w0BAQUFAAOCAQEAl0zvSjpJrHL8MCBrtClbp8WVBJD5MtXChWreA6E3
|
||||
+YkAsFqsVX7bQzX/yQH4Ub7MJsrIaqTEVD4mHucMo82XZ5TdpkLrXM2POXlrM3kh
|
||||
Bnn6gkQVmczBtznTRmJ8snDrb84gqj4Zt+l0gpy0pUtNYQA35IfS8hQ6ZHy4qXth
|
||||
4JMi59WfPkfmNnagU9gAAzoPtTP+lsrT0oI6Lt3XSOHkp2nMHOmZSufKcEXXCwcO
|
||||
mnUb0C+Sb/akB8O9HEumhLZ9qJqp0qcp8QtXaR6XVybsK0Os1EWDBQDp4/BGQAf6
|
||||
6rFRc5Mcpd1TETfIKqcVJx20qsx/qjEw/LhFn0gJ7RDixQ==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
// Subject: CN=Java Media APIs,
|
||||
// OU=Java Signed Extensions,
|
||||
// OU=Corporate Object Signing,
|
||||
// O=Sun Microsystems Inc
|
||||
// Issuer: CN=Object Signing CA,
|
||||
// OU=Class 2 OnSite Subscriber CA,
|
||||
// OU=VeriSign Trust Network,
|
||||
// O=Sun Microsystems Inc
|
||||
// Serial: 6a:8b:99:91:37:59:4f:89:53:e2:97:18:9f:19:1e:4e
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFdzCCBF+gAwIBAgIQaouZkTdZT4lT4pcYnxkeTjANBgkqhkiG9w0BAQUFADCB
|
||||
gzEdMBsGA1UEChMUU3VuIE1pY3Jvc3lzdGVtcyBJbmMxHzAdBgNVBAsTFlZlcmlT
|
||||
aWduIFRydXN0IE5ldHdvcmsxJTAjBgNVBAsTHENsYXNzIDIgT25TaXRlIFN1YnNj
|
||||
cmliZXIgQ0ExGjAYBgNVBAMTEU9iamVjdCBTaWduaW5nIENBMB4XDTA5MDUxMjAw
|
||||
MDAwMFoXDTEyMDUxMTIzNTk1OVowfTEdMBsGA1UEChQUU3VuIE1pY3Jvc3lzdGVt
|
||||
cyBJbmMxITAfBgNVBAsUGENvcnBvcmF0ZSBPYmplY3QgU2lnbmluZzEfMB0GA1UE
|
||||
CxQWSmF2YSBTaWduZWQgRXh0ZW5zaW9uczEYMBYGA1UEAxQPSmF2YSBNZWRpYSBB
|
||||
UElzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAl5blzoKTVE8y4Hpz
|
||||
q6E15RZz1bF5HnYEyYqgHkZXnAKedmYCoMzm1XK8s+gQWShLEvGEAvs5yqarx9gE
|
||||
nnC21N28aEZgIJMa2/arKxCUkS4pxdGPYGexL9UzSRkUpoBShCZKEGdmX7gfJE2K
|
||||
/sd9MFvGV5/yZtWXrADzvm0Kd/9mg1KRv1gfrZIq0TJbupoXPYYqb73AkI9eT2ZD
|
||||
q9MdwD4E5+oojsDFXt8GU/D00fUhtXpYwuplU7D667WHYdJhIah0ST6JywyqcLXG
|
||||
XSuFTXOgITT2idSHluZVmx3dqJ72u9kPkO4JdJTMDfaK8zgNLaRkiU8Qcj+qhLYH
|
||||
ytaqcwIDAQABo4IB6jCCAeYwCQYDVR0TBAIwADAOBgNVHQ8BAf8EBAMCB4AwfwYD
|
||||
VR0fBHgwdjB0oHKgcIZuaHR0cDovL29uc2l0ZWNybC52ZXJpc2lnbi5jb20vU3Vu
|
||||
TWljcm9zeXN0ZW1zSW5jQ29ycG9yYXRlT2JqZWN0U2lnbmluZ0phdmFTaWduZWRF
|
||||
eHRlbnNpb25zQ2xhc3NCL0xhdGVzdENSTC5jcmwwHwYDVR0jBBgwFoAUs0crgn5T
|
||||
tHPKuLsZt76BTQeVx+0wHQYDVR0OBBYEFKS32mVx0gNWTeS4ProHEaeSpvvIMDsG
|
||||
CCsGAQUFBwEBBC8wLTArBggrBgEFBQcwAYYfaHR0cDovL29uc2l0ZS1vY3NwLnZl
|
||||
cmlzaWduLmNvbTCBtQYDVR0gBIGtMIGqMDkGC2CGSAGG+EUBBxcCMCowKAYIKwYB
|
||||
BQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9ycGEwbQYLYIZIAYb3AIN9
|
||||
nD8wXjAnBggrBgEFBQcCARYbaHR0cHM6Ly93d3cuc3VuLmNvbS9wa2kvY3BzMDMG
|
||||
CCsGAQUFBwICMCcaJVZhbGlkYXRlZCBGb3IgU3VuIEJ1c2luZXNzIE9wZXJhdGlv
|
||||
bnMwEwYDVR0lBAwwCgYIKwYBBQUHAwMwDQYJKoZIhvcNAQEFBQADggEBAAe6BO4W
|
||||
3TSNWfezyelJs6kE3HfulT6Bdyz4UUoh9ykXcV8nRwT+kh25I5MdyG2GfkJoADPR
|
||||
VhC5DYo13UFpIsTNVjq+hGYe2hML93bN7ad9SxCCyjHUo3yMz2qgBbHZI3VA9ZHA
|
||||
aWM4Tx0saMwbcnVvlbuGh+PXvStfypJqYT6lzcdFfjNVX4FI/QQNGhBswMY51tC8
|
||||
GTBCL2qhJon0gSCU4zaawDOf7+XxJWirLamYL1Aal1/h2z2sFrvA/1ftxtU3kZ6I
|
||||
7De8DyoHeZg7pYGdrj7g+lPhCga/WvEhN152I+aP08YbFcJHYmK05ngl/Ye4c6Bd
|
||||
cdrdfbw6QzEUIYY=
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
// Subject: CN=JavaFX 1.0 Runtime,
|
||||
// OU=Java Signed Extensions,
|
||||
// OU=Corporate Object Signing,
|
||||
// O=Sun Microsystems Inc
|
||||
// Issuer: CN=Object Signing CA,
|
||||
// OU=Class 2 OnSite Subscriber CA,
|
||||
// OU=VeriSign Trust Network,
|
||||
// O=Sun Microsystems Inc
|
||||
// Serial: 55:c0:e6:44:59:59:79:9e:d9:26:f1:b0:4a:1e:f0:27
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFezCCBGOgAwIBAgIQVcDmRFlZeZ7ZJvGwSh7wJzANBgkqhkiG9w0BAQUFADCB
|
||||
gzEdMBsGA1UEChMUU3VuIE1pY3Jvc3lzdGVtcyBJbmMxHzAdBgNVBAsTFlZlcmlT
|
||||
aWduIFRydXN0IE5ldHdvcmsxJTAjBgNVBAsTHENsYXNzIDIgT25TaXRlIFN1YnNj
|
||||
cmliZXIgQ0ExGjAYBgNVBAMTEU9iamVjdCBTaWduaW5nIENBMB4XDTA4MTAwOTAw
|
||||
MDAwMFoXDTExMTAwOTIzNTk1OVowgYAxHTAbBgNVBAoUFFN1biBNaWNyb3N5c3Rl
|
||||
bXMgSW5jMSEwHwYDVQQLFBhDb3Jwb3JhdGUgT2JqZWN0IFNpZ25pbmcxHzAdBgNV
|
||||
BAsUFkphdmEgU2lnbmVkIEV4dGVuc2lvbnMxGzAZBgNVBAMUEkphdmFGWCAxLjAg
|
||||
UnVudGltZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM+WDc6+bu+4
|
||||
tmAcS/lBtUc02WOt9QZpVsXg9cG2pu/8bUtmDELa8iiYBVFpIs8DU58HLrGQtCUY
|
||||
SIAGOVPsOJoN29UKCDWfY9j5JeVhfhMGqk9DwrWhzgsjy4cpZ1pIp+k/fJ8zT8Ul
|
||||
aYLpow1vg3UNddsmwz02tN7cOrMw9WYIG4CRYnY1OrtJSfe2pYzheC4zyvR+aiVl
|
||||
nang2OtqikSQsNFOFHsLOJFxngy9LrO8evDSu25VTKI6zlWU6/bMeqtztJPN0VOn
|
||||
NyUrJZvkxZ207Jg0T693BGSxNC1n+ihztXogql8950M/pEuUbDjylv5FFvlp6DSB
|
||||
dDT2MkutmyMCAwEAAaOCAeowggHmMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgeA
|
||||
MH8GA1UdHwR4MHYwdKByoHCGbmh0dHA6Ly9vbnNpdGVjcmwudmVyaXNpZ24uY29t
|
||||
L1N1bk1pY3Jvc3lzdGVtc0luY0NvcnBvcmF0ZU9iamVjdFNpZ25pbmdKYXZhU2ln
|
||||
bmVkRXh0ZW5zaW9uc0NsYXNzQi9MYXRlc3RDUkwuY3JsMB8GA1UdIwQYMBaAFLNH
|
||||
K4J+U7Rzyri7Gbe+gU0HlcftMB0GA1UdDgQWBBTjgufVi3XJ3gx1ewsA6Rr7BR4Z
|
||||
zjA7BggrBgEFBQcBAQQvMC0wKwYIKwYBBQUHMAGGH2h0dHA6Ly9vbnNpdGUtb2Nz
|
||||
cC52ZXJpc2lnbi5jb20wgbUGA1UdIASBrTCBqjA5BgtghkgBhvhFAQcXAjAqMCgG
|
||||
CCsGAQUFBwIBFhxodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhMG0GC2CGSAGG
|
||||
9wCDfZw/MF4wJwYIKwYBBQUHAgEWG2h0dHBzOi8vd3d3LnN1bi5jb20vcGtpL2Nw
|
||||
czAzBggrBgEFBQcCAjAnGiVWYWxpZGF0ZWQgRm9yIFN1biBCdXNpbmVzcyBPcGVy
|
||||
YXRpb25zMBMGA1UdJQQMMAoGCCsGAQUFBwMDMA0GCSqGSIb3DQEBBQUAA4IBAQAB
|
||||
YVJTTVe7rzyTO4jc3zajErOT/COkdQTfNo0eIX1QbNynFieJvwY/jRzUZwjktIFR
|
||||
2p4JtbpHGAtKtjOAOTieQ8xdDOoC1djzpE7/AbMvuvlTavtUKT+F7tPdhfXgWXJV
|
||||
6Wbt8jryKyk3zZGiEhauIwZUkfjRkEtffEmZWLUd8c8rURJjfC/XHH2oyurscoxc
|
||||
CjX29c9ynxSiS/VvQp1an0HvErGh69N48wj7cj8mtZ1yHzd2XCzSSR1OfTPfk0Pt
|
||||
yg51p7yJaFiH21PTZegEL6zyVNOYBTKwwIi2OzpwYalD3uvK6e3OKDrfFCOxu17u
|
||||
4PveESbrdyrmvLe7IVez
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
// Subject: CN=JavaFX Runtime,
|
||||
// OU=Java Signed Extensions,
|
||||
// OU=Corporate Object Signing,
|
||||
// O=Sun Microsystems Inc
|
||||
// Issuer: CN=Object Signing CA,
|
||||
// OU=Class 2 OnSite Subscriber CA,
|
||||
// OU=VeriSign Trust Network,
|
||||
// O=Sun Microsystems Inc
|
||||
// Serial: 47:f4:55:f1:da:4a:5e:f9:e3:f7:a8:03:62:17:c0:ff
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFdjCCBF6gAwIBAgIQR/RV8dpKXvnj96gDYhfA/zANBgkqhkiG9w0BAQUFADCB
|
||||
gzEdMBsGA1UEChMUU3VuIE1pY3Jvc3lzdGVtcyBJbmMxHzAdBgNVBAsTFlZlcmlT
|
||||
aWduIFRydXN0IE5ldHdvcmsxJTAjBgNVBAsTHENsYXNzIDIgT25TaXRlIFN1YnNj
|
||||
cmliZXIgQ0ExGjAYBgNVBAMTEU9iamVjdCBTaWduaW5nIENBMB4XDTA5MDEyOTAw
|
||||
MDAwMFoXDTEyMDEyOTIzNTk1OVowfDEdMBsGA1UEChQUU3VuIE1pY3Jvc3lzdGVt
|
||||
cyBJbmMxITAfBgNVBAsUGENvcnBvcmF0ZSBPYmplY3QgU2lnbmluZzEfMB0GA1UE
|
||||
CxQWSmF2YSBTaWduZWQgRXh0ZW5zaW9uczEXMBUGA1UEAxQOSmF2YUZYIFJ1bnRp
|
||||
bWUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCIzd0fAk8mI9ONc6RJ
|
||||
aGieioK2FLdXEwj8zL3vdGDVmBwyR1zwYkaOIFFgF9IW/8qc4iAYA5sGUY+0g8q3
|
||||
5DuYAxfTzBB5KdaYvbuq6GGnoHIWmTirXY+1friFp8lyXSvtuEaGB1VHaBoZchEg
|
||||
k+UgeVDA43dHwcT1Ov3DePczJRUes8T/QHzLX+BxUDG43vjyncCEO/AjqLZxXEz2
|
||||
xrNbKLcH3lGMJK7hdbfssUfF5BjC38Hn71HauYlA43b2no+2y0Sjulwzez2YPbDC
|
||||
0GLR3TnKtA8dqOrnl5t3DniDbfOBNtBE3VOydJO0XW57Ng1HRXD023nm9ECPY2xp
|
||||
0N/pAgMBAAGjggHqMIIB5jAJBgNVHRMEAjAAMA4GA1UdDwEB/wQEAwIHgDB/BgNV
|
||||
HR8EeDB2MHSgcqBwhm5odHRwOi8vb25zaXRlY3JsLnZlcmlzaWduLmNvbS9TdW5N
|
||||
aWNyb3N5c3RlbXNJbmNDb3Jwb3JhdGVPYmplY3RTaWduaW5nSmF2YVNpZ25lZEV4
|
||||
dGVuc2lvbnNDbGFzc0IvTGF0ZXN0Q1JMLmNybDAfBgNVHSMEGDAWgBSzRyuCflO0
|
||||
c8q4uxm3voFNB5XH7TAdBgNVHQ4EFgQUvOdd0cKPj+Yik/iOBwTdphh5A+gwOwYI
|
||||
KwYBBQUHAQEELzAtMCsGCCsGAQUFBzABhh9odHRwOi8vb25zaXRlLW9jc3AudmVy
|
||||
aXNpZ24uY29tMIG1BgNVHSAEga0wgaowOQYLYIZIAYb4RQEHFwIwKjAoBggrBgEF
|
||||
BQcCARYcaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYTBtBgtghkgBhvcAg32c
|
||||
PzBeMCcGCCsGAQUFBwIBFhtodHRwczovL3d3dy5zdW4uY29tL3BraS9jcHMwMwYI
|
||||
KwYBBQUHAgIwJxolVmFsaWRhdGVkIEZvciBTdW4gQnVzaW5lc3MgT3BlcmF0aW9u
|
||||
czATBgNVHSUEDDAKBggrBgEFBQcDAzANBgkqhkiG9w0BAQUFAAOCAQEAbGcf2NjL
|
||||
AI93HG6ny2BbepaZA1a8xa/R6uUc7xV+Qw6MgLwFD4Q4i6LWUztQDvg9l68MM2/i
|
||||
Y9LEi1KM4lcNbK5+D+t9x98wXBiuojXhVdp5ZmC03EyEBbriopdBsmXVLDSu/Y3+
|
||||
zowOO5xwpMK3dbgsSDs2Vt0UosD3FTcRaD3GNfOhXMp+o1grHNiXF9YgkmdQbPPZ
|
||||
DQ2KBhFPCRJXBGvyKOqno/DTg0sQ3crGH/C4/4t7mnQXWldZotmJUZ0ONc9oD+Q1
|
||||
JAaguUKqIwn9yZ093ie+JWHbYNid9IIIPXYgtRxmf9a376WBhqhu56uJftBJ7x9g
|
||||
eQ7Lot6CSWCiFw==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
// Subject: CN=Solaris INTERNAL DEVELOPMENT USE ONLY,
|
||||
// OU=Solaris Cryptographic Framework,
|
||||
// OU=Corporate Object Signing,
|
||||
// O=Sun Microsystems Inc
|
||||
// Issuer: CN=Object Signing CA,
|
||||
// OU=Class 2 OnSite Subscriber CA,
|
||||
// OU=VeriSign Trust Network,
|
||||
// O=Sun Microsystems Inc
|
||||
// Serial: 77:29:77:52:6a:19:7b:9a:a6:a2:c7:99:a0:e1:cd:8c
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFHjCCBAagAwIBAgIQdyl3UmoZe5qmoseZoOHNjDANBgkqhkiG9w0BAQUFADCB
|
||||
gzEdMBsGA1UEChMUU3VuIE1pY3Jvc3lzdGVtcyBJbmMxHzAdBgNVBAsTFlZlcmlT
|
||||
aWduIFRydXN0IE5ldHdvcmsxJTAjBgNVBAsTHENsYXNzIDIgT25TaXRlIFN1YnNj
|
||||
cmliZXIgQ0ExGjAYBgNVBAMTEU9iamVjdCBTaWduaW5nIENBMB4XDTA3MDEwNDAw
|
||||
MDAwMFoXDTEwMDEwMzIzNTk1OVowgZwxHTAbBgNVBAoUFFN1biBNaWNyb3N5c3Rl
|
||||
bXMgSW5jMSEwHwYDVQQLFBhDb3Jwb3JhdGUgT2JqZWN0IFNpZ25pbmcxKDAmBgNV
|
||||
BAsUH1NvbGFyaXMgQ3J5cHRvZ3JhcGhpYyBGcmFtZXdvcmsxLjAsBgNVBAMUJVNv
|
||||
bGFyaXMgSU5URVJOQUwgREVWRUxPUE1FTlQgVVNFIE9OTFkwgZ8wDQYJKoZIhvcN
|
||||
AQEBBQADgY0AMIGJAoGBALbNU4hf3mD5ArDI9pjgioAyvV3bjMPRQdCZniIeGJBp
|
||||
odFlSEH+Mh64W1DsY8coeZ7FvvGJkx9IpTMJW9k8w1oJK9UNqHyAQfaYjQyXi3xQ
|
||||
LJp62EvYdGfDlwOZejEcR/MbzZG+GOPMMvQj5+xyFDvLXNGfQNTnxw2qnBgCJXjj
|
||||
AgMBAAGjggH1MIIB8TAJBgNVHRMEAjAAMA4GA1UdDwEB/wQEAwIHgDCBiQYDVR0f
|
||||
BIGBMH8wfaB7oHmGd2h0dHA6Ly9vbnNpdGVjcmwudmVyaXNpZ24uY29tL1N1bk1p
|
||||
Y3Jvc3lzdGVtc0luY0NvcnBvcmF0ZU9iamVjdFNpZ25pbmdTb2xhcmlzQ3J5cHRv
|
||||
Z3JhcGhpY0ZyYW1ld29ya0NsYXNzQi9MYXRlc3RDUkwuY3JsMB8GA1UdIwQYMBaA
|
||||
FLNHK4J+U7Rzyri7Gbe+gU0HlcftMB0GA1UdDgQWBBRpfiGYkehTnsIzuN2H6AFb
|
||||
VCZG8jA7BggrBgEFBQcBAQQvMC0wKwYIKwYBBQUHMAGGH2h0dHA6Ly9vbnNpdGUt
|
||||
b2NzcC52ZXJpc2lnbi5jb20wgbUGA1UdIASBrTCBqjA5BgtghkgBhvhFAQcXAjAq
|
||||
MCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhMG0GC2CG
|
||||
SAGG9wCDfZw/MF4wJwYIKwYBBQUHAgEWG2h0dHBzOi8vd3d3LnN1bi5jb20vcGtp
|
||||
L2NwczAzBggrBgEFBQcCAjAnFiVWYWxpZGF0ZWQgRm9yIFN1biBCdXNpbmVzcyBP
|
||||
cGVyYXRpb25zMBMGA1UdJQQMMAoGCCsGAQUFBwMDMA0GCSqGSIb3DQEBBQUAA4IB
|
||||
AQCG5soy3LFHTFbA8/5SzDRhQoJkHUnOP0t3b6nvX6vZYRp649fje7TQOPRm1pFd
|
||||
CZ17J+tggdZwgzTqY4aYpJ00jZaK6pV37q/vgFC/ia6jDs8Q+ly9cEcadBZ5loYg
|
||||
cmxp9p57W2MNWx8VA8oFdNtKfF0jUNXbLNtvwGHmgR6YcwLrGN1b6/9Lt9bO3ODl
|
||||
FO+ZDwkfQz5ClUVrTx2dGBvKRYFqSG5S8JAfsgYhPvcacUQkA7ExyKvfRXLWVrce
|
||||
ZiPpcElbx+819H2sAPvVvparVeAruZGMAtejHZp9NFoowKen5drJp9VxePS4eM49
|
||||
3DepB6lKRrNRw66LNQol4ZBz
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
// Subject: EMAILADDRESS=info@diginotar.nl, CN=DigiNotar Cyber CA,
|
||||
// O=DigiNotar, C=NL
|
||||
// Issuer: CN=GTE CyberTrust Global Root,
|
||||
// OU=GTE CyberTrust Solutions, Inc.,
|
||||
// O=GTE Corporation,
|
||||
// C=US
|
||||
// Serial: 120000525 (07:27:10:0D)
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFWjCCBMOgAwIBAgIEBycQDTANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQGEwJV
|
||||
UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU
|
||||
cnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEds
|
||||
b2JhbCBSb290MB4XDTA2MTAwNDEwNTQxMVoXDTExMTAwNDEwNTMxMVowYDELMAkG
|
||||
A1UEBhMCTkwxEjAQBgNVBAoTCURpZ2lOb3RhcjEbMBkGA1UEAxMSRGlnaU5vdGFy
|
||||
IEN5YmVyIENBMSAwHgYJKoZIhvcNAQkBFhFpbmZvQGRpZ2lub3Rhci5ubDCCAiIw
|
||||
DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANLOFQotqF6EZ639vu9Gx8i5z3P8
|
||||
9DS5+SxD52ATPXrjss87Z2yQrcC5P4RS8DVC3HTcKDu9UrSnrHJFF8bwieu0qiXy
|
||||
XUte0dmHutZ9fPXOMp8QM8WxSrtekTHC0OlBwpFkfglBO9uLCDdqqspS3rU5HsCI
|
||||
A6U/i5kTYUO1m4Kz7iBvz6FEouova0CfjytXraFTwoUiaZ2gP1HfC0GRDaXhqKpc
|
||||
SQhdvd5wQbEPyWNr0380dAIvNFp4dRxoeoFnivPaQPBgY/SSINcDpj2jHmfEhBtB
|
||||
pcmM5r3qSLYFFgizNxJa92E89zhvLpfgb1Y4VNMota0Ubi5LZLUnZbd1JQm2Bz2V
|
||||
VgIKgmCyc0XgMyZRdJq51FAc9k1bW1JSE1qmf6cO4ehBVGeYjIfVydNsy9NUkgYJ
|
||||
NEH3gW8/nsl8dVWw58Gzd+jDxAA1lUBwEEoF3iW7n1mlZLxHYL9g43aLE1Xd4XR6
|
||||
uc8kpmp/3mQiRFhogmoQ+T3lPhu5vfwi9GAEibtVbShV+t6OjRshFNc3izR7Tfay
|
||||
shDPM7F9HGKZSMsrbHaWVb8ZDR0fu2WqG46ZtcYokOWCLXhQIJr9eS8kf/CJKWn0
|
||||
fc1zvrPtTsHR7VJej/e4142HrbLZG1ES/1az4a80fVykeIgQnp0DxqWqoiRR90kU
|
||||
xbHuWUOV36toKDA/AgMBAAGjggGGMIIBgjASBgNVHRMBAf8ECDAGAQH/AgEBMFMG
|
||||
A1UdIARMMEowSAYJKwYBBAGxPgEAMDswOQYIKwYBBQUHAgEWLWh0dHA6Ly93d3cu
|
||||
cHVibGljLXRydXN0LmNvbS9DUFMvT21uaVJvb3QuaHRtbDAOBgNVHQ8BAf8EBAMC
|
||||
AQYwgaAGA1UdIwSBmDCBlYAUpgwdn2H/Bxe1vzhG20Mw1Y6wUgaheaR3MHUxCzAJ
|
||||
BgNVBAYTAlVTMRgwFgYDVQQKEw9HVEUgQ29ycG9yYXRpb24xJzAlBgNVBAsTHkdU
|
||||
RSBDeWJlclRydXN0IFNvbHV0aW9ucywgSW5jLjEjMCEGA1UEAxMaR1RFIEN5YmVy
|
||||
VHJ1c3QgR2xvYmFsIFJvb3SCAgGlMEUGA1UdHwQ+MDwwOqA4oDaGNGh0dHA6Ly93
|
||||
d3cucHVibGljLXRydXN0LmNvbS9jZ2ktYmluL0NSTC8yMDE4L2NkcC5jcmwwHQYD
|
||||
VR0OBBYEFKv5aN/PSjfXe0WMX3LeQETDZbvCMA0GCSqGSIb3DQEBBQUAA4GBAI9o
|
||||
a6VbB7pEZg4cqFwwezPkCiYE/O+eGjjWLqEf0JlHwnVkJP2eOyh2uSYoYZEMbSz4
|
||||
BJ98UAHV42mv7xXSRZskCSpmBU8lgcpdvqrBWSeuM46C9990sFWzjvjnN8huqlZE
|
||||
9r1TgSOWPbT6MopTZkQloiXGpjwljPDgKAYityZB
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
// Subject: CN=DigiNotar Cyber CA, O=DigiNotar, C=NL
|
||||
// Issuer: CN=GTE CyberTrust Global Root,
|
||||
// OU=GTE CyberTrust Solutions, Inc.,
|
||||
// O=GTE Corporation,
|
||||
// C=US
|
||||
// Serial: 120000505 (07:27:0F:F9)
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFODCCBKGgAwIBAgIEBycP+TANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQGEwJV
|
||||
UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU
|
||||
cnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEds
|
||||
b2JhbCBSb290MB4XDTA2MDkyMDA5NDUzMloXDTEzMDkyMDA5NDQwNlowPjELMAkG
|
||||
A1UEBhMCTkwxEjAQBgNVBAoTCURpZ2lOb3RhcjEbMBkGA1UEAxMSRGlnaU5vdGFy
|
||||
IEN5YmVyIENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0s4VCi2o
|
||||
XoRnrf2+70bHyLnPc/z0NLn5LEPnYBM9euOyzztnbJCtwLk/hFLwNULcdNwoO71S
|
||||
tKesckUXxvCJ67SqJfJdS17R2Ye61n189c4ynxAzxbFKu16RMcLQ6UHCkWR+CUE7
|
||||
24sIN2qqylLetTkewIgDpT+LmRNhQ7WbgrPuIG/PoUSi6i9rQJ+PK1etoVPChSJp
|
||||
naA/Ud8LQZENpeGoqlxJCF293nBBsQ/JY2vTfzR0Ai80Wnh1HGh6gWeK89pA8GBj
|
||||
9JIg1wOmPaMeZ8SEG0GlyYzmvepItgUWCLM3Elr3YTz3OG8ul+BvVjhU0yi1rRRu
|
||||
LktktSdlt3UlCbYHPZVWAgqCYLJzReAzJlF0mrnUUBz2TVtbUlITWqZ/pw7h6EFU
|
||||
Z5iMh9XJ02zL01SSBgk0QfeBbz+eyXx1VbDnwbN36MPEADWVQHAQSgXeJbufWaVk
|
||||
vEdgv2DjdosTVd3hdHq5zySman/eZCJEWGiCahD5PeU+G7m9/CL0YASJu1VtKFX6
|
||||
3o6NGyEU1zeLNHtN9rKyEM8zsX0cYplIyytsdpZVvxkNHR+7Zaobjpm1xiiQ5YIt
|
||||
eFAgmv15LyR/8IkpafR9zXO+s+1OwdHtUl6P97jXjYetstkbURL/VrPhrzR9XKR4
|
||||
iBCenQPGpaqiJFH3SRTFse5ZQ5Xfq2goMD8CAwEAAaOCAYYwggGCMBIGA1UdEwEB
|
||||
/wQIMAYBAf8CAQEwUwYDVR0gBEwwSjBIBgkrBgEEAbE+AQAwOzA5BggrBgEFBQcC
|
||||
ARYtaHR0cDovL3d3dy5wdWJsaWMtdHJ1c3QuY29tL0NQUy9PbW5pUm9vdC5odG1s
|
||||
MA4GA1UdDwEB/wQEAwIBBjCBoAYDVR0jBIGYMIGVgBSmDB2fYf8HF7W/OEbbQzDV
|
||||
jrBSBqF5pHcwdTELMAkGA1UEBhMCVVMxGDAWBgNVBAoTD0dURSBDb3Jwb3JhdGlv
|
||||
bjEnMCUGA1UECxMeR1RFIEN5YmVyVHJ1c3QgU29sdXRpb25zLCBJbmMuMSMwIQYD
|
||||
VQQDExpHVEUgQ3liZXJUcnVzdCBHbG9iYWwgUm9vdIICAaUwRQYDVR0fBD4wPDA6
|
||||
oDigNoY0aHR0cDovL3d3dy5wdWJsaWMtdHJ1c3QuY29tL2NnaS1iaW4vQ1JMLzIw
|
||||
MTgvY2RwLmNybDAdBgNVHQ4EFgQUq/lo389KN9d7RYxfct5ARMNlu8IwDQYJKoZI
|
||||
hvcNAQEFBQADgYEACcpiD427SuDUejUrBi3RKGG2rAH7g0m8rtQvLYauGYOl1h0T
|
||||
4he+/jJ06XoUOMqUXvcpAWlxG5Ea/aO7qh3Ke+IW/aGjDvMMX7LhIDGUK16Sdu36
|
||||
6bUjpr8KOwOpb1JgVM1f6bcvfKIn/UGDdbYN+3gm87FF6TKVKho1IZXFonU=
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
// Subject: CN=DigiNotar Cyber CA, O=DigiNotar, C=NL
|
||||
// Issuer: CN=GTE CyberTrust Global Root,
|
||||
// OU=GTE CyberTrust Solutions, Inc.,
|
||||
// O=GTE Corporation,
|
||||
// C=US
|
||||
// Serial: 120000515 (07:27:10:03)
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFODCCBKGgAwIBAgIEBycQAzANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQGEwJV
|
||||
UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU
|
||||
cnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEds
|
||||
b2JhbCBSb290MB4XDTA2MDkyNzEwNTMzMloXDTExMDkyNzEwNTIzMFowPjELMAkG
|
||||
A1UEBhMCTkwxEjAQBgNVBAoTCURpZ2lOb3RhcjEbMBkGA1UEAxMSRGlnaU5vdGFy
|
||||
IEN5YmVyIENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0s4VCi2o
|
||||
XoRnrf2+70bHyLnPc/z0NLn5LEPnYBM9euOyzztnbJCtwLk/hFLwNULcdNwoO71S
|
||||
tKesckUXxvCJ67SqJfJdS17R2Ye61n189c4ynxAzxbFKu16RMcLQ6UHCkWR+CUE7
|
||||
24sIN2qqylLetTkewIgDpT+LmRNhQ7WbgrPuIG/PoUSi6i9rQJ+PK1etoVPChSJp
|
||||
naA/Ud8LQZENpeGoqlxJCF293nBBsQ/JY2vTfzR0Ai80Wnh1HGh6gWeK89pA8GBj
|
||||
9JIg1wOmPaMeZ8SEG0GlyYzmvepItgUWCLM3Elr3YTz3OG8ul+BvVjhU0yi1rRRu
|
||||
LktktSdlt3UlCbYHPZVWAgqCYLJzReAzJlF0mrnUUBz2TVtbUlITWqZ/pw7h6EFU
|
||||
Z5iMh9XJ02zL01SSBgk0QfeBbz+eyXx1VbDnwbN36MPEADWVQHAQSgXeJbufWaVk
|
||||
vEdgv2DjdosTVd3hdHq5zySman/eZCJEWGiCahD5PeU+G7m9/CL0YASJu1VtKFX6
|
||||
3o6NGyEU1zeLNHtN9rKyEM8zsX0cYplIyytsdpZVvxkNHR+7Zaobjpm1xiiQ5YIt
|
||||
eFAgmv15LyR/8IkpafR9zXO+s+1OwdHtUl6P97jXjYetstkbURL/VrPhrzR9XKR4
|
||||
iBCenQPGpaqiJFH3SRTFse5ZQ5Xfq2goMD8CAwEAAaOCAYYwggGCMBIGA1UdEwEB
|
||||
/wQIMAYBAf8CAQEwUwYDVR0gBEwwSjBIBgkrBgEEAbE+AQAwOzA5BggrBgEFBQcC
|
||||
ARYtaHR0cDovL3d3dy5wdWJsaWMtdHJ1c3QuY29tL0NQUy9PbW5pUm9vdC5odG1s
|
||||
MA4GA1UdDwEB/wQEAwIBBjCBoAYDVR0jBIGYMIGVgBSmDB2fYf8HF7W/OEbbQzDV
|
||||
jrBSBqF5pHcwdTELMAkGA1UEBhMCVVMxGDAWBgNVBAoTD0dURSBDb3Jwb3JhdGlv
|
||||
bjEnMCUGA1UECxMeR1RFIEN5YmVyVHJ1c3QgU29sdXRpb25zLCBJbmMuMSMwIQYD
|
||||
VQQDExpHVEUgQ3liZXJUcnVzdCBHbG9iYWwgUm9vdIICAaUwRQYDVR0fBD4wPDA6
|
||||
oDigNoY0aHR0cDovL3d3dy5wdWJsaWMtdHJ1c3QuY29tL2NnaS1iaW4vQ1JMLzIw
|
||||
MTgvY2RwLmNybDAdBgNVHQ4EFgQUq/lo389KN9d7RYxfct5ARMNlu8IwDQYJKoZI
|
||||
hvcNAQEFBQADgYEAWcyGZhizJlRP1jjNupZey+yZG6oMDW4Z11boriMHbYPCndBE
|
||||
bVh07zmPbZsihOw9w/vm5KbVX5CgxUv4Rhzh/20Faixf3P3bpWg0qgzHVVusNVR/
|
||||
P50aKkpdK3hp+QLl56e+lWOddSAINIpmcuyDI1hyuzB+GJEASm9tNU/6rs8=
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
// Subject: EMAILADDRESS=info@diginotar.nl,
|
||||
// CN=DigiNotar Root CA,
|
||||
// O=DigiNotar, C=NL
|
||||
// Issuer: CN=Entrust.net Secure Server Certification Authority
|
||||
// OU=(c) 1999 Entrust.net Limited,
|
||||
// OU=www.entrust.net/CPS incorp. by ref. (limits liab.),
|
||||
// O=Entrust.net,
|
||||
// C=US,
|
||||
// Serial: 1184644297 (46:9C:3C:C9)
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFSDCCBLGgAwIBAgIERpw8yTANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMC
|
||||
VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5u
|
||||
ZXQvQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc
|
||||
KGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5u
|
||||
ZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNzA0
|
||||
MjYwNTAwMDBaFw0xMzA4MTQyMDEyMzZaMF8xCzAJBgNVBAYTAk5MMRIwEAYDVQQK
|
||||
EwlEaWdpTm90YXIxGjAYBgNVBAMTEURpZ2lOb3RhciBSb290IENBMSAwHgYJKoZI
|
||||
hvcNAQkBFhFpbmZvQGRpZ2lub3Rhci5ubDCCAiIwDQYJKoZIhvcNAQEBBQADggIP
|
||||
ADCCAgoCggIBAKywWMEAvdghCAsrmv5uVjAFnxt3kBBBXMMNhxF3joHxynzpjGrt
|
||||
OHQ1u9rf+bvACTe0lnOBfTMamDn3k2+Vfz25sXWHulFI6ItwPpUExdi2wxbZiLCx
|
||||
hx1w2oa0DxSLes8Q0XQ2ohJ7d4ZKeeZ73wIRaKVOhq40WJskE3hWIiUeAYtLUXH7
|
||||
gsxZlmmIWmhTxbkNAjfLS7xmSpB+KgsFB+0WX1WQddhGyRuD4gi+8SPMmR3WKg+D
|
||||
IBVYJ4Iu+uIiwkmxuQGBap1tnUB3aHZOISpthECFTnaZfILz87cCWdQmARuO361T
|
||||
BtGuGN3isjrL14g4jqxbKbkZ05j5GAPPSIKGZgsbaQ/J6ziIeiYaBUyS1yTUlvKs
|
||||
Ui2jR9VS9j/+zoQGcKaqPqLytlY0GFei5IFt58rwatPHkWsCg0F8Fe9rmmRe49A8
|
||||
5bHre12G+8vmd0nNo2Xc97mcuOQLX5PPzDAaMhzOHGOVpfnq4XSLnukrqTB7oBgf
|
||||
DhgL5Vup09FsHgdnj5FLqYq80maqkwGIspH6MVzVpsFSCAnNCmOi0yKm6KHZOQaX
|
||||
9W6NApCMFHs/gM0bnLrEWHIjr7ZWn8Z6QjMpBz+CyeYfBQ3NTCg2i9PIPhzGiO9e
|
||||
7olk6R3r2ol+MqZp0d3MiJ/R0MlmIdwGZ8WUepptYkx9zOBkgLKeR46jAgMBAAGj
|
||||
ggEmMIIBIjASBgNVHRMBAf8ECDAGAQH/AgEBMCcGA1UdJQQgMB4GCCsGAQUFBwMB
|
||||
BggrBgEFBQcDAgYIKwYBBQUHAwQwEQYDVR0gBAowCDAGBgRVHSAAMDMGCCsGAQUF
|
||||
BwEBBCcwJTAjBggrBgEFBQcwAYYXaHR0cDovL29jc3AuZW50cnVzdC5uZXQwMwYD
|
||||
VR0fBCwwKjAooCagJIYiaHR0cDovL2NybC5lbnRydXN0Lm5ldC9zZXJ2ZXIxLmNy
|
||||
bDAdBgNVHQ4EFgQUiGi/4I41xDs4a2L3KDuEgcgM100wCwYDVR0PBAQDAgEGMB8G
|
||||
A1UdIwQYMBaAFPAXYhNVPbP/CgBr+1CEl/PtYtAaMBkGCSqGSIb2fQdBAAQMMAob
|
||||
BFY3LjEDAgCBMA0GCSqGSIb3DQEBBQUAA4GBAI979rBep8tu3TeLunapgsZ0jtXp
|
||||
GDFjKWSk87dj1jCyYi+q/GyDyZ6ZQZNRP0sF+6twscq05lClWNy3TROMp7QeuoLO
|
||||
G7Utw3OJaswUtp4YglANMRTHEe3g9ltifUXRH5tSuy7u6yi4LD4WTm5ULP6r/g6l
|
||||
0CnjXYb0+b1Fmz6U
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
// Subject: EMAILADDRESS=info@diginotar.nl,
|
||||
// CN=DigiNotar Root CA,
|
||||
// O=DigiNotar, C=NL
|
||||
// Issuer: CN=Entrust.net Secure Server Certification Authority
|
||||
// OU=(c) 1999 Entrust.net Limited,
|
||||
// OU=www.entrust.net/CPS incorp. by ref. (limits liab.),
|
||||
// O=Entrust.net,
|
||||
// C=US,
|
||||
// Serial: 1184640175 (46:9C:2C:AF)
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFSDCCBLGgAwIBAgIERpwsrzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMC
|
||||
VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5u
|
||||
ZXQvQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc
|
||||
KGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5u
|
||||
ZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNzA3
|
||||
MjYxNTU3MzlaFw0xMzA4MjYxNjI3MzlaMF8xCzAJBgNVBAYTAk5MMRIwEAYDVQQK
|
||||
EwlEaWdpTm90YXIxGjAYBgNVBAMTEURpZ2lOb3RhciBSb290IENBMSAwHgYJKoZI
|
||||
hvcNAQkBFhFpbmZvQGRpZ2lub3Rhci5ubDCCAiIwDQYJKoZIhvcNAQEBBQADggIP
|
||||
ADCCAgoCggIBAKywWMEAvdghCAsrmv5uVjAFnxt3kBBBXMMNhxF3joHxynzpjGrt
|
||||
OHQ1u9rf+bvACTe0lnOBfTMamDn3k2+Vfz25sXWHulFI6ItwPpUExdi2wxbZiLCx
|
||||
hx1w2oa0DxSLes8Q0XQ2ohJ7d4ZKeeZ73wIRaKVOhq40WJskE3hWIiUeAYtLUXH7
|
||||
gsxZlmmIWmhTxbkNAjfLS7xmSpB+KgsFB+0WX1WQddhGyRuD4gi+8SPMmR3WKg+D
|
||||
IBVYJ4Iu+uIiwkmxuQGBap1tnUB3aHZOISpthECFTnaZfILz87cCWdQmARuO361T
|
||||
BtGuGN3isjrL14g4jqxbKbkZ05j5GAPPSIKGZgsbaQ/J6ziIeiYaBUyS1yTUlvKs
|
||||
Ui2jR9VS9j/+zoQGcKaqPqLytlY0GFei5IFt58rwatPHkWsCg0F8Fe9rmmRe49A8
|
||||
5bHre12G+8vmd0nNo2Xc97mcuOQLX5PPzDAaMhzOHGOVpfnq4XSLnukrqTB7oBgf
|
||||
DhgL5Vup09FsHgdnj5FLqYq80maqkwGIspH6MVzVpsFSCAnNCmOi0yKm6KHZOQaX
|
||||
9W6NApCMFHs/gM0bnLrEWHIjr7ZWn8Z6QjMpBz+CyeYfBQ3NTCg2i9PIPhzGiO9e
|
||||
7olk6R3r2ol+MqZp0d3MiJ/R0MlmIdwGZ8WUepptYkx9zOBkgLKeR46jAgMBAAGj
|
||||
ggEmMIIBIjASBgNVHRMBAf8ECDAGAQH/AgEBMCcGA1UdJQQgMB4GCCsGAQUFBwMB
|
||||
BggrBgEFBQcDAgYIKwYBBQUHAwQwEQYDVR0gBAowCDAGBgRVHSAAMDMGCCsGAQUF
|
||||
BwEBBCcwJTAjBggrBgEFBQcwAYYXaHR0cDovL29jc3AuZW50cnVzdC5uZXQwMwYD
|
||||
VR0fBCwwKjAooCagJIYiaHR0cDovL2NybC5lbnRydXN0Lm5ldC9zZXJ2ZXIxLmNy
|
||||
bDAdBgNVHQ4EFgQUiGi/4I41xDs4a2L3KDuEgcgM100wCwYDVR0PBAQDAgEGMB8G
|
||||
A1UdIwQYMBaAFPAXYhNVPbP/CgBr+1CEl/PtYtAaMBkGCSqGSIb2fQdBAAQMMAob
|
||||
BFY3LjEDAgCBMA0GCSqGSIb3DQEBBQUAA4GBAEa6RcDNcEIGUlkDJUY/pWTds4zh
|
||||
xbVkp3wSmpwPFhx5fxTyF4HD2L60jl3aqjTB7gPpsL2Pk5QZlNsi3t4UkCV70UOd
|
||||
ueJRN3o/LOtk4+bjXY2lC0qTHbN80VMLqPjmaf9ghSA9hwhskdtMgRsgfd90q5QP
|
||||
ZFdYf+hthc3m6IcJ
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
// Subject: CN=DigiNotar PKIoverheid CA Organisatie - G2,
|
||||
// O=DigiNotar B.V.,
|
||||
// C=NL
|
||||
// Issuer: CN=Staat der Nederlanden Organisatie CA - G2,
|
||||
// O=Staat der Nederlanden,
|
||||
// C=NL
|
||||
// Serial: 20001983 (01:31:34:bf)
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIGnDCCBISgAwIBAgIEATE0vzANBgkqhkiG9w0BAQsFADBhMQswCQYDVQQGEwJO
|
||||
TDEeMBwGA1UECgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMTIwMAYDVQQDDClTdGFh
|
||||
dCBkZXIgTmVkZXJsYW5kZW4gT3JnYW5pc2F0aWUgQ0EgLSBHMjAeFw0xMDA1MTIw
|
||||
ODUxMzhaFw0yMDAzMjMwOTUwMDRaMFoxCzAJBgNVBAYTAk5MMRcwFQYDVQQKDA5E
|
||||
aWdpTm90YXIgQi5WLjEyMDAGA1UEAwwpRGlnaU5vdGFyIFBLSW92ZXJoZWlkIENB
|
||||
IE9yZ2FuaXNhdGllIC0gRzIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
|
||||
AQCxExkPJ+Zs1FWGS9DsiYpFkXisR71HK+T8RetPtCZzWzfTw3/2497Xo/gtaMUI
|
||||
PkuU1uSHJTZrhLUYdPMoWHMvm2rPvAQe9t7dr/xLqvXbZmIlASWC3vKXWhBu3V2p
|
||||
IrEEqSNzOvhxrR3PhETrR9Gvbch8KKvH8jd6dF9fxQIUiqNa4xtsAeNdjtlo1vQJ
|
||||
GzLckbUs9SDrjANtJkm4k8SFXdjSm69WaswFM8ygQp40VUSca6DUEtArVM23iQ3l
|
||||
9uvo+4UBM096a/GdcjOWDveyhKWlJ8Qn8VFzKXe6Z27+TNy04qGhgS85SY1DOBPO
|
||||
0KVcwoc6AGdlQiPxNlkKHaNRyLyjlCox3+M88p0aPASw77EKMBNzttfzo0wBdRSF
|
||||
eMDXijlYhVD6LubFvs+LP6+PNtQlCS3SD6xyk/K/i9RQs/kVUJuZ9RTZ+4uRozIm
|
||||
JqD43ztggYaDeVsr6xM9KTrBbd29no6H1kquNJcF7hSm9tw4fkrpJFQHPZdoN0Zr
|
||||
DceoIa8TVOQJavFNRgrJXfubT73e+7dUy7g4nKc5+2otwHuNq6WnV+xKkoozxeEg
|
||||
XHPYkJIrgNUPhhhpfDlPhIa890xb89W0yqDC8DciynlSH1PmqvOQsDvd8ij9rOvF
|
||||
BiSgydQvD1j9tZ7sD8+yWdCiBHo4aq5y+73wJWKUCacFCwIDAQABo4IBYTCCAV0w
|
||||
SAYDVR0gBEEwPzA9BgRVHSAAMDUwMwYIKwYBBQUHAgEWJ2h0dHA6Ly93d3cuZGln
|
||||
aW5vdGFyLm5sL2Nwcy9wa2lvdmVyaGVpZDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud
|
||||
DwEB/wQEAwIBBjCBhQYDVR0jBH4wfIAUORCLSZJc22ESIM1JnRqO2pxnQLmhXqRc
|
||||
MFoxCzAJBgNVBAYTAk5MMR4wHAYDVQQKDBVTdGFhdCBkZXIgTmVkZXJsYW5kZW4x
|
||||
KzApBgNVBAMMIlN0YWF0IGRlciBOZWRlcmxhbmRlbiBSb290IENBIC0gRzKCBACY
|
||||
lvQwSQYDVR0fBEIwQDA+oDygOoY4aHR0cDovL2NybC5wa2lvdmVyaGVpZC5ubC9E
|
||||
b21PcmdhbmlzYXRpZUxhdGVzdENSTC1HMi5jcmwwHQYDVR0OBBYEFLxdlDvZq3sD
|
||||
JXNhwtst7vyrj2WhMA0GCSqGSIb3DQEBCwUAA4ICAQCP/C1Mt9kt1R+978v0t2gX
|
||||
dZ1O1ffdnPEqJu2forYcA9VTs+wIzzTi48P0tRYvyMO+19NzqwA2+RpKftZj6V5G
|
||||
uqW2jhW3oyrYQx3vXcgfgYWzi/f/PPTZ9EYIP5y8HaDZqEzNJVJOCrEg9x/pQ9lU
|
||||
RoETmsBedGwqmDLq/He7DaWiMZgifnx859qkrey3LhoZcfhIUNpDjyyE3cFAJ+O1
|
||||
8BVOltT4XOOGKUYr1zsH6zh/yIZXl9PvKjPEF1DVZGlrK2tFXl0vF8paTs/D1zk8
|
||||
9TufRrmb5w5Jl53W1eMbD+qPAU6aE5RZCgIHSEsaYKt/T+0L2FUNaG9VnGllFULs
|
||||
wNzdbKzDFs4LHVabpMTE0i7gD+JEJytQaaTcYuiKISlCbMwAOpZ2m+9AwKRed4Qy
|
||||
bCYqOWauXeO5ubIsaB8empADOfCqs6TMSYsYNOk3yXspx4R8b0QVL+xhWQTJRcui
|
||||
1lKifH8pktZKxYtCqNT+6tjHhyMY5J16fXNAUpigrm7jBT8FD+Clxm1N7YM3iJzH
|
||||
89xCmmq21yFJNnfy7xhPxXDZnunetyuL9Lx+KN8NQMmFXK6dxTH/0FwOtah+8Okv
|
||||
uq+IruW10Vilr5xxpykBkINpN4IFuvwJwQhujHg7wzMCgD9EhQgd31VWCK0shS1d
|
||||
sQPhrqp0xaTzTro3mHuCuQ==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
// Subject: CN=DigiNotar PKIoverheid CA Overheid en Bedrijven,
|
||||
// O=DigiNotar B.V.,
|
||||
// C=NL
|
||||
// Issuer: CN=Staat der Nederlanden Overheid CA
|
||||
// O=Staat der Nederlanden,
|
||||
// C=NL
|
||||
// Serial: 20015536 (01:31:69:b0)
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEiDCCA3CgAwIBAgIEATFpsDANBgkqhkiG9w0BAQUFADBZMQswCQYDVQQGEwJO
|
||||
TDEeMBwGA1UEChMVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSowKAYDVQQDEyFTdGFh
|
||||
dCBkZXIgTmVkZXJsYW5kZW4gT3ZlcmhlaWQgQ0EwHhcNMDcwNzA1MDg0MjA3WhcN
|
||||
MTUwNzI3MDgzOTQ2WjBfMQswCQYDVQQGEwJOTDEXMBUGA1UEChMORGlnaU5vdGFy
|
||||
IEIuVi4xNzA1BgNVBAMTLkRpZ2lOb3RhciBQS0lvdmVyaGVpZCBDQSBPdmVyaGVp
|
||||
ZCBlbiBCZWRyaWp2ZW4wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDc
|
||||
vdKnTmoKuzuiheF/AK2+tDBomAfNoHrElM9x+Yo35FPrV3bMi+Zs/u6HVcg+uwQ5
|
||||
AKeAeKxbT370vbhUuHE7BzFJOZNUfCA7eSuPu2GQfbGs5h+QLp1FAalkLU3DL7nn
|
||||
UNVOKlyrdnY3Rtd57EKZ96LspIlw3Dgrh6aqJOadkiQbvvb91C8ZF3rmMgeUVAVT
|
||||
Q+lsvK9Hy7zL/b07RBKB8WtLu+20z6slTxjSzAL8o0+1QjPLWc0J3NNQ/aB2jKx+
|
||||
ZopC9q0ckvO2+xRG603XLzDgbe5bNr5EdLcgBVeFTegAGaL2DOauocBC36esgl3H
|
||||
aLcY5olLmmv6znn58yynAgMBAAGjggFQMIIBTDBIBgNVHSAEQTA/MD0GBFUdIAAw
|
||||
NTAzBggrBgEFBQcCARYnaHR0cDovL3d3dy5kaWdpbm90YXIubmwvY3BzL3BraW92
|
||||
ZXJoZWlkMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMIGABgNVHSME
|
||||
eTB3gBQLhtYPd6NosftkCcOIblwEHFfpPaFZpFcwVTELMAkGA1UEBhMCTkwxHjAc
|
||||
BgNVBAoTFVN0YWF0IGRlciBOZWRlcmxhbmRlbjEmMCQGA1UEAxMdU3RhYXQgZGVy
|
||||
IE5lZGVybGFuZGVuIFJvb3QgQ0GCBACYmnkwPQYDVR0fBDYwNDAyoDCgLoYsaHR0
|
||||
cDovL2NybC5wa2lvdmVyaGVpZC5ubC9Eb21PdkxhdGVzdENSTC5jcmwwHQYDVR0O
|
||||
BBYEFEwIyY128ZjHPt881y91DbF2eZfMMA0GCSqGSIb3DQEBBQUAA4IBAQAMlIca
|
||||
v03jheLu19hjeQ5Q38aEW9K72fUxCho1l3TfFPoqDz7toOMI9tVOW6+mriXiRWsi
|
||||
D7dUKH6S3o0UbNEc5W50BJy37zRERd/Jgx0ZH8Apad+J1T/CsFNt5U4X5HNhIxMm
|
||||
cUP9TFnLw98iqiEr2b+VERqKpOKrp11Lbyn1UtHk0hWxi/7wA8+nfemZhzizDXMU
|
||||
5HIs4c71rQZIZPrTKbmi2Lv01QulQERDjqC/zlqlUkxk0xcxYczopIro5Ij76eUv
|
||||
BjMzm5RmZrGrUDqhCYF0U1onuabSJc/Tw6f/ltAv6uAejVLpGBwgCkegllYOQJBR
|
||||
RKwa/fHuhR/3Qlpl
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
// Subject: CN=DigiNotar PKIoverheid CA Overheid
|
||||
// O=DigiNotar B.V.,
|
||||
// C=NL
|
||||
// Issuer: CN=Staat der Nederlanden Overheid CA
|
||||
// O=Staat der Nederlanden,
|
||||
// C=NL
|
||||
// Serial: 20006006 (01:31:44:76)
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEezCCA2OgAwIBAgIEATFEdjANBgkqhkiG9w0BAQUFADBZMQswCQYDVQQGEwJO
|
||||
TDEeMBwGA1UEChMVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSowKAYDVQQDEyFTdGFh
|
||||
dCBkZXIgTmVkZXJsYW5kZW4gT3ZlcmhlaWQgQ0EwHhcNMDQwNjI0MDgxOTMyWhcN
|
||||
MTAwNjIzMDgxNzM2WjBSMQswCQYDVQQGEwJOTDEXMBUGA1UEChMORGlnaU5vdGFy
|
||||
IEIuVi4xKjAoBgNVBAMTIURpZ2lOb3RhciBQS0lvdmVyaGVpZCBDQSBPdmVyaGVp
|
||||
ZDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANSlrubta5tlOjVCi/gb
|
||||
yLCvRqfBjxG8H594VcKHu0WAYc99SPZF9cycj5mw2GyfQvy/WIrGrL4iyNq1gSqR
|
||||
0QA/mTXKZIaPqzpDhdm+VvrKkmjrbZfaQxgMSs3ChtBsjcP9Lc0X1zXZ4Q8nBe3k
|
||||
BTp+zehINfmbjoEgXLxsMR5RQ6GxzKjuC04PQpbJQgTIakglKaqYcDDZbEscWgPV
|
||||
Hgj/2aoHlj6leW/ThHZ+O41jUguEmBLZA3mu3HrCfrHntb5dPt0ihzSx7GtD/SaX
|
||||
5HBLxnP189YuqMk5iRA95CtiSdKauvon/xRKRLNgG6XAz0ctSoY7xLDdiBVU5kJd
|
||||
FScCAwEAAaOCAVAwggFMMEgGA1UdIARBMD8wPQYEVR0gADA1MDMGCCsGAQUFBwIB
|
||||
FidodHRwOi8vd3d3LmRpZ2lub3Rhci5ubC9jcHMvcGtpb3ZlcmhlaWQwDwYDVR0T
|
||||
AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwgYAGA1UdIwR5MHeAFAuG1g93o2ix
|
||||
+2QJw4huXAQcV+k9oVmkVzBVMQswCQYDVQQGEwJOTDEeMBwGA1UEChMVU3RhYXQg
|
||||
ZGVyIE5lZGVybGFuZGVuMSYwJAYDVQQDEx1TdGFhdCBkZXIgTmVkZXJsYW5kZW4g
|
||||
Um9vdCBDQYIEAJiaeTA9BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3JsLnBraW92
|
||||
ZXJoZWlkLm5sL0RvbU92TGF0ZXN0Q1JMLmNybDAdBgNVHQ4EFgQUvRaYQh2+kdE9
|
||||
wpcl4CjXWOC1f+IwDQYJKoZIhvcNAQEFBQADggEBAGhQsCWLiaN2EOhPAW+JQP6o
|
||||
XBOrLv5w6joahzBFVn1BiefzmlMKjibqKYxURRvMAsMkh82/MfL8V0w6ugxl81lu
|
||||
i42dcxl9cKSVXKMw4bbBzJ2VQI5HTIABwefeNuy/eX6idVwYdt3ajAH7fUA8Q9Cq
|
||||
vr6H8B+8mwoEqTVTEVlCSsC/EXsokYEUr06PPzRudKjDmijgj7zFaIioZNc8hk7g
|
||||
ufEgrs/tmcNGylrwRHgCXjCRBt2NHlZ08l7A1AGU8HcHlSbG9Un/2q9kVHUkps0D
|
||||
gtUaEK+x6jpAu/R8Ojezu/+ZEcwwjI/KOhG+84+ejFmtyEkrUdsAdEdLf/2dKsw=
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
// Subject: EMAILADDRESS=info@diginotar.nl,
|
||||
// CN=DigiNotar Services 1024 CA
|
||||
// O=DigiNotar, C=NL
|
||||
// Issuer: CN=Entrust.net Secure Server Certification Authority,
|
||||
// OU=(c) 1999 Entrust.net Limited,
|
||||
// OU=www.entrust.net/CPS incorp. by ref. (limits liab.),
|
||||
// O=Entrust.net,
|
||||
// C=US
|
||||
// Serial: 1184640176 (46:9c:2c:b0)
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDzTCCAzagAwIBAgIERpwssDANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMC
|
||||
VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5u
|
||||
ZXQvQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc
|
||||
KGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5u
|
||||
ZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNzA3
|
||||
MjYxNTU5MDBaFw0xMzA4MjYxNjI5MDBaMGgxCzAJBgNVBAYTAk5MMRIwEAYDVQQK
|
||||
EwlEaWdpTm90YXIxIzAhBgNVBAMTGkRpZ2lOb3RhciBTZXJ2aWNlcyAxMDI0IENB
|
||||
MSAwHgYJKoZIhvcNAQkBFhFpbmZvQGRpZ2lub3Rhci5ubDCBnzANBgkqhkiG9w0B
|
||||
AQEFAAOBjQAwgYkCgYEA2ptNXTz50eKLxsYIIMXZHkjsZlhneWIrQWP0iY1o2q+4
|
||||
lDaLGSSkoJPSmQ+yrS01Tc0vauH5mxkrvAQafi09UmTN8T5nD4ku6PJPrqYIoYX+
|
||||
oakJ5sarPkP8r3oDkdqmOaZh7phPGKjTs69mgumfvN1y+QYEvRLZGCTnq5NTi1kC
|
||||
AwEAAaOCASYwggEiMBIGA1UdEwEB/wQIMAYBAf8CAQAwJwYDVR0lBCAwHgYIKwYB
|
||||
BQUHAwEGCCsGAQUFBwMCBggrBgEFBQcDBDARBgNVHSAECjAIMAYGBFUdIAAwMwYI
|
||||
KwYBBQUHAQEEJzAlMCMGCCsGAQUFBzABhhdodHRwOi8vb2NzcC5lbnRydXN0Lm5l
|
||||
dDAzBgNVHR8ELDAqMCigJqAkhiJodHRwOi8vY3JsLmVudHJ1c3QubmV0L3NlcnZl
|
||||
cjEuY3JsMB0GA1UdDgQWBBT+3JRJDG/vXH/G8RKZTxZJrfuCZTALBgNVHQ8EBAMC
|
||||
AQYwHwYDVR0jBBgwFoAU8BdiE1U9s/8KAGv7UISX8+1i0BowGQYJKoZIhvZ9B0EA
|
||||
BAwwChsEVjcuMQMCAIEwDQYJKoZIhvcNAQEFBQADgYEAY3RqN6k/lpxmyFisCcnv
|
||||
9WWUf6MCxDgxvV0jh+zUVrLJsm7kBQb87PX6iHBZ1O7m3bV6oKNgLwIMq94SXa/w
|
||||
NUuqikeRGvWFLELHHe+VQ7NeuJWTpdrFKKqtci0xrZlrbP+MISevrZqRK8fdWMNu
|
||||
B8WfedLHjFW/TMcnXlEWKz4=
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
// Subject: CN=Buster Paper Comercial Ltda,
|
||||
// O=Buster Paper Comercial Ltda,
|
||||
// L=S?o Jos? Dos Campos,
|
||||
// ST=S?o Paulo,
|
||||
// C=BR
|
||||
// Issuer: CN=DigiCert Assured ID Code Signing CA-1,
|
||||
// OU=www.digicert.com,
|
||||
// O=DigiCert Inc,
|
||||
// C=US
|
||||
// Serial: 07:b4:4c:db:ff:fb:78:de:05:f4:26:16:72:a6:73:12
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIGwzCCBaugAwIBAgIQB7RM2//7eN4F9CYWcqZzEjANBgkqhkiG9w0BAQUFADBv
|
||||
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
||||
d3cuZGlnaWNlcnQuY29tMS4wLAYDVQQDEyVEaWdpQ2VydCBBc3N1cmVkIElEIENv
|
||||
ZGUgU2lnbmluZyBDQS0xMB4XDTEzMDExNzAwMDAwMFoXDTE0MDEyMjEyMDAwMFow
|
||||
gY4xCzAJBgNVBAYTAkJSMRMwEQYDVQQIDApTw6NvIFBhdWxvMR4wHAYDVQQHDBVT
|
||||
w6NvIEpvc8OpIERvcyBDYW1wb3MxJDAiBgNVBAoTG0J1c3RlciBQYXBlciBDb21l
|
||||
cmNpYWwgTHRkYTEkMCIGA1UEAxMbQnVzdGVyIFBhcGVyIENvbWVyY2lhbCBMdGRh
|
||||
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzO0l6jWIpEfO2oUpVHpL
|
||||
HETj5lzivNb0S9jKHgGJax917czh81PnGTxwxFXd6gLJuy/XFHvmiSi8g8jzlymn
|
||||
2Ji5zQ3CPaz7nomJokSUDlMVJ2qYWtctw4jrdjuI4qtn+koXXUFkWjkf8h8251I4
|
||||
tUs7S49HE2Go5owCYP3byajj7fsFAYR/Xb7TdVtndkZsUB/YgOjHovyACjouaNCi
|
||||
mDiRyQ6zLLjZGiyeD65Yiseuhp5b8/BL5h1p7w76QYMYMVQNAdtDKut2R8MBpuWf
|
||||
Ny7Eoi0x/gm1p9X5Rcl5aN7K0G4UtTAJKbkuUfXddsyFoM0Nx8uo8SgNQ8Y/X5Jx
|
||||
BwIDAQABo4IDOTCCAzUwHwYDVR0jBBgwFoAUe2jOKarAF75JeuHlP9an90WPNTIw
|
||||
HQYDVR0OBBYEFFLZ3n5nt/Eer7n1bvtOqMb1qKO5MA4GA1UdDwEB/wQEAwIHgDAT
|
||||
BgNVHSUEDDAKBggrBgEFBQcDAzBzBgNVHR8EbDBqMDOgMaAvhi1odHRwOi8vY3Js
|
||||
My5kaWdpY2VydC5jb20vYXNzdXJlZC1jcy0yMDExYS5jcmwwM6AxoC+GLWh0dHA6
|
||||
Ly9jcmw0LmRpZ2ljZXJ0LmNvbS9hc3N1cmVkLWNzLTIwMTFhLmNybDCCAcQGA1Ud
|
||||
IASCAbswggG3MIIBswYJYIZIAYb9bAMBMIIBpDA6BggrBgEFBQcCARYuaHR0cDov
|
||||
L3d3dy5kaWdpY2VydC5jb20vc3NsLWNwcy1yZXBvc2l0b3J5Lmh0bTCCAWQGCCsG
|
||||
AQUFBwICMIIBVh6CAVIAQQBuAHkAIAB1AHMAZQAgAG8AZgAgAHQAaABpAHMAIABD
|
||||
AGUAcgB0AGkAZgBpAGMAYQB0AGUAIABjAG8AbgBzAHQAaQB0AHUAdABlAHMAIABh
|
||||
AGMAYwBlAHAAdABhAG4AYwBlACAAbwBmACAAdABoAGUAIABEAGkAZwBpAEMAZQBy
|
||||
AHQAIABDAFAALwBDAFAAUwAgAGEAbgBkACAAdABoAGUAIABSAGUAbAB5AGkAbgBn
|
||||
ACAAUABhAHIAdAB5ACAAQQBnAHIAZQBlAG0AZQBuAHQAIAB3AGgAaQBjAGgAIABs
|
||||
AGkAbQBpAHQAIABsAGkAYQBiAGkAbABpAHQAeQAgAGEAbgBkACAAYQByAGUAIABp
|
||||
AG4AYwBvAHIAcABvAHIAYQB0AGUAZAAgAGgAZQByAGUAaQBuACAAYgB5ACAAcgBl
|
||||
AGYAZQByAGUAbgBjAGUALjCBggYIKwYBBQUHAQEEdjB0MCQGCCsGAQUFBzABhhho
|
||||
dHRwOi8vb2NzcC5kaWdpY2VydC5jb20wTAYIKwYBBQUHMAKGQGh0dHA6Ly9jYWNl
|
||||
cnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRENvZGVTaWduaW5nQ0Et
|
||||
MS5jcnQwDAYDVR0TAQH/BAIwADANBgkqhkiG9w0BAQUFAAOCAQEAPTTQvpOIikXI
|
||||
hTLnNbajaFRR5GhQpTzUNgBfF9VYSlNw/wMjpGsrh5RxaJCip52jbehmTgjMRhft
|
||||
jRYyml44PAVsCcR9uEoDpCZYpI1fHI1R+F8jd1C9rqprbSwwOG4xlg4SmvTHYs6e
|
||||
gBItQ/1p9XY+Sf4Wv1qOuOFL1qvV/5VyR2zdlOQCmKCeMgxt6a/tHLBDiAA67D44
|
||||
/vfdoNJl0CU2It0PO60jdCPFNWIRcxL+OSDqAoePeUC7xQ+JsTEIxuUE8+d6w6fc
|
||||
BV2mYb1flh22t46GLjh4gyo7xw3aL6L0L0jzlTT6IcEw6NIbaPbIKj/npQnHobYj
|
||||
XMuKLxbh7g==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
// Subject: CN=BUSTER ASSISTENCIA TECNICA ELETRONICA LTDA - ME,
|
||||
// O=BUSTER ASSISTENCIA TECNICA ELETRONICA LTDA - ME,
|
||||
// L=S?o Paulo,
|
||||
// ST=S?o Paulo,
|
||||
// C=BR
|
||||
// Issuer: CN=DigiCert Assured ID Code Signing CA-1,
|
||||
// OU=www.digicert.com,
|
||||
// O=DigiCert Inc,
|
||||
// C=US
|
||||
// Serial: 0a:38:9b:95:ee:73:6d:d1:3b:c0:ed:74:3f:d7:4d:2f
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIG4DCCBcigAwIBAgIQCjible5zbdE7wO10P9dNLzANBgkqhkiG9w0BAQUFADBv
|
||||
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
||||
d3cuZGlnaWNlcnQuY29tMS4wLAYDVQQDEyVEaWdpQ2VydCBBc3N1cmVkIElEIENv
|
||||
ZGUgU2lnbmluZyBDQS0xMB4XDTEyMTEwOTAwMDAwMFoXDTEzMTExNDEyMDAwMFow
|
||||
gasxCzAJBgNVBAYTAkJSMRMwEQYDVQQIDApTw6NvIFBhdWxvMRMwEQYDVQQHDApT
|
||||
w6NvIFBhdWxvMTgwNgYDVQQKEy9CVVNURVIgQVNTSVNURU5DSUEgVEVDTklDQSBF
|
||||
TEVUUk9OSUNBIExUREEgLSBNRTE4MDYGA1UEAxMvQlVTVEVSIEFTU0lTVEVOQ0lB
|
||||
IFRFQ05JQ0EgRUxFVFJPTklDQSBMVERBIC0gTUUwggEiMA0GCSqGSIb3DQEBAQUA
|
||||
A4IBDwAwggEKAoIBAQDAqNeEs5/B2CTXGjTOkUIdu6jV6qulOZwdw4sefHWYj1UR
|
||||
4z6zPk9kjpUgbnb402RFq88QtfInwddZ/wXn9OxMtDd/3TnC7HrhNS7ga79ZFL2V
|
||||
JnmzKHum2Yvh0q82QEJ9tHBR2X9VdKpUIH08Zs3k6cWWM1H0YX0cxA/HohhesQJW
|
||||
kwJ3urOIJiH/HeByDk8a1NS8safcCxk5vxvW4WvCg43iT09LeHY5Aa8abKw8lqVb
|
||||
0tD5ZSIjdmdj3TT1U37iAHLLRM2DXbxfdbhouUX1c5U1ZHAMA67HwjKiseOiDaHj
|
||||
NUGbC37C+cgbc9VVM/cURD8WvS0Kj6fQv7F2QtJDAgMBAAGjggM5MIIDNTAfBgNV
|
||||
HSMEGDAWgBR7aM4pqsAXvkl64eU/1qf3RY81MjAdBgNVHQ4EFgQU88EXKAyDsh30
|
||||
o9+Gu9a4xUy+FSMwDgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQMMAoGCCsGAQUFBwMD
|
||||
MHMGA1UdHwRsMGowM6AxoC+GLWh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9hc3N1
|
||||
cmVkLWNzLTIwMTFhLmNybDAzoDGgL4YtaHR0cDovL2NybDQuZGlnaWNlcnQuY29t
|
||||
L2Fzc3VyZWQtY3MtMjAxMWEuY3JsMIIBxAYDVR0gBIIBuzCCAbcwggGzBglghkgB
|
||||
hv1sAwEwggGkMDoGCCsGAQUFBwIBFi5odHRwOi8vd3d3LmRpZ2ljZXJ0LmNvbS9z
|
||||
c2wtY3BzLXJlcG9zaXRvcnkuaHRtMIIBZAYIKwYBBQUHAgIwggFWHoIBUgBBAG4A
|
||||
eQAgAHUAcwBlACAAbwBmACAAdABoAGkAcwAgAEMAZQByAHQAaQBmAGkAYwBhAHQA
|
||||
ZQAgAGMAbwBuAHMAdABpAHQAdQB0AGUAcwAgAGEAYwBjAGUAcAB0AGEAbgBjAGUA
|
||||
IABvAGYAIAB0AGgAZQAgAEQAaQBnAGkAQwBlAHIAdAAgAEMAUAAvAEMAUABTACAA
|
||||
YQBuAGQAIAB0AGgAZQAgAFIAZQBsAHkAaQBuAGcAIABQAGEAcgB0AHkAIABBAGcA
|
||||
cgBlAGUAbQBlAG4AdAAgAHcAaABpAGMAaAAgAGwAaQBtAGkAdAAgAGwAaQBhAGIA
|
||||
aQBsAGkAdAB5ACAAYQBuAGQAIABhAHIAZQAgAGkAbgBjAG8AcgBwAG8AcgBhAHQA
|
||||
ZQBkACAAaABlAHIAZQBpAG4AIABiAHkAIAByAGUAZgBlAHIAZQBuAGMAZQAuMIGC
|
||||
BggrBgEFBQcBAQR2MHQwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0
|
||||
LmNvbTBMBggrBgEFBQcwAoZAaHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL0Rp
|
||||
Z2lDZXJ0QXNzdXJlZElEQ29kZVNpZ25pbmdDQS0xLmNydDAMBgNVHRMBAf8EAjAA
|
||||
MA0GCSqGSIb3DQEBBQUAA4IBAQAei1QmiXepje8OIfo/WonD4MIXgpPr2dfRaquQ
|
||||
A8q63OpTRSveyqdQDCSPpDRF/nvO1Y30yksZvIH1tNBsW5LBdxAKN3lFdBlqBwtE
|
||||
Q3jHc0KVVYRJ0FBaGE/PJHmRajscdAhYIcMPhTga0u0tDK+wOHEq3993dfl6yHjA
|
||||
XHU2iW5pnk75ZoE39zALD5eKXT8ZXrET5c3XUFJKWA+XuGmdmyzqo0Au49PanBv9
|
||||
UlZnabYfqoMArqMS0tGSX4cGgi9/2E+pHG9BX4sFW+ZDumroOA2pxyMWEKjxePEL
|
||||
zCOfhbsRWdMLYepauaNZOIMZXmFwcrIl0TGMkTAtATz+XmZc
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
// Subject: CN=CLEARESULT CONSULTING INC., OU=Corporate IT,
|
||||
// O=CLEARESULT CONSULTING INC., L=Austin, ST=TX, C=US
|
||||
// Issuer: SERIALNUMBER=07969287,
|
||||
// CN=Go Daddy Secure Certification Authority,
|
||||
// OU=http://certificates.godaddy.com/repository,
|
||||
// O="GoDaddy.com, Inc.",
|
||||
// L=Scottsdale,
|
||||
// ST=Arizona,
|
||||
// C=US
|
||||
// Serial: 2b:73:43:2a:a8:4f:44
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFYjCCBEqgAwIBAgIHK3NDKqhPRDANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE
|
||||
BhMCVVMxEDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAY
|
||||
BgNVBAoTEUdvRGFkZHkuY29tLCBJbmMuMTMwMQYDVQQLEypodHRwOi8vY2VydGlm
|
||||
aWNhdGVzLmdvZGFkZHkuY29tL3JlcG9zaXRvcnkxMDAuBgNVBAMTJ0dvIERhZGR5
|
||||
IFNlY3VyZSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTERMA8GA1UEBRMIMDc5Njky
|
||||
ODcwHhcNMTIwMjE1MjEwOTA2WhcNMTQwMjE1MjEwOTA2WjCBjDELMAkGA1UEBgwC
|
||||
VVMxCzAJBgNVBAgMAlRYMQ8wDQYDVQQHDAZBdXN0aW4xIzAhBgNVBAoMGkNMRUFS
|
||||
RVNVTFQgQ09OU1VMVElORyBJTkMuMRUwEwYDVQQLDAxDb3Jwb3JhdGUgSVQxIzAh
|
||||
BgNVBAMMGkNMRUFSRVNVTFQgQ09OU1VMVElORyBJTkMuMIIBIjANBgkqhkiG9w0B
|
||||
AQEFAAOCAQ8AMIIBCgKCAQEAtIOjCKeAicull+7ZIzt0/4ya3IeXUFlfypqKMLkU
|
||||
IbKjn0P5uMj6VE3rlbZr44RCegxvdnR6umBh1c0ZXoN3o+yc0JKcKcLiApmJJ277
|
||||
p7IbLwYDhBXRQNoIJm187IOMRPIxsKN4hL91txn9jGBmW+9zKlJlNhR5R7vjwU2E
|
||||
jrH/6oqsc9EM2yYpfjlNv6+3jSwAYZCkSWr+27PQOV+YHKmIxtJjX0upFz5FdIrV
|
||||
9CCX+L2Kji1THOkSgG4QTbYxmEcHqGViWz8hXLeNXjcbEsPuIiAu3hknxRHfUTE/
|
||||
U0Lh0Ug1e3LrJu+WnxM2SmUY4krsZ22c0yWUW9hzWITIjQIDAQABo4IBhzCCAYMw
|
||||
DwYDVR0TAQH/BAUwAwEBADATBgNVHSUEDDAKBggrBgEFBQcDAzAOBgNVHQ8BAf8E
|
||||
BAMCB4AwMwYDVR0fBCwwKjAooCagJIYiaHR0cDovL2NybC5nb2RhZGR5LmNvbS9n
|
||||
ZHM1LTE2LmNybDBTBgNVHSAETDBKMEgGC2CGSAGG/W0BBxcCMDkwNwYIKwYBBQUH
|
||||
AgEWK2h0dHA6Ly9jZXJ0aWZpY2F0ZXMuZ29kYWRkeS5jb20vcmVwb3NpdG9yeS8w
|
||||
gYAGCCsGAQUFBwEBBHQwcjAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZ29kYWRk
|
||||
eS5jb20vMEoGCCsGAQUFBzAChj5odHRwOi8vY2VydGlmaWNhdGVzLmdvZGFkZHku
|
||||
Y29tL3JlcG9zaXRvcnkvZ2RfaW50ZXJtZWRpYXRlLmNydDAfBgNVHSMEGDAWgBT9
|
||||
rGEyk2xF1uLuhV+auud2mWjM5zAdBgNVHQ4EFgQUDtdeKqeN2QkcbEp1HovFieNB
|
||||
XiowDQYJKoZIhvcNAQEFBQADggEBAD74Agw5tvi2aBl4/f/s7/VE/BClzDsKMb9K
|
||||
v9qpeC45ZA/jelxV11HKbQnVF194gDb7D2H9OsAsRUy8HVKbXEcc/8dKvwOqb+BC
|
||||
2i/EmfjLgmCfezNFtLq8xcPxF3zIRc44vPrK0z4YZsaHdH+yTEJ51p5EMdTqaLaP
|
||||
4n5m8LX3RfqlQB9dYFe6dUoYZjKm9d/pIRww3VqfOzjl42Edi1w6dWmBVMx1NZuR
|
||||
DBabJH1vJ9Gd+KwxMCmBZ6pQPl28JDimhJhI2LNqU349uADQVV0HJosddN/ARyyI
|
||||
LSIQO7BnNVKVG9Iujf33bvPNeg0qNz5qw+rKKq97Pqeum+L5oKU=
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
// Subject: CN=eDellRoot
|
||||
// Issuer: CN=eDellRoot
|
||||
// Serial Number:
|
||||
// 6b:c5:7b:95:18:93:aa:97:4b:62:4a:c0:88:fc:3b:b6
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIC8zCCAd+gAwIBAgIQa8V7lRiTqpdLYkrAiPw7tjAJBgUrDgMCHQUAMBQxEjAQ
|
||||
BgNVBAMTCWVEZWxsUm9vdDAeFw0xNTA0MDcxMDIzMjdaFw0zOTEyMzEyMzU5NTla
|
||||
MBQxEjAQBgNVBAMTCWVEZWxsUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
|
||||
AQoCggEBAL3RJg1uzVuEX0Hw4XWGzs6oI9W+o7HZdVdBMMVb4Gzb4uZjCTNjbPx4
|
||||
b8LNFL1uArUt+5VVMQDsOTY3Lg/Xe/UNukY2b+0llUOzzBYYpbsFcco4n6SsTvDh
|
||||
Ni5t+kPo7c23ZrYBPmOu82eEJ6cavs/t39u+wFOkXXwvRCiHA/lWyNWNEPh17+bC
|
||||
EP3q5N+JrV+6Ho3zQPEv5QUJYdmXsMmD2CMQojeQUj68J91P5w5BKjurG0xjivzh
|
||||
Soie9ym7VRwLFjWScRuw/9XV6CLqTyL5xrqiiDp1uTOuqNj3uxyts9ocbsoJXuxj
|
||||
5iEYkSM1nvLupEv+lgy9WqzIEFMm1l8CAwEAAaNJMEcwRQYDVR0BBD4wPIAQYA/f
|
||||
EzPwmaRcZuSaa/VZ1KEWMBQxEjAQBgNVBAMTCWVEZWxsUm9vdIIQa8V7lRiTqpdL
|
||||
YkrAiPw7tjAJBgUrDgMCHQUAA4IBAQArfdcScsezj8ooJ92UwwnPgg36noOgiUs5
|
||||
XzPLP4h0JpUYQVKB9hY1WTDwRUfTKGh7oNOowd027a/rVSb/TNeoiJIvMKn4gbvV
|
||||
CWAiHhO8u2u0RkHCDVsa7e0i4ncpueWsihjn6jBrY8T+7eDYwiFT/F03A8NJ7mK5
|
||||
lZA8SFd5CTDy3EBUU5UwzXUc5HoIRUxXSPycu3aIBWawg3sCdKiAoikScPAWj0bM
|
||||
0vmsP/8QSlTOBqO+QFQ6R82BtTvBNU3qbVICV4QObsxib++FAFL56NApPqskg7Vz
|
||||
LfNIAjKabHUcjbuZkmg6jr4BfYW7+oQDHCsYgADjjKGdKz/8U/fP
|
||||
-----END CERTIFICATE-----
|
||||
749
make/data/blockedcertsconverter/blocked.certs.pem
Normal file
749
make/data/blockedcertsconverter/blocked.certs.pem
Normal file
@@ -0,0 +1,749 @@
|
||||
#! java BlockedCertsConverter SHA-256
|
||||
|
||||
# The line above must be the first line of this file. Do not
|
||||
# remove it.
|
||||
|
||||
// Subject: CN=Digisign Server ID (Enrich),
|
||||
// OU=457608-K,
|
||||
// O=Digicert Sdn. Bhd.,
|
||||
// C=MY
|
||||
// Issuer: CN=GTE CyberTrust Global Root,
|
||||
// OU=GTE CyberTrust Solutions, Inc.,
|
||||
// O=GTE Corporation,
|
||||
// C=US
|
||||
// Serial: 120001705 (07:27:14:a9)
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDyzCCAzSgAwIBAgIEBycUqTANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQGEwJV
|
||||
UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU
|
||||
cnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEds
|
||||
b2JhbCBSb290MB4XDTA3MDcxNzE1MTc0OFoXDTEyMDcxNzE1MTY1NFowYzELMAkG
|
||||
A1UEBhMCTVkxGzAZBgNVBAoTEkRpZ2ljZXJ0IFNkbi4gQmhkLjERMA8GA1UECxMI
|
||||
NDU3NjA4LUsxJDAiBgNVBAMTG0RpZ2lzaWduIFNlcnZlciBJRCAoRW5yaWNoKTCB
|
||||
nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEArahkS02Hx4RZufuQRqCmicDx/tXa
|
||||
VII3DZkrRSYK6Fawf8qo9I5HhAGCKeOzarWR8/uVhbxyqGToCkCcxfRxrnt7agfq
|
||||
kBRPjYmvlKuyBtQCanuYH1m5Os1U+iDfsioK6bjdaZDAKdNO0JftZszFGUkGf/pe
|
||||
LHx7hRsyQt97lSUCAwEAAaOCAXgwggF0MBIGA1UdEwEB/wQIMAYBAf8CAQAwXAYD
|
||||
VR0gBFUwUzBIBgkrBgEEAbE+AQAwOzA5BggrBgEFBQcCARYtaHR0cDovL2N5YmVy
|
||||
dHJ1c3Qub21uaXJvb3QuY29tL3JlcG9zaXRvcnkuY2ZtMAcGBWCDSgEBMA4GA1Ud
|
||||
DwEB/wQEAwIB5jCBiQYDVR0jBIGBMH+heaR3MHUxCzAJBgNVBAYTAlVTMRgwFgYD
|
||||
VQQKEw9HVEUgQ29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNv
|
||||
bHV0aW9ucywgSW5jLjEjMCEGA1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJv
|
||||
b3SCAgGlMEUGA1UdHwQ+MDwwOqA4oDaGNGh0dHA6Ly93d3cucHVibGljLXRydXN0
|
||||
LmNvbS9jZ2ktYmluL0NSTC8yMDE4L2NkcC5jcmwwHQYDVR0OBBYEFMYWk04WF+wW
|
||||
royUdvOGbcV0boR3MA0GCSqGSIb3DQEBBQUAA4GBAHYAe6Z4K2Ydjl42xqSOBfIj
|
||||
knyTZ9P0wAp9iy3Z6tVvGvPhSilaIoRNUC9LDPL/hcJ7VdREgr5trGeOvLQfkpxR
|
||||
gBoU9m6rYYgLrRx/90tQUdZlG6ZHcRVesHHzNRTyN71jyNXwk1o0X9g96F33xR7A
|
||||
5c8fhiSpPAdmzcHSNmNZ
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
// Subject: CN=Digisign Server ID - (Enrich),
|
||||
// OU=457608-K,
|
||||
// O=Digicert Sdn. Bhd.,
|
||||
// C=MY
|
||||
// Issuer: CN=Entrust.net Certification Authority (2048)
|
||||
// OU=(c) 1999 Entrust.net Limited,
|
||||
// OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.),
|
||||
// O=Entrust.net
|
||||
// Serial: 1184644297 (4c:0e:63:6a)
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEzjCCA7agAwIBAgIETA5jajANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChML
|
||||
RW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBp
|
||||
bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5
|
||||
IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENlcnRp
|
||||
ZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw0xMDA3MTYxNzIzMzdaFw0xNTA3
|
||||
MTYxNzUzMzdaMGUxCzAJBgNVBAYTAk1ZMRswGQYDVQQKExJEaWdpY2VydCBTZG4u
|
||||
IEJoZC4xETAPBgNVBAsTCDQ1NzYwOC1LMSYwJAYDVQQDEx1EaWdpc2lnbiBTZXJ2
|
||||
ZXIgSUQgLSAoRW5yaWNoKTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
|
||||
AMWJ5PQNBkCSWccaszXRDkwqM/n4r8qef+65p21g9FTob9Wb8xtjMQRoctE0Foy0
|
||||
FyyX3nPF2JAVoBor9cuzSIZE8B2ITM5BQhrv9Qze/kDaOSD3BlU6ap1GwdJvpbLI
|
||||
Vz4po5zg6YV3ZuiYpyR+vsBZIOVEb7ZX2L7OwmV3WMZhQdF0BMh/SULFcqlyFu6M
|
||||
3RJdtErU0a9Qt9iqdXZorT5dqjBtYairEFs+E78z4K9EnTgiW+9ML6ZxJhUmyiiM
|
||||
2fqOjqmiFDXimySItPR/hZ2DTwehthSQNsQ0HI0mYW0Tb3i+6I8nx0uElqOGaAwj
|
||||
vgvsjJQAqQSKE5D334VsDLECAwEAAaOCATQwggEwMA4GA1UdDwEB/wQEAwIBBjAS
|
||||
BgNVHRMBAf8ECDAGAQH/AgEAMCcGA1UdJQQgMB4GCCsGAQUFBwMBBggrBgEFBQcD
|
||||
AgYIKwYBBQUHAwQwMwYIKwYBBQUHAQEEJzAlMCMGCCsGAQUFBzABhhdodHRwOi8v
|
||||
b2NzcC5lbnRydXN0Lm5ldDBEBgNVHSAEPTA7MDkGBWCDSgEBMDAwLgYIKwYBBQUH
|
||||
AgEWImh0dHA6Ly93d3cuZGlnaWNlcnQuY29tLm15L2Nwcy5odG0wMgYDVR0fBCsw
|
||||
KTAnoCWgI4YhaHR0cDovL2NybC5lbnRydXN0Lm5ldC8yMDQ4Y2EuY3JsMBEGA1Ud
|
||||
DgQKBAhMTswlKAMpgTAfBgNVHSMEGDAWgBRV5IHREYC+2Im5CKMx+aEkCRa5cDAN
|
||||
BgkqhkiG9w0BAQUFAAOCAQEAl0zvSjpJrHL8MCBrtClbp8WVBJD5MtXChWreA6E3
|
||||
+YkAsFqsVX7bQzX/yQH4Ub7MJsrIaqTEVD4mHucMo82XZ5TdpkLrXM2POXlrM3kh
|
||||
Bnn6gkQVmczBtznTRmJ8snDrb84gqj4Zt+l0gpy0pUtNYQA35IfS8hQ6ZHy4qXth
|
||||
4JMi59WfPkfmNnagU9gAAzoPtTP+lsrT0oI6Lt3XSOHkp2nMHOmZSufKcEXXCwcO
|
||||
mnUb0C+Sb/akB8O9HEumhLZ9qJqp0qcp8QtXaR6XVybsK0Os1EWDBQDp4/BGQAf6
|
||||
6rFRc5Mcpd1TETfIKqcVJx20qsx/qjEw/LhFn0gJ7RDixQ==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
// Subject: CN=Java Media APIs,
|
||||
// OU=Java Signed Extensions,
|
||||
// OU=Corporate Object Signing,
|
||||
// O=Sun Microsystems Inc
|
||||
// Issuer: CN=Object Signing CA,
|
||||
// OU=Class 2 OnSite Subscriber CA,
|
||||
// OU=VeriSign Trust Network,
|
||||
// O=Sun Microsystems Inc
|
||||
// Serial: 6a:8b:99:91:37:59:4f:89:53:e2:97:18:9f:19:1e:4e
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFdzCCBF+gAwIBAgIQaouZkTdZT4lT4pcYnxkeTjANBgkqhkiG9w0BAQUFADCB
|
||||
gzEdMBsGA1UEChMUU3VuIE1pY3Jvc3lzdGVtcyBJbmMxHzAdBgNVBAsTFlZlcmlT
|
||||
aWduIFRydXN0IE5ldHdvcmsxJTAjBgNVBAsTHENsYXNzIDIgT25TaXRlIFN1YnNj
|
||||
cmliZXIgQ0ExGjAYBgNVBAMTEU9iamVjdCBTaWduaW5nIENBMB4XDTA5MDUxMjAw
|
||||
MDAwMFoXDTEyMDUxMTIzNTk1OVowfTEdMBsGA1UEChQUU3VuIE1pY3Jvc3lzdGVt
|
||||
cyBJbmMxITAfBgNVBAsUGENvcnBvcmF0ZSBPYmplY3QgU2lnbmluZzEfMB0GA1UE
|
||||
CxQWSmF2YSBTaWduZWQgRXh0ZW5zaW9uczEYMBYGA1UEAxQPSmF2YSBNZWRpYSBB
|
||||
UElzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAl5blzoKTVE8y4Hpz
|
||||
q6E15RZz1bF5HnYEyYqgHkZXnAKedmYCoMzm1XK8s+gQWShLEvGEAvs5yqarx9gE
|
||||
nnC21N28aEZgIJMa2/arKxCUkS4pxdGPYGexL9UzSRkUpoBShCZKEGdmX7gfJE2K
|
||||
/sd9MFvGV5/yZtWXrADzvm0Kd/9mg1KRv1gfrZIq0TJbupoXPYYqb73AkI9eT2ZD
|
||||
q9MdwD4E5+oojsDFXt8GU/D00fUhtXpYwuplU7D667WHYdJhIah0ST6JywyqcLXG
|
||||
XSuFTXOgITT2idSHluZVmx3dqJ72u9kPkO4JdJTMDfaK8zgNLaRkiU8Qcj+qhLYH
|
||||
ytaqcwIDAQABo4IB6jCCAeYwCQYDVR0TBAIwADAOBgNVHQ8BAf8EBAMCB4AwfwYD
|
||||
VR0fBHgwdjB0oHKgcIZuaHR0cDovL29uc2l0ZWNybC52ZXJpc2lnbi5jb20vU3Vu
|
||||
TWljcm9zeXN0ZW1zSW5jQ29ycG9yYXRlT2JqZWN0U2lnbmluZ0phdmFTaWduZWRF
|
||||
eHRlbnNpb25zQ2xhc3NCL0xhdGVzdENSTC5jcmwwHwYDVR0jBBgwFoAUs0crgn5T
|
||||
tHPKuLsZt76BTQeVx+0wHQYDVR0OBBYEFKS32mVx0gNWTeS4ProHEaeSpvvIMDsG
|
||||
CCsGAQUFBwEBBC8wLTArBggrBgEFBQcwAYYfaHR0cDovL29uc2l0ZS1vY3NwLnZl
|
||||
cmlzaWduLmNvbTCBtQYDVR0gBIGtMIGqMDkGC2CGSAGG+EUBBxcCMCowKAYIKwYB
|
||||
BQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9ycGEwbQYLYIZIAYb3AIN9
|
||||
nD8wXjAnBggrBgEFBQcCARYbaHR0cHM6Ly93d3cuc3VuLmNvbS9wa2kvY3BzMDMG
|
||||
CCsGAQUFBwICMCcaJVZhbGlkYXRlZCBGb3IgU3VuIEJ1c2luZXNzIE9wZXJhdGlv
|
||||
bnMwEwYDVR0lBAwwCgYIKwYBBQUHAwMwDQYJKoZIhvcNAQEFBQADggEBAAe6BO4W
|
||||
3TSNWfezyelJs6kE3HfulT6Bdyz4UUoh9ykXcV8nRwT+kh25I5MdyG2GfkJoADPR
|
||||
VhC5DYo13UFpIsTNVjq+hGYe2hML93bN7ad9SxCCyjHUo3yMz2qgBbHZI3VA9ZHA
|
||||
aWM4Tx0saMwbcnVvlbuGh+PXvStfypJqYT6lzcdFfjNVX4FI/QQNGhBswMY51tC8
|
||||
GTBCL2qhJon0gSCU4zaawDOf7+XxJWirLamYL1Aal1/h2z2sFrvA/1ftxtU3kZ6I
|
||||
7De8DyoHeZg7pYGdrj7g+lPhCga/WvEhN152I+aP08YbFcJHYmK05ngl/Ye4c6Bd
|
||||
cdrdfbw6QzEUIYY=
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
// Subject: CN=JavaFX 1.0 Runtime,
|
||||
// OU=Java Signed Extensions,
|
||||
// OU=Corporate Object Signing,
|
||||
// O=Sun Microsystems Inc
|
||||
// Issuer: CN=Object Signing CA,
|
||||
// OU=Class 2 OnSite Subscriber CA,
|
||||
// OU=VeriSign Trust Network,
|
||||
// O=Sun Microsystems Inc
|
||||
// Serial: 55:c0:e6:44:59:59:79:9e:d9:26:f1:b0:4a:1e:f0:27
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFezCCBGOgAwIBAgIQVcDmRFlZeZ7ZJvGwSh7wJzANBgkqhkiG9w0BAQUFADCB
|
||||
gzEdMBsGA1UEChMUU3VuIE1pY3Jvc3lzdGVtcyBJbmMxHzAdBgNVBAsTFlZlcmlT
|
||||
aWduIFRydXN0IE5ldHdvcmsxJTAjBgNVBAsTHENsYXNzIDIgT25TaXRlIFN1YnNj
|
||||
cmliZXIgQ0ExGjAYBgNVBAMTEU9iamVjdCBTaWduaW5nIENBMB4XDTA4MTAwOTAw
|
||||
MDAwMFoXDTExMTAwOTIzNTk1OVowgYAxHTAbBgNVBAoUFFN1biBNaWNyb3N5c3Rl
|
||||
bXMgSW5jMSEwHwYDVQQLFBhDb3Jwb3JhdGUgT2JqZWN0IFNpZ25pbmcxHzAdBgNV
|
||||
BAsUFkphdmEgU2lnbmVkIEV4dGVuc2lvbnMxGzAZBgNVBAMUEkphdmFGWCAxLjAg
|
||||
UnVudGltZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM+WDc6+bu+4
|
||||
tmAcS/lBtUc02WOt9QZpVsXg9cG2pu/8bUtmDELa8iiYBVFpIs8DU58HLrGQtCUY
|
||||
SIAGOVPsOJoN29UKCDWfY9j5JeVhfhMGqk9DwrWhzgsjy4cpZ1pIp+k/fJ8zT8Ul
|
||||
aYLpow1vg3UNddsmwz02tN7cOrMw9WYIG4CRYnY1OrtJSfe2pYzheC4zyvR+aiVl
|
||||
nang2OtqikSQsNFOFHsLOJFxngy9LrO8evDSu25VTKI6zlWU6/bMeqtztJPN0VOn
|
||||
NyUrJZvkxZ207Jg0T693BGSxNC1n+ihztXogql8950M/pEuUbDjylv5FFvlp6DSB
|
||||
dDT2MkutmyMCAwEAAaOCAeowggHmMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgeA
|
||||
MH8GA1UdHwR4MHYwdKByoHCGbmh0dHA6Ly9vbnNpdGVjcmwudmVyaXNpZ24uY29t
|
||||
L1N1bk1pY3Jvc3lzdGVtc0luY0NvcnBvcmF0ZU9iamVjdFNpZ25pbmdKYXZhU2ln
|
||||
bmVkRXh0ZW5zaW9uc0NsYXNzQi9MYXRlc3RDUkwuY3JsMB8GA1UdIwQYMBaAFLNH
|
||||
K4J+U7Rzyri7Gbe+gU0HlcftMB0GA1UdDgQWBBTjgufVi3XJ3gx1ewsA6Rr7BR4Z
|
||||
zjA7BggrBgEFBQcBAQQvMC0wKwYIKwYBBQUHMAGGH2h0dHA6Ly9vbnNpdGUtb2Nz
|
||||
cC52ZXJpc2lnbi5jb20wgbUGA1UdIASBrTCBqjA5BgtghkgBhvhFAQcXAjAqMCgG
|
||||
CCsGAQUFBwIBFhxodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhMG0GC2CGSAGG
|
||||
9wCDfZw/MF4wJwYIKwYBBQUHAgEWG2h0dHBzOi8vd3d3LnN1bi5jb20vcGtpL2Nw
|
||||
czAzBggrBgEFBQcCAjAnGiVWYWxpZGF0ZWQgRm9yIFN1biBCdXNpbmVzcyBPcGVy
|
||||
YXRpb25zMBMGA1UdJQQMMAoGCCsGAQUFBwMDMA0GCSqGSIb3DQEBBQUAA4IBAQAB
|
||||
YVJTTVe7rzyTO4jc3zajErOT/COkdQTfNo0eIX1QbNynFieJvwY/jRzUZwjktIFR
|
||||
2p4JtbpHGAtKtjOAOTieQ8xdDOoC1djzpE7/AbMvuvlTavtUKT+F7tPdhfXgWXJV
|
||||
6Wbt8jryKyk3zZGiEhauIwZUkfjRkEtffEmZWLUd8c8rURJjfC/XHH2oyurscoxc
|
||||
CjX29c9ynxSiS/VvQp1an0HvErGh69N48wj7cj8mtZ1yHzd2XCzSSR1OfTPfk0Pt
|
||||
yg51p7yJaFiH21PTZegEL6zyVNOYBTKwwIi2OzpwYalD3uvK6e3OKDrfFCOxu17u
|
||||
4PveESbrdyrmvLe7IVez
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
// Subject: CN=JavaFX Runtime,
|
||||
// OU=Java Signed Extensions,
|
||||
// OU=Corporate Object Signing,
|
||||
// O=Sun Microsystems Inc
|
||||
// Issuer: CN=Object Signing CA,
|
||||
// OU=Class 2 OnSite Subscriber CA,
|
||||
// OU=VeriSign Trust Network,
|
||||
// O=Sun Microsystems Inc
|
||||
// Serial: 47:f4:55:f1:da:4a:5e:f9:e3:f7:a8:03:62:17:c0:ff
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFdjCCBF6gAwIBAgIQR/RV8dpKXvnj96gDYhfA/zANBgkqhkiG9w0BAQUFADCB
|
||||
gzEdMBsGA1UEChMUU3VuIE1pY3Jvc3lzdGVtcyBJbmMxHzAdBgNVBAsTFlZlcmlT
|
||||
aWduIFRydXN0IE5ldHdvcmsxJTAjBgNVBAsTHENsYXNzIDIgT25TaXRlIFN1YnNj
|
||||
cmliZXIgQ0ExGjAYBgNVBAMTEU9iamVjdCBTaWduaW5nIENBMB4XDTA5MDEyOTAw
|
||||
MDAwMFoXDTEyMDEyOTIzNTk1OVowfDEdMBsGA1UEChQUU3VuIE1pY3Jvc3lzdGVt
|
||||
cyBJbmMxITAfBgNVBAsUGENvcnBvcmF0ZSBPYmplY3QgU2lnbmluZzEfMB0GA1UE
|
||||
CxQWSmF2YSBTaWduZWQgRXh0ZW5zaW9uczEXMBUGA1UEAxQOSmF2YUZYIFJ1bnRp
|
||||
bWUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCIzd0fAk8mI9ONc6RJ
|
||||
aGieioK2FLdXEwj8zL3vdGDVmBwyR1zwYkaOIFFgF9IW/8qc4iAYA5sGUY+0g8q3
|
||||
5DuYAxfTzBB5KdaYvbuq6GGnoHIWmTirXY+1friFp8lyXSvtuEaGB1VHaBoZchEg
|
||||
k+UgeVDA43dHwcT1Ov3DePczJRUes8T/QHzLX+BxUDG43vjyncCEO/AjqLZxXEz2
|
||||
xrNbKLcH3lGMJK7hdbfssUfF5BjC38Hn71HauYlA43b2no+2y0Sjulwzez2YPbDC
|
||||
0GLR3TnKtA8dqOrnl5t3DniDbfOBNtBE3VOydJO0XW57Ng1HRXD023nm9ECPY2xp
|
||||
0N/pAgMBAAGjggHqMIIB5jAJBgNVHRMEAjAAMA4GA1UdDwEB/wQEAwIHgDB/BgNV
|
||||
HR8EeDB2MHSgcqBwhm5odHRwOi8vb25zaXRlY3JsLnZlcmlzaWduLmNvbS9TdW5N
|
||||
aWNyb3N5c3RlbXNJbmNDb3Jwb3JhdGVPYmplY3RTaWduaW5nSmF2YVNpZ25lZEV4
|
||||
dGVuc2lvbnNDbGFzc0IvTGF0ZXN0Q1JMLmNybDAfBgNVHSMEGDAWgBSzRyuCflO0
|
||||
c8q4uxm3voFNB5XH7TAdBgNVHQ4EFgQUvOdd0cKPj+Yik/iOBwTdphh5A+gwOwYI
|
||||
KwYBBQUHAQEELzAtMCsGCCsGAQUFBzABhh9odHRwOi8vb25zaXRlLW9jc3AudmVy
|
||||
aXNpZ24uY29tMIG1BgNVHSAEga0wgaowOQYLYIZIAYb4RQEHFwIwKjAoBggrBgEF
|
||||
BQcCARYcaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYTBtBgtghkgBhvcAg32c
|
||||
PzBeMCcGCCsGAQUFBwIBFhtodHRwczovL3d3dy5zdW4uY29tL3BraS9jcHMwMwYI
|
||||
KwYBBQUHAgIwJxolVmFsaWRhdGVkIEZvciBTdW4gQnVzaW5lc3MgT3BlcmF0aW9u
|
||||
czATBgNVHSUEDDAKBggrBgEFBQcDAzANBgkqhkiG9w0BAQUFAAOCAQEAbGcf2NjL
|
||||
AI93HG6ny2BbepaZA1a8xa/R6uUc7xV+Qw6MgLwFD4Q4i6LWUztQDvg9l68MM2/i
|
||||
Y9LEi1KM4lcNbK5+D+t9x98wXBiuojXhVdp5ZmC03EyEBbriopdBsmXVLDSu/Y3+
|
||||
zowOO5xwpMK3dbgsSDs2Vt0UosD3FTcRaD3GNfOhXMp+o1grHNiXF9YgkmdQbPPZ
|
||||
DQ2KBhFPCRJXBGvyKOqno/DTg0sQ3crGH/C4/4t7mnQXWldZotmJUZ0ONc9oD+Q1
|
||||
JAaguUKqIwn9yZ093ie+JWHbYNid9IIIPXYgtRxmf9a376WBhqhu56uJftBJ7x9g
|
||||
eQ7Lot6CSWCiFw==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
// Subject: CN=Solaris INTERNAL DEVELOPMENT USE ONLY,
|
||||
// OU=Solaris Cryptographic Framework,
|
||||
// OU=Corporate Object Signing,
|
||||
// O=Sun Microsystems Inc
|
||||
// Issuer: CN=Object Signing CA,
|
||||
// OU=Class 2 OnSite Subscriber CA,
|
||||
// OU=VeriSign Trust Network,
|
||||
// O=Sun Microsystems Inc
|
||||
// Serial: 77:29:77:52:6a:19:7b:9a:a6:a2:c7:99:a0:e1:cd:8c
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFHjCCBAagAwIBAgIQdyl3UmoZe5qmoseZoOHNjDANBgkqhkiG9w0BAQUFADCB
|
||||
gzEdMBsGA1UEChMUU3VuIE1pY3Jvc3lzdGVtcyBJbmMxHzAdBgNVBAsTFlZlcmlT
|
||||
aWduIFRydXN0IE5ldHdvcmsxJTAjBgNVBAsTHENsYXNzIDIgT25TaXRlIFN1YnNj
|
||||
cmliZXIgQ0ExGjAYBgNVBAMTEU9iamVjdCBTaWduaW5nIENBMB4XDTA3MDEwNDAw
|
||||
MDAwMFoXDTEwMDEwMzIzNTk1OVowgZwxHTAbBgNVBAoUFFN1biBNaWNyb3N5c3Rl
|
||||
bXMgSW5jMSEwHwYDVQQLFBhDb3Jwb3JhdGUgT2JqZWN0IFNpZ25pbmcxKDAmBgNV
|
||||
BAsUH1NvbGFyaXMgQ3J5cHRvZ3JhcGhpYyBGcmFtZXdvcmsxLjAsBgNVBAMUJVNv
|
||||
bGFyaXMgSU5URVJOQUwgREVWRUxPUE1FTlQgVVNFIE9OTFkwgZ8wDQYJKoZIhvcN
|
||||
AQEBBQADgY0AMIGJAoGBALbNU4hf3mD5ArDI9pjgioAyvV3bjMPRQdCZniIeGJBp
|
||||
odFlSEH+Mh64W1DsY8coeZ7FvvGJkx9IpTMJW9k8w1oJK9UNqHyAQfaYjQyXi3xQ
|
||||
LJp62EvYdGfDlwOZejEcR/MbzZG+GOPMMvQj5+xyFDvLXNGfQNTnxw2qnBgCJXjj
|
||||
AgMBAAGjggH1MIIB8TAJBgNVHRMEAjAAMA4GA1UdDwEB/wQEAwIHgDCBiQYDVR0f
|
||||
BIGBMH8wfaB7oHmGd2h0dHA6Ly9vbnNpdGVjcmwudmVyaXNpZ24uY29tL1N1bk1p
|
||||
Y3Jvc3lzdGVtc0luY0NvcnBvcmF0ZU9iamVjdFNpZ25pbmdTb2xhcmlzQ3J5cHRv
|
||||
Z3JhcGhpY0ZyYW1ld29ya0NsYXNzQi9MYXRlc3RDUkwuY3JsMB8GA1UdIwQYMBaA
|
||||
FLNHK4J+U7Rzyri7Gbe+gU0HlcftMB0GA1UdDgQWBBRpfiGYkehTnsIzuN2H6AFb
|
||||
VCZG8jA7BggrBgEFBQcBAQQvMC0wKwYIKwYBBQUHMAGGH2h0dHA6Ly9vbnNpdGUt
|
||||
b2NzcC52ZXJpc2lnbi5jb20wgbUGA1UdIASBrTCBqjA5BgtghkgBhvhFAQcXAjAq
|
||||
MCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhMG0GC2CG
|
||||
SAGG9wCDfZw/MF4wJwYIKwYBBQUHAgEWG2h0dHBzOi8vd3d3LnN1bi5jb20vcGtp
|
||||
L2NwczAzBggrBgEFBQcCAjAnFiVWYWxpZGF0ZWQgRm9yIFN1biBCdXNpbmVzcyBP
|
||||
cGVyYXRpb25zMBMGA1UdJQQMMAoGCCsGAQUFBwMDMA0GCSqGSIb3DQEBBQUAA4IB
|
||||
AQCG5soy3LFHTFbA8/5SzDRhQoJkHUnOP0t3b6nvX6vZYRp649fje7TQOPRm1pFd
|
||||
CZ17J+tggdZwgzTqY4aYpJ00jZaK6pV37q/vgFC/ia6jDs8Q+ly9cEcadBZ5loYg
|
||||
cmxp9p57W2MNWx8VA8oFdNtKfF0jUNXbLNtvwGHmgR6YcwLrGN1b6/9Lt9bO3ODl
|
||||
FO+ZDwkfQz5ClUVrTx2dGBvKRYFqSG5S8JAfsgYhPvcacUQkA7ExyKvfRXLWVrce
|
||||
ZiPpcElbx+819H2sAPvVvparVeAruZGMAtejHZp9NFoowKen5drJp9VxePS4eM49
|
||||
3DepB6lKRrNRw66LNQol4ZBz
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
// Subject: EMAILADDRESS=info@diginotar.nl, CN=DigiNotar Cyber CA,
|
||||
// O=DigiNotar, C=NL
|
||||
// Issuer: CN=GTE CyberTrust Global Root,
|
||||
// OU=GTE CyberTrust Solutions, Inc.,
|
||||
// O=GTE Corporation,
|
||||
// C=US
|
||||
// Serial: 120000525 (07:27:10:0D)
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFWjCCBMOgAwIBAgIEBycQDTANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQGEwJV
|
||||
UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU
|
||||
cnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEds
|
||||
b2JhbCBSb290MB4XDTA2MTAwNDEwNTQxMVoXDTExMTAwNDEwNTMxMVowYDELMAkG
|
||||
A1UEBhMCTkwxEjAQBgNVBAoTCURpZ2lOb3RhcjEbMBkGA1UEAxMSRGlnaU5vdGFy
|
||||
IEN5YmVyIENBMSAwHgYJKoZIhvcNAQkBFhFpbmZvQGRpZ2lub3Rhci5ubDCCAiIw
|
||||
DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANLOFQotqF6EZ639vu9Gx8i5z3P8
|
||||
9DS5+SxD52ATPXrjss87Z2yQrcC5P4RS8DVC3HTcKDu9UrSnrHJFF8bwieu0qiXy
|
||||
XUte0dmHutZ9fPXOMp8QM8WxSrtekTHC0OlBwpFkfglBO9uLCDdqqspS3rU5HsCI
|
||||
A6U/i5kTYUO1m4Kz7iBvz6FEouova0CfjytXraFTwoUiaZ2gP1HfC0GRDaXhqKpc
|
||||
SQhdvd5wQbEPyWNr0380dAIvNFp4dRxoeoFnivPaQPBgY/SSINcDpj2jHmfEhBtB
|
||||
pcmM5r3qSLYFFgizNxJa92E89zhvLpfgb1Y4VNMota0Ubi5LZLUnZbd1JQm2Bz2V
|
||||
VgIKgmCyc0XgMyZRdJq51FAc9k1bW1JSE1qmf6cO4ehBVGeYjIfVydNsy9NUkgYJ
|
||||
NEH3gW8/nsl8dVWw58Gzd+jDxAA1lUBwEEoF3iW7n1mlZLxHYL9g43aLE1Xd4XR6
|
||||
uc8kpmp/3mQiRFhogmoQ+T3lPhu5vfwi9GAEibtVbShV+t6OjRshFNc3izR7Tfay
|
||||
shDPM7F9HGKZSMsrbHaWVb8ZDR0fu2WqG46ZtcYokOWCLXhQIJr9eS8kf/CJKWn0
|
||||
fc1zvrPtTsHR7VJej/e4142HrbLZG1ES/1az4a80fVykeIgQnp0DxqWqoiRR90kU
|
||||
xbHuWUOV36toKDA/AgMBAAGjggGGMIIBgjASBgNVHRMBAf8ECDAGAQH/AgEBMFMG
|
||||
A1UdIARMMEowSAYJKwYBBAGxPgEAMDswOQYIKwYBBQUHAgEWLWh0dHA6Ly93d3cu
|
||||
cHVibGljLXRydXN0LmNvbS9DUFMvT21uaVJvb3QuaHRtbDAOBgNVHQ8BAf8EBAMC
|
||||
AQYwgaAGA1UdIwSBmDCBlYAUpgwdn2H/Bxe1vzhG20Mw1Y6wUgaheaR3MHUxCzAJ
|
||||
BgNVBAYTAlVTMRgwFgYDVQQKEw9HVEUgQ29ycG9yYXRpb24xJzAlBgNVBAsTHkdU
|
||||
RSBDeWJlclRydXN0IFNvbHV0aW9ucywgSW5jLjEjMCEGA1UEAxMaR1RFIEN5YmVy
|
||||
VHJ1c3QgR2xvYmFsIFJvb3SCAgGlMEUGA1UdHwQ+MDwwOqA4oDaGNGh0dHA6Ly93
|
||||
d3cucHVibGljLXRydXN0LmNvbS9jZ2ktYmluL0NSTC8yMDE4L2NkcC5jcmwwHQYD
|
||||
VR0OBBYEFKv5aN/PSjfXe0WMX3LeQETDZbvCMA0GCSqGSIb3DQEBBQUAA4GBAI9o
|
||||
a6VbB7pEZg4cqFwwezPkCiYE/O+eGjjWLqEf0JlHwnVkJP2eOyh2uSYoYZEMbSz4
|
||||
BJ98UAHV42mv7xXSRZskCSpmBU8lgcpdvqrBWSeuM46C9990sFWzjvjnN8huqlZE
|
||||
9r1TgSOWPbT6MopTZkQloiXGpjwljPDgKAYityZB
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
// Subject: CN=DigiNotar Cyber CA, O=DigiNotar, C=NL
|
||||
// Issuer: CN=GTE CyberTrust Global Root,
|
||||
// OU=GTE CyberTrust Solutions, Inc.,
|
||||
// O=GTE Corporation,
|
||||
// C=US
|
||||
// Serial: 120000505 (07:27:0F:F9)
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFODCCBKGgAwIBAgIEBycP+TANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQGEwJV
|
||||
UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU
|
||||
cnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEds
|
||||
b2JhbCBSb290MB4XDTA2MDkyMDA5NDUzMloXDTEzMDkyMDA5NDQwNlowPjELMAkG
|
||||
A1UEBhMCTkwxEjAQBgNVBAoTCURpZ2lOb3RhcjEbMBkGA1UEAxMSRGlnaU5vdGFy
|
||||
IEN5YmVyIENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0s4VCi2o
|
||||
XoRnrf2+70bHyLnPc/z0NLn5LEPnYBM9euOyzztnbJCtwLk/hFLwNULcdNwoO71S
|
||||
tKesckUXxvCJ67SqJfJdS17R2Ye61n189c4ynxAzxbFKu16RMcLQ6UHCkWR+CUE7
|
||||
24sIN2qqylLetTkewIgDpT+LmRNhQ7WbgrPuIG/PoUSi6i9rQJ+PK1etoVPChSJp
|
||||
naA/Ud8LQZENpeGoqlxJCF293nBBsQ/JY2vTfzR0Ai80Wnh1HGh6gWeK89pA8GBj
|
||||
9JIg1wOmPaMeZ8SEG0GlyYzmvepItgUWCLM3Elr3YTz3OG8ul+BvVjhU0yi1rRRu
|
||||
LktktSdlt3UlCbYHPZVWAgqCYLJzReAzJlF0mrnUUBz2TVtbUlITWqZ/pw7h6EFU
|
||||
Z5iMh9XJ02zL01SSBgk0QfeBbz+eyXx1VbDnwbN36MPEADWVQHAQSgXeJbufWaVk
|
||||
vEdgv2DjdosTVd3hdHq5zySman/eZCJEWGiCahD5PeU+G7m9/CL0YASJu1VtKFX6
|
||||
3o6NGyEU1zeLNHtN9rKyEM8zsX0cYplIyytsdpZVvxkNHR+7Zaobjpm1xiiQ5YIt
|
||||
eFAgmv15LyR/8IkpafR9zXO+s+1OwdHtUl6P97jXjYetstkbURL/VrPhrzR9XKR4
|
||||
iBCenQPGpaqiJFH3SRTFse5ZQ5Xfq2goMD8CAwEAAaOCAYYwggGCMBIGA1UdEwEB
|
||||
/wQIMAYBAf8CAQEwUwYDVR0gBEwwSjBIBgkrBgEEAbE+AQAwOzA5BggrBgEFBQcC
|
||||
ARYtaHR0cDovL3d3dy5wdWJsaWMtdHJ1c3QuY29tL0NQUy9PbW5pUm9vdC5odG1s
|
||||
MA4GA1UdDwEB/wQEAwIBBjCBoAYDVR0jBIGYMIGVgBSmDB2fYf8HF7W/OEbbQzDV
|
||||
jrBSBqF5pHcwdTELMAkGA1UEBhMCVVMxGDAWBgNVBAoTD0dURSBDb3Jwb3JhdGlv
|
||||
bjEnMCUGA1UECxMeR1RFIEN5YmVyVHJ1c3QgU29sdXRpb25zLCBJbmMuMSMwIQYD
|
||||
VQQDExpHVEUgQ3liZXJUcnVzdCBHbG9iYWwgUm9vdIICAaUwRQYDVR0fBD4wPDA6
|
||||
oDigNoY0aHR0cDovL3d3dy5wdWJsaWMtdHJ1c3QuY29tL2NnaS1iaW4vQ1JMLzIw
|
||||
MTgvY2RwLmNybDAdBgNVHQ4EFgQUq/lo389KN9d7RYxfct5ARMNlu8IwDQYJKoZI
|
||||
hvcNAQEFBQADgYEACcpiD427SuDUejUrBi3RKGG2rAH7g0m8rtQvLYauGYOl1h0T
|
||||
4he+/jJ06XoUOMqUXvcpAWlxG5Ea/aO7qh3Ke+IW/aGjDvMMX7LhIDGUK16Sdu36
|
||||
6bUjpr8KOwOpb1JgVM1f6bcvfKIn/UGDdbYN+3gm87FF6TKVKho1IZXFonU=
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
// Subject: CN=DigiNotar Cyber CA, O=DigiNotar, C=NL
|
||||
// Issuer: CN=GTE CyberTrust Global Root,
|
||||
// OU=GTE CyberTrust Solutions, Inc.,
|
||||
// O=GTE Corporation,
|
||||
// C=US
|
||||
// Serial: 120000515 (07:27:10:03)
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFODCCBKGgAwIBAgIEBycQAzANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQGEwJV
|
||||
UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU
|
||||
cnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEds
|
||||
b2JhbCBSb290MB4XDTA2MDkyNzEwNTMzMloXDTExMDkyNzEwNTIzMFowPjELMAkG
|
||||
A1UEBhMCTkwxEjAQBgNVBAoTCURpZ2lOb3RhcjEbMBkGA1UEAxMSRGlnaU5vdGFy
|
||||
IEN5YmVyIENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0s4VCi2o
|
||||
XoRnrf2+70bHyLnPc/z0NLn5LEPnYBM9euOyzztnbJCtwLk/hFLwNULcdNwoO71S
|
||||
tKesckUXxvCJ67SqJfJdS17R2Ye61n189c4ynxAzxbFKu16RMcLQ6UHCkWR+CUE7
|
||||
24sIN2qqylLetTkewIgDpT+LmRNhQ7WbgrPuIG/PoUSi6i9rQJ+PK1etoVPChSJp
|
||||
naA/Ud8LQZENpeGoqlxJCF293nBBsQ/JY2vTfzR0Ai80Wnh1HGh6gWeK89pA8GBj
|
||||
9JIg1wOmPaMeZ8SEG0GlyYzmvepItgUWCLM3Elr3YTz3OG8ul+BvVjhU0yi1rRRu
|
||||
LktktSdlt3UlCbYHPZVWAgqCYLJzReAzJlF0mrnUUBz2TVtbUlITWqZ/pw7h6EFU
|
||||
Z5iMh9XJ02zL01SSBgk0QfeBbz+eyXx1VbDnwbN36MPEADWVQHAQSgXeJbufWaVk
|
||||
vEdgv2DjdosTVd3hdHq5zySman/eZCJEWGiCahD5PeU+G7m9/CL0YASJu1VtKFX6
|
||||
3o6NGyEU1zeLNHtN9rKyEM8zsX0cYplIyytsdpZVvxkNHR+7Zaobjpm1xiiQ5YIt
|
||||
eFAgmv15LyR/8IkpafR9zXO+s+1OwdHtUl6P97jXjYetstkbURL/VrPhrzR9XKR4
|
||||
iBCenQPGpaqiJFH3SRTFse5ZQ5Xfq2goMD8CAwEAAaOCAYYwggGCMBIGA1UdEwEB
|
||||
/wQIMAYBAf8CAQEwUwYDVR0gBEwwSjBIBgkrBgEEAbE+AQAwOzA5BggrBgEFBQcC
|
||||
ARYtaHR0cDovL3d3dy5wdWJsaWMtdHJ1c3QuY29tL0NQUy9PbW5pUm9vdC5odG1s
|
||||
MA4GA1UdDwEB/wQEAwIBBjCBoAYDVR0jBIGYMIGVgBSmDB2fYf8HF7W/OEbbQzDV
|
||||
jrBSBqF5pHcwdTELMAkGA1UEBhMCVVMxGDAWBgNVBAoTD0dURSBDb3Jwb3JhdGlv
|
||||
bjEnMCUGA1UECxMeR1RFIEN5YmVyVHJ1c3QgU29sdXRpb25zLCBJbmMuMSMwIQYD
|
||||
VQQDExpHVEUgQ3liZXJUcnVzdCBHbG9iYWwgUm9vdIICAaUwRQYDVR0fBD4wPDA6
|
||||
oDigNoY0aHR0cDovL3d3dy5wdWJsaWMtdHJ1c3QuY29tL2NnaS1iaW4vQ1JMLzIw
|
||||
MTgvY2RwLmNybDAdBgNVHQ4EFgQUq/lo389KN9d7RYxfct5ARMNlu8IwDQYJKoZI
|
||||
hvcNAQEFBQADgYEAWcyGZhizJlRP1jjNupZey+yZG6oMDW4Z11boriMHbYPCndBE
|
||||
bVh07zmPbZsihOw9w/vm5KbVX5CgxUv4Rhzh/20Faixf3P3bpWg0qgzHVVusNVR/
|
||||
P50aKkpdK3hp+QLl56e+lWOddSAINIpmcuyDI1hyuzB+GJEASm9tNU/6rs8=
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
// Subject: EMAILADDRESS=info@diginotar.nl,
|
||||
// CN=DigiNotar Root CA,
|
||||
// O=DigiNotar, C=NL
|
||||
// Issuer: CN=Entrust.net Secure Server Certification Authority
|
||||
// OU=(c) 1999 Entrust.net Limited,
|
||||
// OU=www.entrust.net/CPS incorp. by ref. (limits liab.),
|
||||
// O=Entrust.net,
|
||||
// C=US,
|
||||
// Serial: 1184644297 (46:9C:3C:C9)
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFSDCCBLGgAwIBAgIERpw8yTANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMC
|
||||
VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5u
|
||||
ZXQvQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc
|
||||
KGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5u
|
||||
ZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNzA0
|
||||
MjYwNTAwMDBaFw0xMzA4MTQyMDEyMzZaMF8xCzAJBgNVBAYTAk5MMRIwEAYDVQQK
|
||||
EwlEaWdpTm90YXIxGjAYBgNVBAMTEURpZ2lOb3RhciBSb290IENBMSAwHgYJKoZI
|
||||
hvcNAQkBFhFpbmZvQGRpZ2lub3Rhci5ubDCCAiIwDQYJKoZIhvcNAQEBBQADggIP
|
||||
ADCCAgoCggIBAKywWMEAvdghCAsrmv5uVjAFnxt3kBBBXMMNhxF3joHxynzpjGrt
|
||||
OHQ1u9rf+bvACTe0lnOBfTMamDn3k2+Vfz25sXWHulFI6ItwPpUExdi2wxbZiLCx
|
||||
hx1w2oa0DxSLes8Q0XQ2ohJ7d4ZKeeZ73wIRaKVOhq40WJskE3hWIiUeAYtLUXH7
|
||||
gsxZlmmIWmhTxbkNAjfLS7xmSpB+KgsFB+0WX1WQddhGyRuD4gi+8SPMmR3WKg+D
|
||||
IBVYJ4Iu+uIiwkmxuQGBap1tnUB3aHZOISpthECFTnaZfILz87cCWdQmARuO361T
|
||||
BtGuGN3isjrL14g4jqxbKbkZ05j5GAPPSIKGZgsbaQ/J6ziIeiYaBUyS1yTUlvKs
|
||||
Ui2jR9VS9j/+zoQGcKaqPqLytlY0GFei5IFt58rwatPHkWsCg0F8Fe9rmmRe49A8
|
||||
5bHre12G+8vmd0nNo2Xc97mcuOQLX5PPzDAaMhzOHGOVpfnq4XSLnukrqTB7oBgf
|
||||
DhgL5Vup09FsHgdnj5FLqYq80maqkwGIspH6MVzVpsFSCAnNCmOi0yKm6KHZOQaX
|
||||
9W6NApCMFHs/gM0bnLrEWHIjr7ZWn8Z6QjMpBz+CyeYfBQ3NTCg2i9PIPhzGiO9e
|
||||
7olk6R3r2ol+MqZp0d3MiJ/R0MlmIdwGZ8WUepptYkx9zOBkgLKeR46jAgMBAAGj
|
||||
ggEmMIIBIjASBgNVHRMBAf8ECDAGAQH/AgEBMCcGA1UdJQQgMB4GCCsGAQUFBwMB
|
||||
BggrBgEFBQcDAgYIKwYBBQUHAwQwEQYDVR0gBAowCDAGBgRVHSAAMDMGCCsGAQUF
|
||||
BwEBBCcwJTAjBggrBgEFBQcwAYYXaHR0cDovL29jc3AuZW50cnVzdC5uZXQwMwYD
|
||||
VR0fBCwwKjAooCagJIYiaHR0cDovL2NybC5lbnRydXN0Lm5ldC9zZXJ2ZXIxLmNy
|
||||
bDAdBgNVHQ4EFgQUiGi/4I41xDs4a2L3KDuEgcgM100wCwYDVR0PBAQDAgEGMB8G
|
||||
A1UdIwQYMBaAFPAXYhNVPbP/CgBr+1CEl/PtYtAaMBkGCSqGSIb2fQdBAAQMMAob
|
||||
BFY3LjEDAgCBMA0GCSqGSIb3DQEBBQUAA4GBAI979rBep8tu3TeLunapgsZ0jtXp
|
||||
GDFjKWSk87dj1jCyYi+q/GyDyZ6ZQZNRP0sF+6twscq05lClWNy3TROMp7QeuoLO
|
||||
G7Utw3OJaswUtp4YglANMRTHEe3g9ltifUXRH5tSuy7u6yi4LD4WTm5ULP6r/g6l
|
||||
0CnjXYb0+b1Fmz6U
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
// Subject: EMAILADDRESS=info@diginotar.nl,
|
||||
// CN=DigiNotar Root CA,
|
||||
// O=DigiNotar, C=NL
|
||||
// Issuer: CN=Entrust.net Secure Server Certification Authority
|
||||
// OU=(c) 1999 Entrust.net Limited,
|
||||
// OU=www.entrust.net/CPS incorp. by ref. (limits liab.),
|
||||
// O=Entrust.net,
|
||||
// C=US,
|
||||
// Serial: 1184640175 (46:9C:2C:AF)
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFSDCCBLGgAwIBAgIERpwsrzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMC
|
||||
VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5u
|
||||
ZXQvQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc
|
||||
KGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5u
|
||||
ZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNzA3
|
||||
MjYxNTU3MzlaFw0xMzA4MjYxNjI3MzlaMF8xCzAJBgNVBAYTAk5MMRIwEAYDVQQK
|
||||
EwlEaWdpTm90YXIxGjAYBgNVBAMTEURpZ2lOb3RhciBSb290IENBMSAwHgYJKoZI
|
||||
hvcNAQkBFhFpbmZvQGRpZ2lub3Rhci5ubDCCAiIwDQYJKoZIhvcNAQEBBQADggIP
|
||||
ADCCAgoCggIBAKywWMEAvdghCAsrmv5uVjAFnxt3kBBBXMMNhxF3joHxynzpjGrt
|
||||
OHQ1u9rf+bvACTe0lnOBfTMamDn3k2+Vfz25sXWHulFI6ItwPpUExdi2wxbZiLCx
|
||||
hx1w2oa0DxSLes8Q0XQ2ohJ7d4ZKeeZ73wIRaKVOhq40WJskE3hWIiUeAYtLUXH7
|
||||
gsxZlmmIWmhTxbkNAjfLS7xmSpB+KgsFB+0WX1WQddhGyRuD4gi+8SPMmR3WKg+D
|
||||
IBVYJ4Iu+uIiwkmxuQGBap1tnUB3aHZOISpthECFTnaZfILz87cCWdQmARuO361T
|
||||
BtGuGN3isjrL14g4jqxbKbkZ05j5GAPPSIKGZgsbaQ/J6ziIeiYaBUyS1yTUlvKs
|
||||
Ui2jR9VS9j/+zoQGcKaqPqLytlY0GFei5IFt58rwatPHkWsCg0F8Fe9rmmRe49A8
|
||||
5bHre12G+8vmd0nNo2Xc97mcuOQLX5PPzDAaMhzOHGOVpfnq4XSLnukrqTB7oBgf
|
||||
DhgL5Vup09FsHgdnj5FLqYq80maqkwGIspH6MVzVpsFSCAnNCmOi0yKm6KHZOQaX
|
||||
9W6NApCMFHs/gM0bnLrEWHIjr7ZWn8Z6QjMpBz+CyeYfBQ3NTCg2i9PIPhzGiO9e
|
||||
7olk6R3r2ol+MqZp0d3MiJ/R0MlmIdwGZ8WUepptYkx9zOBkgLKeR46jAgMBAAGj
|
||||
ggEmMIIBIjASBgNVHRMBAf8ECDAGAQH/AgEBMCcGA1UdJQQgMB4GCCsGAQUFBwMB
|
||||
BggrBgEFBQcDAgYIKwYBBQUHAwQwEQYDVR0gBAowCDAGBgRVHSAAMDMGCCsGAQUF
|
||||
BwEBBCcwJTAjBggrBgEFBQcwAYYXaHR0cDovL29jc3AuZW50cnVzdC5uZXQwMwYD
|
||||
VR0fBCwwKjAooCagJIYiaHR0cDovL2NybC5lbnRydXN0Lm5ldC9zZXJ2ZXIxLmNy
|
||||
bDAdBgNVHQ4EFgQUiGi/4I41xDs4a2L3KDuEgcgM100wCwYDVR0PBAQDAgEGMB8G
|
||||
A1UdIwQYMBaAFPAXYhNVPbP/CgBr+1CEl/PtYtAaMBkGCSqGSIb2fQdBAAQMMAob
|
||||
BFY3LjEDAgCBMA0GCSqGSIb3DQEBBQUAA4GBAEa6RcDNcEIGUlkDJUY/pWTds4zh
|
||||
xbVkp3wSmpwPFhx5fxTyF4HD2L60jl3aqjTB7gPpsL2Pk5QZlNsi3t4UkCV70UOd
|
||||
ueJRN3o/LOtk4+bjXY2lC0qTHbN80VMLqPjmaf9ghSA9hwhskdtMgRsgfd90q5QP
|
||||
ZFdYf+hthc3m6IcJ
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
// Subject: CN=DigiNotar PKIoverheid CA Organisatie - G2,
|
||||
// O=DigiNotar B.V.,
|
||||
// C=NL
|
||||
// Issuer: CN=Staat der Nederlanden Organisatie CA - G2,
|
||||
// O=Staat der Nederlanden,
|
||||
// C=NL
|
||||
// Serial: 20001983 (01:31:34:bf)
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIGnDCCBISgAwIBAgIEATE0vzANBgkqhkiG9w0BAQsFADBhMQswCQYDVQQGEwJO
|
||||
TDEeMBwGA1UECgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMTIwMAYDVQQDDClTdGFh
|
||||
dCBkZXIgTmVkZXJsYW5kZW4gT3JnYW5pc2F0aWUgQ0EgLSBHMjAeFw0xMDA1MTIw
|
||||
ODUxMzhaFw0yMDAzMjMwOTUwMDRaMFoxCzAJBgNVBAYTAk5MMRcwFQYDVQQKDA5E
|
||||
aWdpTm90YXIgQi5WLjEyMDAGA1UEAwwpRGlnaU5vdGFyIFBLSW92ZXJoZWlkIENB
|
||||
IE9yZ2FuaXNhdGllIC0gRzIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
|
||||
AQCxExkPJ+Zs1FWGS9DsiYpFkXisR71HK+T8RetPtCZzWzfTw3/2497Xo/gtaMUI
|
||||
PkuU1uSHJTZrhLUYdPMoWHMvm2rPvAQe9t7dr/xLqvXbZmIlASWC3vKXWhBu3V2p
|
||||
IrEEqSNzOvhxrR3PhETrR9Gvbch8KKvH8jd6dF9fxQIUiqNa4xtsAeNdjtlo1vQJ
|
||||
GzLckbUs9SDrjANtJkm4k8SFXdjSm69WaswFM8ygQp40VUSca6DUEtArVM23iQ3l
|
||||
9uvo+4UBM096a/GdcjOWDveyhKWlJ8Qn8VFzKXe6Z27+TNy04qGhgS85SY1DOBPO
|
||||
0KVcwoc6AGdlQiPxNlkKHaNRyLyjlCox3+M88p0aPASw77EKMBNzttfzo0wBdRSF
|
||||
eMDXijlYhVD6LubFvs+LP6+PNtQlCS3SD6xyk/K/i9RQs/kVUJuZ9RTZ+4uRozIm
|
||||
JqD43ztggYaDeVsr6xM9KTrBbd29no6H1kquNJcF7hSm9tw4fkrpJFQHPZdoN0Zr
|
||||
DceoIa8TVOQJavFNRgrJXfubT73e+7dUy7g4nKc5+2otwHuNq6WnV+xKkoozxeEg
|
||||
XHPYkJIrgNUPhhhpfDlPhIa890xb89W0yqDC8DciynlSH1PmqvOQsDvd8ij9rOvF
|
||||
BiSgydQvD1j9tZ7sD8+yWdCiBHo4aq5y+73wJWKUCacFCwIDAQABo4IBYTCCAV0w
|
||||
SAYDVR0gBEEwPzA9BgRVHSAAMDUwMwYIKwYBBQUHAgEWJ2h0dHA6Ly93d3cuZGln
|
||||
aW5vdGFyLm5sL2Nwcy9wa2lvdmVyaGVpZDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud
|
||||
DwEB/wQEAwIBBjCBhQYDVR0jBH4wfIAUORCLSZJc22ESIM1JnRqO2pxnQLmhXqRc
|
||||
MFoxCzAJBgNVBAYTAk5MMR4wHAYDVQQKDBVTdGFhdCBkZXIgTmVkZXJsYW5kZW4x
|
||||
KzApBgNVBAMMIlN0YWF0IGRlciBOZWRlcmxhbmRlbiBSb290IENBIC0gRzKCBACY
|
||||
lvQwSQYDVR0fBEIwQDA+oDygOoY4aHR0cDovL2NybC5wa2lvdmVyaGVpZC5ubC9E
|
||||
b21PcmdhbmlzYXRpZUxhdGVzdENSTC1HMi5jcmwwHQYDVR0OBBYEFLxdlDvZq3sD
|
||||
JXNhwtst7vyrj2WhMA0GCSqGSIb3DQEBCwUAA4ICAQCP/C1Mt9kt1R+978v0t2gX
|
||||
dZ1O1ffdnPEqJu2forYcA9VTs+wIzzTi48P0tRYvyMO+19NzqwA2+RpKftZj6V5G
|
||||
uqW2jhW3oyrYQx3vXcgfgYWzi/f/PPTZ9EYIP5y8HaDZqEzNJVJOCrEg9x/pQ9lU
|
||||
RoETmsBedGwqmDLq/He7DaWiMZgifnx859qkrey3LhoZcfhIUNpDjyyE3cFAJ+O1
|
||||
8BVOltT4XOOGKUYr1zsH6zh/yIZXl9PvKjPEF1DVZGlrK2tFXl0vF8paTs/D1zk8
|
||||
9TufRrmb5w5Jl53W1eMbD+qPAU6aE5RZCgIHSEsaYKt/T+0L2FUNaG9VnGllFULs
|
||||
wNzdbKzDFs4LHVabpMTE0i7gD+JEJytQaaTcYuiKISlCbMwAOpZ2m+9AwKRed4Qy
|
||||
bCYqOWauXeO5ubIsaB8empADOfCqs6TMSYsYNOk3yXspx4R8b0QVL+xhWQTJRcui
|
||||
1lKifH8pktZKxYtCqNT+6tjHhyMY5J16fXNAUpigrm7jBT8FD+Clxm1N7YM3iJzH
|
||||
89xCmmq21yFJNnfy7xhPxXDZnunetyuL9Lx+KN8NQMmFXK6dxTH/0FwOtah+8Okv
|
||||
uq+IruW10Vilr5xxpykBkINpN4IFuvwJwQhujHg7wzMCgD9EhQgd31VWCK0shS1d
|
||||
sQPhrqp0xaTzTro3mHuCuQ==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
// Subject: CN=DigiNotar PKIoverheid CA Overheid en Bedrijven,
|
||||
// O=DigiNotar B.V.,
|
||||
// C=NL
|
||||
// Issuer: CN=Staat der Nederlanden Overheid CA
|
||||
// O=Staat der Nederlanden,
|
||||
// C=NL
|
||||
// Serial: 20015536 (01:31:69:b0)
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEiDCCA3CgAwIBAgIEATFpsDANBgkqhkiG9w0BAQUFADBZMQswCQYDVQQGEwJO
|
||||
TDEeMBwGA1UEChMVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSowKAYDVQQDEyFTdGFh
|
||||
dCBkZXIgTmVkZXJsYW5kZW4gT3ZlcmhlaWQgQ0EwHhcNMDcwNzA1MDg0MjA3WhcN
|
||||
MTUwNzI3MDgzOTQ2WjBfMQswCQYDVQQGEwJOTDEXMBUGA1UEChMORGlnaU5vdGFy
|
||||
IEIuVi4xNzA1BgNVBAMTLkRpZ2lOb3RhciBQS0lvdmVyaGVpZCBDQSBPdmVyaGVp
|
||||
ZCBlbiBCZWRyaWp2ZW4wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDc
|
||||
vdKnTmoKuzuiheF/AK2+tDBomAfNoHrElM9x+Yo35FPrV3bMi+Zs/u6HVcg+uwQ5
|
||||
AKeAeKxbT370vbhUuHE7BzFJOZNUfCA7eSuPu2GQfbGs5h+QLp1FAalkLU3DL7nn
|
||||
UNVOKlyrdnY3Rtd57EKZ96LspIlw3Dgrh6aqJOadkiQbvvb91C8ZF3rmMgeUVAVT
|
||||
Q+lsvK9Hy7zL/b07RBKB8WtLu+20z6slTxjSzAL8o0+1QjPLWc0J3NNQ/aB2jKx+
|
||||
ZopC9q0ckvO2+xRG603XLzDgbe5bNr5EdLcgBVeFTegAGaL2DOauocBC36esgl3H
|
||||
aLcY5olLmmv6znn58yynAgMBAAGjggFQMIIBTDBIBgNVHSAEQTA/MD0GBFUdIAAw
|
||||
NTAzBggrBgEFBQcCARYnaHR0cDovL3d3dy5kaWdpbm90YXIubmwvY3BzL3BraW92
|
||||
ZXJoZWlkMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMIGABgNVHSME
|
||||
eTB3gBQLhtYPd6NosftkCcOIblwEHFfpPaFZpFcwVTELMAkGA1UEBhMCTkwxHjAc
|
||||
BgNVBAoTFVN0YWF0IGRlciBOZWRlcmxhbmRlbjEmMCQGA1UEAxMdU3RhYXQgZGVy
|
||||
IE5lZGVybGFuZGVuIFJvb3QgQ0GCBACYmnkwPQYDVR0fBDYwNDAyoDCgLoYsaHR0
|
||||
cDovL2NybC5wa2lvdmVyaGVpZC5ubC9Eb21PdkxhdGVzdENSTC5jcmwwHQYDVR0O
|
||||
BBYEFEwIyY128ZjHPt881y91DbF2eZfMMA0GCSqGSIb3DQEBBQUAA4IBAQAMlIca
|
||||
v03jheLu19hjeQ5Q38aEW9K72fUxCho1l3TfFPoqDz7toOMI9tVOW6+mriXiRWsi
|
||||
D7dUKH6S3o0UbNEc5W50BJy37zRERd/Jgx0ZH8Apad+J1T/CsFNt5U4X5HNhIxMm
|
||||
cUP9TFnLw98iqiEr2b+VERqKpOKrp11Lbyn1UtHk0hWxi/7wA8+nfemZhzizDXMU
|
||||
5HIs4c71rQZIZPrTKbmi2Lv01QulQERDjqC/zlqlUkxk0xcxYczopIro5Ij76eUv
|
||||
BjMzm5RmZrGrUDqhCYF0U1onuabSJc/Tw6f/ltAv6uAejVLpGBwgCkegllYOQJBR
|
||||
RKwa/fHuhR/3Qlpl
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
// Subject: CN=DigiNotar PKIoverheid CA Overheid
|
||||
// O=DigiNotar B.V.,
|
||||
// C=NL
|
||||
// Issuer: CN=Staat der Nederlanden Overheid CA
|
||||
// O=Staat der Nederlanden,
|
||||
// C=NL
|
||||
// Serial: 20006006 (01:31:44:76)
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEezCCA2OgAwIBAgIEATFEdjANBgkqhkiG9w0BAQUFADBZMQswCQYDVQQGEwJO
|
||||
TDEeMBwGA1UEChMVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSowKAYDVQQDEyFTdGFh
|
||||
dCBkZXIgTmVkZXJsYW5kZW4gT3ZlcmhlaWQgQ0EwHhcNMDQwNjI0MDgxOTMyWhcN
|
||||
MTAwNjIzMDgxNzM2WjBSMQswCQYDVQQGEwJOTDEXMBUGA1UEChMORGlnaU5vdGFy
|
||||
IEIuVi4xKjAoBgNVBAMTIURpZ2lOb3RhciBQS0lvdmVyaGVpZCBDQSBPdmVyaGVp
|
||||
ZDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANSlrubta5tlOjVCi/gb
|
||||
yLCvRqfBjxG8H594VcKHu0WAYc99SPZF9cycj5mw2GyfQvy/WIrGrL4iyNq1gSqR
|
||||
0QA/mTXKZIaPqzpDhdm+VvrKkmjrbZfaQxgMSs3ChtBsjcP9Lc0X1zXZ4Q8nBe3k
|
||||
BTp+zehINfmbjoEgXLxsMR5RQ6GxzKjuC04PQpbJQgTIakglKaqYcDDZbEscWgPV
|
||||
Hgj/2aoHlj6leW/ThHZ+O41jUguEmBLZA3mu3HrCfrHntb5dPt0ihzSx7GtD/SaX
|
||||
5HBLxnP189YuqMk5iRA95CtiSdKauvon/xRKRLNgG6XAz0ctSoY7xLDdiBVU5kJd
|
||||
FScCAwEAAaOCAVAwggFMMEgGA1UdIARBMD8wPQYEVR0gADA1MDMGCCsGAQUFBwIB
|
||||
FidodHRwOi8vd3d3LmRpZ2lub3Rhci5ubC9jcHMvcGtpb3ZlcmhlaWQwDwYDVR0T
|
||||
AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwgYAGA1UdIwR5MHeAFAuG1g93o2ix
|
||||
+2QJw4huXAQcV+k9oVmkVzBVMQswCQYDVQQGEwJOTDEeMBwGA1UEChMVU3RhYXQg
|
||||
ZGVyIE5lZGVybGFuZGVuMSYwJAYDVQQDEx1TdGFhdCBkZXIgTmVkZXJsYW5kZW4g
|
||||
Um9vdCBDQYIEAJiaeTA9BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3JsLnBraW92
|
||||
ZXJoZWlkLm5sL0RvbU92TGF0ZXN0Q1JMLmNybDAdBgNVHQ4EFgQUvRaYQh2+kdE9
|
||||
wpcl4CjXWOC1f+IwDQYJKoZIhvcNAQEFBQADggEBAGhQsCWLiaN2EOhPAW+JQP6o
|
||||
XBOrLv5w6joahzBFVn1BiefzmlMKjibqKYxURRvMAsMkh82/MfL8V0w6ugxl81lu
|
||||
i42dcxl9cKSVXKMw4bbBzJ2VQI5HTIABwefeNuy/eX6idVwYdt3ajAH7fUA8Q9Cq
|
||||
vr6H8B+8mwoEqTVTEVlCSsC/EXsokYEUr06PPzRudKjDmijgj7zFaIioZNc8hk7g
|
||||
ufEgrs/tmcNGylrwRHgCXjCRBt2NHlZ08l7A1AGU8HcHlSbG9Un/2q9kVHUkps0D
|
||||
gtUaEK+x6jpAu/R8Ojezu/+ZEcwwjI/KOhG+84+ejFmtyEkrUdsAdEdLf/2dKsw=
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
// Subject: EMAILADDRESS=info@diginotar.nl,
|
||||
// CN=DigiNotar Services 1024 CA
|
||||
// O=DigiNotar, C=NL
|
||||
// Issuer: CN=Entrust.net Secure Server Certification Authority,
|
||||
// OU=(c) 1999 Entrust.net Limited,
|
||||
// OU=www.entrust.net/CPS incorp. by ref. (limits liab.),
|
||||
// O=Entrust.net,
|
||||
// C=US
|
||||
// Serial: 1184640176 (46:9c:2c:b0)
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDzTCCAzagAwIBAgIERpwssDANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMC
|
||||
VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5u
|
||||
ZXQvQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc
|
||||
KGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5u
|
||||
ZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNzA3
|
||||
MjYxNTU5MDBaFw0xMzA4MjYxNjI5MDBaMGgxCzAJBgNVBAYTAk5MMRIwEAYDVQQK
|
||||
EwlEaWdpTm90YXIxIzAhBgNVBAMTGkRpZ2lOb3RhciBTZXJ2aWNlcyAxMDI0IENB
|
||||
MSAwHgYJKoZIhvcNAQkBFhFpbmZvQGRpZ2lub3Rhci5ubDCBnzANBgkqhkiG9w0B
|
||||
AQEFAAOBjQAwgYkCgYEA2ptNXTz50eKLxsYIIMXZHkjsZlhneWIrQWP0iY1o2q+4
|
||||
lDaLGSSkoJPSmQ+yrS01Tc0vauH5mxkrvAQafi09UmTN8T5nD4ku6PJPrqYIoYX+
|
||||
oakJ5sarPkP8r3oDkdqmOaZh7phPGKjTs69mgumfvN1y+QYEvRLZGCTnq5NTi1kC
|
||||
AwEAAaOCASYwggEiMBIGA1UdEwEB/wQIMAYBAf8CAQAwJwYDVR0lBCAwHgYIKwYB
|
||||
BQUHAwEGCCsGAQUFBwMCBggrBgEFBQcDBDARBgNVHSAECjAIMAYGBFUdIAAwMwYI
|
||||
KwYBBQUHAQEEJzAlMCMGCCsGAQUFBzABhhdodHRwOi8vb2NzcC5lbnRydXN0Lm5l
|
||||
dDAzBgNVHR8ELDAqMCigJqAkhiJodHRwOi8vY3JsLmVudHJ1c3QubmV0L3NlcnZl
|
||||
cjEuY3JsMB0GA1UdDgQWBBT+3JRJDG/vXH/G8RKZTxZJrfuCZTALBgNVHQ8EBAMC
|
||||
AQYwHwYDVR0jBBgwFoAU8BdiE1U9s/8KAGv7UISX8+1i0BowGQYJKoZIhvZ9B0EA
|
||||
BAwwChsEVjcuMQMCAIEwDQYJKoZIhvcNAQEFBQADgYEAY3RqN6k/lpxmyFisCcnv
|
||||
9WWUf6MCxDgxvV0jh+zUVrLJsm7kBQb87PX6iHBZ1O7m3bV6oKNgLwIMq94SXa/w
|
||||
NUuqikeRGvWFLELHHe+VQ7NeuJWTpdrFKKqtci0xrZlrbP+MISevrZqRK8fdWMNu
|
||||
B8WfedLHjFW/TMcnXlEWKz4=
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
// Subject: CN=Buster Paper Comercial Ltda,
|
||||
// O=Buster Paper Comercial Ltda,
|
||||
// L=S?o Jos? Dos Campos,
|
||||
// ST=S?o Paulo,
|
||||
// C=BR
|
||||
// Issuer: CN=DigiCert Assured ID Code Signing CA-1,
|
||||
// OU=www.digicert.com,
|
||||
// O=DigiCert Inc,
|
||||
// C=US
|
||||
// Serial: 07:b4:4c:db:ff:fb:78:de:05:f4:26:16:72:a6:73:12
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIGwzCCBaugAwIBAgIQB7RM2//7eN4F9CYWcqZzEjANBgkqhkiG9w0BAQUFADBv
|
||||
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
||||
d3cuZGlnaWNlcnQuY29tMS4wLAYDVQQDEyVEaWdpQ2VydCBBc3N1cmVkIElEIENv
|
||||
ZGUgU2lnbmluZyBDQS0xMB4XDTEzMDExNzAwMDAwMFoXDTE0MDEyMjEyMDAwMFow
|
||||
gY4xCzAJBgNVBAYTAkJSMRMwEQYDVQQIDApTw6NvIFBhdWxvMR4wHAYDVQQHDBVT
|
||||
w6NvIEpvc8OpIERvcyBDYW1wb3MxJDAiBgNVBAoTG0J1c3RlciBQYXBlciBDb21l
|
||||
cmNpYWwgTHRkYTEkMCIGA1UEAxMbQnVzdGVyIFBhcGVyIENvbWVyY2lhbCBMdGRh
|
||||
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzO0l6jWIpEfO2oUpVHpL
|
||||
HETj5lzivNb0S9jKHgGJax917czh81PnGTxwxFXd6gLJuy/XFHvmiSi8g8jzlymn
|
||||
2Ji5zQ3CPaz7nomJokSUDlMVJ2qYWtctw4jrdjuI4qtn+koXXUFkWjkf8h8251I4
|
||||
tUs7S49HE2Go5owCYP3byajj7fsFAYR/Xb7TdVtndkZsUB/YgOjHovyACjouaNCi
|
||||
mDiRyQ6zLLjZGiyeD65Yiseuhp5b8/BL5h1p7w76QYMYMVQNAdtDKut2R8MBpuWf
|
||||
Ny7Eoi0x/gm1p9X5Rcl5aN7K0G4UtTAJKbkuUfXddsyFoM0Nx8uo8SgNQ8Y/X5Jx
|
||||
BwIDAQABo4IDOTCCAzUwHwYDVR0jBBgwFoAUe2jOKarAF75JeuHlP9an90WPNTIw
|
||||
HQYDVR0OBBYEFFLZ3n5nt/Eer7n1bvtOqMb1qKO5MA4GA1UdDwEB/wQEAwIHgDAT
|
||||
BgNVHSUEDDAKBggrBgEFBQcDAzBzBgNVHR8EbDBqMDOgMaAvhi1odHRwOi8vY3Js
|
||||
My5kaWdpY2VydC5jb20vYXNzdXJlZC1jcy0yMDExYS5jcmwwM6AxoC+GLWh0dHA6
|
||||
Ly9jcmw0LmRpZ2ljZXJ0LmNvbS9hc3N1cmVkLWNzLTIwMTFhLmNybDCCAcQGA1Ud
|
||||
IASCAbswggG3MIIBswYJYIZIAYb9bAMBMIIBpDA6BggrBgEFBQcCARYuaHR0cDov
|
||||
L3d3dy5kaWdpY2VydC5jb20vc3NsLWNwcy1yZXBvc2l0b3J5Lmh0bTCCAWQGCCsG
|
||||
AQUFBwICMIIBVh6CAVIAQQBuAHkAIAB1AHMAZQAgAG8AZgAgAHQAaABpAHMAIABD
|
||||
AGUAcgB0AGkAZgBpAGMAYQB0AGUAIABjAG8AbgBzAHQAaQB0AHUAdABlAHMAIABh
|
||||
AGMAYwBlAHAAdABhAG4AYwBlACAAbwBmACAAdABoAGUAIABEAGkAZwBpAEMAZQBy
|
||||
AHQAIABDAFAALwBDAFAAUwAgAGEAbgBkACAAdABoAGUAIABSAGUAbAB5AGkAbgBn
|
||||
ACAAUABhAHIAdAB5ACAAQQBnAHIAZQBlAG0AZQBuAHQAIAB3AGgAaQBjAGgAIABs
|
||||
AGkAbQBpAHQAIABsAGkAYQBiAGkAbABpAHQAeQAgAGEAbgBkACAAYQByAGUAIABp
|
||||
AG4AYwBvAHIAcABvAHIAYQB0AGUAZAAgAGgAZQByAGUAaQBuACAAYgB5ACAAcgBl
|
||||
AGYAZQByAGUAbgBjAGUALjCBggYIKwYBBQUHAQEEdjB0MCQGCCsGAQUFBzABhhho
|
||||
dHRwOi8vb2NzcC5kaWdpY2VydC5jb20wTAYIKwYBBQUHMAKGQGh0dHA6Ly9jYWNl
|
||||
cnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRENvZGVTaWduaW5nQ0Et
|
||||
MS5jcnQwDAYDVR0TAQH/BAIwADANBgkqhkiG9w0BAQUFAAOCAQEAPTTQvpOIikXI
|
||||
hTLnNbajaFRR5GhQpTzUNgBfF9VYSlNw/wMjpGsrh5RxaJCip52jbehmTgjMRhft
|
||||
jRYyml44PAVsCcR9uEoDpCZYpI1fHI1R+F8jd1C9rqprbSwwOG4xlg4SmvTHYs6e
|
||||
gBItQ/1p9XY+Sf4Wv1qOuOFL1qvV/5VyR2zdlOQCmKCeMgxt6a/tHLBDiAA67D44
|
||||
/vfdoNJl0CU2It0PO60jdCPFNWIRcxL+OSDqAoePeUC7xQ+JsTEIxuUE8+d6w6fc
|
||||
BV2mYb1flh22t46GLjh4gyo7xw3aL6L0L0jzlTT6IcEw6NIbaPbIKj/npQnHobYj
|
||||
XMuKLxbh7g==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
// Subject: CN=BUSTER ASSISTENCIA TECNICA ELETRONICA LTDA - ME,
|
||||
// O=BUSTER ASSISTENCIA TECNICA ELETRONICA LTDA - ME,
|
||||
// L=S?o Paulo,
|
||||
// ST=S?o Paulo,
|
||||
// C=BR
|
||||
// Issuer: CN=DigiCert Assured ID Code Signing CA-1,
|
||||
// OU=www.digicert.com,
|
||||
// O=DigiCert Inc,
|
||||
// C=US
|
||||
// Serial: 0a:38:9b:95:ee:73:6d:d1:3b:c0:ed:74:3f:d7:4d:2f
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIG4DCCBcigAwIBAgIQCjible5zbdE7wO10P9dNLzANBgkqhkiG9w0BAQUFADBv
|
||||
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
||||
d3cuZGlnaWNlcnQuY29tMS4wLAYDVQQDEyVEaWdpQ2VydCBBc3N1cmVkIElEIENv
|
||||
ZGUgU2lnbmluZyBDQS0xMB4XDTEyMTEwOTAwMDAwMFoXDTEzMTExNDEyMDAwMFow
|
||||
gasxCzAJBgNVBAYTAkJSMRMwEQYDVQQIDApTw6NvIFBhdWxvMRMwEQYDVQQHDApT
|
||||
w6NvIFBhdWxvMTgwNgYDVQQKEy9CVVNURVIgQVNTSVNURU5DSUEgVEVDTklDQSBF
|
||||
TEVUUk9OSUNBIExUREEgLSBNRTE4MDYGA1UEAxMvQlVTVEVSIEFTU0lTVEVOQ0lB
|
||||
IFRFQ05JQ0EgRUxFVFJPTklDQSBMVERBIC0gTUUwggEiMA0GCSqGSIb3DQEBAQUA
|
||||
A4IBDwAwggEKAoIBAQDAqNeEs5/B2CTXGjTOkUIdu6jV6qulOZwdw4sefHWYj1UR
|
||||
4z6zPk9kjpUgbnb402RFq88QtfInwddZ/wXn9OxMtDd/3TnC7HrhNS7ga79ZFL2V
|
||||
JnmzKHum2Yvh0q82QEJ9tHBR2X9VdKpUIH08Zs3k6cWWM1H0YX0cxA/HohhesQJW
|
||||
kwJ3urOIJiH/HeByDk8a1NS8safcCxk5vxvW4WvCg43iT09LeHY5Aa8abKw8lqVb
|
||||
0tD5ZSIjdmdj3TT1U37iAHLLRM2DXbxfdbhouUX1c5U1ZHAMA67HwjKiseOiDaHj
|
||||
NUGbC37C+cgbc9VVM/cURD8WvS0Kj6fQv7F2QtJDAgMBAAGjggM5MIIDNTAfBgNV
|
||||
HSMEGDAWgBR7aM4pqsAXvkl64eU/1qf3RY81MjAdBgNVHQ4EFgQU88EXKAyDsh30
|
||||
o9+Gu9a4xUy+FSMwDgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQMMAoGCCsGAQUFBwMD
|
||||
MHMGA1UdHwRsMGowM6AxoC+GLWh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9hc3N1
|
||||
cmVkLWNzLTIwMTFhLmNybDAzoDGgL4YtaHR0cDovL2NybDQuZGlnaWNlcnQuY29t
|
||||
L2Fzc3VyZWQtY3MtMjAxMWEuY3JsMIIBxAYDVR0gBIIBuzCCAbcwggGzBglghkgB
|
||||
hv1sAwEwggGkMDoGCCsGAQUFBwIBFi5odHRwOi8vd3d3LmRpZ2ljZXJ0LmNvbS9z
|
||||
c2wtY3BzLXJlcG9zaXRvcnkuaHRtMIIBZAYIKwYBBQUHAgIwggFWHoIBUgBBAG4A
|
||||
eQAgAHUAcwBlACAAbwBmACAAdABoAGkAcwAgAEMAZQByAHQAaQBmAGkAYwBhAHQA
|
||||
ZQAgAGMAbwBuAHMAdABpAHQAdQB0AGUAcwAgAGEAYwBjAGUAcAB0AGEAbgBjAGUA
|
||||
IABvAGYAIAB0AGgAZQAgAEQAaQBnAGkAQwBlAHIAdAAgAEMAUAAvAEMAUABTACAA
|
||||
YQBuAGQAIAB0AGgAZQAgAFIAZQBsAHkAaQBuAGcAIABQAGEAcgB0AHkAIABBAGcA
|
||||
cgBlAGUAbQBlAG4AdAAgAHcAaABpAGMAaAAgAGwAaQBtAGkAdAAgAGwAaQBhAGIA
|
||||
aQBsAGkAdAB5ACAAYQBuAGQAIABhAHIAZQAgAGkAbgBjAG8AcgBwAG8AcgBhAHQA
|
||||
ZQBkACAAaABlAHIAZQBpAG4AIABiAHkAIAByAGUAZgBlAHIAZQBuAGMAZQAuMIGC
|
||||
BggrBgEFBQcBAQR2MHQwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0
|
||||
LmNvbTBMBggrBgEFBQcwAoZAaHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL0Rp
|
||||
Z2lDZXJ0QXNzdXJlZElEQ29kZVNpZ25pbmdDQS0xLmNydDAMBgNVHRMBAf8EAjAA
|
||||
MA0GCSqGSIb3DQEBBQUAA4IBAQAei1QmiXepje8OIfo/WonD4MIXgpPr2dfRaquQ
|
||||
A8q63OpTRSveyqdQDCSPpDRF/nvO1Y30yksZvIH1tNBsW5LBdxAKN3lFdBlqBwtE
|
||||
Q3jHc0KVVYRJ0FBaGE/PJHmRajscdAhYIcMPhTga0u0tDK+wOHEq3993dfl6yHjA
|
||||
XHU2iW5pnk75ZoE39zALD5eKXT8ZXrET5c3XUFJKWA+XuGmdmyzqo0Au49PanBv9
|
||||
UlZnabYfqoMArqMS0tGSX4cGgi9/2E+pHG9BX4sFW+ZDumroOA2pxyMWEKjxePEL
|
||||
zCOfhbsRWdMLYepauaNZOIMZXmFwcrIl0TGMkTAtATz+XmZc
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
// Subject: CN=CLEARESULT CONSULTING INC., OU=Corporate IT,
|
||||
// O=CLEARESULT CONSULTING INC., L=Austin, ST=TX, C=US
|
||||
// Issuer: SERIALNUMBER=07969287,
|
||||
// CN=Go Daddy Secure Certification Authority,
|
||||
// OU=http://certificates.godaddy.com/repository,
|
||||
// O="GoDaddy.com, Inc.",
|
||||
// L=Scottsdale,
|
||||
// ST=Arizona,
|
||||
// C=US
|
||||
// Serial: 2b:73:43:2a:a8:4f:44
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFYjCCBEqgAwIBAgIHK3NDKqhPRDANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE
|
||||
BhMCVVMxEDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAY
|
||||
BgNVBAoTEUdvRGFkZHkuY29tLCBJbmMuMTMwMQYDVQQLEypodHRwOi8vY2VydGlm
|
||||
aWNhdGVzLmdvZGFkZHkuY29tL3JlcG9zaXRvcnkxMDAuBgNVBAMTJ0dvIERhZGR5
|
||||
IFNlY3VyZSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTERMA8GA1UEBRMIMDc5Njky
|
||||
ODcwHhcNMTIwMjE1MjEwOTA2WhcNMTQwMjE1MjEwOTA2WjCBjDELMAkGA1UEBgwC
|
||||
VVMxCzAJBgNVBAgMAlRYMQ8wDQYDVQQHDAZBdXN0aW4xIzAhBgNVBAoMGkNMRUFS
|
||||
RVNVTFQgQ09OU1VMVElORyBJTkMuMRUwEwYDVQQLDAxDb3Jwb3JhdGUgSVQxIzAh
|
||||
BgNVBAMMGkNMRUFSRVNVTFQgQ09OU1VMVElORyBJTkMuMIIBIjANBgkqhkiG9w0B
|
||||
AQEFAAOCAQ8AMIIBCgKCAQEAtIOjCKeAicull+7ZIzt0/4ya3IeXUFlfypqKMLkU
|
||||
IbKjn0P5uMj6VE3rlbZr44RCegxvdnR6umBh1c0ZXoN3o+yc0JKcKcLiApmJJ277
|
||||
p7IbLwYDhBXRQNoIJm187IOMRPIxsKN4hL91txn9jGBmW+9zKlJlNhR5R7vjwU2E
|
||||
jrH/6oqsc9EM2yYpfjlNv6+3jSwAYZCkSWr+27PQOV+YHKmIxtJjX0upFz5FdIrV
|
||||
9CCX+L2Kji1THOkSgG4QTbYxmEcHqGViWz8hXLeNXjcbEsPuIiAu3hknxRHfUTE/
|
||||
U0Lh0Ug1e3LrJu+WnxM2SmUY4krsZ22c0yWUW9hzWITIjQIDAQABo4IBhzCCAYMw
|
||||
DwYDVR0TAQH/BAUwAwEBADATBgNVHSUEDDAKBggrBgEFBQcDAzAOBgNVHQ8BAf8E
|
||||
BAMCB4AwMwYDVR0fBCwwKjAooCagJIYiaHR0cDovL2NybC5nb2RhZGR5LmNvbS9n
|
||||
ZHM1LTE2LmNybDBTBgNVHSAETDBKMEgGC2CGSAGG/W0BBxcCMDkwNwYIKwYBBQUH
|
||||
AgEWK2h0dHA6Ly9jZXJ0aWZpY2F0ZXMuZ29kYWRkeS5jb20vcmVwb3NpdG9yeS8w
|
||||
gYAGCCsGAQUFBwEBBHQwcjAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZ29kYWRk
|
||||
eS5jb20vMEoGCCsGAQUFBzAChj5odHRwOi8vY2VydGlmaWNhdGVzLmdvZGFkZHku
|
||||
Y29tL3JlcG9zaXRvcnkvZ2RfaW50ZXJtZWRpYXRlLmNydDAfBgNVHSMEGDAWgBT9
|
||||
rGEyk2xF1uLuhV+auud2mWjM5zAdBgNVHQ4EFgQUDtdeKqeN2QkcbEp1HovFieNB
|
||||
XiowDQYJKoZIhvcNAQEFBQADggEBAD74Agw5tvi2aBl4/f/s7/VE/BClzDsKMb9K
|
||||
v9qpeC45ZA/jelxV11HKbQnVF194gDb7D2H9OsAsRUy8HVKbXEcc/8dKvwOqb+BC
|
||||
2i/EmfjLgmCfezNFtLq8xcPxF3zIRc44vPrK0z4YZsaHdH+yTEJ51p5EMdTqaLaP
|
||||
4n5m8LX3RfqlQB9dYFe6dUoYZjKm9d/pIRww3VqfOzjl42Edi1w6dWmBVMx1NZuR
|
||||
DBabJH1vJ9Gd+KwxMCmBZ6pQPl28JDimhJhI2LNqU349uADQVV0HJosddN/ARyyI
|
||||
LSIQO7BnNVKVG9Iujf33bvPNeg0qNz5qw+rKKq97Pqeum+L5oKU=
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
// Subject: CN=eDellRoot
|
||||
// Issuer: CN=eDellRoot
|
||||
// Serial Number:
|
||||
// 6b:c5:7b:95:18:93:aa:97:4b:62:4a:c0:88:fc:3b:b6
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIC8zCCAd+gAwIBAgIQa8V7lRiTqpdLYkrAiPw7tjAJBgUrDgMCHQUAMBQxEjAQ
|
||||
BgNVBAMTCWVEZWxsUm9vdDAeFw0xNTA0MDcxMDIzMjdaFw0zOTEyMzEyMzU5NTla
|
||||
MBQxEjAQBgNVBAMTCWVEZWxsUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
|
||||
AQoCggEBAL3RJg1uzVuEX0Hw4XWGzs6oI9W+o7HZdVdBMMVb4Gzb4uZjCTNjbPx4
|
||||
b8LNFL1uArUt+5VVMQDsOTY3Lg/Xe/UNukY2b+0llUOzzBYYpbsFcco4n6SsTvDh
|
||||
Ni5t+kPo7c23ZrYBPmOu82eEJ6cavs/t39u+wFOkXXwvRCiHA/lWyNWNEPh17+bC
|
||||
EP3q5N+JrV+6Ho3zQPEv5QUJYdmXsMmD2CMQojeQUj68J91P5w5BKjurG0xjivzh
|
||||
Soie9ym7VRwLFjWScRuw/9XV6CLqTyL5xrqiiDp1uTOuqNj3uxyts9ocbsoJXuxj
|
||||
5iEYkSM1nvLupEv+lgy9WqzIEFMm1l8CAwEAAaNJMEcwRQYDVR0BBD4wPIAQYA/f
|
||||
EzPwmaRcZuSaa/VZ1KEWMBQxEjAQBgNVBAMTCWVEZWxsUm9vdIIQa8V7lRiTqpdL
|
||||
YkrAiPw7tjAJBgUrDgMCHQUAA4IBAQArfdcScsezj8ooJ92UwwnPgg36noOgiUs5
|
||||
XzPLP4h0JpUYQVKB9hY1WTDwRUfTKGh7oNOowd027a/rVSb/TNeoiJIvMKn4gbvV
|
||||
CWAiHhO8u2u0RkHCDVsa7e0i4ncpueWsihjn6jBrY8T+7eDYwiFT/F03A8NJ7mK5
|
||||
lZA8SFd5CTDy3EBUU5UwzXUc5HoIRUxXSPycu3aIBWawg3sCdKiAoikScPAWj0bM
|
||||
0vmsP/8QSlTOBqO+QFQ6R82BtTvBNU3qbVICV4QObsxib++FAFL56NApPqskg7Vz
|
||||
LfNIAjKabHUcjbuZkmg6jr4BfYW7+oQDHCsYgADjjKGdKz/8U/fP
|
||||
-----END CERTIFICATE-----
|
||||
@@ -1,29 +0,0 @@
|
||||
Owner: CN=GlobalSign, O=GlobalSign, OU=GlobalSign Root CA - R2
|
||||
Issuer: CN=GlobalSign, O=GlobalSign, OU=GlobalSign Root CA - R2
|
||||
Serial number: 400000000010f8626e60d
|
||||
Valid from: Fri Dec 15 08:00:00 GMT 2006 until: Wed Dec 15 08:00:00 GMT 2021
|
||||
Signature algorithm name: SHA1withRSA
|
||||
Subject Public Key Algorithm: 2048-bit RSA key
|
||||
Version: 3
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4G
|
||||
A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNp
|
||||
Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1
|
||||
MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMjETMBEG
|
||||
A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI
|
||||
hvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6ErPL
|
||||
v4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8
|
||||
eoLrvozps6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklq
|
||||
tTleiDTsvHgMCJiEbKjNS7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzd
|
||||
C9XZzPnqJworc5HGnRusyMvo4KD0L5CLTfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pa
|
||||
zq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6CygPCm48CAwEAAaOBnDCB
|
||||
mTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUm+IH
|
||||
V2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5n
|
||||
bG9iYWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG
|
||||
3lm0mi3f3BmGLjANBgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4Gs
|
||||
J0/WwbgcQ3izDJr86iw8bmEbTUsp9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO
|
||||
291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu01yiPqFbQfXf5WRDLenVOavS
|
||||
ot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG79G+dwfCMNYxd
|
||||
AfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7
|
||||
TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg==
|
||||
-----END CERTIFICATE-----
|
||||
@@ -32,7 +32,7 @@ formatVersion=3
|
||||
# Version of the currency code information in this class.
|
||||
# It is a serial number that accompanies with each amendment.
|
||||
|
||||
dataVersion=169
|
||||
dataVersion=170
|
||||
|
||||
# List of all valid ISO 4217 currency codes.
|
||||
# To ensure compatibility, do not remove codes.
|
||||
@@ -54,7 +54,7 @@ all=ADP020-AED784-AFA004-AFN971-ALL008-AMD051-ANG532-AOA973-ARS032-ATS040-AUD036
|
||||
SBD090-SCR690-SDD736-SDG938-SEK752-SGD702-SHP654-SIT705-SKK703-SLL694-SOS706-\
|
||||
SRD968-SRG740-SSP728-STD678-STN930-SVC222-SYP760-SZL748-THB764-TJS972-TMM795-TMT934-TND788-TOP776-\
|
||||
TPE626-TRL792-TRY949-TTD780-TWD901-TZS834-UAH980-UGX800-USD840-USN997-USS998-UYI940-\
|
||||
UYU858-UZS860-VEB862-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-XDR960-XFO000-XFU000-XOF952-XPD964-XPF953-\
|
||||
XPT962-XSU994-XTS963-XUA965-XXX999-YER886-YUM891-ZAR710-ZMK894-ZMW967-ZWD716-ZWL932-\
|
||||
ZWN942-ZWR935
|
||||
|
||||
@@ -21,4 +21,4 @@
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
tzdata2021a
|
||||
tzdata2021e
|
||||
|
||||
@@ -53,9 +53,6 @@
|
||||
# Milne J. Civil time. Geogr J. 1899 Feb;13(2):173-94.
|
||||
# https://www.jstor.org/stable/1774359
|
||||
#
|
||||
# A reliable and entertaining source about time zones is
|
||||
# Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
|
||||
#
|
||||
# European-style abbreviations are commonly used along the Mediterranean.
|
||||
# For sub-Saharan Africa abbreviations were less standardized.
|
||||
# Previous editions of this database used WAT, CAT, SAT, and EAT
|
||||
@@ -176,8 +173,9 @@ Zone Africa/Ndjamena 1:00:12 - LMT 1912 # N'Djamena
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Abidjan -0:16:08 - LMT 1912
|
||||
0:00 - GMT
|
||||
Link Africa/Abidjan Africa/Accra # Ghana
|
||||
Link Africa/Abidjan Africa/Bamako # Mali
|
||||
Link Africa/Abidjan Africa/Banjul # Gambia
|
||||
Link Africa/Abidjan Africa/Banjul # The Gambia
|
||||
Link Africa/Abidjan Africa/Conakry # Guinea
|
||||
Link Africa/Abidjan Africa/Dakar # Senegal
|
||||
Link Africa/Abidjan Africa/Freetown # Sierra Leone
|
||||
@@ -404,93 +402,8 @@ Zone Africa/Cairo 2:05:09 - LMT 1900 Oct
|
||||
# Gabon
|
||||
# See Africa/Lagos.
|
||||
|
||||
# Gambia
|
||||
# See Africa/Abidjan.
|
||||
|
||||
# The Gambia
|
||||
# Ghana
|
||||
|
||||
# From P Chan (2020-11-20):
|
||||
# Interpretation Amendment Ordinance, 1915 (No.24 of 1915) [1915-11-02]
|
||||
# Ordinances of the Gold Coast, Ashanti, Northern Territories 1915, p 69-71
|
||||
# https://books.google.com/books?id=ErA-AQAAIAAJ&pg=PA70
|
||||
# This Ordinance added "'Time' shall mean Greenwich Mean Time" to the
|
||||
# Interpretation Ordinance, 1876.
|
||||
#
|
||||
# Determination of the Time Ordinance, 1919 (No. 18 of 1919) [1919-11-24]
|
||||
# Ordinances of the Gold Coast, Ashanti, Northern Territories 1919, p 75-76
|
||||
# https://books.google.com/books?id=MbA-AQAAIAAJ&pg=PA75
|
||||
# This Ordinance removed the previous definition of time and introduced DST.
|
||||
#
|
||||
# Time Determination Ordinance (Cap. 214)
|
||||
# The Laws of the Gold Coast (including Togoland Under British Mandate)
|
||||
# Vol. II (1937), p 2328
|
||||
# https://books.google.com/books?id=Z7M-AQAAIAAJ&pg=PA2328
|
||||
# Revised edition of the 1919 Ordinance.
|
||||
#
|
||||
# Time Determination (Amendment) Ordinance, 1940 (No. 9 of 1940) [1940-04-06]
|
||||
# Annual Volume of the Laws of the Gold Coast:
|
||||
# Containing All Legislation Enacted During Year 1940, p 22
|
||||
# https://books.google.com/books?id=1ao-AQAAIAAJ&pg=PA22
|
||||
# This Ordinance changed the forward transition from September to May.
|
||||
#
|
||||
# Defence (Time Determination Ordinance Amendment) Regulations, 1942
|
||||
# (Regulations No. 6 of 1942) [1942-01-31, commenced on 1942-02-08]
|
||||
# Annual Volume of the Laws of the Gold Coast:
|
||||
# Containing All Legislation Enacted During Year 1942, p 48
|
||||
# https://books.google.com/books?id=Das-AQAAIAAJ&pg=PA48
|
||||
# These regulations advanced the [standard] time by thirty minutes.
|
||||
#
|
||||
# Defence (Time Determination Ordinance Amendment (No.2)) Regulations,
|
||||
# 1942 (Regulations No. 28 of 1942) [1942-04-25]
|
||||
# Annual Volume of the Laws of the Gold Coast:
|
||||
# Containing All Legislation Enacted During Year 1942, p 87
|
||||
# https://books.google.com/books?id=Das-AQAAIAAJ&pg=PA87
|
||||
# These regulations abolished DST and changed the time to GMT+0:30.
|
||||
#
|
||||
# Defence (Revocation) (No.4) Regulations, 1945 (Regulations No. 45 of
|
||||
# 1945) [1945-10-24, commenced on 1946-01-06]
|
||||
# Annual Volume of the Laws of the Gold Coast:
|
||||
# Containing All Legislation Enacted During Year 1945, p 256
|
||||
# https://books.google.com/books?id=9as-AQAAIAAJ&pg=PA256
|
||||
# These regulations revoked the previous two sets of Regulations.
|
||||
#
|
||||
# Time Determination (Amendment) Ordinance, 1945 (No. 18 of 1945) [1946-01-06]
|
||||
# Annual Volume of the Laws of the Gold Coast:
|
||||
# Containing All Legislation Enacted During Year 1945, p 69
|
||||
# https://books.google.com/books?id=9as-AQAAIAAJ&pg=PA69
|
||||
# This Ordinance abolished DST.
|
||||
#
|
||||
# Time Determination (Amendment) Ordinance, 1950 (No. 26 of 1950) [1950-07-22]
|
||||
# Annual Volume of the Laws of the Gold Coast:
|
||||
# Containing All Legislation Enacted During Year 1950, p 35
|
||||
# https://books.google.com/books?id=e60-AQAAIAAJ&pg=PA35
|
||||
# This Ordinance restored DST but with thirty minutes offset.
|
||||
#
|
||||
# Time Determination Ordinance (Cap. 264)
|
||||
# The Laws of the Gold Coast, Vol. V (1954), p 380
|
||||
# https://books.google.com/books?id=Mqc-AQAAIAAJ&pg=PA380
|
||||
# Revised edition of the Time Determination Ordinance.
|
||||
#
|
||||
# Time Determination (Amendment) Ordinance, 1956 (No. 21 of 1956) [1956-08-29]
|
||||
# Annual Volume of the Ordinances of the Gold Coast Enacted During the
|
||||
# Year 1956, p 83
|
||||
# https://books.google.com/books?id=VLE-AQAAIAAJ&pg=PA83
|
||||
# This Ordinance abolished DST.
|
||||
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Ghana 1919 only - Nov 24 0:00 0:20 +0020
|
||||
Rule Ghana 1920 1942 - Jan 1 2:00 0 GMT
|
||||
Rule Ghana 1920 1939 - Sep 1 2:00 0:20 +0020
|
||||
Rule Ghana 1940 1941 - May 1 2:00 0:20 +0020
|
||||
Rule Ghana 1950 1955 - Sep 1 2:00 0:30 +0030
|
||||
Rule Ghana 1951 1956 - Jan 1 2:00 0 GMT
|
||||
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Accra -0:00:52 - LMT 1915 Nov 2
|
||||
0:00 Ghana %s 1942 Feb 8
|
||||
0:30 - +0030 1946 Jan 6
|
||||
0:00 Ghana %s
|
||||
|
||||
# Guinea
|
||||
# See Africa/Abidjan.
|
||||
|
||||
@@ -755,7 +668,7 @@ Zone Indian/Mauritius 3:50:00 - LMT 1907 # Port Louis
|
||||
# See Africa/Nairobi.
|
||||
|
||||
# Morocco
|
||||
# See the 'europe' file for Spanish Morocco (Africa/Ceuta).
|
||||
# See Africa/Ceuta for Spanish Morocco.
|
||||
|
||||
# From Alex Krivenyshev (2008-05-09):
|
||||
# Here is an article that Morocco plan to introduce Daylight Saving Time between
|
||||
@@ -1405,23 +1318,21 @@ Zone Africa/Lagos 0:13:35 - LMT 1905 Jul 1
|
||||
0:13:35 - LMT 1914 Jan 1
|
||||
0:30 - +0030 1919 Sep 1
|
||||
1:00 - WAT
|
||||
Link Africa/Lagos Africa/Bangui # Central African Republic
|
||||
Link Africa/Lagos Africa/Brazzaville # Rep. of the Congo
|
||||
Link Africa/Lagos Africa/Douala # Cameroon
|
||||
Link Africa/Lagos Africa/Kinshasa # Dem. Rep. of the Congo (west)
|
||||
Link Africa/Lagos Africa/Libreville # Gabon
|
||||
Link Africa/Lagos Africa/Luanda # Angola
|
||||
Link Africa/Lagos Africa/Malabo # Equatorial Guinea
|
||||
Link Africa/Lagos Africa/Niamey # Niger
|
||||
Link Africa/Lagos Africa/Porto-Novo # Benin
|
||||
Link Africa/Lagos Africa/Bangui # Central African Republic
|
||||
Link Africa/Lagos Africa/Brazzaville # Rep. of the Congo
|
||||
Link Africa/Lagos Africa/Douala # Cameroon
|
||||
Link Africa/Lagos Africa/Kinshasa # Dem. Rep. of the Congo (west)
|
||||
Link Africa/Lagos Africa/Libreville # Gabon
|
||||
Link Africa/Lagos Africa/Luanda # Angola
|
||||
Link Africa/Lagos Africa/Malabo # Equatorial Guinea
|
||||
Link Africa/Lagos Africa/Niamey # Niger
|
||||
Link Africa/Lagos Africa/Porto-Novo # Benin
|
||||
|
||||
# Réunion
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Indian/Reunion 3:41:52 - LMT 1911 Jun # Saint-Denis
|
||||
4:00 - +04
|
||||
#
|
||||
# Crozet Islands also observes Réunion time; see the 'antarctica' file.
|
||||
#
|
||||
# Scattered Islands (Îles Éparses) administered from Réunion are as follows.
|
||||
# The following information about them is taken from
|
||||
# Îles Éparses (<http://www.outre-mer.gouv.fr/domtom/ile.htm>, 1997-07-22,
|
||||
@@ -1513,8 +1424,8 @@ Rule SA 1943 1944 - Mar Sun>=15 2:00 0 -
|
||||
Zone Africa/Johannesburg 1:52:00 - LMT 1892 Feb 8
|
||||
1:30 - SAST 1903 Mar
|
||||
2:00 SA SAST
|
||||
Link Africa/Johannesburg Africa/Maseru # Lesotho
|
||||
Link Africa/Johannesburg Africa/Mbabane # Eswatini
|
||||
Link Africa/Johannesburg Africa/Maseru # Lesotho
|
||||
Link Africa/Johannesburg Africa/Mbabane # Eswatini
|
||||
#
|
||||
# Marion and Prince Edward Is
|
||||
# scientific station since 1947
|
||||
@@ -1550,12 +1461,13 @@ Zone Africa/Khartoum 2:10:08 - LMT 1931
|
||||
3:00 - EAT 2017 Nov 1
|
||||
2:00 - CAT
|
||||
|
||||
# South Sudan
|
||||
|
||||
# From Steffen Thorsen (2021-01-18):
|
||||
# "South Sudan will change its time zone by setting the clock back 1
|
||||
# hour on February 1, 2021...."
|
||||
# from https://eyeradio.org/south-sudan-adopts-new-time-zone-makuei/
|
||||
|
||||
# South Sudan
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Juba 2:06:28 - LMT 1931
|
||||
2:00 Sudan CA%sT 2000 Jan 15 12:00
|
||||
@@ -1660,7 +1572,7 @@ Rule Tunisia 2005 only - Sep 30 1:00s 0 -
|
||||
Rule Tunisia 2006 2008 - Mar lastSun 2:00s 1:00 S
|
||||
Rule Tunisia 2006 2008 - Oct lastSun 2:00s 0 -
|
||||
|
||||
# See Europe/Paris for PMT-related transitions.
|
||||
# See Europe/Paris commentary for PMT-related transitions.
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Tunis 0:40:44 - LMT 1881 May 12
|
||||
0:09:21 - PMT 1911 Mar 11 # Paris Mean Time
|
||||
|
||||
@@ -171,7 +171,7 @@ Zone Antarctica/Mawson 0 - -00 1954 Feb 13
|
||||
#
|
||||
# Alfred Faure, Possession Island, Crozet Islands, -462551+0515152, since 1964;
|
||||
# sealing & whaling stations operated variously 1802/1911+;
|
||||
# see Indian/Reunion.
|
||||
# see Asia/Dubai.
|
||||
#
|
||||
# Martin-de-Viviès, Amsterdam Island, -374105+0773155, since 1950
|
||||
# Port-aux-Français, Kerguelen Islands, -492110+0701303, since 1951;
|
||||
@@ -185,17 +185,7 @@ Zone Indian/Kerguelen 0 - -00 1950 # Port-aux-Français
|
||||
5:00 - +05
|
||||
#
|
||||
# year-round base in the main continent
|
||||
# Dumont d'Urville, Île des Pétrels, -6640+14001, since 1956-11
|
||||
# <https://en.wikipedia.org/wiki/Dumont_d'Urville_Station> (2005-12-05)
|
||||
#
|
||||
# Another base at Port-Martin, 50km east, began operation in 1947.
|
||||
# It was destroyed by fire on 1952-01-14.
|
||||
#
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Antarctica/DumontDUrville 0 - -00 1947
|
||||
10:00 - +10 1952 Jan 14
|
||||
0 - -00 1956 Nov
|
||||
10:00 - +10
|
||||
# Dumont d'Urville - see Pacific/Port_Moresby.
|
||||
|
||||
# France & Italy - year-round base
|
||||
# Concordia, -750600+1232000, since 2005
|
||||
@@ -211,20 +201,7 @@ Zone Antarctica/DumontDUrville 0 - -00 1947
|
||||
# Zuchelli, Terra Nova Bay, -744140+1640647, since 1986
|
||||
|
||||
# Japan - year-round bases
|
||||
# Syowa (also known as Showa), -690022+0393524, since 1957
|
||||
#
|
||||
# From Hideyuki Suzuki (1999-02-06):
|
||||
# In all Japanese stations, +0300 is used as the standard time.
|
||||
#
|
||||
# Syowa station, which is the first antarctic station of Japan,
|
||||
# was established on 1957-01-29. Since Syowa station is still the main
|
||||
# station of Japan, it's appropriate for the principal location.
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Antarctica/Syowa 0 - -00 1957 Jan 29
|
||||
3:00 - +03
|
||||
# See:
|
||||
# NIPR Antarctic Research Activities (1999-08-17)
|
||||
# http://www.nipr.ac.jp/english/ara01.html
|
||||
# See Asia/Riyadh.
|
||||
|
||||
# S Korea - year-round base
|
||||
# Jang Bogo, Terra Nova Bay, -743700+1641205 since 2014
|
||||
|
||||
@@ -57,9 +57,6 @@
|
||||
# Byalokoz EL. New Counting of Time in Russia since July 1, 1919.
|
||||
# (See the 'europe' file for a fuller citation.)
|
||||
#
|
||||
# A reliable and entertaining source about time zones is
|
||||
# Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
|
||||
#
|
||||
# The following alphabetic abbreviations appear in these tables
|
||||
# (corrections are welcome):
|
||||
# std dst
|
||||
@@ -2257,6 +2254,14 @@ Zone Asia/Tokyo 9:18:59 - LMT 1887 Dec 31 15:00u
|
||||
# From Paul Eggert (2013-12-11):
|
||||
# As Steffen suggested, consider the past 21-month experiment to be DST.
|
||||
|
||||
# From Steffen Thorsen (2021-09-24):
|
||||
# The Jordanian Government announced yesterday that they will start DST
|
||||
# in February instead of March:
|
||||
# https://petra.gov.jo/Include/InnerPage.jsp?ID=37683&lang=en&name=en_news (English)
|
||||
# https://petra.gov.jo/Include/InnerPage.jsp?ID=189969&lang=ar&name=news (Arabic)
|
||||
# From the Arabic version, it seems to say it would be at midnight
|
||||
# (assume 24:00) on the last Thursday in February, starting from 2022.
|
||||
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Jordan 1973 only - Jun 6 0:00 1:00 S
|
||||
Rule Jordan 1973 1975 - Oct 1 0:00 0 -
|
||||
@@ -2287,8 +2292,9 @@ Rule Jordan 2004 only - Oct 15 0:00s 0 -
|
||||
Rule Jordan 2005 only - Sep lastFri 0:00s 0 -
|
||||
Rule Jordan 2006 2011 - Oct lastFri 0:00s 0 -
|
||||
Rule Jordan 2013 only - Dec 20 0:00 0 -
|
||||
Rule Jordan 2014 max - Mar lastThu 24:00 1:00 S
|
||||
Rule Jordan 2014 2021 - Mar lastThu 24:00 1:00 S
|
||||
Rule Jordan 2014 max - Oct lastFri 0:00s 0 -
|
||||
Rule Jordan 2022 max - Feb lastThu 24:00 1:00 S
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Asia/Amman 2:23:44 - LMT 1931
|
||||
2:00 Jordan EE%sT
|
||||
@@ -2763,7 +2769,8 @@ Rule NBorneo 1935 1941 - Dec 14 0:00 0 -
|
||||
#
|
||||
# peninsular Malaysia
|
||||
# taken from Mok Ly Yng (2003-10-30)
|
||||
# http://www.math.nus.edu.sg/aslaksen/teaching/timezone.html
|
||||
# https://web.archive.org/web/20190822231045/http://www.math.nus.edu.sg/~mathelmr/teaching/timezone.html
|
||||
# This agrees with Singapore since 1905-06-01.
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Asia/Kuala_Lumpur 6:46:46 - LMT 1901 Jan 1
|
||||
6:55:25 - SMT 1905 Jun 1 # Singapore M.T.
|
||||
@@ -3402,11 +3409,6 @@ Zone Asia/Karachi 4:28:12 - LMT 1907
|
||||
# shall [end] on Oct 24th 2020 at 01:00AM by delaying the clock by 60 minutes.
|
||||
# http://www.palestinecabinet.gov.ps/portal/Meeting/Details/51584
|
||||
|
||||
# From Tim Parenti (2020-10-20):
|
||||
# Predict future fall transitions at 01:00 on the Saturday preceding October's
|
||||
# last Sunday (i.e., Sat>=24). This is consistent with our predictions since
|
||||
# 2016, although the time of the change differed slightly in 2019.
|
||||
|
||||
# From Pierre Cashon (2020-10-20):
|
||||
# The summer time this year started on March 28 at 00:00.
|
||||
# https://wafa.ps/ar_page.aspx?id=GveQNZa872839351758aGveQNZ
|
||||
@@ -3419,6 +3421,17 @@ Zone Asia/Karachi 4:28:12 - LMT 1907
|
||||
# For now, guess spring-ahead transitions are at 00:00 on the Saturday
|
||||
# preceding March's last Sunday (i.e., Sat>=24).
|
||||
|
||||
# From P Chan (2021-10-18):
|
||||
# http://wafa.ps/Pages/Details/34701
|
||||
# Palestine winter time will start from midnight 2021-10-29 (Thursday-Friday).
|
||||
#
|
||||
# From Heba Hemad, Palestine Ministry of Telecom & IT (2021-10-20):
|
||||
# ... winter time will begin in Palestine from Friday 10-29, 01:00 AM
|
||||
# by 60 minutes backwards.
|
||||
#
|
||||
# From Paul Eggert (2021-10-20):
|
||||
# Guess future fall transitions on October's last Friday at 01:00.
|
||||
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule EgyptAsia 1957 only - May 10 0:00 1:00 S
|
||||
Rule EgyptAsia 1957 1958 - Oct 1 0:00 0 -
|
||||
@@ -3454,7 +3467,8 @@ Rule Palestine 2016 2018 - Oct Sat>=24 1:00 0 -
|
||||
Rule Palestine 2019 only - Mar 29 0:00 1:00 S
|
||||
Rule Palestine 2019 only - Oct Sat>=24 0:00 0 -
|
||||
Rule Palestine 2020 max - Mar Sat>=24 0:00 1:00 S
|
||||
Rule Palestine 2020 max - Oct Sat>=24 1:00 0 -
|
||||
Rule Palestine 2020 only - Oct 24 1:00 0 -
|
||||
Rule Palestine 2021 max - Oct lastFri 1:00 0 -
|
||||
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Asia/Gaza 2:17:52 - LMT 1900 Oct
|
||||
@@ -3523,6 +3537,12 @@ Zone Asia/Hebron 2:20:23 - LMT 1900 Oct
|
||||
# influence of the sources. There is no current abbreviation for DST,
|
||||
# so use "PDT", the usual American style.
|
||||
|
||||
# From P Chan (2021-05-10):
|
||||
# Here's a fairly comprehensive article in Japanese:
|
||||
# https://wiki.suikawiki.org/n/Philippine%20Time
|
||||
# From Paul Eggert (2021-05-10):
|
||||
# The info in the Japanese table has not been absorbed (yet) below.
|
||||
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Phil 1936 only - Nov 1 0:00 1:00 D
|
||||
Rule Phil 1937 only - Feb 1 0:00 0 S
|
||||
@@ -3589,12 +3609,13 @@ Link Asia/Qatar Asia/Bahrain
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Asia/Riyadh 3:06:52 - LMT 1947 Mar 14
|
||||
3:00 - +03
|
||||
Link Asia/Riyadh Antarctica/Syowa
|
||||
Link Asia/Riyadh Asia/Aden # Yemen
|
||||
Link Asia/Riyadh Asia/Kuwait
|
||||
|
||||
# Singapore
|
||||
# taken from Mok Ly Yng (2003-10-30)
|
||||
# http://www.math.nus.edu.sg/aslaksen/teaching/timezone.html
|
||||
# https://web.archive.org/web/20190822231045/http://www.math.nus.edu.sg/~mathelmr/teaching/timezone.html
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Asia/Singapore 6:55:25 - LMT 1901 Jan 1
|
||||
6:55:25 - SMT 1905 Jun 1 # Singapore M.T.
|
||||
|
||||
@@ -408,9 +408,22 @@ Zone Indian/Cocos 6:27:40 - LMT 1900
|
||||
# "Minister for Employment, Parveen Bala says they had never thought of
|
||||
# stopping daylight saving. He says it was just to decide on when it should
|
||||
# start and end. Bala says it is a short period..."
|
||||
# Since the end date is still in line with our ongoing predictions, assume for
|
||||
# now that the later-than-usual start date is a one-time departure from the
|
||||
# recent second Sunday in November pattern.
|
||||
#
|
||||
# From Tim Parenti (2021-10-11), per Jashneel Kumar (2021-10-11) and P Chan
|
||||
# (2021-10-12):
|
||||
# https://www.fiji.gov.fj/Media-Centre/Speeches/English/PM-BAINIMARAMA-S-COVID-19-ANNOUNCEMENT-10-10-21
|
||||
# https://www.fbcnews.com.fj/news/covid-19/curfew-moved-back-to-11pm/
|
||||
# In a 2021-10-10 speech concerning updated Covid-19 mitigation measures in
|
||||
# Fiji, prime minister Josaia Voreqe "Frank" Bainimarama announced the
|
||||
# suspension of DST for the 2021/2022 season: "Given that we are in the process
|
||||
# of readjusting in the midst of so many changes, we will also put Daylight
|
||||
# Savings Time on hold for this year. It will also make the reopening of
|
||||
# scheduled commercial air service much smoother if we don't have to be
|
||||
# concerned shifting arrival and departure times, which may look like a simple
|
||||
# thing but requires some significant logistical adjustments domestically and
|
||||
# internationally."
|
||||
# Assume for now that DST will resume with the recent pre-2020 rules for the
|
||||
# 2022/2023 season.
|
||||
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Fiji 1998 1999 - Nov Sun>=1 2:00 1:00 -
|
||||
@@ -422,10 +435,11 @@ Rule Fiji 2011 only - Mar Sun>=1 3:00 0 -
|
||||
Rule Fiji 2012 2013 - Jan Sun>=18 3:00 0 -
|
||||
Rule Fiji 2014 only - Jan Sun>=18 2:00 0 -
|
||||
Rule Fiji 2014 2018 - Nov Sun>=1 2:00 1:00 -
|
||||
Rule Fiji 2015 max - Jan Sun>=12 3:00 0 -
|
||||
Rule Fiji 2015 2021 - Jan Sun>=12 3:00 0 -
|
||||
Rule Fiji 2019 only - Nov Sun>=8 2:00 1:00 -
|
||||
Rule Fiji 2020 only - Dec 20 2:00 1:00 -
|
||||
Rule Fiji 2021 max - Nov Sun>=8 2:00 1:00 -
|
||||
Rule Fiji 2022 max - Nov Sun>=8 2:00 1:00 -
|
||||
Rule Fiji 2023 max - Jan Sun>=12 3:00 0 -
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Pacific/Fiji 11:55:44 - LMT 1915 Oct 26 # Suva
|
||||
12:00 Fiji +12/+13
|
||||
@@ -487,7 +501,7 @@ Link Pacific/Guam Pacific/Saipan # N Mariana Is
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Pacific/Tarawa 11:32:04 - LMT 1901 # Bairiki
|
||||
12:00 - +12
|
||||
Zone Pacific/Enderbury -11:24:20 - LMT 1901
|
||||
Zone Pacific/Kanton 0 - -00 1937 Aug 31
|
||||
-12:00 - -12 1979 Oct
|
||||
-11:00 - -11 1994 Dec 31
|
||||
13:00 - +13
|
||||
@@ -620,13 +634,46 @@ Link Pacific/Auckland Antarctica/McMurdo
|
||||
# was probably like Pacific/Auckland
|
||||
|
||||
# Cook Is
|
||||
# From Shanks & Pottenger:
|
||||
#
|
||||
# From Alexander Krivenyshev (2021-03-24):
|
||||
# In 1899 the Cook Islands celebrated Christmas twice to correct the calendar.
|
||||
# According to the old books, missionaries were unaware of
|
||||
# the International Date line, when they came from Sydney.
|
||||
# Thus the Cook Islands were one day ahead....
|
||||
# http://nzetc.victoria.ac.nz/tm/scholarly/tei-KloDisc-t1-body-d18.html
|
||||
# ... Appendix to the Journals of the House of Representatives, 1900
|
||||
# https://atojs.natlib.govt.nz/cgi-bin/atojs?a=d&d=AJHR1900-I.2.1.2.3
|
||||
# (page 20)
|
||||
#
|
||||
# From Michael Deckers (2021-03-24):
|
||||
# ... in the Cook Island Act of 1915-10-11, online at
|
||||
# http://www.paclii.org/ck/legis/ck-nz_act/cia1915132/
|
||||
# "651. The hour of the day shall in each of the islands included in the
|
||||
# Cook Islands be determined in accordance with the meridian of that island."
|
||||
# so that local (mean?) time was still used in Rarotonga (and Niue) in 1915.
|
||||
# This was changed in the Cook Island Amendment Act of 1952-10-16 ...
|
||||
# http://www.paclii.org/ck/legis/ck-nz_act/ciaa1952212/
|
||||
# "651 (1) The hour of the day in each of the islands included in the Cook
|
||||
# Islands, other than Niue, shall be determined as if each island were
|
||||
# situated on the meridian one hundred and fifty-seven degrees thirty minutes
|
||||
# West of Greenwich. (2) The hour of the day in the Island of Niue shall be
|
||||
# determined as if that island were situated on the meridian one hundred and
|
||||
# seventy degrees West of Greenwich."
|
||||
# This act does not state when it takes effect, so one has to assume it
|
||||
# applies since 1952-10-16. But there is the possibility that the act just
|
||||
# legalized prior existing practice, as we had seen with the Guernsey law of
|
||||
# 1913-06-18 for the switch in 1909-04-19.
|
||||
#
|
||||
# From Paul Eggert (2021-03-24):
|
||||
# Transitions after 1952 are from Shanks & Pottenger.
|
||||
#
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Cook 1978 only - Nov 12 0:00 0:30 -
|
||||
Rule Cook 1979 1991 - Mar Sun>=1 0:00 0 -
|
||||
Rule Cook 1979 1990 - Oct lastSun 0:00 0:30 -
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Pacific/Rarotonga -10:39:04 - LMT 1901 # Avarua
|
||||
Zone Pacific/Rarotonga 13:20:56 - LMT 1899 Dec 26 # Avarua
|
||||
-10:39:04 - LMT 1952 Oct 16
|
||||
-10:30 - -1030 1978 Nov 12
|
||||
-10:00 Cook -10/-0930
|
||||
|
||||
@@ -634,10 +681,18 @@ Zone Pacific/Rarotonga -10:39:04 - LMT 1901 # Avarua
|
||||
|
||||
|
||||
# Niue
|
||||
# See Pacific/Raratonga comments for 1952 transition.
|
||||
#
|
||||
# From Tim Parenti (2021-09-13):
|
||||
# Consecutive contemporaneous editions of The Air Almanac listed -11:20 for
|
||||
# Niue as of Apr 1964 but -11 as of Aug 1964:
|
||||
# Apr 1964: https://books.google.com/books?id=_1So677Y5vUC&pg=SL1-PA23
|
||||
# Aug 1964: https://books.google.com/books?id=MbJloqd-zyUC&pg=SL1-PA23
|
||||
# Without greater specificity, guess 1964-07-01 for this transition.
|
||||
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Pacific/Niue -11:19:40 - LMT 1901 # Alofi
|
||||
-11:20 - -1120 1951
|
||||
-11:30 - -1130 1978 Oct 1
|
||||
Zone Pacific/Niue -11:19:40 - LMT 1952 Oct 16 # Alofi
|
||||
-11:20 - -1120 1964 Jul
|
||||
-11:00 - -11
|
||||
|
||||
# Norfolk
|
||||
@@ -661,6 +716,7 @@ Zone Pacific/Palau -15:02:04 - LMT 1844 Dec 31 # Koror
|
||||
Zone Pacific/Port_Moresby 9:48:40 - LMT 1880
|
||||
9:48:32 - PMMT 1895 # Port Moresby Mean Time
|
||||
10:00 - +10
|
||||
Link Pacific/Port_Moresby Antarctica/DumontDUrville
|
||||
#
|
||||
# From Paul Eggert (2014-10-13):
|
||||
# Base the Bougainville entry on the Arawa-Kieta region, which appears to have
|
||||
@@ -765,13 +821,17 @@ Link Pacific/Pago_Pago Pacific/Midway # in US minor outlying islands
|
||||
# From Paul Eggert (2014-07-08):
|
||||
# That web page currently lists transitions for 2012/3 and 2013/4.
|
||||
# Assume the pattern instituted in 2012 will continue indefinitely.
|
||||
#
|
||||
# From Geoffrey D. Bennett (2021-09-20):
|
||||
# https://www.mcil.gov.ws/storage/2021/09/MCIL-Scan_20210920_120553.pdf
|
||||
# DST has been cancelled for this year.
|
||||
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule WS 2010 only - Sep lastSun 0:00 1 -
|
||||
Rule WS 2011 only - Apr Sat>=1 4:00 0 -
|
||||
Rule WS 2011 only - Sep lastSat 3:00 1 -
|
||||
Rule WS 2012 max - Apr Sun>=1 4:00 0 -
|
||||
Rule WS 2012 max - Sep lastSun 3:00 1 -
|
||||
Rule WS 2012 2021 - Apr Sun>=1 4:00 0 -
|
||||
Rule WS 2012 2020 - Sep lastSun 3:00 1 -
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Pacific/Apia 12:33:04 - LMT 1892 Jul 5
|
||||
-11:26:56 - LMT 1911
|
||||
@@ -818,8 +878,8 @@ Rule Tonga 2001 2002 - Jan lastSun 2:00 0 -
|
||||
Rule Tonga 2016 only - Nov Sun>=1 2:00 1:00 -
|
||||
Rule Tonga 2017 only - Jan Sun>=15 3:00 0 -
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Pacific/Tongatapu 12:19:20 - LMT 1901
|
||||
12:20 - +1220 1941
|
||||
Zone Pacific/Tongatapu 12:19:12 - LMT 1945 Sep 10
|
||||
12:20 - +1220 1961
|
||||
13:00 - +13 1999
|
||||
13:00 Tonga +13/+14
|
||||
|
||||
@@ -1761,6 +1821,23 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901
|
||||
# One source for this is page 202 of: Bartky IR. One Time Fits All:
|
||||
# The Campaigns for Global Uniformity (2007).
|
||||
|
||||
# Kanton
|
||||
|
||||
# From Paul Eggert (2021-05-27):
|
||||
# Kiribati's +13 timezone is represented by Kanton, its only populated
|
||||
# island. (It was formerly spelled "Canton", but Gilbertese lacks "C".)
|
||||
# Kanton was settled on 1937-08-31 by two British radio operators
|
||||
# <https://history.state.gov/historicaldocuments/frus1937v02/d94>;
|
||||
# Americans came the next year and built an airfield, partly to
|
||||
# establish airline service and perhaps partly anticipating the
|
||||
# next war. Aside from the war, the airfield was used by commercial
|
||||
# airlines until long-range jets became standard; although currently
|
||||
# for emergency use only, China says it is considering rebuilding the
|
||||
# airfield for high-end niche tourism. Kanton has about two dozen
|
||||
# people, caretakers who rotate in from the rest of Kiribati in 2-5
|
||||
# year shifts, and who use some of the leftover structures
|
||||
# <http://pipa.neaq.org/2012/06/images-of-kanton-island.html>.
|
||||
|
||||
# Kwajalein
|
||||
|
||||
# From an AP article (1993-08-22):
|
||||
@@ -2044,6 +2121,17 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901
|
||||
|
||||
# Tonga
|
||||
|
||||
# From Paul Eggert (2021-03-04):
|
||||
# In 1943 "The standard time kept is 12 hrs. 19 min. 12 sec. fast
|
||||
# on Greenwich mean time." according to the Admiralty's Hydrographic
|
||||
# Dept., Pacific Islands Pilot, Vol. II, 7th ed., 1943, p 360.
|
||||
|
||||
# From Michael Deckers (2021-03-03):
|
||||
# [Ian R Bartky: "One Time Fits All: The Campaigns for Global Uniformity".
|
||||
# Stanford University Press. 2007. p. 255]:
|
||||
# On 10 September 1945 Tonga adopted a standard time 12 hours,
|
||||
# 20 minutes in advance of Greenwich.
|
||||
|
||||
# From Paul Eggert (1996-01-22):
|
||||
# Today's _Wall Street Journal_ (p 1) reports that "Tonga has been plotting
|
||||
# to sneak ahead of [New Zealanders] by introducing daylight-saving time."
|
||||
@@ -2072,9 +2160,26 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901
|
||||
# The Crown Prince, presented an unanswerable argument: "Remember that
|
||||
# on the World Day of Prayer, you would be the first people on Earth
|
||||
# to say your prayers in the morning."
|
||||
|
||||
# From Paul Eggert (2006-03-22):
|
||||
# Shanks & Pottenger say the transition was on 1968-10-01; go with Mundell.
|
||||
#
|
||||
# From Tim Parenti (2021-09-13), per Paul Eggert (2006-03-22) and Michael
|
||||
# Deckers (2021-03-03):
|
||||
# Mundell places the transition from +12:20 to +13 in 1941, while Shanks &
|
||||
# Pottenger say the transition was on 1968-10-01.
|
||||
#
|
||||
# The Air Almanac published contemporaneous tables of standard times,
|
||||
# which listed +12:20 as of Nov 1960 and +13 as of Mar 1961:
|
||||
# Nov 1960: https://books.google.com/books?id=bVgtWM6kPZUC&pg=SL1-PA19
|
||||
# Mar 1961: https://books.google.com/books?id=W2nItAul4g0C&pg=SL1-PA19
|
||||
# (Thanks to P Chan for pointing us toward these sources.)
|
||||
# This agrees with Bartky, who writes that "since 1961 [Tonga's] official time
|
||||
# has been thirteen hours in advance of Greenwich time" (p. 202) and further
|
||||
# writes in an endnote that this was because "the legislation was amended" on
|
||||
# 1960-10-19. (p. 255)
|
||||
#
|
||||
# Without greater specificity, presume that Bartky and the Air Almanac point to
|
||||
# a 1961-01-01 transition, as Tāufaʻāhau Tupou IV was still Crown Prince in
|
||||
# 1961 and this still jives with the gist of Mundell's telling, and go with
|
||||
# this over Shanks & Pottenger.
|
||||
|
||||
# From Eric Ulevik (1999-05-03):
|
||||
# Tonga's director of tourism, who is also secretary of the National Millennium
|
||||
|
||||
@@ -26,8 +26,10 @@
|
||||
# This file is in the public domain, so clarified as of
|
||||
# 2009-05-17 by Arthur David Olson.
|
||||
|
||||
# This file provides links between current names for timezones
|
||||
# and their old names. Many names changed in late 1993.
|
||||
# This file provides links from old or merged timezone names to current ones.
|
||||
# Many names changed in late 1993. Several of these names are
|
||||
# also present in the file 'backzone', which has data important only
|
||||
# for pre-1970 timestamps and so is out of scope for tzdb proper.
|
||||
|
||||
# Link TARGET LINK-NAME
|
||||
Link Africa/Nairobi Africa/Asmera
|
||||
@@ -36,7 +38,7 @@ Link America/Argentina/Catamarca America/Argentina/ComodRivadavia
|
||||
Link America/Adak America/Atka
|
||||
Link America/Argentina/Buenos_Aires America/Buenos_Aires
|
||||
Link America/Argentina/Catamarca America/Catamarca
|
||||
Link America/Atikokan America/Coral_Harbour
|
||||
Link America/Panama America/Coral_Harbour
|
||||
Link America/Argentina/Cordoba America/Cordoba
|
||||
Link America/Tijuana America/Ensenada
|
||||
Link America/Indiana/Indianapolis America/Fort_Wayne
|
||||
@@ -51,7 +53,7 @@ Link America/Rio_Branco America/Porto_Acre
|
||||
Link America/Argentina/Cordoba America/Rosario
|
||||
Link America/Tijuana America/Santa_Isabel
|
||||
Link America/Denver America/Shiprock
|
||||
Link America/Port_of_Spain America/Virgin
|
||||
Link America/Puerto_Rico America/Virgin
|
||||
Link Pacific/Auckland Antarctica/South_Pole
|
||||
Link Asia/Ashgabat Asia/Ashkhabad
|
||||
Link Asia/Kolkata Asia/Calcutta
|
||||
@@ -126,6 +128,7 @@ Link Pacific/Auckland NZ
|
||||
Link Pacific/Chatham NZ-CHAT
|
||||
Link America/Denver Navajo
|
||||
Link Asia/Shanghai PRC
|
||||
Link Pacific/Kanton Pacific/Enderbury
|
||||
Link Pacific/Honolulu Pacific/Johnston
|
||||
Link Pacific/Pohnpei Pacific/Ponape
|
||||
Link Pacific/Pago_Pago Pacific/Samoa
|
||||
|
||||
@@ -91,7 +91,6 @@
|
||||
# 0:00 GMT BST BDST Greenwich, British Summer
|
||||
# 0:00 GMT IST Greenwich, Irish Summer
|
||||
# 0:00 WET WEST WEMT Western Europe
|
||||
# 0:19:32.13 AMT* NST* Amsterdam, Netherlands Summer (1835-1937)
|
||||
# 1:00 BST British Standard (1968-1971)
|
||||
# 1:00 IST GMT Irish Standard (1968-) with winter DST
|
||||
# 1:00 CET CEST CEMT Central Europe
|
||||
@@ -845,7 +844,7 @@ Zone Europe/Andorra 0:06:04 - LMT 1901
|
||||
# Shanks & Pottenger give 02:00, the BEV 00:00. Go with the BEV,
|
||||
# and guess 02:00 for 1945-04-12.
|
||||
|
||||
# From Alois Triendl (2019-07-22):
|
||||
# From Alois Treindl (2019-07-22):
|
||||
# In 1946 the end of DST was on Monday, 7 October 1946, at 3:00 am.
|
||||
# Shanks had this right. Source: Die Weltpresse, 5. Oktober 1946, page 5.
|
||||
|
||||
@@ -1759,19 +1758,22 @@ Zone Atlantic/Reykjavik -1:28 - LMT 1908
|
||||
# advanced to sixty minutes later starting at hour two on 1944-04-02; ...
|
||||
# Starting at hour three on the date 1944-09-17 standard time will be resumed.
|
||||
#
|
||||
# From Alois Triendl (2019-07-02):
|
||||
# From Alois Treindl (2019-07-02):
|
||||
# I spent 6 Euros to buy two archive copies of Il Messaggero, a Roman paper,
|
||||
# for 1 and 2 April 1944. The edition of 2 April has this note: "Tonight at 2
|
||||
# am, put forward the clock by one hour. Remember that in the night between
|
||||
# today and Monday the 'ora legale' will come in force again." That makes it
|
||||
# clear that in Rome the change was on Monday, 3 April 1944 at 2 am.
|
||||
#
|
||||
# From Paul Eggert (2016-10-27):
|
||||
# From Paul Eggert (2021-10-05):
|
||||
# Go with INRiM for DST rules, except as corrected by Inglis for 1944
|
||||
# for the Kingdom of Italy. This is consistent with Renzo Baldini.
|
||||
# Model Rome's occupation by using C-Eur rules from 1943-09-10
|
||||
# to 1944-06-04; although Rome was an open city during this period, it
|
||||
# was effectively controlled by Germany.
|
||||
# was effectively controlled by Germany. Using C-Eur is consistent
|
||||
# with Treindl's comment about Rome in April 1944, as the "Rule Italy"
|
||||
# lines during German occupation do not affect Europe/Rome
|
||||
# (though they do affect Europe/Malta).
|
||||
#
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Italy 1916 only - Jun 3 24:00 1:00 S
|
||||
@@ -1823,6 +1825,10 @@ Zone Europe/Rome 0:49:56 - LMT 1866 Dec 12
|
||||
1:00 Italy CE%sT 1980
|
||||
1:00 EU CE%sT
|
||||
|
||||
# Kosovo
|
||||
# See Europe/Belgrade.
|
||||
|
||||
|
||||
Link Europe/Rome Europe/Vatican
|
||||
Link Europe/Rome Europe/San_Marino
|
||||
|
||||
@@ -2173,6 +2179,10 @@ Zone Europe/Monaco 0:29:32 - LMT 1892 Jun 1
|
||||
# The data entries before 1945 are taken from
|
||||
# https://www.staff.science.uu.nl/~gent0113/wettijd/wettijd.htm
|
||||
|
||||
# From Paul Eggert (2021-05-09):
|
||||
# I invented the abbreviations AMT for Amsterdam Mean Time and NST for
|
||||
# Netherlands Summer Time, used in the Netherlands from 1835 to 1937.
|
||||
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Neth 1916 only - May 1 0:00 1:00 NST # Netherlands Summer Time
|
||||
Rule Neth 1916 only - Oct 1 0:00 0 AMT # Amsterdam Mean Time
|
||||
@@ -2399,12 +2409,10 @@ 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 1946 only - Apr Sat>=1 23:00s 1:00 S
|
||||
Rule Port 1946 only - Oct Sat>=1 23:00s 0 -
|
||||
Rule Port 1947 1949 - Apr Sun>=1 2:00s 1:00 S
|
||||
Rule Port 1947 1949 - Oct Sun>=1 2:00s 0 -
|
||||
# Shanks & Pottenger say DST was observed in 1950; go with Whitman.
|
||||
# Whitman says DST was not observed in 1950; go with Shanks & Pottenger.
|
||||
# Whitman gives Oct lastSun for 1952 on; go with Shanks & Pottenger.
|
||||
Rule Port 1951 1965 - Apr Sun>=1 2:00s 1:00 S
|
||||
Rule Port 1951 1965 - Oct Sun>=1 2:00s 0 -
|
||||
Rule Port 1947 1965 - Apr Sun>=1 2:00s 1:00 S
|
||||
Rule Port 1947 1965 - Oct Sun>=1 2:00s 0 -
|
||||
Rule Port 1977 only - Mar 27 0:00s 1:00 S
|
||||
Rule Port 1977 only - Sep 25 0:00s 0 -
|
||||
Rule Port 1978 1979 - Apr Sun>=1 0:00s 1:00 S
|
||||
@@ -2641,7 +2649,7 @@ Zone Europe/Bucharest 1:44:24 - LMT 1891 Oct
|
||||
# Although Shanks lists 1945-01-01 as the date for transition from
|
||||
# +01/+02 to +02/+03, more likely this is a placeholder. Guess that
|
||||
# the transition occurred at 1945-04-10 00:00, which is about when
|
||||
# Königsberg surrendered to Soviet troops. (Thanks to Alois Triendl.)
|
||||
# Königsberg surrendered to Soviet troops. (Thanks to Alois Treindl.)
|
||||
|
||||
# From Paul Eggert (2016-03-18):
|
||||
# The 1989 transition is from USSR act No. 227 (1989-03-14).
|
||||
@@ -3706,6 +3714,9 @@ Zone Atlantic/Canary -1:01:36 - LMT 1922 Mar # Las Palmas de Gran C.
|
||||
#
|
||||
# Source: The newspaper "Dagens Nyheter", 1916-10-01, page 7 upper left.
|
||||
|
||||
# An extra-special abbreviation style is SET for Swedish Time (svensk
|
||||
# normaltid) 1879-1899, 3° west of the Stockholm Observatory.
|
||||
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Europe/Stockholm 1:12:12 - LMT 1879 Jan 1
|
||||
1:00:14 - SET 1900 Jan 1 # Swedish Time
|
||||
|
||||
@@ -95,11 +95,11 @@ Leap 2016 Dec 31 23:59:60 + S
|
||||
# Any additional leap seconds will come after this.
|
||||
# This Expires line is commented out for now,
|
||||
# so that pre-2020a zic implementations do not reject this file.
|
||||
#Expires 2021 Dec 28 00:00:00
|
||||
#Expires 2022 Jun 28 00:00:00
|
||||
|
||||
# POSIX timestamps for the data in this file:
|
||||
#updated 1467936000 (2016-07-08 00:00:00 UTC)
|
||||
#expires 1640649600 (2021-12-28 00:00:00 UTC)
|
||||
#expires 1656374400 (2022-06-28 00:00:00 UTC)
|
||||
|
||||
# Updated through IERS Bulletin C61
|
||||
# File expires on: 28 December 2021
|
||||
# Updated through IERS Bulletin C62
|
||||
# File expires on: 28 June 2022
|
||||
|
||||
@@ -752,7 +752,11 @@ Zone America/Adak 12:13:22 - LMT 1867 Oct 19 12:44:35
|
||||
-11:00 US B%sT 1983 Oct 30 2:00
|
||||
-10:00 US AH%sT 1983 Nov 30
|
||||
-10:00 US H%sT
|
||||
# The following switches don't quite make our 1970 cutoff.
|
||||
# The following switches don't make our 1970 cutoff.
|
||||
#
|
||||
# Kiska observed Tokyo date and time during Japanese occupation from
|
||||
# 1942-06-06 to 1943-07-29, and similarly for Attu from 1942-06-07 to
|
||||
# 1943-05-29 (all dates American). Both islands are now uninhabited.
|
||||
#
|
||||
# Shanks writes that part of southwest Alaska (e.g. Aniak)
|
||||
# switched from -11:00 to -10:00 on 1968-09-22 at 02:00,
|
||||
@@ -848,6 +852,8 @@ Zone America/Phoenix -7:28:18 - LMT 1883 Nov 18 11:31:42
|
||||
-7:00 - MST 1967
|
||||
-7:00 US M%sT 1968 Mar 21
|
||||
-7:00 - MST
|
||||
Link America/Phoenix America/Creston
|
||||
|
||||
# From Arthur David Olson (1988-02-13):
|
||||
# A writer from the Inter Tribal Council of Arizona, Inc.,
|
||||
# notes in private correspondence dated 1987-12-28 that "Presently, only the
|
||||
@@ -993,7 +999,7 @@ Zone America/Indiana/Vincennes -5:50:07 - LMT 1883 Nov 18 12:09:53
|
||||
-5:00 US E%sT
|
||||
#
|
||||
# Perry County, Indiana, switched from eastern to central time in April 2006.
|
||||
# From Alois Triendl (2019-07-09):
|
||||
# From Alois Treindl (2019-07-09):
|
||||
# The Indianapolis News, Friday 27 October 1967 states that Perry County
|
||||
# returned to CST. It went again to EST on 27 April 1969, as documented by the
|
||||
# Indianapolis star of Saturday 26 April.
|
||||
@@ -1616,24 +1622,7 @@ Zone America/Moncton -4:19:08 - LMT 1883 Dec 9
|
||||
# From Paul Eggert (2020-01-10):
|
||||
# See America/Toronto for most of Quebec, including Montreal.
|
||||
# See America/Halifax for the Îles de la Madeleine and the Listuguj reserve.
|
||||
#
|
||||
# Matthews and Vincent (1998) also write that Quebec east of the -63
|
||||
# meridian is supposed to observe AST, but residents as far east as
|
||||
# Natashquan use EST/EDT, and residents east of Natashquan use AST.
|
||||
# The Quebec department of justice writes in
|
||||
# "The situation in Minganie and Basse-Côte-Nord"
|
||||
# https://www.justice.gouv.qc.ca/en/department/ministre/functions-and-responsabilities/legal-time-in-quebec/the-situation-in-minganie-and-basse-cote-nord/
|
||||
# that the coastal strip from just east of Natashquan to Blanc-Sablon
|
||||
# observes Atlantic standard time all year round.
|
||||
# This common practice was codified into law as of 2007; see Legal Time Act,
|
||||
# CQLR c T-5.1 <http://legisquebec.gouv.qc.ca/en/ShowDoc/cs/T-5.1>.
|
||||
# For lack of better info, guess this practice began around 1970, contra to
|
||||
# Shanks & Pottenger who have this region observing AST/ADT.
|
||||
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone America/Blanc-Sablon -3:48:28 - LMT 1884
|
||||
-4:00 Canada A%sT 1970
|
||||
-4:00 - AST
|
||||
# See America/Puerto_Rico for east of Natashquan.
|
||||
|
||||
# Ontario
|
||||
|
||||
@@ -1672,54 +1661,6 @@ Zone America/Blanc-Sablon -3:48:28 - LMT 1884
|
||||
# time became a comic failure in Orillia. Toronto Star 2017-07-08.
|
||||
# https://www.thestar.com/news/insight/2017/07/08/bold-attempt-at-daylight-saving-time-became-a-comic-failure-in-orillia.html
|
||||
|
||||
# From Paul Eggert (1997-10-17):
|
||||
# Mark Brader writes that an article in the 1997-10-14 Toronto Star
|
||||
# says that Atikokan, Ontario currently does not observe DST,
|
||||
# but will vote on 11-10 whether to use EST/EDT.
|
||||
# He also writes that the Ontario Time Act (1990, Chapter T.9)
|
||||
# http://www.gov.on.ca/MBS/english/publications/statregs/conttext.html
|
||||
# says that Ontario east of 90W uses EST/EDT, and west of 90W uses CST/CDT.
|
||||
# Officially Atikokan is therefore on CST/CDT, and most likely this report
|
||||
# concerns a non-official time observed as a matter of local practice.
|
||||
#
|
||||
# From Paul Eggert (2000-10-02):
|
||||
# Matthews and Vincent (1998) write that Atikokan, Pickle Lake, and
|
||||
# New Osnaburgh observe CST all year, that Big Trout Lake observes
|
||||
# CST/CDT, and that Upsala and Shebandowan observe EST/EDT, all in
|
||||
# violation of the official Ontario rules.
|
||||
#
|
||||
# From Paul Eggert (2006-07-09):
|
||||
# Chris Walton (2006-07-06) mentioned an article by Stephanie MacLellan in the
|
||||
# 2005-07-21 Chronicle-Journal, which said:
|
||||
#
|
||||
# The clocks in Atikokan stay set on standard time year-round.
|
||||
# This means they spend about half the time on central time and
|
||||
# the other half on eastern time.
|
||||
#
|
||||
# For the most part, the system works, Mayor Dennis Brown said.
|
||||
#
|
||||
# "The majority of businesses in Atikokan deal more with Eastern
|
||||
# Canada, but there are some that deal with Western Canada," he
|
||||
# said. "I don't see any changes happening here."
|
||||
#
|
||||
# Walton also writes "Supposedly Pickle Lake and Mishkeegogamang
|
||||
# [New Osnaburgh] follow the same practice."
|
||||
|
||||
# From Garry McKinnon (2006-07-14) via Chris Walton:
|
||||
# I chatted with a member of my board who has an outstanding memory
|
||||
# and a long history in Atikokan (and in the telecom industry) and he
|
||||
# can say for certain that Atikokan has been practicing the current
|
||||
# time keeping since 1952, at least.
|
||||
|
||||
# From Paul Eggert (2006-07-17):
|
||||
# Shanks & Pottenger say that Atikokan has agreed with Rainy River
|
||||
# ever since standard time was introduced, but the information from
|
||||
# McKinnon sounds more authoritative. For now, assume that Atikokan
|
||||
# switched to EST immediately after WWII era daylight saving time
|
||||
# ended. This matches the old (less-populous) America/Coral_Harbour
|
||||
# entry since our cutoff date of 1970, so we can move
|
||||
# America/Coral_Harbour to the 'backward' file.
|
||||
|
||||
# From Mark Brader (2010-03-06):
|
||||
#
|
||||
# Currently the database has:
|
||||
@@ -1850,6 +1791,7 @@ Zone America/Toronto -5:17:32 - LMT 1895
|
||||
-5:00 Canada E%sT 1946
|
||||
-5:00 Toronto E%sT 1974
|
||||
-5:00 Canada E%sT
|
||||
Link America/Toronto America/Nassau
|
||||
Zone America/Thunder_Bay -5:57:00 - LMT 1895
|
||||
-6:00 - CST 1910
|
||||
-5:00 - EST 1942
|
||||
@@ -1865,11 +1807,7 @@ Zone America/Rainy_River -6:18:16 - LMT 1895
|
||||
-6:00 Canada C%sT 1940 Sep 29
|
||||
-6:00 1:00 CDT 1942 Feb 9 2:00s
|
||||
-6:00 Canada C%sT
|
||||
Zone America/Atikokan -6:06:28 - LMT 1895
|
||||
-6:00 Canada C%sT 1940 Sep 29
|
||||
-6:00 1:00 CDT 1942 Feb 9 2:00s
|
||||
-6:00 Canada C%sT 1945 Sep 30 2:00
|
||||
-5:00 - EST
|
||||
# For Atikokan see America/Panama.
|
||||
|
||||
|
||||
# Manitoba
|
||||
@@ -2021,7 +1959,7 @@ Zone America/Swift_Current -7:11:20 - LMT 1905 Sep
|
||||
|
||||
# Alberta
|
||||
|
||||
# From Alois Triendl (2019-07-19):
|
||||
# From Alois Treindl (2019-07-19):
|
||||
# There was no DST in Alberta in 1967... Calgary Herald, 29 April 1967.
|
||||
# 1969, no DST, from Edmonton Journal 18 April 1969
|
||||
#
|
||||
@@ -2060,60 +1998,6 @@ Zone America/Edmonton -7:33:52 - LMT 1906 Sep
|
||||
# Shanks & Pottenger write that since 1970 most of this region has
|
||||
# been like Vancouver.
|
||||
# Dawson Creek uses MST. Much of east BC is like Edmonton.
|
||||
# Matthews and Vincent (1998) write that Creston is like Dawson Creek.
|
||||
|
||||
# It seems though that (re: Creston) is not entirely correct:
|
||||
|
||||
# From Chris Walton (2011-12-01):
|
||||
# There are two areas within the Canadian province of British Columbia
|
||||
# that do not currently observe daylight saving:
|
||||
# a) The Creston Valley (includes the town of Creston and surrounding area)
|
||||
# b) The eastern half of the Peace River Regional District
|
||||
# (includes the cities of Dawson Creek and Fort St. John)
|
||||
|
||||
# Earlier this year I stumbled across a detailed article about the time
|
||||
# keeping history of Creston; it was written by Tammy Hardwick who is the
|
||||
# manager of the Creston & District Museum. The article was written in May 2009.
|
||||
# http://www.ilovecreston.com/?p=articles&t=spec&ar=260
|
||||
# According to the article, Creston has not changed its clocks since June 1918.
|
||||
# i.e. Creston has been stuck on UT-7 for 93 years.
|
||||
# Dawson Creek, on the other hand, changed its clocks as recently as April 1972.
|
||||
|
||||
# Unfortunately the exact date for the time change in June 1918 remains
|
||||
# unknown and will be difficult to ascertain. I e-mailed Tammy a few months
|
||||
# ago to ask if Sunday June 2 was a reasonable guess. She said it was just
|
||||
# as plausible as any other date (in June). She also said that after writing
|
||||
# the article she had discovered another time change in 1916; this is the
|
||||
# subject of another article which she wrote in October 2010.
|
||||
# http://www.creston.museum.bc.ca/index.php?module=comments&uop=view_comment&cm+id=56
|
||||
|
||||
# Here is a summary of the three clock change events in Creston's history:
|
||||
# 1. 1884 or 1885: adoption of Mountain Standard Time (GMT-7)
|
||||
# Exact date unknown
|
||||
# 2. Oct 1916: switch to Pacific Standard Time (GMT-8)
|
||||
# Exact date in October unknown; Sunday October 1 is a reasonable guess.
|
||||
# 3. June 1918: switch to Pacific Daylight Time (GMT-7)
|
||||
# Exact date in June unknown; Sunday June 2 is a reasonable guess.
|
||||
# note 1:
|
||||
# On Oct 27/1918 when daylight saving ended in the rest of Canada,
|
||||
# Creston did not change its clocks.
|
||||
# note 2:
|
||||
# During WWII when the Federal Government legislated a mandatory clock change,
|
||||
# Creston did not oblige.
|
||||
# note 3:
|
||||
# There is no guarantee that Creston will remain on Mountain Standard Time
|
||||
# (UTC-7) forever.
|
||||
# The subject was debated at least once this year by the town Council.
|
||||
# http://www.bclocalnews.com/kootenay_rockies/crestonvalleyadvance/news/116760809.html
|
||||
|
||||
# During a period WWII, summer time (Daylight saying) was mandatory in Canada.
|
||||
# In Creston, that was handled by shifting the area to PST (-8:00) then applying
|
||||
# summer time to cause the offset to be -7:00, the same as it had been before
|
||||
# the change. It can be argued that the timezone abbreviation during this
|
||||
# period should be PDT rather than MST, but that doesn't seem important enough
|
||||
# (to anyone) to further complicate the rules.
|
||||
|
||||
# The transition dates (and times) are guesses.
|
||||
|
||||
# From Matt Johnson (2015-09-21):
|
||||
# Fort Nelson, BC, Canada will cancel DST this year. So while previously they
|
||||
@@ -2130,7 +2014,7 @@ Zone America/Edmonton -7:33:52 - LMT 1906 Sep
|
||||
#
|
||||
# From Paul Eggert (2019-07-25):
|
||||
# Shanks says Fort Nelson did not observe DST in 1946, unlike Vancouver.
|
||||
# Alois Triendl confirmed this on 07-22, citing the 1946-04-27 Vancouver Daily
|
||||
# Alois Treindl confirmed this on 07-22, citing the 1946-04-27 Vancouver Daily
|
||||
# Province. He also cited the 1946-09-28 Victoria Daily Times, which said
|
||||
# that Vancouver, Victoria, etc. "change at midnight Saturday"; for now,
|
||||
# guess they meant 02:00 Sunday since 02:00 was common practice in Vancouver.
|
||||
@@ -2167,10 +2051,7 @@ Zone America/Fort_Nelson -8:10:47 - LMT 1884
|
||||
-8:00 Vanc P%sT 1987
|
||||
-8:00 Canada P%sT 2015 Mar 8 2:00
|
||||
-7:00 - MST
|
||||
Zone America/Creston -7:46:04 - LMT 1884
|
||||
-7:00 - MST 1916 Oct 1
|
||||
-8:00 - PST 1918 Jun 2
|
||||
-7:00 - MST
|
||||
# For Creston see America/Phoenix.
|
||||
|
||||
# Northwest Territories, Nunavut, Yukon
|
||||
|
||||
@@ -2952,64 +2833,61 @@ Zone America/Tijuana -7:48:04 - LMT 1922 Jan 1 0:11:56
|
||||
|
||||
# Anguilla
|
||||
# Antigua and Barbuda
|
||||
# See America/Port_of_Spain.
|
||||
# See America/Puerto_Rico.
|
||||
|
||||
# Bahamas
|
||||
#
|
||||
# For 1899 Milne gives -5:09:29.5; round that.
|
||||
#
|
||||
# From P Chan (2020-11-27, corrected on 2020-12-02):
|
||||
# There were two periods of DST observed in 1942-1945: 1942-05-01
|
||||
# midnight to 1944-12-31 midnight and 1945-02-01 to 1945-10-17 midnight.
|
||||
# "midnight" should mean 24:00 from the context.
|
||||
#
|
||||
# War Time Order 1942 [1942-05-01] and War Time (No. 2) Order 1942 [1942-09-29]
|
||||
# Appendix to the Statutes of 7 George VI. and the Year 1942. p 34, 43
|
||||
# https://books.google.com/books?id=5rlNAQAAIAAJ&pg=RA3-PA34
|
||||
# https://books.google.com/books?id=5rlNAQAAIAAJ&pg=RA3-PA43
|
||||
#
|
||||
# War Time Order 1943 [1943-03-31] and War Time Order 1944 [1943-12-29]
|
||||
# Appendix to the Statutes of 8 George VI. and the Year 1943. p 9-10, 28-29
|
||||
# https://books.google.com/books?id=5rlNAQAAIAAJ&pg=RA4-PA9
|
||||
# https://books.google.com/books?id=5rlNAQAAIAAJ&pg=RA4-PA28
|
||||
#
|
||||
# War Time Order 1945 [1945-01-31] and the Order which revoke War Time Order
|
||||
# 1945 [1945-10-16] Appendix to the Statutes of 9 George VI. and the Year
|
||||
# 1945. p 160, 247-248
|
||||
# https://books.google.com/books?id=5rlNAQAAIAAJ&pg=RA6-PA160
|
||||
# https://books.google.com/books?id=5rlNAQAAIAAJ&pg=RA6-PA247
|
||||
#
|
||||
# From Sue Williams (2006-12-07):
|
||||
# The Bahamas announced about a month ago that they plan to change their DST
|
||||
# rules to sync with the U.S. starting in 2007....
|
||||
# http://www.jonesbahamas.com/?c=45&a=10412
|
||||
# The Bahamas
|
||||
# See America/Toronto.
|
||||
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Bahamas 1942 only - May 1 24:00 1:00 W
|
||||
Rule Bahamas 1944 only - Dec 31 24:00 0 S
|
||||
Rule Bahamas 1945 only - Feb 1 0:00 1:00 W
|
||||
Rule Bahamas 1945 only - Aug 14 23:00u 1:00 P # Peace
|
||||
Rule Bahamas 1945 only - Oct 17 24:00 0 S
|
||||
Rule Bahamas 1964 1975 - Oct lastSun 2:00 0 S
|
||||
Rule Bahamas 1964 1975 - Apr lastSun 2:00 1:00 D
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone America/Nassau -5:09:30 - LMT 1912 Mar 2
|
||||
-5:00 Bahamas E%sT 1976
|
||||
-5:00 US E%sT
|
||||
|
||||
# Barbados
|
||||
|
||||
# For 1899 Milne gives -3:58:29.2; round that.
|
||||
|
||||
# From P Chan (2020-12-09 and 2020-12-11):
|
||||
# Standard time of GMT-4 was adopted in 1911.
|
||||
# Definition of Time Act, 1911 (1911-7) [1911-08-28]
|
||||
# 1912, Laws of Barbados (5 v.), OCLC Number: 919801291, Vol. 4, Image No. 522
|
||||
# 1944, Laws of Barbados (5 v.), OCLC Number: 84548697, Vol. 4, Image No. 122
|
||||
# http://llmc.com/browse.aspx?type=2&coll=85&div=297
|
||||
#
|
||||
# DST was observed in 1942-44.
|
||||
# Defence (Daylight Saving) Regulations, 1942, 1942-04-13
|
||||
# Defence (Daylight Saving) (Repeal) Regulations, 1942, 1942-08-22
|
||||
# Defence (Daylight Saving) Regulations, 1943, 1943-04-16
|
||||
# Defence (Daylight Saving) (Repeal) Regulations, 1943, 1943-09-01
|
||||
# Defence (Daylight Saving) Regulations, 1944, 1944-03-21
|
||||
# [Defence (Daylight Saving) (Amendment) Regulations 1944, 1944-03-28]
|
||||
# Defence (Daylight Saving) (Repeal) Regulations, 1944, 1944-08-30
|
||||
#
|
||||
# 1914-, Subsidiary Legis., Annual Vols. OCLC Number: 226290591
|
||||
# 1942: Image Nos. 527-528, 555-556
|
||||
# 1943: Image Nos. 178-179, 198
|
||||
# 1944: Image Nos. 113-115, 129
|
||||
# http://llmc.com/titledescfull.aspx?type=2&coll=85&div=297&set=98437
|
||||
#
|
||||
# From Tim Parenti (2021-02-20):
|
||||
# The transitions below are derived from P Chan's sources, except that the 1977
|
||||
# through 1980 transitions are from Shanks & Pottenger since we have no better
|
||||
# data there. Of particular note, the 1944 DST regulation only advanced the
|
||||
# time to "exactly three and a half hours later than Greenwich mean time", as
|
||||
# opposed to "three hours" in the 1942 and 1943 regulations.
|
||||
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Barb 1942 only - Apr 19 5:00u 1:00 D
|
||||
Rule Barb 1942 only - Aug 31 6:00u 0 S
|
||||
Rule Barb 1943 only - May 2 5:00u 1:00 D
|
||||
Rule Barb 1943 only - Sep 5 6:00u 0 S
|
||||
Rule Barb 1944 only - Apr 10 5:00u 0:30 -
|
||||
Rule Barb 1944 only - Sep 10 6:00u 0 S
|
||||
Rule Barb 1977 only - Jun 12 2:00 1:00 D
|
||||
Rule Barb 1977 1978 - Oct Sun>=1 2:00 0 S
|
||||
Rule Barb 1978 1980 - Apr Sun>=15 2:00 1:00 D
|
||||
Rule Barb 1979 only - Sep 30 2:00 0 S
|
||||
Rule Barb 1980 only - Sep 25 2:00 0 S
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone America/Barbados -3:58:29 - LMT 1924 # Bridgetown
|
||||
-3:58:29 - BMT 1932 # Bridgetown Mean Time
|
||||
Zone America/Barbados -3:58:29 - LMT 1911 Aug 28 # Bridgetown
|
||||
-4:00 Barb A%sT 1944
|
||||
-4:00 Barb AST/-0330 1945
|
||||
-4:00 Barb A%sT
|
||||
|
||||
# Belize
|
||||
@@ -3171,6 +3049,9 @@ Zone Atlantic/Bermuda -4:19:18 - LMT 1890 # Hamilton
|
||||
-4:00 Canada A%sT 1976
|
||||
-4:00 US A%sT
|
||||
|
||||
# Caribbean Netherlands
|
||||
# See America/Puerto_Rico.
|
||||
|
||||
# Cayman Is
|
||||
# See America/Panama.
|
||||
|
||||
@@ -3399,7 +3280,7 @@ Zone America/Havana -5:29:28 - LMT 1890
|
||||
-5:00 Cuba C%sT
|
||||
|
||||
# Dominica
|
||||
# See America/Port_of_Spain.
|
||||
# See America/Puerto_Rico.
|
||||
|
||||
# Dominican Republic
|
||||
|
||||
@@ -3451,7 +3332,7 @@ Zone America/El_Salvador -5:56:48 - LMT 1921 # San Salvador
|
||||
# Guadeloupe
|
||||
# St Barthélemy
|
||||
# St Martin (French part)
|
||||
# See America/Port_of_Spain.
|
||||
# See America/Puerto_Rico.
|
||||
|
||||
# Guatemala
|
||||
#
|
||||
@@ -3638,7 +3519,7 @@ Zone America/Martinique -4:04:20 - LMT 1890 # Fort-de-France
|
||||
-4:00 - AST
|
||||
|
||||
# Montserrat
|
||||
# See America/Port_of_Spain.
|
||||
# See America/Puerto_Rico.
|
||||
|
||||
# Nicaragua
|
||||
#
|
||||
@@ -3710,6 +3591,7 @@ Zone America/Managua -5:45:08 - LMT 1890
|
||||
Zone America/Panama -5:18:08 - LMT 1890
|
||||
-5:19:36 - CMT 1908 Apr 22 # Colón Mean Time
|
||||
-5:00 - EST
|
||||
Link America/Panama America/Atikokan
|
||||
Link America/Panama America/Cayman
|
||||
|
||||
# Puerto Rico
|
||||
@@ -3719,10 +3601,29 @@ Zone America/Puerto_Rico -4:24:25 - LMT 1899 Mar 28 12:00 # San Juan
|
||||
-4:00 - AST 1942 May 3
|
||||
-4:00 US A%sT 1946
|
||||
-4:00 - AST
|
||||
Link America/Puerto_Rico America/Anguilla
|
||||
Link America/Puerto_Rico America/Antigua
|
||||
Link America/Puerto_Rico America/Aruba
|
||||
Link America/Puerto_Rico America/Curacao
|
||||
Link America/Puerto_Rico America/Blanc-Sablon # Quebec (Lower North Shore)
|
||||
Link America/Puerto_Rico America/Dominica
|
||||
Link America/Puerto_Rico America/Grenada
|
||||
Link America/Puerto_Rico America/Guadeloupe
|
||||
Link America/Puerto_Rico America/Kralendijk # Caribbean Netherlands
|
||||
Link America/Puerto_Rico America/Lower_Princes # Sint Maarten
|
||||
Link America/Puerto_Rico America/Marigot # St Martin (French part)
|
||||
Link America/Puerto_Rico America/Montserrat
|
||||
Link America/Puerto_Rico America/Port_of_Spain # Trinidad & Tobago
|
||||
Link America/Puerto_Rico America/St_Barthelemy # St Barthélemy
|
||||
Link America/Puerto_Rico America/St_Kitts # St Kitts & Nevis
|
||||
Link America/Puerto_Rico America/St_Lucia
|
||||
Link America/Puerto_Rico America/St_Thomas # Virgin Islands (US)
|
||||
Link America/Puerto_Rico America/St_Vincent
|
||||
Link America/Puerto_Rico America/Tortola # Virgin Islands (UK)
|
||||
|
||||
# St Kitts-Nevis
|
||||
# St Lucia
|
||||
# See America/Port_of_Spain.
|
||||
# See America/Puerto_Rico.
|
||||
|
||||
# St Pierre and Miquelon
|
||||
# There are too many St Pierres elsewhere, so we'll use 'Miquelon'.
|
||||
@@ -3733,7 +3634,10 @@ Zone America/Miquelon -3:44:40 - LMT 1911 May 15 # St Pierre
|
||||
-3:00 Canada -03/-02
|
||||
|
||||
# St Vincent and the Grenadines
|
||||
# See America/Port_of_Spain.
|
||||
# See America/Puerto_Rico.
|
||||
|
||||
# Sint Maarten
|
||||
# See America/Puerto_Rico.
|
||||
|
||||
# Turks and Caicos
|
||||
#
|
||||
@@ -3804,8 +3708,8 @@ Zone America/Grand_Turk -4:44:32 - LMT 1890
|
||||
-5:00 US E%sT
|
||||
|
||||
# British Virgin Is
|
||||
# Virgin Is
|
||||
# See America/Port_of_Spain.
|
||||
# US Virgin Is
|
||||
# See America/Puerto_Rico.
|
||||
|
||||
|
||||
# Local Variables:
|
||||
|
||||
@@ -597,7 +597,7 @@ Zone America/Argentina/Ushuaia -4:33:12 - LMT 1894 Oct 31
|
||||
-3:00 - -03
|
||||
|
||||
# Aruba
|
||||
Link America/Curacao America/Aruba
|
||||
# See America/Puerto_Rico.
|
||||
|
||||
# Bolivia
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
@@ -1392,35 +1392,14 @@ Zone America/Bogota -4:56:16 - LMT 1884 Mar 13
|
||||
# no information; probably like America/Bogota
|
||||
|
||||
# Curaçao
|
||||
|
||||
# Milne gives 4:35:46.9 for Curaçao mean time; round to nearest.
|
||||
# See America/Puerto_Rico.
|
||||
#
|
||||
# From Paul Eggert (2006-03-22):
|
||||
# Shanks & Pottenger say that The Bottom and Philipsburg have been at
|
||||
# -4:00 since standard time was introduced on 1912-03-02; and that
|
||||
# Kralendijk and Rincon used Kralendijk Mean Time (-4:33:08) from
|
||||
# 1912-02-02 to 1965-01-01. The former is dubious, since S&P also say
|
||||
# Saba Island has been like Curaçao.
|
||||
# This all predates our 1970 cutoff, though.
|
||||
#
|
||||
# By July 2007 Curaçao and St Maarten are planned to become
|
||||
# associated states within the Netherlands, much like Aruba;
|
||||
# Bonaire, Saba and St Eustatius would become directly part of the
|
||||
# Netherlands as Kingdom Islands. This won't affect their time zones
|
||||
# though, as far as we know.
|
||||
#
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone America/Curacao -4:35:47 - LMT 1912 Feb 12 # Willemstad
|
||||
-4:30 - -0430 1965
|
||||
-4:00 - AST
|
||||
|
||||
# From Arthur David Olson (2011-06-15):
|
||||
# use links for places with new iso3166 codes.
|
||||
# The name "Lower Prince's Quarter" is both longer than fourteen characters
|
||||
# and contains an apostrophe; use "Lower_Princes" below.
|
||||
|
||||
Link America/Curacao America/Lower_Princes # Sint Maarten
|
||||
Link America/Curacao America/Kralendijk # Caribbean Netherlands
|
||||
# and contains an apostrophe; use "Lower_Princes"....
|
||||
# From Paul Eggert (2021-09-29):
|
||||
# These backward-compatibility links now are in the 'northamerica' file.
|
||||
|
||||
# Ecuador
|
||||
#
|
||||
@@ -1563,11 +1542,40 @@ Zone America/Cayenne -3:29:20 - LMT 1911 Jul
|
||||
-3:00 - -03
|
||||
|
||||
# Guyana
|
||||
|
||||
# From P Chan (2020-11-27):
|
||||
# https://books.google.com/books?id=5-5CAQAAMAAJ&pg=SA1-PA547
|
||||
# The Official Gazette of British Guiana. (New Series.) Vol. XL. July to
|
||||
# December, 1915, p 1547, lists as several notes:
|
||||
# "Local Mean Time 3 hours 52 mins. 39 secs. slow of Greenwich Mean Time
|
||||
# (Georgetown.) From 1st August, 1911, British Guiana Standard Mean Time 4
|
||||
# hours slow of Greenwich Mean Time, by notice in Official Gazette on 1st July,
|
||||
# 1911. From 1st March, 1915, British Guiana Standard Mean Time 3 hours 45
|
||||
# mins. 0 secs. slow of Greenwich Mean Time, by notice in Official Gazette on
|
||||
# 23rd January, 1915."
|
||||
#
|
||||
# https://parliament.gov.gy/documents/acts/10923-act_no._27_of_1975_-_interpretation_and_general_clauses_(amendment)_act_1975.pdf
|
||||
# Interpretation and general clauses (Amendment) Act 1975 (Act No. 27 of 1975)
|
||||
# [dated 1975-07-31]
|
||||
# "This Act...shall come into operation on 1st August, 1975."
|
||||
# "...where any expression of time occurs...the time referred to shall signify
|
||||
# the standard time of Guyana which shall be three hours behind Greenwich Mean
|
||||
# Time."
|
||||
#
|
||||
# Circular No. 10/1992 dated 1992-03-20
|
||||
# https://dps.gov.gy/wp-content/uploads/2018/12/1992-03-20-Circular-010.pdf
|
||||
# "...cabinet has decided that with effect from Sunday 29th March, 1992, Guyana
|
||||
# Standard Time would be re-established at 01:00 hours by adjusting the hands
|
||||
# of the clock back to 24:00 hours."
|
||||
# Legislated in the Interpretation and general clauses (Amendment) Act 1992
|
||||
# (Act No. 6 of 1992) [passed 1992-03-27, published 1992-04-18]
|
||||
# https://parliament.gov.gy/documents/acts/5885-6_of_1992_interpretation_and_general_clauses_(amendment)_act_1992.pdf
|
||||
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone America/Guyana -3:52:40 - LMT 1915 Mar # Georgetown
|
||||
-3:45 - -0345 1975 Jul 31
|
||||
-3:00 - -03 1991
|
||||
# IATA SSIM (1996-06) says -4:00. Assume a 1991 switch.
|
||||
Zone America/Guyana -3:52:39 - LMT 1911 Aug 1 # Georgetown
|
||||
-4:00 - -04 1915 Mar 1
|
||||
-3:45 - -0345 1975 Aug 1
|
||||
-3:00 - -03 1992 Mar 29 1:00
|
||||
-4:00 - -04
|
||||
|
||||
# Paraguay
|
||||
@@ -1708,24 +1716,7 @@ Zone America/Paramaribo -3:40:40 - LMT 1911
|
||||
-3:00 - -03
|
||||
|
||||
# Trinidad and Tobago
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone America/Port_of_Spain -4:06:04 - LMT 1912 Mar 2
|
||||
-4:00 - AST
|
||||
|
||||
# These all agree with Trinidad and Tobago since 1970.
|
||||
Link America/Port_of_Spain America/Anguilla
|
||||
Link America/Port_of_Spain America/Antigua
|
||||
Link America/Port_of_Spain America/Dominica
|
||||
Link America/Port_of_Spain America/Grenada
|
||||
Link America/Port_of_Spain America/Guadeloupe
|
||||
Link America/Port_of_Spain America/Marigot # St Martin (French part)
|
||||
Link America/Port_of_Spain America/Montserrat
|
||||
Link America/Port_of_Spain America/St_Barthelemy # St Barthélemy
|
||||
Link America/Port_of_Spain America/St_Kitts # St Kitts & Nevis
|
||||
Link America/Port_of_Spain America/St_Lucia
|
||||
Link America/Port_of_Spain America/St_Thomas # Virgin Islands (US)
|
||||
Link America/Port_of_Spain America/St_Vincent
|
||||
Link America/Port_of_Spain America/Tortola # Virgin Islands (UK)
|
||||
# See America/Puerto_Rico.
|
||||
|
||||
# Uruguay
|
||||
# From Paul Eggert (1993-11-18):
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
# This file is in the public domain, so clarified as of
|
||||
# 2009-05-17 by Arthur David Olson.
|
||||
#
|
||||
# From Paul Eggert (2018-06-27):
|
||||
# From Paul Eggert (2021-09-20):
|
||||
# This file is intended as a backward-compatibility aid for older programs.
|
||||
# New programs should use zone1970.tab. This file is like zone1970.tab (see
|
||||
# zone1970.tab's comments), but with the following additional restrictions:
|
||||
@@ -39,6 +39,9 @@
|
||||
# clocks have agreed since 1970; this is a narrower definition than
|
||||
# that of zone1970.tab.
|
||||
#
|
||||
# Unlike zone1970.tab, a row's third column can be a Link from
|
||||
# 'backward' instead of a Zone.
|
||||
#
|
||||
# This table is intended as an aid for users, to help them select timezones
|
||||
# appropriate for their practical needs. It is not intended to take or
|
||||
# endorse any position on legal or territorial claims.
|
||||
@@ -251,7 +254,7 @@ KE -0117+03649 Africa/Nairobi
|
||||
KG +4254+07436 Asia/Bishkek
|
||||
KH +1133+10455 Asia/Phnom_Penh
|
||||
KI +0125+17300 Pacific/Tarawa Gilbert Islands
|
||||
KI -0308-17105 Pacific/Enderbury Phoenix Islands
|
||||
KI -0247-17143 Pacific/Kanton Phoenix Islands
|
||||
KI +0152-15720 Pacific/Kiritimati Line Islands
|
||||
KM -1141+04316 Indian/Comoro
|
||||
KN +1718-06243 America/St_Kitts
|
||||
@@ -414,7 +417,7 @@ TK -0922-17114 Pacific/Fakaofo
|
||||
TL -0833+12535 Asia/Dili
|
||||
TM +3757+05823 Asia/Ashgabat
|
||||
TN +3648+01011 Africa/Tunis
|
||||
TO -2110-17510 Pacific/Tongatapu
|
||||
TO -210800-1751200 Pacific/Tongatapu
|
||||
TR +4101+02858 Europe/Istanbul
|
||||
TT +1039-06131 America/Port_of_Spain
|
||||
TV -0831+17913 Pacific/Funafuti
|
||||
|
||||
141
make/devkit/createMacosxDevkit.sh
Normal file
141
make/devkit/createMacosxDevkit.sh
Normal file
@@ -0,0 +1,141 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Copyright (c) 2015, 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 script copies parts of an Xcode installation into a devkit suitable
|
||||
# for building OpenJDK and OracleJDK. The installation Xcode_X.X.xip needs
|
||||
# to be either installed or extracted using for example Archive Utility.
|
||||
# The easiest way to accomplish this is to right click the file in Finder
|
||||
# and choose "Open With -> Archive Utility", or possible typing
|
||||
# "open Xcode_9.2.xip" in a terminal.
|
||||
# erik.joelsson@oracle.com
|
||||
|
||||
USAGE="$0 <Xcode.app>"
|
||||
|
||||
if [ "$1" = "" ]; then
|
||||
echo $USAGE
|
||||
exit 1
|
||||
fi
|
||||
|
||||
XCODE_APP="$1"
|
||||
XCODE_APP_DIR_NAME="${XCODE_APP##*/}"
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname $0)" > /dev/null && pwd)"
|
||||
BUILD_DIR="${SCRIPT_DIR}/../../build/devkit"
|
||||
|
||||
# Find the version of Xcode
|
||||
XCODE_VERSION="$($XCODE_APP/Contents/Developer/usr/bin/xcodebuild -version \
|
||||
| awk '/Xcode/ { print $2 }' )"
|
||||
SDK_VERSION="$(ls $XCODE_APP/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs \
|
||||
| grep [0-9] | sort -r | head -n1 | sed 's/\.sdk//')"
|
||||
|
||||
DEVKIT_ROOT="${BUILD_DIR}/Xcode${XCODE_VERSION}-${SDK_VERSION}"
|
||||
DEVKIT_BUNDLE="${DEVKIT_ROOT}.tar.gz"
|
||||
|
||||
echo "Xcode version: $XCODE_VERSION"
|
||||
echo "SDK version: $SDK_VERSION"
|
||||
echo "Creating devkit in $DEVKIT_ROOT"
|
||||
|
||||
mkdir -p $DEVKIT_ROOT
|
||||
|
||||
################################################################################
|
||||
# Copy the relevant parts of Xcode.app, removing things that are both big and
|
||||
# unecessary for our purposes, without building an impossibly long exclude list.
|
||||
EXCLUDE_DIRS=" \
|
||||
Contents/_CodeSignature \
|
||||
Contents/Applications \
|
||||
Contents/Resources \
|
||||
Contents/Library \
|
||||
Contents/XPCServices \
|
||||
Contents/OtherFrameworks \
|
||||
Contents/Developer/Documentation \
|
||||
Contents/Developer/usr/share \
|
||||
Contents/Developer/usr/libexec/git-core \
|
||||
Contents/Developer/usr/bin/git* \
|
||||
Contents/Developer/usr/bin/svn* \
|
||||
Contents/Developer/usr/lib/libgit* \
|
||||
Contents/Developer/usr/lib/libsvn* \
|
||||
Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/share/man \
|
||||
Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/${SDK_VERSION}.sdk/usr/share/man \
|
||||
Contents/Developer/Platforms/MacOSX.platform/Developer/usr/share/man \
|
||||
Contents/Developer/Platforms/MacOSX.platform/usr \
|
||||
Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/share/man \
|
||||
Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift* \
|
||||
Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift* \
|
||||
Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/sourcekitd.framework \
|
||||
Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/libexec/swift* \
|
||||
Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/swift* \
|
||||
Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/arc \
|
||||
Platforms/AppleTVSimulator.platform \
|
||||
Platforms/iPhoneSimulator.platform \
|
||||
Platforms/WatchSimulator.platform \
|
||||
Contents/SharedFrameworks/LLDB.framework \
|
||||
Contents/SharedFrameworks/ModelIO.framework \
|
||||
Contents/SharedFrameworks/XCSUI.framework \
|
||||
Contents/SharedFrameworks/SceneKit.framework \
|
||||
Contents/SharedFrameworks/XCBuild.framework \
|
||||
Contents/SharedFrameworks/GPUTools*.framework \
|
||||
Contents/SharedFrameworks/DNTDocumentationSupport.framework/Versions/A/Resources/external \
|
||||
$(cd $XCODE_APP && ls -d Contents/Developer/Platforms/* \
|
||||
| grep -v MacOSX.platform | grep -v WatchSimulator.platform) \
|
||||
"
|
||||
|
||||
for ex in $EXCLUDE_DIRS; do
|
||||
EXCLUDE_ARGS+="--exclude=$ex "
|
||||
done
|
||||
|
||||
echo "Copying Xcode.app..."
|
||||
echo rsync -rlH $INCLUDE_ARGS $EXCLUDE_ARGS "$XCODE_APP/." $DEVKIT_ROOT/Xcode.app/
|
||||
rsync -rlH $INCLUDE_ARGS $EXCLUDE_ARGS "$XCODE_APP/." $DEVKIT_ROOT/Xcode.app/
|
||||
|
||||
################################################################################
|
||||
|
||||
echo-info() {
|
||||
echo "$1" >> $DEVKIT_ROOT/devkit.info
|
||||
}
|
||||
|
||||
echo "Generating devkit.info..."
|
||||
rm -f $DEVKIT_ROOT/devkit.info
|
||||
echo-info "# This file describes to configure how to interpret the contents of this devkit"
|
||||
echo-info "DEVKIT_NAME=\"Xcode $XCODE_VERSION (devkit)\""
|
||||
echo-info "DEVKIT_TOOLCHAIN_PATH=\"\$DEVKIT_ROOT/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin:\$DEVKIT_ROOT/Xcode.app/Contents/Developer/usr/bin\""
|
||||
echo-info "DEVKIT_SYSROOT=\"\$DEVKIT_ROOT/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/$SDK_VERSION.sdk\""
|
||||
echo-info "DEVKIT_EXTRA_PATH=\"\$DEVKIT_TOOLCHAIN_PATH\""
|
||||
|
||||
################################################################################
|
||||
# Copy this script
|
||||
|
||||
echo "Copying this script..."
|
||||
cp $0 $DEVKIT_ROOT/
|
||||
|
||||
################################################################################
|
||||
# Create bundle
|
||||
|
||||
echo "Creating bundle..."
|
||||
GZIP=$(command -v pigz)
|
||||
if [ -z "$GZIP" ]; then
|
||||
GZIP="gzip"
|
||||
fi
|
||||
(cd $DEVKIT_ROOT && tar c - . | $GZIP - > "$DEVKIT_BUNDLE")
|
||||
@@ -1,161 +0,0 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License version 2 only, as
|
||||
# published by the Free Software Foundation. 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 script copies part of an Xcode installer into a devkit suitable
|
||||
# for building OpenJDK and OracleJDK. The installation .dmg files for Xcode
|
||||
# and the aux tools need to be available.
|
||||
# erik.joelsson@oracle.com
|
||||
|
||||
USAGE="$0 <Xcode.dmg> <XQuartz.dmg> <gnu make binary> [<auxtools.dmg>]"
|
||||
|
||||
if [ "$1" = "" ] || [ "$2" = "" ]; then
|
||||
echo $USAGE
|
||||
exit 1
|
||||
fi
|
||||
|
||||
XCODE_DMG="$1"
|
||||
XQUARTZ_DMG="$2"
|
||||
GNU_MAKE="$3"
|
||||
AUXTOOLS_DMG="$4"
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname $0)" > /dev/null && pwd)"
|
||||
BUILD_DIR="${SCRIPT_DIR}/../../build/devkit"
|
||||
|
||||
# Mount XCODE_DMG
|
||||
if [ -e "/Volumes/Xcode" ]; then
|
||||
hdiutil detach /Volumes/Xcode
|
||||
fi
|
||||
hdiutil attach $XCODE_DMG
|
||||
|
||||
# Find the version of Xcode
|
||||
XCODE_VERSION="$(/Volumes/Xcode/Xcode.app/Contents/Developer/usr/bin/xcodebuild -version \
|
||||
| awk '/Xcode/ { print $2 }' )"
|
||||
SDK_VERSION="MacOSX10.9"
|
||||
if [ ! -e "/Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/${SDK_VERSION}.sdk" ]; then
|
||||
echo "Expected SDK version not found: ${SDK_VERSION}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
DEVKIT_ROOT="${BUILD_DIR}/Xcode${XCODE_VERSION}-${SDK_VERSION}"
|
||||
DEVKIT_BUNDLE="${DEVKIT_ROOT}.tar.gz"
|
||||
|
||||
echo "Xcode version: $XCODE_VERSION"
|
||||
echo "Creating devkit in $DEVKIT_ROOT"
|
||||
|
||||
################################################################################
|
||||
# Copy files to root
|
||||
mkdir -p $DEVKIT_ROOT
|
||||
if [ ! -d $DEVKIT_ROOT/Xcode.app ]; then
|
||||
echo "Copying Xcode.app..."
|
||||
cp -RH "/Volumes/Xcode/Xcode.app" $DEVKIT_ROOT/
|
||||
fi
|
||||
# Trim out some seemingly unneeded parts to save space.
|
||||
rm -rf $DEVKIT_ROOT/Xcode.app/Contents/Applications
|
||||
rm -rf $DEVKIT_ROOT/Xcode.app/Contents/Developer/Platforms/iPhone*
|
||||
rm -rf $DEVKIT_ROOT/Xcode.app/Contents/Developer/Documentation
|
||||
rm -rf $DEVKIT_ROOT/Xcode.app/Contents/Developer/usr/share/man
|
||||
( cd $DEVKIT_ROOT/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs \
|
||||
&& rm -rf `ls | grep -v ${SDK_VERSION}` )
|
||||
rm -rf $DEVKIT_ROOT/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/${SDK_VERSION}.sdk/usr/share/man
|
||||
|
||||
hdiutil detach /Volumes/Xcode
|
||||
|
||||
################################################################################
|
||||
# Copy Freetype into sysroot
|
||||
if [ -e "/Volumes/XQuartz-*" ]; then
|
||||
hdiutil detach /Volumes/XQuartz-*
|
||||
fi
|
||||
hdiutil attach $XQUARTZ_DMG
|
||||
|
||||
echo "Copying freetype..."
|
||||
rm -rf /tmp/XQuartz
|
||||
pkgutil --expand /Volumes/XQuartz-*/XQuartz.pkg /tmp/XQuartz/
|
||||
rm -rf /tmp/x11
|
||||
mkdir /tmp/x11
|
||||
cd /tmp/x11
|
||||
cat /tmp/XQuartz/x11.pkg/Payload | gunzip -dc | cpio -i
|
||||
|
||||
mkdir -p $DEVKIT_ROOT/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/X11/include/
|
||||
mkdir -p $DEVKIT_ROOT/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/X11/lib/
|
||||
cp -RH opt/X11/include/freetype2 \
|
||||
$DEVKIT_ROOT/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/X11/include/
|
||||
cp -RH opt/X11/include/ft2build.h \
|
||||
$DEVKIT_ROOT/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/X11/include/
|
||||
cp -RH opt/X11/lib/libfreetype.* \
|
||||
$DEVKIT_ROOT/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/X11/lib/
|
||||
|
||||
cd -
|
||||
|
||||
hdiutil detach /Volumes/XQuartz-*
|
||||
|
||||
################################################################################
|
||||
# Copy gnu make
|
||||
mkdir -p $DEVKIT_ROOT/bin
|
||||
cp $GNU_MAKE $DEVKIT_ROOT/bin
|
||||
|
||||
################################################################################
|
||||
# Optionally copy PackageMaker
|
||||
|
||||
if [ -e "$AUXTOOLS_DMG" ]; then
|
||||
if [ -e "/Volumes/Auxiliary Tools" ]; then
|
||||
hdiutil detach "/Volumes/Auxiliary Tools"
|
||||
fi
|
||||
hdiutil attach $AUXTOOLS_DMG
|
||||
|
||||
echo "Copying PackageMaker.app..."
|
||||
cp -RH "/Volumes/Auxiliary Tools/PackageMaker.app" $DEVKIT_ROOT/
|
||||
|
||||
hdiutil detach "/Volumes/Auxiliary Tools"
|
||||
fi
|
||||
|
||||
################################################################################
|
||||
# Generate devkit.info
|
||||
|
||||
echo-info() {
|
||||
echo "$1" >> $DEVKIT_ROOT/devkit.info
|
||||
}
|
||||
|
||||
echo "Generating devkit.info..."
|
||||
rm -f $DEVKIT_ROOT/devkit.info
|
||||
echo-info "# This file describes to configure how to interpret the contents of this devkit"
|
||||
echo-info "# The parameters used to create this devkit were:"
|
||||
echo-info "# $*"
|
||||
echo-info "DEVKIT_NAME=\"Xcode $XCODE_VERSION (devkit)\""
|
||||
echo-info "DEVKIT_TOOLCHAIN_PATH=\"\$DEVKIT_ROOT/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin:\$DEVKIT_ROOT/Xcode.app/Contents/Developer/usr/bin\""
|
||||
echo-info "DEVKIT_SYSROOT=\"\$DEVKIT_ROOT/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk\""
|
||||
echo-info "DEVKIT_EXTRA_PATH=\"\$DEVKIT_ROOT/bin:\$DEVKIT_ROOT/PackageMaker.app/Contents/MacOS:\$DEVKIT_TOOLCHAIN_PATH\""
|
||||
|
||||
################################################################################
|
||||
# Copy this script
|
||||
|
||||
echo "Copying this script..."
|
||||
cp $0 $DEVKIT_ROOT/
|
||||
|
||||
################################################################################
|
||||
# Create bundle
|
||||
|
||||
echo "Creating bundle..."
|
||||
(cd $DEVKIT_ROOT && tar c - . | gzip - > "$DEVKIT_BUNDLE")
|
||||
@@ -1,146 +0,0 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License version 2 only, as
|
||||
# published by the Free Software Foundation. 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 script copies parts of an Xcode installation into a devkit suitable
|
||||
# for building OpenJDK and OracleJDK. The installation Xcode_X.X.xip needs
|
||||
# to be either installed or extracted using for example Archive Utility.
|
||||
# The easiest way to accomplish this is to right click the file in Finder
|
||||
# and choose "Open With -> Archive Utility", or possible typing
|
||||
# "open Xcode_9.2.xip" in a terminal.
|
||||
# erik.joelsson@oracle.com
|
||||
|
||||
USAGE="$0 <Xcode.app>"
|
||||
|
||||
if [ "$1" = "" ]; then
|
||||
echo $USAGE
|
||||
exit 1
|
||||
fi
|
||||
|
||||
XCODE_APP="$1"
|
||||
XCODE_APP_DIR_NAME="${XCODE_APP##*/}"
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname $0)" > /dev/null && pwd)"
|
||||
BUILD_DIR="${SCRIPT_DIR}/../../build/devkit"
|
||||
|
||||
# Find the version of Xcode
|
||||
XCODE_VERSION="$($XCODE_APP/Contents/Developer/usr/bin/xcodebuild -version \
|
||||
| awk '/Xcode/ { print $2 }' )"
|
||||
SDK_VERSION="MacOSX10.13"
|
||||
if [ ! -e "$XCODE_APP/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/${SDK_VERSION}.sdk" ]; then
|
||||
echo "Expected SDK version not found: ${SDK_VERSION}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
DEVKIT_ROOT="${BUILD_DIR}/Xcode${XCODE_VERSION}-${SDK_VERSION}"
|
||||
DEVKIT_BUNDLE="${DEVKIT_ROOT}.tar.gz"
|
||||
|
||||
echo "Xcode version: $XCODE_VERSION"
|
||||
echo "Creating devkit in $DEVKIT_ROOT"
|
||||
|
||||
mkdir -p $DEVKIT_ROOT
|
||||
|
||||
################################################################################
|
||||
# Copy the relevant parts of Xcode.app, removing things that are both big and
|
||||
# unecessary for our purposes, without building an impossibly long exclude list.
|
||||
#
|
||||
# Not including WatchSimulator.platform makes ibtool crashes in some situations.
|
||||
# It doesn't seem to matter which extra platform is included, but that is the
|
||||
# smallest one.
|
||||
|
||||
EXCLUDE_DIRS=" \
|
||||
Contents/_CodeSignature \
|
||||
$XCODE_APP_DIR_NAME/Contents/Applications \
|
||||
$XCODE_APP_DIR_NAME/Contents/Resources \
|
||||
$XCODE_APP_DIR_NAME/Contents/Library \
|
||||
$XCODE_APP_DIR_NAME/Contents/XPCServices \
|
||||
$XCODE_APP_DIR_NAME/Contents/OtherFrameworks \
|
||||
$XCODE_APP_DIR_NAME/Contents/Developer/Documentation \
|
||||
$XCODE_APP_DIR_NAME/Contents/Developer/usr/share \
|
||||
$XCODE_APP_DIR_NAME/Contents/Developer/usr/libexec/git-core \
|
||||
$XCODE_APP_DIR_NAME/Contents/Developer/usr/bin/git* \
|
||||
$XCODE_APP_DIR_NAME/Contents/Developer/usr/bin/svn* \
|
||||
$XCODE_APP_DIR_NAME/Contents/Developer/usr/lib/libgit* \
|
||||
$XCODE_APP_DIR_NAME/Contents/Developer/usr/lib/libsvn* \
|
||||
$XCODE_APP_DIR_NAME/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/share/man \
|
||||
$XCODE_APP_DIR_NAME/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/${SDK_VERSION}.sdk/usr/share/man \
|
||||
$XCODE_APP_DIR_NAME/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/share/man \
|
||||
$XCODE_APP_DIR_NAME/Contents/Developer/Platforms/MacOSX.platform/usr \
|
||||
$XCODE_APP_DIR_NAME/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/share/man \
|
||||
$XCODE_APP_DIR_NAME/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift* \
|
||||
$XCODE_APP_DIR_NAME/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift* \
|
||||
$XCODE_APP_DIR_NAME/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/sourcekitd.framework \
|
||||
$XCODE_APP_DIR_NAME/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/libexec/swift* \
|
||||
$XCODE_APP_DIR_NAME/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/swift* \
|
||||
$XCODE_APP_DIR_NAME/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/arc \
|
||||
Platforms/AppleTVSimulator.platform \
|
||||
Platforms/iPhoneSimulator.platform \
|
||||
$XCODE_APP_DIR_NAME/Contents/SharedFrameworks/LLDB.framework \
|
||||
$XCODE_APP_DIR_NAME/Contents/SharedFrameworks/ModelIO.framework \
|
||||
$XCODE_APP_DIR_NAME/Contents/SharedFrameworks/XCSUI.framework \
|
||||
$XCODE_APP_DIR_NAME/Contents/SharedFrameworks/SceneKit.framework \
|
||||
$XCODE_APP_DIR_NAME/Contents/SharedFrameworks/XCBuild.framework \
|
||||
$XCODE_APP_DIR_NAME/Contents/SharedFrameworks/GPUTools.framework \
|
||||
$(cd $XCODE_APP/.. && ls -d $XCODE_APP_DIR_NAME/Contents/Developer/Platforms/* \
|
||||
| grep -v MacOSX.platform | grep -v WatchSimulator.platform) \
|
||||
"
|
||||
|
||||
for ex in $EXCLUDE_DIRS; do
|
||||
EXCLUDE_ARGS+="--exclude=$ex "
|
||||
done
|
||||
|
||||
echo "Copying Xcode.app..."
|
||||
echo rsync -rlH $INCLUDE_ARGS $EXCLUDE_ARGS "$XCODE_APP" $DEVKIT_ROOT/
|
||||
rsync -rlH $INCLUDE_ARGS $EXCLUDE_ARGS "$XCODE_APP" $DEVKIT_ROOT/
|
||||
|
||||
################################################################################
|
||||
|
||||
echo-info() {
|
||||
echo "$1" >> $DEVKIT_ROOT/devkit.info
|
||||
}
|
||||
|
||||
echo "Generating devkit.info..."
|
||||
rm -f $DEVKIT_ROOT/devkit.info
|
||||
echo-info "# This file describes to configure how to interpret the contents of this devkit"
|
||||
echo-info "DEVKIT_NAME=\"Xcode $XCODE_VERSION (devkit)\""
|
||||
echo-info "DEVKIT_TOOLCHAIN_PATH=\"\$DEVKIT_ROOT/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin:\$DEVKIT_ROOT/Xcode.app/Contents/Developer/usr/bin\""
|
||||
echo-info "DEVKIT_SYSROOT=\"\$DEVKIT_ROOT/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/$SDK_VERSION.sdk\""
|
||||
echo-info "DEVKIT_EXTRA_PATH=\"\$DEVKIT_TOOLCHAIN_PATH\""
|
||||
|
||||
################################################################################
|
||||
# Copy this script
|
||||
|
||||
echo "Copying this script..."
|
||||
cp $0 $DEVKIT_ROOT/
|
||||
|
||||
################################################################################
|
||||
# Create bundle
|
||||
|
||||
echo "Creating bundle..."
|
||||
GZIP=$(command -v pigz)
|
||||
if [ -z "$GZIP" ]; then
|
||||
GZIP="gzip"
|
||||
fi
|
||||
(cd $DEVKIT_ROOT && tar c - . | $GZIP - > "$DEVKIT_BUNDLE")
|
||||
@@ -89,19 +89,23 @@ if [ ! -d $DEVKIT_ROOT/VC ]; then
|
||||
REDIST_SUBDIR="VC/Redist/MSVC/14.12.25810"
|
||||
echo "Copying VC..."
|
||||
mkdir -p $DEVKIT_ROOT/VC/bin
|
||||
cp -r "$VS_INSTALL_DIR/${VC_SUBDIR}/bin/Hostx64/arm64" $DEVKIT_ROOT/VC/bin/
|
||||
cp -r "$VS_INSTALL_DIR/${VC_SUBDIR}/bin/Hostx64/x64" $DEVKIT_ROOT/VC/bin/
|
||||
cp -r "$VS_INSTALL_DIR/${VC_SUBDIR}/bin/Hostx86/x86" $DEVKIT_ROOT/VC/bin/
|
||||
mkdir -p $DEVKIT_ROOT/VC/lib
|
||||
cp -r "$VS_INSTALL_DIR/${VC_SUBDIR}/lib/arm64" $DEVKIT_ROOT/VC/lib/
|
||||
cp -r "$VS_INSTALL_DIR/${VC_SUBDIR}/lib/x64" $DEVKIT_ROOT/VC/lib/
|
||||
cp -r "$VS_INSTALL_DIR/${VC_SUBDIR}/lib/x86" $DEVKIT_ROOT/VC/lib/
|
||||
cp -r "$VS_INSTALL_DIR/${VC_SUBDIR}/include" $DEVKIT_ROOT/VC/
|
||||
mkdir -p $DEVKIT_ROOT/VC/atlmfc/lib
|
||||
cp -r "$VS_INSTALL_DIR/${VC_SUBDIR}/atlmfc/lib/arm64" $DEVKIT_ROOT/VC/atlmfc/lib/
|
||||
cp -r "$VS_INSTALL_DIR/${VC_SUBDIR}/atlmfc/lib/x64" $DEVKIT_ROOT/VC/atlmfc/lib/
|
||||
cp -r "$VS_INSTALL_DIR/${VC_SUBDIR}/atlmfc/lib/x86" $DEVKIT_ROOT/VC/atlmfc/lib/
|
||||
cp -r "$VS_INSTALL_DIR/${VC_SUBDIR}/atlmfc/include" $DEVKIT_ROOT/VC/atlmfc/
|
||||
mkdir -p $DEVKIT_ROOT/VC/Auxiliary
|
||||
cp -r "$VS_INSTALL_DIR/VC/Auxiliary/Build" $DEVKIT_ROOT/VC/Auxiliary/
|
||||
mkdir -p $DEVKIT_ROOT/VC/redist
|
||||
cp -r "$VS_INSTALL_DIR/$REDIST_SUBDIR/arm64" $DEVKIT_ROOT/VC/redist/
|
||||
cp -r "$VS_INSTALL_DIR/$REDIST_SUBDIR/x64" $DEVKIT_ROOT/VC/redist/
|
||||
cp -r "$VS_INSTALL_DIR/$REDIST_SUBDIR/x86" $DEVKIT_ROOT/VC/redist/
|
||||
|
||||
@@ -111,6 +115,8 @@ if [ ! -d $DEVKIT_ROOT/VC ]; then
|
||||
cp $DEVKIT_ROOT/VC/redist/x86/$MSVCP_DLL $DEVKIT_ROOT/VC/bin/x86
|
||||
cp $DEVKIT_ROOT/VC/redist/x64/$MSVCR_DLL $DEVKIT_ROOT/VC/bin/x64
|
||||
cp $DEVKIT_ROOT/VC/redist/x64/$MSVCP_DLL $DEVKIT_ROOT/VC/bin/x64
|
||||
cp $DEVKIT_ROOT/VC/redist/arm64/$MSVCR_DLL $DEVKIT_ROOT/VC/bin/arm64
|
||||
cp $DEVKIT_ROOT/VC/redist/arm64/$MSVCP_DLL $DEVKIT_ROOT/VC/bin/arm64
|
||||
fi
|
||||
|
||||
################################################################################
|
||||
@@ -128,8 +134,10 @@ if [ ! -d $DEVKIT_ROOT/$SDK_VERSION ]; then
|
||||
cp -r "$SDK_INSTALL_DIR/bin/$SDK_FULL_VERSION/x64" $DEVKIT_ROOT/$SDK_VERSION/bin/
|
||||
cp -r "$SDK_INSTALL_DIR/bin/$SDK_FULL_VERSION/x86" $DEVKIT_ROOT/$SDK_VERSION/bin/
|
||||
mkdir -p $DEVKIT_ROOT/$SDK_VERSION/lib
|
||||
cp -r "$SDK_INSTALL_DIR/lib/$SDK_FULL_VERSION/um/arm64" $DEVKIT_ROOT/$SDK_VERSION/lib/
|
||||
cp -r "$SDK_INSTALL_DIR/lib/$SDK_FULL_VERSION/um/x64" $DEVKIT_ROOT/$SDK_VERSION/lib/
|
||||
cp -r "$SDK_INSTALL_DIR/lib/$SDK_FULL_VERSION/um/x86" $DEVKIT_ROOT/$SDK_VERSION/lib/
|
||||
cp -r "$SDK_INSTALL_DIR/lib/$SDK_FULL_VERSION/ucrt/arm64" $DEVKIT_ROOT/$SDK_VERSION/lib/
|
||||
cp -r "$SDK_INSTALL_DIR/lib/$SDK_FULL_VERSION/ucrt/x64" $DEVKIT_ROOT/$SDK_VERSION/lib/
|
||||
cp -r "$SDK_INSTALL_DIR/lib/$SDK_FULL_VERSION/ucrt/x86" $DEVKIT_ROOT/$SDK_VERSION/lib/
|
||||
mkdir -p $DEVKIT_ROOT/$SDK_VERSION/Redist
|
||||
@@ -164,6 +172,13 @@ echo-info "DEVKIT_VS_LIB_x86_64=\"\$DEVKIT_ROOT/VC/lib/x64;\$DEVKIT_ROOT/VC/atlm
|
||||
echo-info "DEVKIT_MSVCR_DLL_x86_64=\"\$DEVKIT_ROOT/VC/redist/x64/$MSVCR_DLL\""
|
||||
echo-info "DEVKIT_MSVCP_DLL_x86_64=\"\$DEVKIT_ROOT/VC/redist/x64/$MSVCP_DLL\""
|
||||
echo-info "DEVKIT_UCRT_DLL_DIR_x86_64=\"\$DEVKIT_ROOT/10/Redist/ucrt/DLLs/x64\""
|
||||
echo-info ""
|
||||
echo-info "DEVKIT_TOOLCHAIN_PATH_aarch64=\"\$DEVKIT_ROOT/VC/bin/arm64:\$DEVKIT_ROOT/$SDK_VERSION/bin/x64:\$DEVKIT_ROOT/$SDK_VERSION/bin/x86\""
|
||||
echo-info "DEVKIT_VS_INCLUDE_aarch64=\"\$DEVKIT_ROOT/VC/include;\$DEVKIT_ROOT/VC/atlmfc/include;\$DEVKIT_ROOT/$SDK_VERSION/include/shared;\$DEVKIT_ROOT/$SDK_VERSION/include/ucrt;\$DEVKIT_ROOT/$SDK_VERSION/include/um;\$DEVKIT_ROOT/$SDK_VERSION/include/winrt\""
|
||||
echo-info "DEVKIT_VS_LIB_aarch64=\"\$DEVKIT_ROOT/VC/lib/arm64;\$DEVKIT_ROOT/VC/atlmfc/lib/arm64;\$DEVKIT_ROOT/$SDK_VERSION/lib/arm64\""
|
||||
echo-info "DEVKIT_MSVCR_DLL_aarch64=\"\$DEVKIT_ROOT/VC/redist/arm64/$MSVCR_DLL\""
|
||||
echo-info "DEVKIT_MSVCP_DLL_aarch64=\"\$DEVKIT_ROOT/VC/redist/arm64/$MSVCP_DLL\""
|
||||
echo-info "DEVKIT_UCRT_DLL_DIR_aarch64=\"\$DEVKIT_ROOT/10/Redist/ucrt/DLLs/arm64\""
|
||||
|
||||
################################################################################
|
||||
# Copy this script
|
||||
|
||||
@@ -32,7 +32,7 @@ include GendataBreakIterator.gmk
|
||||
|
||||
include GendataTZDB.gmk
|
||||
|
||||
include GendataBlacklistedCerts.gmk
|
||||
include GendataBlockedCerts.gmk
|
||||
|
||||
include GendataCryptoPolicy.gmk
|
||||
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
#
|
||||
# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License version 2 only, as
|
||||
# published by the Free Software Foundation. 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.
|
||||
#
|
||||
|
||||
$(eval $(call IncludeCustomExtension, gendata/GendataBlacklistedCerts.gmk))
|
||||
|
||||
GENDATA_BLACKLISTED_CERTS_SRC += $(TOPDIR)/make/data/blacklistedcertsconverter/blacklisted.certs.pem
|
||||
GENDATA_BLACKLISTED_CERTS := $(SUPPORT_OUTPUTDIR)/modules_libs/$(MODULE)/security/blacklisted.certs
|
||||
|
||||
$(GENDATA_BLACKLISTED_CERTS): $(BUILD_TOOLS_JDK) $(GENDATA_BLACKLISTED_CERTS_SRC)
|
||||
$(call LogInfo, Generating blacklisted certs)
|
||||
$(call MakeDir, $(@D))
|
||||
($(CAT) $(GENDATA_BLACKLISTED_CERTS_SRC) | $(TOOL_BLACKLISTED_CERTS) > $@) || exit 1
|
||||
|
||||
TARGETS += $(GENDATA_BLACKLISTED_CERTS)
|
||||
36
make/gendata/GendataBlockedCerts.gmk
Normal file
36
make/gendata/GendataBlockedCerts.gmk
Normal file
@@ -0,0 +1,36 @@
|
||||
#
|
||||
# Copyright (c) 2014, 2021, 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.
|
||||
#
|
||||
|
||||
$(eval $(call IncludeCustomExtension, gendata/GendataBlockedCerts.gmk))
|
||||
|
||||
GENDATA_BLOCKED_CERTS_SRC += $(TOPDIR)/make/data/blockedcertsconverter/blocked.certs.pem
|
||||
GENDATA_BLOCKED_CERTS := $(SUPPORT_OUTPUTDIR)/modules_libs/$(MODULE)/security/blocked.certs
|
||||
|
||||
$(GENDATA_BLOCKED_CERTS): $(BUILD_TOOLS_JDK) $(GENDATA_BLOCKED_CERTS_SRC)
|
||||
$(call LogInfo, Generating blocked certs)
|
||||
$(call MakeDir, $(@D))
|
||||
($(CAT) $(GENDATA_BLOCKED_CERTS_SRC) | $(TOOL_BLOCKED_CERTS) > $@) || exit 1
|
||||
|
||||
TARGETS += $(GENDATA_BLOCKED_CERTS)
|
||||
@@ -63,6 +63,12 @@ ifneq ($(filter $(TOOLCHAIN_TYPE), gcc clang), )
|
||||
CPP_FLAGS += -x c
|
||||
else ifeq ($(TOOLCHAIN_TYPE), microsoft)
|
||||
CPP_FLAGS += -nologo
|
||||
|
||||
ifeq ($(OPENJDK_TARGET_CPU),aarch64)
|
||||
# cl.exe does only recognize few file extensions as valid (ex: .c, .h, .cpp), so
|
||||
# make sure *.java.template files are recognized as valid input files
|
||||
CPP_FILEPREFIX = -Tc
|
||||
endif
|
||||
endif
|
||||
|
||||
# Generate a java source file from a template through the C preprocessor for the
|
||||
@@ -75,7 +81,7 @@ endif
|
||||
define generate-preproc-src
|
||||
$(call MakeDir, $(@D))
|
||||
( $(NAWK) '/@@END_COPYRIGHT@@/{exit}1' $< && \
|
||||
$(CPP) $(CPP_FLAGS) $(SYSROOT_CFLAGS) $(CFLAGS_JDKLIB) $< \
|
||||
$(CPP) $(CPP_FLAGS) $(SYSROOT_CFLAGS) $(CFLAGS_JDKLIB) $(CPP_FILEPREFIX) $< \
|
||||
2> >($(GREP) -v '^$(<F)$$' >&2) \
|
||||
| $(NAWK) '/@@START_HERE@@/,0' \
|
||||
| $(SED) -e 's/@@START_HERE@@/\/\/ AUTOMATICALLY GENERATED FILE - DO NOT EDIT/' \
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2013, 2021, 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
|
||||
@@ -99,6 +99,16 @@ ifeq ($(call check-jvm-feature, compiler2), true)
|
||||
ADLCFLAGS += -DAIX=1
|
||||
else ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||
ADLCFLAGS += -D_ALLBSD_SOURCE=1 -D_GNU_SOURCE=1
|
||||
ifeq ($(HOTSPOT_TARGET_CPU_ARCH), aarch64)
|
||||
ADLCFLAGS += -DR18_RESERVED
|
||||
endif
|
||||
else ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||
ifeq ($(call isTargetCpuBits, 64), true)
|
||||
ADLCFLAGS += -D_WIN64=1
|
||||
endif
|
||||
ifeq ($(HOTSPOT_TARGET_CPU_ARCH), aarch64)
|
||||
ADLCFLAGS += -DR18_RESERVED=1
|
||||
endif
|
||||
endif
|
||||
|
||||
ifneq ($(OPENJDK_TARGET_OS), windows)
|
||||
|
||||
@@ -55,6 +55,9 @@ endif
|
||||
# Disabling undef, switch, format-nonliteral and tautological-undefined-compare
|
||||
# warnings for clang because of test source.
|
||||
|
||||
# Disable MSVC warning C4146 "unary minus operator applied to unsigned type,
|
||||
# result still unsigned". This operation is well-defined.
|
||||
|
||||
# Solaris: Disable inlining (+d) to workaround Assertion: (../lnk/vardescr.h, line 109)
|
||||
$(eval $(call SetupNativeCompilation, BUILD_GTEST_LIBJVM, \
|
||||
NAME := jvm, \
|
||||
@@ -78,6 +81,7 @@ $(eval $(call SetupNativeCompilation, BUILD_GTEST_LIBJVM, \
|
||||
DISABLED_WARNINGS_clang := undef switch format-nonliteral \
|
||||
tautological-undefined-compare $(BUILD_LIBJVM_DISABLED_WARNINGS_clang), \
|
||||
DISABLED_WARNINGS_solstudio := identexpected, \
|
||||
DISABLED_WARNINGS_microsoft := 4146, \
|
||||
LDFLAGS := $(JVM_LDFLAGS), \
|
||||
LDFLAGS_solaris := -library=stlport4 $(call SET_SHARED_LIBRARY_ORIGIN), \
|
||||
LIBS := $(JVM_LIBS), \
|
||||
|
||||
@@ -148,6 +148,8 @@ JVM_STRIPFLAGS ?= $(STRIPFLAGS)
|
||||
################################################################################
|
||||
# Now set up the actual compilation of the main hotspot native library
|
||||
|
||||
# Disable MSVC warning C4146 "unary minus operator applied to unsigned type,
|
||||
# result still unsigned". This operation is well-defined.
|
||||
$(eval $(call SetupNativeCompilation, BUILD_LIBJVM, \
|
||||
NAME := jvm, \
|
||||
TOOLCHAIN := TOOLCHAIN_LINK_CXX, \
|
||||
@@ -164,6 +166,7 @@ $(eval $(call SetupNativeCompilation, BUILD_LIBJVM, \
|
||||
DISABLED_WARNINGS_solstudio := $(DISABLED_WARNINGS_solstudio), \
|
||||
DISABLED_WARNINGS_xlc := 1540-0216 1540-0198 1540-1090 1540-1639 \
|
||||
1540-1088 1500-010, \
|
||||
DISABLED_WARNINGS_microsoft := 4146, \
|
||||
ASFLAGS := $(JVM_ASFLAGS), \
|
||||
LDFLAGS := $(JVM_LDFLAGS), \
|
||||
LIBS := $(JVM_LIBS), \
|
||||
|
||||
@@ -1,196 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2013, 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.
|
||||
*/
|
||||
|
||||
package build.tools.blacklistedcertsconverter;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.math.BigInteger;
|
||||
import java.security.MessageDigest;
|
||||
import java.security.PublicKey;
|
||||
import java.security.cert.Certificate;
|
||||
import java.security.cert.CertificateFactory;
|
||||
import java.security.cert.X509Certificate;
|
||||
import java.security.interfaces.ECPublicKey;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.TreeSet;
|
||||
|
||||
import sun.security.util.DerInputStream;
|
||||
import sun.security.util.DerOutputStream;
|
||||
import sun.security.util.DerValue;
|
||||
|
||||
/**
|
||||
* Converts blacklisted.certs.pem from System.in to blacklisted.certs in
|
||||
* System.out. The input must start with a #! line including the fingerprint
|
||||
* algorithm. The output is sorted and unique.
|
||||
*/
|
||||
public class BlacklistedCertsConverter {
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
|
||||
byte[] pattern = "#! java BlacklistedCertsConverter ".getBytes();
|
||||
String mdAlg = "";
|
||||
|
||||
for (int i=0; ; i++) {
|
||||
int n = System.in.read();
|
||||
if (n < 0) {
|
||||
throw new Exception("Unexpected EOF");
|
||||
}
|
||||
if (i < pattern.length) {
|
||||
if (n != pattern[i]) {
|
||||
throw new Exception("The first line must start with \""
|
||||
+ new String(pattern) + "\"");
|
||||
}
|
||||
} else if (i < pattern.length + 100) {
|
||||
if (n < 32) {
|
||||
break;
|
||||
} else {
|
||||
mdAlg = mdAlg + String.format("%c", n);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
mdAlg = mdAlg.trim();
|
||||
System.out.println("Algorithm=" + mdAlg);
|
||||
|
||||
CertificateFactory cf = CertificateFactory.getInstance("X.509");
|
||||
Collection<? extends Certificate> certs
|
||||
= cf.generateCertificates(System.in);
|
||||
|
||||
// Output sorted so that it's easy to locate an entry.
|
||||
Set<String> fingerprints = new TreeSet<>();
|
||||
for (Certificate cert: certs) {
|
||||
fingerprints.addAll(
|
||||
getCertificateFingerPrints(mdAlg, (X509Certificate)cert));
|
||||
}
|
||||
|
||||
for (String s: fingerprints) {
|
||||
System.out.println(s);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a byte to hex digit and writes to the supplied buffer
|
||||
*/
|
||||
private static void byte2hex(byte b, StringBuffer buf) {
|
||||
char[] hexChars = { '0', '1', '2', '3', '4', '5', '6', '7', '8',
|
||||
'9', 'A', 'B', 'C', 'D', 'E', 'F' };
|
||||
int high = ((b & 0xf0) >> 4);
|
||||
int low = (b & 0x0f);
|
||||
buf.append(hexChars[high]);
|
||||
buf.append(hexChars[low]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Computes the possible fingerprints of the certificate.
|
||||
*/
|
||||
private static List<String> getCertificateFingerPrints(
|
||||
String mdAlg, X509Certificate cert) throws Exception {
|
||||
List<String> fingerprints = new ArrayList<>();
|
||||
for (byte[] encoding : altEncodings(cert)) {
|
||||
MessageDigest md = MessageDigest.getInstance(mdAlg);
|
||||
byte[] digest = md.digest(encoding);
|
||||
StringBuffer buf = new StringBuffer();
|
||||
for (int i = 0; i < digest.length; i++) {
|
||||
byte2hex(digest[i], buf);
|
||||
}
|
||||
fingerprints.add(buf.toString());
|
||||
}
|
||||
return fingerprints;
|
||||
}
|
||||
|
||||
private static List<byte[]> altEncodings(X509Certificate c)
|
||||
throws Exception {
|
||||
List<byte[]> result = new ArrayList<>();
|
||||
|
||||
DerValue d = new DerValue(c.getEncoded());
|
||||
DerValue[] seq = new DerValue[3];
|
||||
// tbsCertificate
|
||||
seq[0] = d.data.getDerValue();
|
||||
// signatureAlgorithm
|
||||
seq[1] = d.data.getDerValue();
|
||||
// signature
|
||||
seq[2] = d.data.getDerValue();
|
||||
|
||||
List<DerValue> algIds = Arrays.asList(seq[1], altAlgId(seq[1]));
|
||||
|
||||
List<DerValue> sigs;
|
||||
PublicKey p = c.getPublicKey();
|
||||
if (p instanceof ECPublicKey) {
|
||||
ECPublicKey ep = (ECPublicKey) p;
|
||||
BigInteger mod = ep.getParams().getOrder();
|
||||
sigs = Arrays.asList(seq[2], altSig(mod, seq[2]));
|
||||
} else {
|
||||
sigs = Arrays.asList(seq[2]);
|
||||
}
|
||||
|
||||
for (DerValue algId : algIds) {
|
||||
for (DerValue sig : sigs) {
|
||||
DerOutputStream tmp = new DerOutputStream();
|
||||
tmp.putDerValue(seq[0]);
|
||||
tmp.putDerValue(algId);
|
||||
tmp.putDerValue(sig);
|
||||
DerOutputStream tmp2 = new DerOutputStream();
|
||||
tmp2.write(DerValue.tag_Sequence, tmp);
|
||||
result.add(tmp2.toByteArray());
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private static DerValue altSig(BigInteger mod, DerValue sig)
|
||||
throws IOException {
|
||||
byte[] sigBits = sig.getBitString();
|
||||
DerInputStream in =
|
||||
new DerInputStream(sigBits, 0, sigBits.length, false);
|
||||
DerValue[] values = in.getSequence(2);
|
||||
BigInteger r = values[0].getBigInteger();
|
||||
BigInteger s = values[1].getBigInteger();
|
||||
BigInteger s2 = s.negate().mod(mod);
|
||||
DerOutputStream out = new DerOutputStream();
|
||||
out.putInteger(r);
|
||||
out.putInteger(s2);
|
||||
DerOutputStream tmp = new DerOutputStream();
|
||||
tmp.putBitString(new DerValue(DerValue.tag_Sequence,
|
||||
out.toByteArray()).toByteArray());
|
||||
return new DerValue(tmp.toByteArray());
|
||||
}
|
||||
|
||||
private static DerValue altAlgId(DerValue algId) throws IOException {
|
||||
DerInputStream in = algId.toDerInputStream();
|
||||
DerOutputStream bytes = new DerOutputStream();
|
||||
bytes.putOID(in.getOID());
|
||||
// encode parameters as NULL if not present or omit if NULL
|
||||
if (in.available() == 0) {
|
||||
bytes.putNull();
|
||||
}
|
||||
DerOutputStream tmp = new DerOutputStream();
|
||||
tmp.write(DerValue.tag_Sequence, bytes);
|
||||
return new DerValue(tmp.toByteArray());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,196 @@
|
||||
/*
|
||||
* Copyright (c) 2013, 2021, 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.
|
||||
*/
|
||||
|
||||
package build.tools.blockedcertsconverter;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.math.BigInteger;
|
||||
import java.security.MessageDigest;
|
||||
import java.security.PublicKey;
|
||||
import java.security.cert.Certificate;
|
||||
import java.security.cert.CertificateFactory;
|
||||
import java.security.cert.X509Certificate;
|
||||
import java.security.interfaces.ECPublicKey;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.TreeSet;
|
||||
|
||||
import sun.security.util.DerInputStream;
|
||||
import sun.security.util.DerOutputStream;
|
||||
import sun.security.util.DerValue;
|
||||
|
||||
/**
|
||||
* Converts blocked.certs.pem from System.in to blocked.certs in
|
||||
* System.out. The input must start with a #! line including the fingerprint
|
||||
* algorithm. The output is sorted and unique.
|
||||
*/
|
||||
public class BlockedCertsConverter {
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
|
||||
byte[] pattern = "#! java BlockedCertsConverter ".getBytes();
|
||||
String mdAlg = "";
|
||||
|
||||
for (int i=0; ; i++) {
|
||||
int n = System.in.read();
|
||||
if (n < 0) {
|
||||
throw new Exception("Unexpected EOF");
|
||||
}
|
||||
if (i < pattern.length) {
|
||||
if (n != pattern[i]) {
|
||||
throw new Exception("The first line must start with \""
|
||||
+ new String(pattern) + "\"");
|
||||
}
|
||||
} else if (i < pattern.length + 100) {
|
||||
if (n < 32) {
|
||||
break;
|
||||
} else {
|
||||
mdAlg = mdAlg + String.format("%c", n);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
mdAlg = mdAlg.trim();
|
||||
System.out.println("Algorithm=" + mdAlg);
|
||||
|
||||
CertificateFactory cf = CertificateFactory.getInstance("X.509");
|
||||
Collection<? extends Certificate> certs
|
||||
= cf.generateCertificates(System.in);
|
||||
|
||||
// Output sorted so that it's easy to locate an entry.
|
||||
Set<String> fingerprints = new TreeSet<>();
|
||||
for (Certificate cert: certs) {
|
||||
fingerprints.addAll(
|
||||
getCertificateFingerPrints(mdAlg, (X509Certificate)cert));
|
||||
}
|
||||
|
||||
for (String s: fingerprints) {
|
||||
System.out.println(s);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a byte to hex digit and writes to the supplied buffer
|
||||
*/
|
||||
private static void byte2hex(byte b, StringBuffer buf) {
|
||||
char[] hexChars = { '0', '1', '2', '3', '4', '5', '6', '7', '8',
|
||||
'9', 'A', 'B', 'C', 'D', 'E', 'F' };
|
||||
int high = ((b & 0xf0) >> 4);
|
||||
int low = (b & 0x0f);
|
||||
buf.append(hexChars[high]);
|
||||
buf.append(hexChars[low]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Computes the possible fingerprints of the certificate.
|
||||
*/
|
||||
private static List<String> getCertificateFingerPrints(
|
||||
String mdAlg, X509Certificate cert) throws Exception {
|
||||
List<String> fingerprints = new ArrayList<>();
|
||||
for (byte[] encoding : altEncodings(cert)) {
|
||||
MessageDigest md = MessageDigest.getInstance(mdAlg);
|
||||
byte[] digest = md.digest(encoding);
|
||||
StringBuffer buf = new StringBuffer();
|
||||
for (int i = 0; i < digest.length; i++) {
|
||||
byte2hex(digest[i], buf);
|
||||
}
|
||||
fingerprints.add(buf.toString());
|
||||
}
|
||||
return fingerprints;
|
||||
}
|
||||
|
||||
private static List<byte[]> altEncodings(X509Certificate c)
|
||||
throws Exception {
|
||||
List<byte[]> result = new ArrayList<>();
|
||||
|
||||
DerValue d = new DerValue(c.getEncoded());
|
||||
DerValue[] seq = new DerValue[3];
|
||||
// tbsCertificate
|
||||
seq[0] = d.data.getDerValue();
|
||||
// signatureAlgorithm
|
||||
seq[1] = d.data.getDerValue();
|
||||
// signature
|
||||
seq[2] = d.data.getDerValue();
|
||||
|
||||
List<DerValue> algIds = Arrays.asList(seq[1], altAlgId(seq[1]));
|
||||
|
||||
List<DerValue> sigs;
|
||||
PublicKey p = c.getPublicKey();
|
||||
if (p instanceof ECPublicKey) {
|
||||
ECPublicKey ep = (ECPublicKey) p;
|
||||
BigInteger mod = ep.getParams().getOrder();
|
||||
sigs = Arrays.asList(seq[2], altSig(mod, seq[2]));
|
||||
} else {
|
||||
sigs = Arrays.asList(seq[2]);
|
||||
}
|
||||
|
||||
for (DerValue algId : algIds) {
|
||||
for (DerValue sig : sigs) {
|
||||
DerOutputStream tmp = new DerOutputStream();
|
||||
tmp.putDerValue(seq[0]);
|
||||
tmp.putDerValue(algId);
|
||||
tmp.putDerValue(sig);
|
||||
DerOutputStream tmp2 = new DerOutputStream();
|
||||
tmp2.write(DerValue.tag_Sequence, tmp);
|
||||
result.add(tmp2.toByteArray());
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private static DerValue altSig(BigInteger mod, DerValue sig)
|
||||
throws IOException {
|
||||
byte[] sigBits = sig.getBitString();
|
||||
DerInputStream in =
|
||||
new DerInputStream(sigBits, 0, sigBits.length, false);
|
||||
DerValue[] values = in.getSequence(2);
|
||||
BigInteger r = values[0].getBigInteger();
|
||||
BigInteger s = values[1].getBigInteger();
|
||||
BigInteger s2 = s.negate().mod(mod);
|
||||
DerOutputStream out = new DerOutputStream();
|
||||
out.putInteger(r);
|
||||
out.putInteger(s2);
|
||||
DerOutputStream tmp = new DerOutputStream();
|
||||
tmp.putBitString(new DerValue(DerValue.tag_Sequence,
|
||||
out.toByteArray()).toByteArray());
|
||||
return new DerValue(tmp.toByteArray());
|
||||
}
|
||||
|
||||
private static DerValue altAlgId(DerValue algId) throws IOException {
|
||||
DerInputStream in = algId.toDerInputStream();
|
||||
DerOutputStream bytes = new DerOutputStream();
|
||||
bytes.putOID(in.getOID());
|
||||
// encode parameters as NULL if not present or omit if NULL
|
||||
if (in.available() == 0) {
|
||||
bytes.putNull();
|
||||
}
|
||||
DerOutputStream tmp = new DerOutputStream();
|
||||
tmp.write(DerValue.tag_Sequence, bytes);
|
||||
return new DerValue(tmp.toByteArray());
|
||||
}
|
||||
}
|
||||
@@ -101,7 +101,7 @@ public class Depend implements Plugin {
|
||||
private final MessageDigest apiHash;
|
||||
{
|
||||
try {
|
||||
apiHash = MessageDigest.getInstance("MD5");
|
||||
apiHash = MessageDigest.getInstance("SHA-256");
|
||||
} catch (NoSuchAlgorithmException ex) {
|
||||
throw new IllegalStateException(ex);
|
||||
}
|
||||
|
||||
@@ -132,7 +132,7 @@ public class EquivMapsGenerator {
|
||||
+ " A region/variant subtag \"" + preferred
|
||||
+ "\" is registered for more than one subtags.");
|
||||
}
|
||||
} else { // language, extlang, grandfathered, and redundant
|
||||
} else { // language, extlang, legacy, and redundant
|
||||
if (!initialLanguageMap.containsKey(preferred)) {
|
||||
sb = new StringBuilder(preferred);
|
||||
sb.append(',');
|
||||
|
||||
@@ -433,7 +433,7 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBJAVAJPEG, \
|
||||
OPTIMIZATION := HIGHEST, \
|
||||
CFLAGS := $(CFLAGS_JDKLIB), \
|
||||
HEADERS_FROM_SRC := $(LIBJPEG_HEADERS_FROM_SRC), \
|
||||
DISABLED_WARNINGS_gcc := clobbered implicit-fallthrough shift-negative-value, \
|
||||
DISABLED_WARNINGS_gcc := clobbered implicit-fallthrough shift-negative-value array-bounds, \
|
||||
LDFLAGS := $(LDFLAGS_JDKLIB) \
|
||||
$(call SET_SHARED_LIBRARY_ORIGIN), \
|
||||
LIBS := $(LIBJPEG_LIBS) $(JDKLIB_LIBS), \
|
||||
@@ -554,12 +554,6 @@ else
|
||||
ifeq ($(OPENJDK_TARGET_OS), solaris)
|
||||
HARFBUZZ_CFLAGS += -DHAVE_SOLARIS_ATOMIC_OPS
|
||||
endif
|
||||
ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||
HARFBUZZ_CFLAGS += -DHAVE_CORETEXT
|
||||
endif
|
||||
ifneq ($(OPENJDK_TARGET_OS), macosx)
|
||||
LIBFONTMANAGER_EXCLUDE_FILES += libharfbuzz/hb-coretext.cc
|
||||
endif
|
||||
# hb-ft.cc is not presently needed, and requires freetype 2.4.2 or later.
|
||||
LIBFONTMANAGER_EXCLUDE_FILES += libharfbuzz/hb-ft.cc
|
||||
|
||||
@@ -568,7 +562,7 @@ else
|
||||
maybe-uninitialized class-memaccess
|
||||
HARFBUZZ_DISABLED_WARNINGS_clang := unused-value incompatible-pointer-types \
|
||||
tautological-constant-out-of-range-compare int-to-pointer-cast \
|
||||
undef missing-field-initializers
|
||||
undef missing-field-initializers deprecated-declarations c++11-narrowing
|
||||
HARFBUZZ_DISABLED_WARNINGS_microsoft := 4267 4244 4090 4146 4334 4819 4101 4068 4805 4138
|
||||
HARFBUZZ_DISABLED_WARNINGS_C_solstudio := \
|
||||
E_INTEGER_OVERFLOW_DETECTED \
|
||||
|
||||
@@ -36,7 +36,7 @@ else ifeq ($(OPENJDK_TARGET_OS), solaris)
|
||||
SA_LDFLAGS := -mt
|
||||
|
||||
else ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||
SA_CFLAGS := -Damd64 -D_GNU_SOURCE -mno-omit-leaf-frame-pointer \
|
||||
SA_CFLAGS := -D_GNU_SOURCE -mno-omit-leaf-frame-pointer \
|
||||
-mstack-alignment=16 -fPIC
|
||||
LIBSA_EXTRA_SRC := $(SUPPORT_OUTPUTDIR)/gensrc/jdk.hotspot.agent
|
||||
else ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Copyright (c) 2012, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2012, 2021, 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
|
||||
@@ -34,6 +34,9 @@ if [ -z "$TOPDIR" ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Make sure all shell commands are executed with the C locale
|
||||
export LC_ALL=C
|
||||
|
||||
if [ "$OPENJDK_TARGET_OS" = "macosx" ]; then
|
||||
FULLDUMP_CMD="$OTOOL -v -V -h -X -d"
|
||||
LDD_CMD="$OTOOL -L"
|
||||
@@ -81,7 +84,7 @@ diff_text() {
|
||||
|
||||
if [[ "$THIS_FILE" = *"META-INF/MANIFEST.MF" ]]; then
|
||||
# Filter out date string, ant version and java version differences.
|
||||
TMP=$(LC_ALL=C $DIFF $OTHER_FILE $THIS_FILE | \
|
||||
TMP=$($DIFF $OTHER_FILE $THIS_FILE | \
|
||||
$GREP '^[<>]' | \
|
||||
$SED -e '/[<>] Ant-Version: Apache Ant .*/d' \
|
||||
-e '/[<>] Created-By: .* (Oracle [Corpatin)]*/d' \
|
||||
@@ -89,7 +92,7 @@ diff_text() {
|
||||
-e '/[<>].*[0-9]\{4\}_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{2\}-b[0-9]\{2\}.*/d')
|
||||
fi
|
||||
if test "x$SUFFIX" = "xjava"; then
|
||||
TMP=$(LC_ALL=C $DIFF $OTHER_FILE $THIS_FILE | \
|
||||
TMP=$($DIFF $OTHER_FILE $THIS_FILE | \
|
||||
$GREP '^[<>]' | \
|
||||
$SED -e '/[<>] \* from.*\.idl/d' \
|
||||
-e '/[<>] .*[0-9]\{4\}_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{2\}-b[0-9]\{2\}.*/d' \
|
||||
@@ -144,7 +147,7 @@ diff_text() {
|
||||
fi
|
||||
if test "x$SUFFIX" = "xproperties"; then
|
||||
# Filter out date string differences.
|
||||
TMP=$(LC_ALL=C $DIFF $OTHER_FILE $THIS_FILE | \
|
||||
TMP=$($DIFF $OTHER_FILE $THIS_FILE | \
|
||||
$GREP '^[<>]' | \
|
||||
$SED -e '/[<>].*[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}-[0-9]\{6\}.*/d')
|
||||
fi
|
||||
@@ -154,7 +157,7 @@ diff_text() {
|
||||
-e 's/<font size=-1>/<font size=\"-1\">/g'"
|
||||
$CAT $THIS_FILE | eval "$HTML_FILTER" > $THIS_FILE.filtered
|
||||
$CAT $OTHER_FILE | eval "$HTML_FILTER" > $OTHER_FILE.filtered
|
||||
TMP=$(LC_ALL=C $DIFF $OTHER_FILE.filtered $THIS_FILE.filtered | \
|
||||
TMP=$($DIFF $OTHER_FILE.filtered $THIS_FILE.filtered | \
|
||||
$GREP '^[<>]' | \
|
||||
$SED -e '/[<>] <!-- Generated by javadoc .* on .* -->/d' \
|
||||
-e '/[<>] <meta name="date" content=".*">/d' )
|
||||
@@ -481,11 +484,11 @@ compare_zip_file() {
|
||||
CONTENTS_DIFF_FILE=$WORK_DIR/$ZIP_FILE.diff
|
||||
# On solaris, there is no -q option.
|
||||
if [ "$OPENJDK_TARGET_OS" = "solaris" ]; then
|
||||
LC_ALL=C $DIFF -r $OTHER_UNZIPDIR $THIS_UNZIPDIR \
|
||||
$DIFF -r $OTHER_UNZIPDIR $THIS_UNZIPDIR \
|
||||
| $GREP -v -e "^<" -e "^>" -e "^Common subdirectories:" \
|
||||
> $CONTENTS_DIFF_FILE
|
||||
else
|
||||
LC_ALL=C $DIFF -rq $OTHER_UNZIPDIR $THIS_UNZIPDIR > $CONTENTS_DIFF_FILE
|
||||
$DIFF -rq $OTHER_UNZIPDIR $THIS_UNZIPDIR > $CONTENTS_DIFF_FILE
|
||||
fi
|
||||
|
||||
ONLY_OTHER=$($GREP "^Only in $OTHER_UNZIPDIR" $CONTENTS_DIFF_FILE)
|
||||
@@ -532,11 +535,11 @@ compare_zip_file() {
|
||||
if [ -n "$SHOW_DIFFS" ]; then
|
||||
for i in $(cat $WORK_DIR/$ZIP_FILE.difflist) ; do
|
||||
if [ -f "${OTHER_UNZIPDIR}/$i.javap" ]; then
|
||||
LC_ALL=C $DIFF ${OTHER_UNZIPDIR}/$i.javap ${THIS_UNZIPDIR}/$i.javap
|
||||
$DIFF ${OTHER_UNZIPDIR}/$i.javap ${THIS_UNZIPDIR}/$i.javap
|
||||
elif [ -f "${OTHER_UNZIPDIR}/$i.cleaned" ]; then
|
||||
LC_ALL=C $DIFF ${OTHER_UNZIPDIR}/$i.cleaned ${THIS_UNZIPDIR}/$i
|
||||
$DIFF ${OTHER_UNZIPDIR}/$i.cleaned ${THIS_UNZIPDIR}/$i
|
||||
else
|
||||
LC_ALL=C $DIFF ${OTHER_UNZIPDIR}/$i ${THIS_UNZIPDIR}/$i
|
||||
$DIFF ${OTHER_UNZIPDIR}/$i ${THIS_UNZIPDIR}/$i
|
||||
fi
|
||||
done
|
||||
fi
|
||||
@@ -776,7 +779,7 @@ compare_bin_file() {
|
||||
> $WORK_FILE_BASE.symbols.this
|
||||
fi
|
||||
|
||||
LC_ALL=C $DIFF $WORK_FILE_BASE.symbols.other $WORK_FILE_BASE.symbols.this > $WORK_FILE_BASE.symbols.diff
|
||||
$DIFF $WORK_FILE_BASE.symbols.other $WORK_FILE_BASE.symbols.this > $WORK_FILE_BASE.symbols.diff
|
||||
if [ -s $WORK_FILE_BASE.symbols.diff ]; then
|
||||
SYM_MSG=" diff "
|
||||
if [[ "$ACCEPTED_SYM_DIFF" != *"$BIN_FILE"* ]]; then
|
||||
@@ -816,9 +819,9 @@ compare_bin_file() {
|
||||
| $UNIQ > $WORK_FILE_BASE.deps.this.uniq)
|
||||
(cd $FILE_WORK_DIR && $RM -f $NAME)
|
||||
|
||||
LC_ALL=C $DIFF $WORK_FILE_BASE.deps.other $WORK_FILE_BASE.deps.this \
|
||||
$DIFF $WORK_FILE_BASE.deps.other $WORK_FILE_BASE.deps.this \
|
||||
> $WORK_FILE_BASE.deps.diff
|
||||
LC_ALL=C $DIFF $WORK_FILE_BASE.deps.other.uniq $WORK_FILE_BASE.deps.this.uniq \
|
||||
$DIFF $WORK_FILE_BASE.deps.other.uniq $WORK_FILE_BASE.deps.this.uniq \
|
||||
> $WORK_FILE_BASE.deps.diff.uniq
|
||||
|
||||
if [ -s $WORK_FILE_BASE.deps.diff ]; then
|
||||
@@ -868,7 +871,7 @@ compare_bin_file() {
|
||||
> $WORK_FILE_BASE.fulldump.this 2>&1 &
|
||||
wait
|
||||
|
||||
LC_ALL=C $DIFF $WORK_FILE_BASE.fulldump.other $WORK_FILE_BASE.fulldump.this \
|
||||
$DIFF $WORK_FILE_BASE.fulldump.other $WORK_FILE_BASE.fulldump.this \
|
||||
> $WORK_FILE_BASE.fulldump.diff
|
||||
|
||||
if [ -s $WORK_FILE_BASE.fulldump.diff ]; then
|
||||
@@ -915,7 +918,7 @@ compare_bin_file() {
|
||||
| eval "$this_DIS_DIFF_FILTER" > $WORK_FILE_BASE.dis.this 2>&1 &
|
||||
wait
|
||||
|
||||
LC_ALL=C $DIFF $WORK_FILE_BASE.dis.other $WORK_FILE_BASE.dis.this > $WORK_FILE_BASE.dis.diff
|
||||
$DIFF $WORK_FILE_BASE.dis.other $WORK_FILE_BASE.dis.this > $WORK_FILE_BASE.dis.diff
|
||||
|
||||
if [ -s $WORK_FILE_BASE.dis.diff ]; then
|
||||
DIS_DIFF_SIZE=$(ls -n $WORK_FILE_BASE.dis.diff | awk '{print $5}')
|
||||
@@ -1044,7 +1047,7 @@ compare_all_execs() {
|
||||
-o -name '*.zip' -o -name '*.jimage' -o -name '*.java' -o -name '*.mf' \
|
||||
-o -name '*.jpg' -o -name '*.wsdl' -o -name '*.js' -o -name '*.sh' \
|
||||
-o -name '*.bat' -o -name '*LICENSE' -o -name '*.d' -o -name '*store' \
|
||||
-o -name 'blacklist' -o -name '*certs' -o -name '*.ttf' \
|
||||
-o -name 'blocked' -o -name '*certs' -o -name '*.ttf' \
|
||||
-o -name '*.jfc' -o -name '*.dat' -o -name 'release' -o -name '*.dir'\
|
||||
-o -name '*.sym' -o -name '*.idl' -o -name '*.h' -o -name '*.access' \
|
||||
-o -name '*.template' -o -name '*.policy' -o -name '*.security' \
|
||||
|
||||
@@ -148,6 +148,9 @@ BUILD_HOTSPOT_JTREG_LIBRARIES_CFLAGS_libNoFramePointer := $(NO_FRAMEPOINTER_CFLA
|
||||
# Optimization -O3 needed, HIGH == -O3
|
||||
BUILD_HOTSPOT_JTREG_LIBRARIES_OPTIMIZATION_libNoFramePointer := HIGH
|
||||
|
||||
BUILD_HOTSPOT_JTREG_LIBRARIES_CFLAGS := -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS
|
||||
BUILD_HOTSPOT_JTREG_EXECUTABLES_CFLAGS := -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS
|
||||
|
||||
BUILD_HOTSPOT_JTREG_LIBRARIES_CFLAGS_libProcessUtils := $(VM_SHARE_INCLUDES)
|
||||
|
||||
BUILD_HOTSPOT_JTREG_LIBRARIES_CFLAGS_libThreadController := $(NSK_MONITORING_INCLUDES)
|
||||
@@ -845,10 +848,6 @@ BUILD_HOTSPOT_JTREG_LIBRARIES_CFLAGS_libVirtualMachine09agent00 := $(NSK_AOD_INC
|
||||
|
||||
################################################################################
|
||||
|
||||
ifeq ($(TOOLCHAIN_TYPE), solstudio)
|
||||
BUILD_HOTSPOT_JTREG_LIBRARIES_CFLAGS_libji06t001 += -erroff=E_END_OF_LOOP_CODE_NOT_REACHED
|
||||
endif
|
||||
|
||||
# Platform specific setup
|
||||
ifneq ($(OPENJDK_TARGET_OS)-$(OPENJDK_TARGET_CPU_ARCH), solaris-sparc)
|
||||
BUILD_HOTSPOT_JTREG_EXCLUDE += liboverflow.c exeThreadSignalMask.c
|
||||
|
||||
@@ -8,8 +8,11 @@ global.env.testtime=2500
|
||||
global.results.workunits=units
|
||||
global.results.timeunits=sec
|
||||
global.results.ratio=unitspersec
|
||||
global.dest.screen=disabled
|
||||
global.dest.offscreen=disabled
|
||||
global.dest.frame.defaultframe=disabled
|
||||
global.dest.frame.transframe=disabled
|
||||
global.dest.frame.shapedframe=disabled
|
||||
global.dest.frame.shapedtransframe=disabled
|
||||
global.dest.compatimg.compatimg=disabled
|
||||
global.dest.compatimg.opqcompatimg=disabled
|
||||
global.dest.compatimg.bmcompatimg=disabled
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2002, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
@@ -40,9 +40,11 @@
|
||||
|
||||
package j2dbench;
|
||||
|
||||
import java.awt.Image;
|
||||
import java.awt.Component;
|
||||
import java.awt.Frame;
|
||||
import java.awt.GraphicsConfiguration;
|
||||
import java.awt.Image;
|
||||
import java.awt.Polygon;
|
||||
import java.awt.Transparency;
|
||||
import java.awt.color.ColorSpace;
|
||||
import java.awt.image.BufferedImage;
|
||||
@@ -50,11 +52,14 @@ import java.awt.image.ComponentColorModel;
|
||||
import java.awt.image.DataBuffer;
|
||||
import java.awt.image.WritableRaster;
|
||||
|
||||
import javax.swing.SwingUtilities;
|
||||
|
||||
import j2dbench.tests.GraphicsTests;
|
||||
import j2dbench.tests.ImageTests;
|
||||
|
||||
public abstract class Destinations extends Option.Enable {
|
||||
public static Group.EnableSet destroot;
|
||||
public static Group frameroot;
|
||||
public static Group bufimgdestroot;
|
||||
public static Group compatimgdestroot;
|
||||
public static Group volimgdestroot;
|
||||
@@ -63,9 +68,22 @@ public abstract class Destinations extends Option.Enable {
|
||||
destroot = new Group.EnableSet(TestEnvironment.globaloptroot,
|
||||
"dest", "Output Destination Options");
|
||||
|
||||
new Screen();
|
||||
new OffScreen();
|
||||
|
||||
frameroot = new Group.EnableSet(destroot, "frame", "Output to Frame");
|
||||
frameroot.setHorizontal();
|
||||
|
||||
new Screen(false, false);
|
||||
if (ImageTests.hasOpacityWindow) {
|
||||
new Screen(true, false);
|
||||
}
|
||||
if (ImageTests.hasShapedWindow) {
|
||||
new Screen(false, true);
|
||||
}
|
||||
if (ImageTests.hasShapedWindow && ImageTests.hasOpacityWindow) {
|
||||
new Screen(true, true);
|
||||
}
|
||||
|
||||
if (GraphicsTests.hasGraphics2D) {
|
||||
if (ImageTests.hasCompatImage) {
|
||||
compatimgdestroot =
|
||||
@@ -129,17 +147,95 @@ public abstract class Destinations extends Option.Enable {
|
||||
public abstract void setDestination(TestEnvironment env);
|
||||
|
||||
public static class Screen extends Destinations {
|
||||
public Screen() {
|
||||
super(destroot, "screen", "Output to Screen", false);
|
||||
|
||||
private boolean opacity;
|
||||
private boolean shaped;
|
||||
|
||||
public Screen(boolean opacity, boolean shaped) {
|
||||
super(frameroot, getDescription(opacity,shaped),
|
||||
getLongDescription(opacity,shaped), false);
|
||||
this.opacity = opacity;
|
||||
this.shaped = shaped;
|
||||
}
|
||||
|
||||
private static String getDescription(boolean opacity, boolean shaped){
|
||||
if (opacity && shaped) {
|
||||
return "shapedtransframe";
|
||||
}
|
||||
if (shaped) {
|
||||
return "shapedframe";
|
||||
}
|
||||
if (opacity) {
|
||||
return "transframe";
|
||||
}
|
||||
return "defaultframe";
|
||||
}
|
||||
|
||||
private static String getLongDescription(boolean opacity, boolean shaped){
|
||||
if (opacity && shaped) {
|
||||
return "Translucent and Shaped";
|
||||
}
|
||||
if (shaped) {
|
||||
return "Shaped";
|
||||
}
|
||||
if (opacity) {
|
||||
return "Translucent";
|
||||
}
|
||||
return "Default";
|
||||
}
|
||||
|
||||
public String getModifierValueName(Object val) {
|
||||
return "Screen";
|
||||
if (opacity && shaped) {
|
||||
return "Translucent and Shaped Frame";
|
||||
}
|
||||
if (shaped) {
|
||||
return "Shaped Frame";
|
||||
}
|
||||
if (opacity) {
|
||||
return "Translucent Frame";
|
||||
}
|
||||
return "Default Frame";
|
||||
}
|
||||
|
||||
public void setDestination(TestEnvironment env) {
|
||||
env.setTestImage(null);
|
||||
}
|
||||
|
||||
public void modifyTest(TestEnvironment env) {
|
||||
setDestination(env);
|
||||
Frame frame = (Frame) SwingUtilities.getWindowAncestor(env.comp);
|
||||
if (frame != null && (opacity || shaped)) {
|
||||
frame.dispose();
|
||||
frame.setUndecorated(true);
|
||||
int w = frame.getWidth();
|
||||
int h = frame.getHeight();
|
||||
if (shaped) {
|
||||
Polygon p = new Polygon();
|
||||
p.addPoint(0, 0);
|
||||
p.addPoint(w, 0);
|
||||
p.addPoint(0, h);
|
||||
p.addPoint(w, h);
|
||||
p.addPoint(0, 0);
|
||||
frame.setShape(p);
|
||||
}
|
||||
if (opacity) {
|
||||
frame.setOpacity(0.5f);
|
||||
}
|
||||
frame.setVisible(true);
|
||||
}
|
||||
}
|
||||
|
||||
public void restoreTest(TestEnvironment env) {
|
||||
env.setTestImage(null);
|
||||
Frame frame = (Frame) SwingUtilities.getWindowAncestor(env.comp);
|
||||
if (frame != null && (opacity || shaped)) {
|
||||
frame.dispose();
|
||||
frame.setShape(null);
|
||||
frame.setOpacity(1);
|
||||
frame.setUndecorated(false);
|
||||
frame.setVisible(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static class OffScreen extends Destinations {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2002, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
@@ -40,6 +40,8 @@
|
||||
|
||||
package j2dbench;
|
||||
|
||||
import java.awt.GraphicsEnvironment;
|
||||
import java.awt.Rectangle;
|
||||
import java.io.PrintWriter;
|
||||
import java.io.FileReader;
|
||||
import java.io.FileWriter;
|
||||
@@ -780,7 +782,10 @@ public class J2DBench {
|
||||
f.getContentPane().add(p, BorderLayout.SOUTH);
|
||||
f.pack();
|
||||
f.setLocationRelativeTo(null);
|
||||
f.show();
|
||||
Rectangle usable = GraphicsEnvironment.getLocalGraphicsEnvironment()
|
||||
.getMaximumWindowBounds().intersection(f.getBounds());
|
||||
f.setBounds(usable);
|
||||
f.setVisible(true);
|
||||
}
|
||||
|
||||
public static void runTests(boolean showresults) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2002, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
@@ -53,7 +53,9 @@ import java.awt.Canvas;
|
||||
import java.awt.AlphaComposite;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.GraphicsConfiguration;
|
||||
import java.awt.Rectangle;
|
||||
import java.awt.RenderingHints;
|
||||
import java.awt.Window;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.awt.image.BufferedImageOp;
|
||||
import java.awt.image.ByteLookupTable;
|
||||
@@ -79,6 +81,8 @@ import javax.swing.JComponent;
|
||||
public abstract class ImageTests extends GraphicsTests {
|
||||
public static boolean hasVolatileImage;
|
||||
public static boolean hasTransparentVolatileImage;
|
||||
public static boolean hasShapedWindow;
|
||||
public static boolean hasOpacityWindow;
|
||||
public static boolean hasCompatImage;
|
||||
|
||||
static {
|
||||
@@ -96,6 +100,16 @@ public abstract class ImageTests extends GraphicsTests {
|
||||
hasTransparentVolatileImage = true;
|
||||
} catch (NoSuchMethodError e) {
|
||||
}
|
||||
try {
|
||||
new Window(null).setShape(new Rectangle());
|
||||
hasShapedWindow = true;
|
||||
} catch (Exception e) {
|
||||
}
|
||||
try {
|
||||
new Window(null).setOpacity(0.5f);
|
||||
hasOpacityWindow = true;
|
||||
} catch (Exception e) {
|
||||
}
|
||||
}
|
||||
|
||||
static Group imageroot;
|
||||
|
||||
@@ -13,6 +13,8 @@ class Register(Operand):
|
||||
|
||||
def generate(self):
|
||||
self.number = random.randint(0, 30)
|
||||
if self.number == 18:
|
||||
self.number = 17
|
||||
return self
|
||||
|
||||
def astr(self, prefix):
|
||||
@@ -37,6 +39,8 @@ class GeneralRegisterOrZr(Register):
|
||||
|
||||
def generate(self):
|
||||
self.number = random.randint(0, 31)
|
||||
if self.number == 18:
|
||||
self.number = 16
|
||||
return self
|
||||
|
||||
def astr(self, prefix = ""):
|
||||
@@ -54,6 +58,8 @@ class GeneralRegisterOrZr(Register):
|
||||
class GeneralRegisterOrSp(Register):
|
||||
def generate(self):
|
||||
self.number = random.randint(0, 31)
|
||||
if self.number == 18:
|
||||
self.number = 15
|
||||
return self
|
||||
|
||||
def astr(self, prefix = ""):
|
||||
|
||||
@@ -110,8 +110,8 @@ reg_def R16 ( SOC, SOC, Op_RegI, 16, r16->as_VMReg() );
|
||||
reg_def R16_H ( SOC, SOC, Op_RegI, 16, r16->as_VMReg()->next());
|
||||
reg_def R17 ( SOC, SOC, Op_RegI, 17, r17->as_VMReg() );
|
||||
reg_def R17_H ( SOC, SOC, Op_RegI, 17, r17->as_VMReg()->next());
|
||||
reg_def R18 ( SOC, SOC, Op_RegI, 18, r18->as_VMReg() );
|
||||
reg_def R18_H ( SOC, SOC, Op_RegI, 18, r18->as_VMReg()->next());
|
||||
reg_def R18 ( SOC, SOC, Op_RegI, 18, r18_tls->as_VMReg() );
|
||||
reg_def R18_H ( SOC, SOC, Op_RegI, 18, r18_tls->as_VMReg()->next());
|
||||
reg_def R19 ( SOC, SOE, Op_RegI, 19, r19->as_VMReg() );
|
||||
reg_def R19_H ( SOC, SOE, Op_RegI, 19, r19->as_VMReg()->next());
|
||||
reg_def R20 ( SOC, SOE, Op_RegI, 20, r20->as_VMReg() ); // caller esp
|
||||
@@ -352,7 +352,6 @@ alloc_class chunk0(
|
||||
R15, R15_H,
|
||||
R16, R16_H,
|
||||
R17, R17_H,
|
||||
R18, R18_H,
|
||||
|
||||
// arg registers
|
||||
R0, R0_H,
|
||||
@@ -375,7 +374,7 @@ alloc_class chunk0(
|
||||
R26, R26_H,
|
||||
|
||||
// non-allocatable registers
|
||||
|
||||
R18, R18_H, // platform
|
||||
R27, R27_H, // heapbase
|
||||
R28, R28_H, // thread
|
||||
R29, R29_H, // fp
|
||||
@@ -533,7 +532,10 @@ reg_class no_special_reg32_no_fp(
|
||||
R15,
|
||||
R16,
|
||||
R17,
|
||||
#ifndef R18_RESERVED
|
||||
// See comment in register_aarch64.hpp
|
||||
R18,
|
||||
#endif
|
||||
R19,
|
||||
R20,
|
||||
R21,
|
||||
@@ -566,7 +568,10 @@ reg_class no_special_reg32_with_fp(
|
||||
R15,
|
||||
R16,
|
||||
R17,
|
||||
#ifndef R18_RESERVED
|
||||
// See comment in register_aarch64.hpp
|
||||
R18,
|
||||
#endif
|
||||
R19,
|
||||
R20,
|
||||
R21,
|
||||
@@ -602,7 +607,10 @@ reg_class no_special_reg_no_fp(
|
||||
R15, R15_H,
|
||||
R16, R16_H,
|
||||
R17, R17_H,
|
||||
#ifndef R18_RESERVED
|
||||
// See comment in register_aarch64.hpp
|
||||
R18, R18_H,
|
||||
#endif
|
||||
R19, R19_H,
|
||||
R20, R20_H,
|
||||
R21, R21_H,
|
||||
@@ -635,7 +643,10 @@ reg_class no_special_reg_with_fp(
|
||||
R15, R15_H,
|
||||
R16, R16_H,
|
||||
R17, R17_H,
|
||||
#ifndef R18_RESERVED
|
||||
// See comment in register_aarch64.hpp
|
||||
R18, R18_H,
|
||||
#endif
|
||||
R19, R19_H,
|
||||
R20, R20_H,
|
||||
R21, R21_H,
|
||||
@@ -775,7 +786,10 @@ reg_class no_special_ptr_reg(
|
||||
R15, R15_H,
|
||||
R16, R16_H,
|
||||
R17, R17_H,
|
||||
#ifndef R18_RESERVED
|
||||
// See comment in register_aarch64.hpp
|
||||
R18, R18_H,
|
||||
#endif
|
||||
R19, R19_H,
|
||||
R20, R20_H,
|
||||
R21, R21_H,
|
||||
@@ -2041,11 +2055,6 @@ int HandlerImpl::emit_deopt_handler(CodeBuffer& cbuf)
|
||||
|
||||
const bool Matcher::match_rule_supported(int opcode) {
|
||||
|
||||
switch (opcode) {
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (!has_match_rule(opcode)) {
|
||||
return false;
|
||||
}
|
||||
@@ -2297,6 +2306,13 @@ const RegMask Matcher::method_handle_invoke_SP_save_mask() {
|
||||
bool size_fits_all_mem_uses(AddPNode* addp, int shift) {
|
||||
for (DUIterator_Fast imax, i = addp->fast_outs(imax); i < imax; i++) {
|
||||
Node* u = addp->fast_out(i);
|
||||
if (u->is_LoadStore()) {
|
||||
// On AArch64, LoadStoreNodes (i.e. compare and swap
|
||||
// instructions) only take register indirect as an operand, so
|
||||
// any attempt to use an AddPNode as an input to a LoadStoreNode
|
||||
// must fail.
|
||||
return false;
|
||||
}
|
||||
if (u->is_Mem()) {
|
||||
int opsize = u->as_Mem()->memory_size();
|
||||
assert(opsize > 0, "unexpected memory operand size");
|
||||
@@ -3005,7 +3021,7 @@ encode %{
|
||||
if (con < (address)(uintptr_t)os::vm_page_size()) {
|
||||
__ mov(dst_reg, con);
|
||||
} else {
|
||||
uintptr_t offset;
|
||||
uint64_t offset;
|
||||
__ adrp(dst_reg, con, offset);
|
||||
__ add(dst_reg, dst_reg, offset);
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -28,6 +28,19 @@
|
||||
|
||||
#include "asm/register.hpp"
|
||||
|
||||
#ifdef __GNUC__
|
||||
|
||||
// __nop needs volatile so that compiler doesn't optimize it away
|
||||
#define NOP() asm volatile ("nop");
|
||||
|
||||
#elif defined(_MSC_VER)
|
||||
|
||||
// Use MSVC instrinsic: https://docs.microsoft.com/en-us/cpp/intrinsics/arm64-intrinsics?view=vs-2019#I
|
||||
#define NOP() __nop();
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
// definitions of various symbolic names for machine registers
|
||||
|
||||
// First intercalls between C and Java which use 8 general registers
|
||||
@@ -201,7 +214,7 @@ public:
|
||||
|
||||
static void patch(address a, int msb, int lsb, uint64_t val) {
|
||||
int nbits = msb - lsb + 1;
|
||||
guarantee(val < (1U << nbits), "Field too big for insn");
|
||||
guarantee(val < (1ULL << nbits), "Field too big for insn");
|
||||
assert_cond(msb >= lsb);
|
||||
unsigned mask = checked_cast<unsigned>(right_n_bits(nbits));
|
||||
val <<= lsb;
|
||||
@@ -380,9 +393,15 @@ class Address {
|
||||
: _base(r), _index(noreg), _offset(0), _mode(base_plus_offset), _target(0) { }
|
||||
Address(Register r, int o)
|
||||
: _base(r), _index(noreg), _offset(o), _mode(base_plus_offset), _target(0) { }
|
||||
Address(Register r, int64_t o)
|
||||
Address(Register r, long o)
|
||||
: _base(r), _index(noreg), _offset(o), _mode(base_plus_offset), _target(0) { }
|
||||
Address(Register r, uint64_t o)
|
||||
Address(Register r, long long o)
|
||||
: _base(r), _index(noreg), _offset(o), _mode(base_plus_offset), _target(0) { }
|
||||
Address(Register r, unsigned int o)
|
||||
: _base(r), _index(noreg), _offset(o), _mode(base_plus_offset), _target(0) { }
|
||||
Address(Register r, unsigned long o)
|
||||
: _base(r), _index(noreg), _offset(o), _mode(base_plus_offset), _target(0) { }
|
||||
Address(Register r, unsigned long long o)
|
||||
: _base(r), _index(noreg), _offset(o), _mode(base_plus_offset), _target(0) { }
|
||||
#ifdef ASSERT
|
||||
Address(Register r, ByteSize disp)
|
||||
@@ -417,8 +436,8 @@ class Address {
|
||||
}
|
||||
|
||||
Register base() const {
|
||||
guarantee((_mode == base_plus_offset | _mode == base_plus_offset_reg
|
||||
| _mode == post | _mode == post_reg),
|
||||
guarantee((_mode == base_plus_offset || _mode == base_plus_offset_reg
|
||||
|| _mode == post || _mode == post_reg),
|
||||
"wrong mode");
|
||||
return _base;
|
||||
}
|
||||
@@ -612,7 +631,7 @@ class Assembler : public AbstractAssembler {
|
||||
|
||||
void emit_long(jint x) {
|
||||
if ((uintptr_t)pc() == asm_bp)
|
||||
asm volatile ("nop");
|
||||
NOP();
|
||||
AbstractAssembler::emit_int32(x);
|
||||
}
|
||||
#else
|
||||
@@ -644,6 +663,8 @@ public:
|
||||
return Address(Post(base, idx));
|
||||
}
|
||||
|
||||
static address locate_next_instruction(address inst);
|
||||
|
||||
Instruction_aarch64* current;
|
||||
|
||||
void set_current(Instruction_aarch64* i) { current = i; }
|
||||
@@ -1512,6 +1533,11 @@ public:
|
||||
|
||||
#undef INSN
|
||||
|
||||
#ifdef _WIN64
|
||||
// In MSVC, `mvn` is defined as a macro and it affects compilation
|
||||
#undef mvn
|
||||
#endif
|
||||
|
||||
// Aliases for short forms of orn
|
||||
void mvn(Register Rd, Register Rm,
|
||||
enum shift_kind kind = LSL, unsigned shift = 0) {
|
||||
|
||||
@@ -44,13 +44,13 @@ enum {
|
||||
pd_nof_cpu_regs_frame_map = RegisterImpl::number_of_registers, // number of registers used during code emission
|
||||
pd_nof_fpu_regs_frame_map = FloatRegisterImpl::number_of_registers, // number of registers used during code emission
|
||||
|
||||
pd_nof_caller_save_cpu_regs_frame_map = 19 - 2, // number of registers killed by calls
|
||||
pd_nof_caller_save_cpu_regs_frame_map = 19 - 2 /* rscratch1 and rscratch2 */ R18_RESERVED_ONLY(- 1), // number of registers killed by calls
|
||||
pd_nof_caller_save_fpu_regs_frame_map = 32, // number of registers killed by calls
|
||||
|
||||
pd_first_callee_saved_reg = 19 - 2,
|
||||
pd_last_callee_saved_reg = 26 - 2,
|
||||
pd_first_callee_saved_reg = 19 - 2 /* rscratch1 and rscratch2 */ R18_RESERVED_ONLY(- 1),
|
||||
pd_last_callee_saved_reg = 26 - 2 /* rscratch1 and rscratch2 */ R18_RESERVED_ONLY(- 1),
|
||||
|
||||
pd_last_allocatable_cpu_reg = 16,
|
||||
pd_last_allocatable_cpu_reg = 16 R18_RESERVED_ONLY(- 1),
|
||||
|
||||
pd_nof_cpu_regs_reg_alloc
|
||||
= pd_last_allocatable_cpu_reg + 1, // number of registers that are visible to register allocator
|
||||
@@ -60,9 +60,9 @@ enum {
|
||||
pd_nof_fpu_regs_linearscan = pd_nof_fpu_regs_frame_map, // number of registers visible to linear scan
|
||||
pd_nof_xmm_regs_linearscan = 0, // like sparc we don't have any of these
|
||||
pd_first_cpu_reg = 0,
|
||||
pd_last_cpu_reg = 16,
|
||||
pd_last_cpu_reg = 16 R18_RESERVED_ONLY(- 1),
|
||||
pd_first_byte_reg = 0,
|
||||
pd_last_byte_reg = 16,
|
||||
pd_last_byte_reg = 16 R18_RESERVED_ONLY(- 1),
|
||||
pd_first_fpu_reg = pd_nof_cpu_regs_frame_map,
|
||||
pd_last_fpu_reg = pd_first_fpu_reg + 31,
|
||||
|
||||
|
||||
@@ -28,3 +28,6 @@
|
||||
//--------------------------------------------------------
|
||||
|
||||
// No FPU stack on AARCH64
|
||||
|
||||
// This include is needed to avoid MSVC error C1010 on Windows.
|
||||
#include "precompiled.hpp"
|
||||
|
||||
@@ -181,7 +181,10 @@ void FrameMap::initialize() {
|
||||
map_register(i, r15); r15_opr = LIR_OprFact::single_cpu(i); i++;
|
||||
map_register(i, r16); r16_opr = LIR_OprFact::single_cpu(i); i++;
|
||||
map_register(i, r17); r17_opr = LIR_OprFact::single_cpu(i); i++;
|
||||
map_register(i, r18); r18_opr = LIR_OprFact::single_cpu(i); i++;
|
||||
#ifndef R18_RESERVED
|
||||
// See comment in register_aarch64.hpp
|
||||
map_register(i, r18_tls); r18_opr = LIR_OprFact::single_cpu(i); i++;
|
||||
#endif
|
||||
map_register(i, r19); r19_opr = LIR_OprFact::single_cpu(i); i++;
|
||||
map_register(i, r20); r20_opr = LIR_OprFact::single_cpu(i); i++;
|
||||
map_register(i, r21); r21_opr = LIR_OprFact::single_cpu(i); i++;
|
||||
@@ -199,6 +202,11 @@ void FrameMap::initialize() {
|
||||
map_register(i, r8); r8_opr = LIR_OprFact::single_cpu(i); i++; // rscratch1
|
||||
map_register(i, r9); r9_opr = LIR_OprFact::single_cpu(i); i++; // rscratch2
|
||||
|
||||
#ifdef R18_RESERVED
|
||||
// See comment in register_aarch64.hpp
|
||||
map_register(i, r18_tls); r18_opr = LIR_OprFact::single_cpu(i); i++;
|
||||
#endif
|
||||
|
||||
rscratch1_opr = r8_opr;
|
||||
rscratch2_opr = r9_opr;
|
||||
rscratch1_long_opr = LIR_OprFact::double_cpu(r8_opr->cpu_regnr(), r8_opr->cpu_regnr());
|
||||
@@ -227,7 +235,10 @@ void FrameMap::initialize() {
|
||||
_caller_save_cpu_regs[13] = r15_opr;
|
||||
_caller_save_cpu_regs[14] = r16_opr;
|
||||
_caller_save_cpu_regs[15] = r17_opr;
|
||||
#ifndef R18_RESERVED
|
||||
// See comment in register_aarch64.hpp
|
||||
_caller_save_cpu_regs[16] = r18_opr;
|
||||
#endif
|
||||
|
||||
for (int i = 0; i < 8; i++) {
|
||||
_caller_save_fpu_regs[i] = LIR_OprFact::single_fpu(i);
|
||||
@@ -253,7 +264,7 @@ void FrameMap::initialize() {
|
||||
r15_oop_opr = as_oop_opr(r15);
|
||||
r16_oop_opr = as_oop_opr(r16);
|
||||
r17_oop_opr = as_oop_opr(r17);
|
||||
r18_oop_opr = as_oop_opr(r18);
|
||||
r18_oop_opr = as_oop_opr(r18_tls);
|
||||
r19_oop_opr = as_oop_opr(r19);
|
||||
r20_oop_opr = as_oop_opr(r20);
|
||||
r21_oop_opr = as_oop_opr(r21);
|
||||
|
||||
@@ -1732,6 +1732,7 @@ void LIR_Assembler::arith_op(LIR_Code code, LIR_Opr left, LIR_Opr right, LIR_Opr
|
||||
default: ShouldNotReachHere();
|
||||
}
|
||||
break;
|
||||
default:
|
||||
ShouldNotReachHere();
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -584,8 +584,8 @@ void LIRGenerator::do_ArithmeticOp(ArithmeticOp* x) {
|
||||
case doubleTag: do_ArithmeticOp_FPU(x); return;
|
||||
case longTag: do_ArithmeticOp_Long(x); return;
|
||||
case intTag: do_ArithmeticOp_Int(x); return;
|
||||
default: ShouldNotReachHere(); return;
|
||||
}
|
||||
ShouldNotReachHere();
|
||||
}
|
||||
|
||||
// _ishl, _lshl, _ishr, _lshr, _iushr, _lushr
|
||||
@@ -792,9 +792,13 @@ void LIRGenerator::do_MathIntrinsic(Intrinsic* x) {
|
||||
__ abs(value.result(), dst, LIR_OprFact::illegalOpr);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
ShouldNotReachHere();
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
ShouldNotReachHere();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -676,11 +676,12 @@ intptr_t* frame::real_fp() const {
|
||||
|
||||
#undef DESCRIBE_FP_OFFSET
|
||||
|
||||
#define DESCRIBE_FP_OFFSET(name) \
|
||||
{ \
|
||||
uintptr_t *p = (uintptr_t *)fp; \
|
||||
printf("0x%016lx 0x%016lx %s\n", (uintptr_t)(p + frame::name##_offset), \
|
||||
p[frame::name##_offset], #name); \
|
||||
#define DESCRIBE_FP_OFFSET(name) \
|
||||
{ \
|
||||
uintptr_t *p = (uintptr_t *)fp; \
|
||||
printf(INTPTR_FORMAT " " INTPTR_FORMAT " %s\n", \
|
||||
(uintptr_t)(p + frame::name##_offset), \
|
||||
p[frame::name##_offset], #name); \
|
||||
}
|
||||
|
||||
static THREAD_LOCAL_DECL uintptr_t nextfp;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1999, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2014, 2015, Red Hat Inc. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
@@ -53,4 +53,13 @@ const bool CCallingConventionRequiresIntsAsLongs = false;
|
||||
|
||||
#define THREAD_LOCAL_POLL
|
||||
|
||||
#if defined(__APPLE__) || defined(_WIN64)
|
||||
#define R18_RESERVED
|
||||
#define R18_RESERVED_ONLY(code) code
|
||||
#define NOT_R18_RESERVED(code)
|
||||
#else
|
||||
#define R18_RESERVED_ONLY(code)
|
||||
#define NOT_R18_RESERVED(code) code
|
||||
#endif
|
||||
|
||||
#endif // CPU_AARCH64_VM_GLOBALDEFINITIONS_AARCH64_HPP
|
||||
|
||||
@@ -26,19 +26,6 @@
|
||||
#ifndef CPU_AARCH64_VM_ICACHE_AARCH64_HPP
|
||||
#define CPU_AARCH64_VM_ICACHE_AARCH64_HPP
|
||||
|
||||
// Interface for updating the instruction cache. Whenever the VM
|
||||
// modifies code, part of the processor instruction cache potentially
|
||||
// has to be flushed.
|
||||
|
||||
class ICache : public AbstractICache {
|
||||
public:
|
||||
static void initialize();
|
||||
static void invalidate_word(address addr) {
|
||||
__clear_cache((char *)addr, (char *)(addr + 3));
|
||||
}
|
||||
static void invalidate_range(address start, int nbytes) {
|
||||
__clear_cache((char *)start, (char *)(start + nbytes));
|
||||
}
|
||||
};
|
||||
#include OS_CPU_HEADER(icache)
|
||||
|
||||
#endif // CPU_AARCH64_VM_ICACHE_AARCH64_HPP
|
||||
|
||||
@@ -24,6 +24,9 @@
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#include "precompiled.hpp"
|
||||
#include "utilities/globalDefinitions.hpp"
|
||||
#include "immediate_aarch64.hpp"
|
||||
|
||||
// there are at most 2^13 possible logical immediate encodings
|
||||
@@ -244,7 +247,10 @@ int expandLogicalImmediate(uint32_t immN, uint32_t immr,
|
||||
|
||||
// constructor to initialise the lookup tables
|
||||
|
||||
static void initLITables() __attribute__ ((constructor));
|
||||
static void initLITables();
|
||||
// Use an empty struct with a construtor as MSVC doesn't support `__attribute__ ((constructor))`
|
||||
// See https://stackoverflow.com/questions/1113409/attribute-constructor-equivalent-in-vc
|
||||
static struct initLITables_t { initLITables_t(void) { initLITables(); } } _initLITables;
|
||||
static void initLITables()
|
||||
{
|
||||
li_table_entry_count = 0;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2014, 2020, Red Hat Inc. All rights reserved.
|
||||
* Copyright (c) 2021, Azul Systems, Inc. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -44,215 +45,133 @@ Register InterpreterRuntime::SignatureHandlerGenerator::from() { return rlocals;
|
||||
Register InterpreterRuntime::SignatureHandlerGenerator::to() { return sp; }
|
||||
Register InterpreterRuntime::SignatureHandlerGenerator::temp() { return rscratch1; }
|
||||
|
||||
Register InterpreterRuntime::SignatureHandlerGenerator::next_gpr() {
|
||||
if (_num_reg_int_args < Argument::n_int_register_parameters_c-1) {
|
||||
return as_Register(_num_reg_int_args++ + c_rarg1->encoding());
|
||||
}
|
||||
return noreg;
|
||||
}
|
||||
|
||||
FloatRegister InterpreterRuntime::SignatureHandlerGenerator::next_fpr() {
|
||||
if (_num_reg_fp_args < Argument::n_float_register_parameters_c) {
|
||||
return as_FloatRegister(_num_reg_fp_args++);
|
||||
}
|
||||
return fnoreg;
|
||||
}
|
||||
|
||||
// On macos/aarch64 native stack is packed, int/float are using only 4 bytes
|
||||
// on stack. Natural alignment for types are still in place,
|
||||
// for example double/long should be 8 bytes aligned.
|
||||
|
||||
int InterpreterRuntime::SignatureHandlerGenerator::next_stack_offset(unsigned elem_size) {
|
||||
MACOS_ONLY(_stack_offset = align_up(_stack_offset, elem_size));
|
||||
int ret = _stack_offset;
|
||||
_stack_offset += NOT_MACOS(wordSize) MACOS_ONLY(elem_size);
|
||||
return ret;
|
||||
}
|
||||
|
||||
InterpreterRuntime::SignatureHandlerGenerator::SignatureHandlerGenerator(
|
||||
const methodHandle& method, CodeBuffer* buffer) : NativeSignatureIterator(method) {
|
||||
_masm = new MacroAssembler(buffer);
|
||||
_num_int_args = (method->is_static() ? 1 : 0);
|
||||
_num_fp_args = 0;
|
||||
_num_reg_int_args = (method->is_static() ? 1 : 0);
|
||||
_num_reg_fp_args = 0;
|
||||
_stack_offset = 0;
|
||||
}
|
||||
|
||||
void InterpreterRuntime::SignatureHandlerGenerator::pass_byte() {
|
||||
const Address src(from(), Interpreter::local_offset_in_bytes(offset()));
|
||||
|
||||
Register reg = next_gpr();
|
||||
if (reg != noreg) {
|
||||
__ ldr(reg, src);
|
||||
} else {
|
||||
__ ldrb(r0, src);
|
||||
__ strb(r0, Address(to(), next_stack_offset(sizeof(jbyte))));
|
||||
}
|
||||
}
|
||||
|
||||
void InterpreterRuntime::SignatureHandlerGenerator::pass_short() {
|
||||
const Address src(from(), Interpreter::local_offset_in_bytes(offset()));
|
||||
|
||||
Register reg = next_gpr();
|
||||
if (reg != noreg) {
|
||||
__ ldr(reg, src);
|
||||
} else {
|
||||
__ ldrh(r0, src);
|
||||
__ strh(r0, Address(to(), next_stack_offset(sizeof(jshort))));
|
||||
}
|
||||
}
|
||||
|
||||
void InterpreterRuntime::SignatureHandlerGenerator::pass_int() {
|
||||
const Address src(from(), Interpreter::local_offset_in_bytes(offset()));
|
||||
|
||||
switch (_num_int_args) {
|
||||
case 0:
|
||||
__ ldr(c_rarg1, src);
|
||||
_num_int_args++;
|
||||
break;
|
||||
case 1:
|
||||
__ ldr(c_rarg2, src);
|
||||
_num_int_args++;
|
||||
break;
|
||||
case 2:
|
||||
__ ldr(c_rarg3, src);
|
||||
_num_int_args++;
|
||||
break;
|
||||
case 3:
|
||||
__ ldr(c_rarg4, src);
|
||||
_num_int_args++;
|
||||
break;
|
||||
case 4:
|
||||
__ ldr(c_rarg5, src);
|
||||
_num_int_args++;
|
||||
break;
|
||||
case 5:
|
||||
__ ldr(c_rarg6, src);
|
||||
_num_int_args++;
|
||||
break;
|
||||
case 6:
|
||||
__ ldr(c_rarg7, src);
|
||||
_num_int_args++;
|
||||
break;
|
||||
default:
|
||||
__ ldr(r0, src);
|
||||
__ str(r0, Address(to(), _stack_offset));
|
||||
_stack_offset += wordSize;
|
||||
_num_int_args++;
|
||||
break;
|
||||
Register reg = next_gpr();
|
||||
if (reg != noreg) {
|
||||
__ ldr(reg, src);
|
||||
} else {
|
||||
__ ldrw(r0, src);
|
||||
__ strw(r0, Address(to(), next_stack_offset(sizeof(jint))));
|
||||
}
|
||||
}
|
||||
|
||||
void InterpreterRuntime::SignatureHandlerGenerator::pass_long() {
|
||||
const Address src(from(), Interpreter::local_offset_in_bytes(offset() + 1));
|
||||
|
||||
switch (_num_int_args) {
|
||||
case 0:
|
||||
__ ldr(c_rarg1, src);
|
||||
_num_int_args++;
|
||||
break;
|
||||
case 1:
|
||||
__ ldr(c_rarg2, src);
|
||||
_num_int_args++;
|
||||
break;
|
||||
case 2:
|
||||
__ ldr(c_rarg3, src);
|
||||
_num_int_args++;
|
||||
break;
|
||||
case 3:
|
||||
__ ldr(c_rarg4, src);
|
||||
_num_int_args++;
|
||||
break;
|
||||
case 4:
|
||||
__ ldr(c_rarg5, src);
|
||||
_num_int_args++;
|
||||
break;
|
||||
case 5:
|
||||
__ ldr(c_rarg6, src);
|
||||
_num_int_args++;
|
||||
break;
|
||||
case 6:
|
||||
__ ldr(c_rarg7, src);
|
||||
_num_int_args++;
|
||||
break;
|
||||
default:
|
||||
Register reg = next_gpr();
|
||||
if (reg != noreg) {
|
||||
__ ldr(reg, src);
|
||||
} else {
|
||||
__ ldr(r0, src);
|
||||
__ str(r0, Address(to(), _stack_offset));
|
||||
_stack_offset += wordSize;
|
||||
_num_int_args++;
|
||||
break;
|
||||
__ str(r0, Address(to(), next_stack_offset(sizeof(jlong))));
|
||||
}
|
||||
}
|
||||
|
||||
void InterpreterRuntime::SignatureHandlerGenerator::pass_float() {
|
||||
const Address src(from(), Interpreter::local_offset_in_bytes(offset()));
|
||||
|
||||
if (_num_fp_args < Argument::n_float_register_parameters_c) {
|
||||
__ ldrs(as_FloatRegister(_num_fp_args++), src);
|
||||
FloatRegister reg = next_fpr();
|
||||
if (reg != fnoreg) {
|
||||
__ ldrs(reg, src);
|
||||
} else {
|
||||
__ ldrw(r0, src);
|
||||
__ strw(r0, Address(to(), _stack_offset));
|
||||
_stack_offset += wordSize;
|
||||
_num_fp_args++;
|
||||
__ strw(r0, Address(to(), next_stack_offset(sizeof(jfloat))));
|
||||
}
|
||||
}
|
||||
|
||||
void InterpreterRuntime::SignatureHandlerGenerator::pass_double() {
|
||||
const Address src(from(), Interpreter::local_offset_in_bytes(offset() + 1));
|
||||
|
||||
if (_num_fp_args < Argument::n_float_register_parameters_c) {
|
||||
__ ldrd(as_FloatRegister(_num_fp_args++), src);
|
||||
FloatRegister reg = next_fpr();
|
||||
if (reg != fnoreg) {
|
||||
__ ldrd(reg, src);
|
||||
} else {
|
||||
__ ldr(r0, src);
|
||||
__ str(r0, Address(to(), _stack_offset));
|
||||
_stack_offset += wordSize;
|
||||
_num_fp_args++;
|
||||
__ str(r0, Address(to(), next_stack_offset(sizeof(jdouble))));
|
||||
}
|
||||
}
|
||||
|
||||
void InterpreterRuntime::SignatureHandlerGenerator::pass_object() {
|
||||
|
||||
switch (_num_int_args) {
|
||||
case 0:
|
||||
Register reg = next_gpr();
|
||||
if (reg == c_rarg1) {
|
||||
assert(offset() == 0, "argument register 1 can only be (non-null) receiver");
|
||||
__ add(c_rarg1, from(), Interpreter::local_offset_in_bytes(offset()));
|
||||
_num_int_args++;
|
||||
break;
|
||||
case 1:
|
||||
{
|
||||
__ add(r0, from(), Interpreter::local_offset_in_bytes(offset()));
|
||||
__ mov(c_rarg2, 0);
|
||||
__ ldr(temp(), r0);
|
||||
Label L;
|
||||
__ cbz(temp(), L);
|
||||
__ mov(c_rarg2, r0);
|
||||
__ bind(L);
|
||||
_num_int_args++;
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
__ add(r0, from(), Interpreter::local_offset_in_bytes(offset()));
|
||||
__ mov(c_rarg3, 0);
|
||||
__ ldr(temp(), r0);
|
||||
Label L;
|
||||
__ cbz(temp(), L);
|
||||
__ mov(c_rarg3, r0);
|
||||
__ bind(L);
|
||||
_num_int_args++;
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
__ add(r0, from(), Interpreter::local_offset_in_bytes(offset()));
|
||||
__ mov(c_rarg4, 0);
|
||||
__ ldr(temp(), r0);
|
||||
Label L;
|
||||
__ cbz(temp(), L);
|
||||
__ mov(c_rarg4, r0);
|
||||
__ bind(L);
|
||||
_num_int_args++;
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
__ add(r0, from(), Interpreter::local_offset_in_bytes(offset()));
|
||||
__ mov(c_rarg5, 0);
|
||||
__ ldr(temp(), r0);
|
||||
Label L;
|
||||
__ cbz(temp(), L);
|
||||
__ mov(c_rarg5, r0);
|
||||
__ bind(L);
|
||||
_num_int_args++;
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
{
|
||||
__ add(r0, from(), Interpreter::local_offset_in_bytes(offset()));
|
||||
__ mov(c_rarg6, 0);
|
||||
__ ldr(temp(), r0);
|
||||
Label L;
|
||||
__ cbz(temp(), L);
|
||||
__ mov(c_rarg6, r0);
|
||||
__ bind(L);
|
||||
_num_int_args++;
|
||||
break;
|
||||
}
|
||||
case 6:
|
||||
{
|
||||
__ add(r0, from(), Interpreter::local_offset_in_bytes(offset()));
|
||||
__ mov(c_rarg7, 0);
|
||||
__ ldr(temp(), r0);
|
||||
Label L;
|
||||
__ cbz(temp(), L);
|
||||
__ mov(c_rarg7, r0);
|
||||
__ bind(L);
|
||||
_num_int_args++;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
__ add(r0, from(), Interpreter::local_offset_in_bytes(offset()));
|
||||
__ ldr(temp(), r0);
|
||||
Label L;
|
||||
__ cbnz(temp(), L);
|
||||
__ mov(r0, zr);
|
||||
__ bind(L);
|
||||
__ str(r0, Address(to(), _stack_offset));
|
||||
_stack_offset += wordSize;
|
||||
_num_int_args++;
|
||||
break;
|
||||
}
|
||||
} else if (reg != noreg) {
|
||||
__ add(r0, from(), Interpreter::local_offset_in_bytes(offset()));
|
||||
__ mov(reg, 0);
|
||||
__ ldr(temp(), r0);
|
||||
Label L;
|
||||
__ cbz(temp(), L);
|
||||
__ mov(reg, r0);
|
||||
__ bind(L);
|
||||
} else {
|
||||
__ add(r0, from(), Interpreter::local_offset_in_bytes(offset()));
|
||||
__ ldr(temp(), r0);
|
||||
Label L;
|
||||
__ cbnz(temp(), L);
|
||||
__ mov(r0, zr);
|
||||
__ bind(L);
|
||||
STATIC_ASSERT(sizeof(jobject) == wordSize);
|
||||
__ str(r0, Address(to(), next_stack_offset(sizeof(jobject))));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -277,81 +196,98 @@ class SlowSignatureHandler
|
||||
: public NativeSignatureIterator {
|
||||
private:
|
||||
address _from;
|
||||
intptr_t* _to;
|
||||
char* _to;
|
||||
intptr_t* _int_args;
|
||||
intptr_t* _fp_args;
|
||||
intptr_t* _fp_identifiers;
|
||||
unsigned int _num_int_args;
|
||||
unsigned int _num_fp_args;
|
||||
unsigned int _num_reg_int_args;
|
||||
unsigned int _num_reg_fp_args;
|
||||
|
||||
virtual void pass_int()
|
||||
{
|
||||
jint from_obj = *(jint *)(_from+Interpreter::local_offset_in_bytes(0));
|
||||
intptr_t* single_slot_addr() {
|
||||
intptr_t* from_addr = (intptr_t*)(_from+Interpreter::local_offset_in_bytes(0));
|
||||
_from -= Interpreter::stackElementSize;
|
||||
|
||||
if (_num_int_args < Argument::n_int_register_parameters_c-1) {
|
||||
*_int_args++ = from_obj;
|
||||
_num_int_args++;
|
||||
} else {
|
||||
*_to++ = from_obj;
|
||||
_num_int_args++;
|
||||
}
|
||||
return from_addr;
|
||||
}
|
||||
|
||||
virtual void pass_long()
|
||||
{
|
||||
intptr_t from_obj = *(intptr_t*)(_from+Interpreter::local_offset_in_bytes(1));
|
||||
intptr_t* double_slot_addr() {
|
||||
intptr_t* from_addr = (intptr_t*)(_from+Interpreter::local_offset_in_bytes(1));
|
||||
_from -= 2*Interpreter::stackElementSize;
|
||||
return from_addr;
|
||||
}
|
||||
|
||||
if (_num_int_args < Argument::n_int_register_parameters_c-1) {
|
||||
*_int_args++ = from_obj;
|
||||
_num_int_args++;
|
||||
} else {
|
||||
*_to++ = from_obj;
|
||||
_num_int_args++;
|
||||
int pass_gpr(intptr_t value) {
|
||||
if (_num_reg_int_args < Argument::n_int_register_parameters_c-1) {
|
||||
*_int_args++ = value;
|
||||
return _num_reg_int_args++;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
int pass_fpr(intptr_t value) {
|
||||
if (_num_reg_fp_args < Argument::n_float_register_parameters_c) {
|
||||
*_fp_args++ = value;
|
||||
return _num_reg_fp_args++;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
void pass_stack(T value) {
|
||||
MACOS_ONLY(_to = align_up(_to, sizeof(value)));
|
||||
*(T *)_to = value;
|
||||
_to += NOT_MACOS(wordSize) MACOS_ONLY(sizeof(value));
|
||||
}
|
||||
|
||||
virtual void pass_byte() {
|
||||
jbyte value = *(jbyte*)single_slot_addr();
|
||||
if (pass_gpr(value) < 0) {
|
||||
pass_stack<>(value);
|
||||
}
|
||||
}
|
||||
|
||||
virtual void pass_object()
|
||||
{
|
||||
intptr_t *from_addr = (intptr_t*)(_from + Interpreter::local_offset_in_bytes(0));
|
||||
_from -= Interpreter::stackElementSize;
|
||||
|
||||
if (_num_int_args < Argument::n_int_register_parameters_c-1) {
|
||||
*_int_args++ = (*from_addr == 0) ? NULL : (intptr_t)from_addr;
|
||||
_num_int_args++;
|
||||
} else {
|
||||
*_to++ = (*from_addr == 0) ? NULL : (intptr_t) from_addr;
|
||||
_num_int_args++;
|
||||
virtual void pass_short() {
|
||||
jshort value = *(jshort*)single_slot_addr();
|
||||
if (pass_gpr(value) < 0) {
|
||||
pass_stack<>(value);
|
||||
}
|
||||
}
|
||||
|
||||
virtual void pass_float()
|
||||
{
|
||||
jint from_obj = *(jint*)(_from+Interpreter::local_offset_in_bytes(0));
|
||||
_from -= Interpreter::stackElementSize;
|
||||
|
||||
if (_num_fp_args < Argument::n_float_register_parameters_c) {
|
||||
*_fp_args++ = from_obj;
|
||||
_num_fp_args++;
|
||||
} else {
|
||||
*_to++ = from_obj;
|
||||
_num_fp_args++;
|
||||
virtual void pass_int() {
|
||||
jint value = *(jint*)single_slot_addr();
|
||||
if (pass_gpr(value) < 0) {
|
||||
pass_stack<>(value);
|
||||
}
|
||||
}
|
||||
|
||||
virtual void pass_double()
|
||||
{
|
||||
intptr_t from_obj = *(intptr_t*)(_from+Interpreter::local_offset_in_bytes(1));
|
||||
_from -= 2*Interpreter::stackElementSize;
|
||||
virtual void pass_long() {
|
||||
intptr_t value = *double_slot_addr();
|
||||
if (pass_gpr(value) < 0) {
|
||||
pass_stack<>(value);
|
||||
}
|
||||
}
|
||||
|
||||
if (_num_fp_args < Argument::n_float_register_parameters_c) {
|
||||
*_fp_args++ = from_obj;
|
||||
*_fp_identifiers |= (1ull << _num_fp_args); // mark as double
|
||||
_num_fp_args++;
|
||||
virtual void pass_object() {
|
||||
intptr_t* addr = single_slot_addr();
|
||||
intptr_t value = *addr == 0 ? NULL : (intptr_t)addr;
|
||||
if (pass_gpr(value) < 0) {
|
||||
pass_stack<>(value);
|
||||
}
|
||||
}
|
||||
|
||||
virtual void pass_float() {
|
||||
jint value = *(jint*)single_slot_addr();
|
||||
if (pass_fpr(value) < 0) {
|
||||
pass_stack<>(value);
|
||||
}
|
||||
}
|
||||
|
||||
virtual void pass_double() {
|
||||
intptr_t value = *double_slot_addr();
|
||||
int arg = pass_fpr(value);
|
||||
if (0 <= arg) {
|
||||
*_fp_identifiers |= (1ull << arg); // mark as double
|
||||
} else {
|
||||
*_to++ = from_obj;
|
||||
_num_fp_args++;
|
||||
pass_stack<>(value);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -360,14 +296,14 @@ class SlowSignatureHandler
|
||||
: NativeSignatureIterator(method)
|
||||
{
|
||||
_from = from;
|
||||
_to = to;
|
||||
_to = (char *)to;
|
||||
|
||||
_int_args = to - (method->is_static() ? 16 : 17);
|
||||
_fp_args = to - 8;
|
||||
_fp_identifiers = to - 9;
|
||||
*(int*) _fp_identifiers = 0;
|
||||
_num_int_args = (method->is_static() ? 1 : 0);
|
||||
_num_fp_args = 0;
|
||||
_num_reg_int_args = (method->is_static() ? 1 : 0);
|
||||
_num_reg_fp_args = 0;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/*
|
||||
* Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1998, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2014, Red Hat Inc. All rights reserved.
|
||||
* Copyright (c) 2021, Azul Systems, Inc. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -34,16 +35,22 @@
|
||||
class SignatureHandlerGenerator: public NativeSignatureIterator {
|
||||
private:
|
||||
MacroAssembler* _masm;
|
||||
unsigned int _num_fp_args;
|
||||
unsigned int _num_int_args;
|
||||
unsigned int _num_reg_fp_args;
|
||||
unsigned int _num_reg_int_args;
|
||||
int _stack_offset;
|
||||
|
||||
void pass_byte();
|
||||
void pass_short();
|
||||
void pass_int();
|
||||
void pass_long();
|
||||
void pass_float();
|
||||
void pass_double();
|
||||
void pass_object();
|
||||
|
||||
Register next_gpr();
|
||||
FloatRegister next_fpr();
|
||||
int next_stack_offset(unsigned elem_size);
|
||||
|
||||
public:
|
||||
// Creation
|
||||
SignatureHandlerGenerator(const methodHandle& method, CodeBuffer* buffer);
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
#include "prims/jniFastGetField.hpp"
|
||||
#include "prims/jvm_misc.hpp"
|
||||
#include "runtime/safepoint.hpp"
|
||||
#include "runtime/threadWXSetters.inline.hpp"
|
||||
|
||||
#define __ masm->
|
||||
|
||||
@@ -51,6 +52,48 @@ static const Register roffset = r5;
|
||||
static const Register rcounter_addr = r6;
|
||||
static const Register result = r7;
|
||||
|
||||
// On macos/aarch64 we need to ensure WXExec mode when running generated
|
||||
// FastGetXXXField, as these functions can be called from WXWrite context
|
||||
// (8262896). So each FastGetXXXField is wrapped into a C++ statically
|
||||
// compiled template function that optionally switches to WXExec if necessary.
|
||||
|
||||
#ifdef __APPLE__
|
||||
|
||||
static address generated_fast_get_field[T_LONG + 1 - T_BOOLEAN];
|
||||
|
||||
template<int BType> struct BasicTypeToJni {};
|
||||
template<> struct BasicTypeToJni<T_BOOLEAN> { static const jboolean jni_type; };
|
||||
template<> struct BasicTypeToJni<T_BYTE> { static const jbyte jni_type; };
|
||||
template<> struct BasicTypeToJni<T_CHAR> { static const jchar jni_type; };
|
||||
template<> struct BasicTypeToJni<T_SHORT> { static const jshort jni_type; };
|
||||
template<> struct BasicTypeToJni<T_INT> { static const jint jni_type; };
|
||||
template<> struct BasicTypeToJni<T_LONG> { static const jlong jni_type; };
|
||||
template<> struct BasicTypeToJni<T_FLOAT> { static const jfloat jni_type; };
|
||||
template<> struct BasicTypeToJni<T_DOUBLE> { static const jdouble jni_type; };
|
||||
|
||||
template<int BType>
|
||||
decltype(BasicTypeToJni<BType>::jni_type) static_fast_get_field_wrapper(JNIEnv *env, jobject obj, jfieldID fieldID) {
|
||||
JavaThread* thread = JavaThread::thread_from_jni_environment(env);
|
||||
ThreadWXEnable wx(WXExec, thread);
|
||||
address get_field_addr = generated_fast_get_field[BType - T_BOOLEAN];
|
||||
return ((decltype(BasicTypeToJni<BType>::jni_type)(*)(JNIEnv *env, jobject obj, jfieldID fieldID))get_field_addr)(env, obj, fieldID);
|
||||
}
|
||||
|
||||
template<int BType>
|
||||
address JNI_FastGetField::generate_fast_get_int_field1() {
|
||||
generated_fast_get_field[BType - T_BOOLEAN] = generate_fast_get_int_field0((BasicType)BType);
|
||||
return (address)static_fast_get_field_wrapper<BType>;
|
||||
}
|
||||
|
||||
#else // __APPLE__
|
||||
|
||||
template<int BType>
|
||||
address JNI_FastGetField::generate_fast_get_int_field1() {
|
||||
return generate_fast_get_int_field0((BasicType)BType);
|
||||
}
|
||||
|
||||
#endif // __APPLE__
|
||||
|
||||
address JNI_FastGetField::generate_fast_get_int_field0(BasicType type) {
|
||||
const char *name;
|
||||
switch (type) {
|
||||
@@ -147,33 +190,33 @@ address JNI_FastGetField::generate_fast_get_int_field0(BasicType type) {
|
||||
}
|
||||
|
||||
address JNI_FastGetField::generate_fast_get_boolean_field() {
|
||||
return generate_fast_get_int_field0(T_BOOLEAN);
|
||||
return generate_fast_get_int_field1<T_BOOLEAN>();
|
||||
}
|
||||
|
||||
address JNI_FastGetField::generate_fast_get_byte_field() {
|
||||
return generate_fast_get_int_field0(T_BYTE);
|
||||
return generate_fast_get_int_field1<T_BYTE>();
|
||||
}
|
||||
|
||||
address JNI_FastGetField::generate_fast_get_char_field() {
|
||||
return generate_fast_get_int_field0(T_CHAR);
|
||||
return generate_fast_get_int_field1<T_CHAR>();
|
||||
}
|
||||
|
||||
address JNI_FastGetField::generate_fast_get_short_field() {
|
||||
return generate_fast_get_int_field0(T_SHORT);
|
||||
return generate_fast_get_int_field1<T_SHORT>();
|
||||
}
|
||||
|
||||
address JNI_FastGetField::generate_fast_get_int_field() {
|
||||
return generate_fast_get_int_field0(T_INT);
|
||||
return generate_fast_get_int_field1<T_INT>();
|
||||
}
|
||||
|
||||
address JNI_FastGetField::generate_fast_get_long_field() {
|
||||
return generate_fast_get_int_field0(T_LONG);
|
||||
return generate_fast_get_int_field1<T_LONG>();
|
||||
}
|
||||
|
||||
address JNI_FastGetField::generate_fast_get_float_field() {
|
||||
return generate_fast_get_int_field0(T_FLOAT);
|
||||
return generate_fast_get_int_field1<T_FLOAT>();
|
||||
}
|
||||
|
||||
address JNI_FastGetField::generate_fast_get_double_field() {
|
||||
return generate_fast_get_int_field0(T_DOUBLE);
|
||||
return generate_fast_get_int_field1<T_DOUBLE>();
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
* questions.
|
||||
*/
|
||||
|
||||
#include "precompiled.hpp"
|
||||
#include "asm/macroAssembler.hpp"
|
||||
#include "jvmci/jvmciCodeInstaller.hpp"
|
||||
#include "jvmci/jvmciRuntime.hpp"
|
||||
|
||||
@@ -297,7 +297,7 @@ void MacroAssembler::safepoint_poll(Label& slow_path) {
|
||||
ldr(rscratch1, Address(rthread, Thread::polling_page_offset()));
|
||||
tbnz(rscratch1, exact_log2(SafepointMechanism::poll_bit()), slow_path);
|
||||
} else {
|
||||
unsigned long offset;
|
||||
uint64_t offset;
|
||||
adrp(rscratch1, ExternalAddress(SafepointSynchronize::address_of_state()), offset);
|
||||
ldrw(rscratch1, Address(rscratch1, offset));
|
||||
assert(SafepointSynchronize::_not_synchronized == 0, "rewrite this code");
|
||||
@@ -405,7 +405,7 @@ void MacroAssembler::far_call(Address entry, CodeBuffer *cbuf, Register tmp) {
|
||||
assert(CodeCache::find_blob(entry.target()) != NULL,
|
||||
"destination of far call not found in code cache");
|
||||
if (far_branches()) {
|
||||
uintptr_t offset;
|
||||
uint64_t offset;
|
||||
// We can use ADRP here because we know that the total size of
|
||||
// the code cache cannot exceed 2Gb.
|
||||
adrp(tmp, entry, offset);
|
||||
@@ -423,7 +423,7 @@ void MacroAssembler::far_jump(Address entry, CodeBuffer *cbuf, Register tmp) {
|
||||
assert(CodeCache::find_blob(entry.target()) != NULL,
|
||||
"destination of far call not found in code cache");
|
||||
if (far_branches()) {
|
||||
uintptr_t offset;
|
||||
uint64_t offset;
|
||||
// We can use ADRP here because we know that the total size of
|
||||
// the code cache cannot exceed 2Gb.
|
||||
adrp(tmp, entry, offset);
|
||||
@@ -1492,7 +1492,7 @@ void MacroAssembler::movptr(Register r, uintptr_t imm64) {
|
||||
#ifndef PRODUCT
|
||||
{
|
||||
char buffer[64];
|
||||
snprintf(buffer, sizeof(buffer), "0x%"PRIX64, imm64);
|
||||
snprintf(buffer, sizeof(buffer), "0x%" PRIX64, (uint64_t)imm64);
|
||||
block_comment(buffer);
|
||||
}
|
||||
#endif
|
||||
@@ -1555,7 +1555,7 @@ void MacroAssembler::mov_immediate64(Register dst, uint64_t imm64)
|
||||
#ifndef PRODUCT
|
||||
{
|
||||
char buffer[64];
|
||||
snprintf(buffer, sizeof(buffer), "0x%"PRIX64, imm64);
|
||||
snprintf(buffer, sizeof(buffer), "0x%" PRIX64, imm64);
|
||||
block_comment(buffer);
|
||||
}
|
||||
#endif
|
||||
@@ -1668,7 +1668,7 @@ void MacroAssembler::mov_immediate32(Register dst, uint32_t imm32)
|
||||
#ifndef PRODUCT
|
||||
{
|
||||
char buffer[64];
|
||||
snprintf(buffer, sizeof(buffer), "0x%"PRIX32, imm32);
|
||||
snprintf(buffer, sizeof(buffer), "0x%" PRIX32, imm32);
|
||||
block_comment(buffer);
|
||||
}
|
||||
#endif
|
||||
@@ -1832,7 +1832,7 @@ bool MacroAssembler::try_merge_ldst(Register rt, const Address &adr, size_t size
|
||||
return true;
|
||||
} else {
|
||||
assert(size_in_bytes == 8 || size_in_bytes == 4, "only 8 bytes or 4 bytes load/store is supported.");
|
||||
const unsigned mask = size_in_bytes - 1;
|
||||
const uint64_t mask = size_in_bytes - 1;
|
||||
if (adr.getMode() == Address::base_plus_offset &&
|
||||
(adr.offset() & mask) == 0) { // only supports base_plus_offset.
|
||||
code()->set_last_insn(pc());
|
||||
@@ -2040,11 +2040,17 @@ void MacroAssembler::increment(Address dst, int value)
|
||||
|
||||
|
||||
void MacroAssembler::pusha() {
|
||||
push(0x7fffffff, sp);
|
||||
push(RegSet::range(r0, r30), sp);
|
||||
}
|
||||
|
||||
void MacroAssembler::popa() {
|
||||
pop(0x7fffffff, sp);
|
||||
pop(RegSet::range(r0, r17), sp);
|
||||
#ifdef R18_RESERVED
|
||||
ldp(zr, r19, Address(post(sp, 2 * wordSize)));
|
||||
pop(RegSet::range(r20, r30), sp);
|
||||
#else
|
||||
pop(RegSet::range(r18_tls, r30), sp);
|
||||
#endif
|
||||
}
|
||||
|
||||
// Push lots of registers in the bit set supplied. Don't push sp.
|
||||
@@ -2496,43 +2502,43 @@ void MacroAssembler::debug64(char* msg, int64_t pc, int64_t regs[])
|
||||
#endif
|
||||
if (os::message_box(msg, "Execution stopped, print registers?")) {
|
||||
ttyLocker ttyl;
|
||||
tty->print_cr(" pc = 0x%016lx", pc);
|
||||
tty->print_cr(" pc = 0x%016" PRIx64, pc);
|
||||
#ifndef PRODUCT
|
||||
tty->cr();
|
||||
findpc(pc);
|
||||
tty->cr();
|
||||
#endif
|
||||
tty->print_cr(" r0 = 0x%016lx", regs[0]);
|
||||
tty->print_cr(" r1 = 0x%016lx", regs[1]);
|
||||
tty->print_cr(" r2 = 0x%016lx", regs[2]);
|
||||
tty->print_cr(" r3 = 0x%016lx", regs[3]);
|
||||
tty->print_cr(" r4 = 0x%016lx", regs[4]);
|
||||
tty->print_cr(" r5 = 0x%016lx", regs[5]);
|
||||
tty->print_cr(" r6 = 0x%016lx", regs[6]);
|
||||
tty->print_cr(" r7 = 0x%016lx", regs[7]);
|
||||
tty->print_cr(" r8 = 0x%016lx", regs[8]);
|
||||
tty->print_cr(" r9 = 0x%016lx", regs[9]);
|
||||
tty->print_cr("r10 = 0x%016lx", regs[10]);
|
||||
tty->print_cr("r11 = 0x%016lx", regs[11]);
|
||||
tty->print_cr("r12 = 0x%016lx", regs[12]);
|
||||
tty->print_cr("r13 = 0x%016lx", regs[13]);
|
||||
tty->print_cr("r14 = 0x%016lx", regs[14]);
|
||||
tty->print_cr("r15 = 0x%016lx", regs[15]);
|
||||
tty->print_cr("r16 = 0x%016lx", regs[16]);
|
||||
tty->print_cr("r17 = 0x%016lx", regs[17]);
|
||||
tty->print_cr("r18 = 0x%016lx", regs[18]);
|
||||
tty->print_cr("r19 = 0x%016lx", regs[19]);
|
||||
tty->print_cr("r20 = 0x%016lx", regs[20]);
|
||||
tty->print_cr("r21 = 0x%016lx", regs[21]);
|
||||
tty->print_cr("r22 = 0x%016lx", regs[22]);
|
||||
tty->print_cr("r23 = 0x%016lx", regs[23]);
|
||||
tty->print_cr("r24 = 0x%016lx", regs[24]);
|
||||
tty->print_cr("r25 = 0x%016lx", regs[25]);
|
||||
tty->print_cr("r26 = 0x%016lx", regs[26]);
|
||||
tty->print_cr("r27 = 0x%016lx", regs[27]);
|
||||
tty->print_cr("r28 = 0x%016lx", regs[28]);
|
||||
tty->print_cr("r30 = 0x%016lx", regs[30]);
|
||||
tty->print_cr("r31 = 0x%016lx", regs[31]);
|
||||
tty->print_cr(" r0 = 0x%016" PRIx64, regs[0]);
|
||||
tty->print_cr(" r1 = 0x%016" PRIx64, regs[1]);
|
||||
tty->print_cr(" r2 = 0x%016" PRIx64, regs[2]);
|
||||
tty->print_cr(" r3 = 0x%016" PRIx64, regs[3]);
|
||||
tty->print_cr(" r4 = 0x%016" PRIx64, regs[4]);
|
||||
tty->print_cr(" r5 = 0x%016" PRIx64, regs[5]);
|
||||
tty->print_cr(" r6 = 0x%016" PRIx64, regs[6]);
|
||||
tty->print_cr(" r7 = 0x%016" PRIx64, regs[7]);
|
||||
tty->print_cr(" r8 = 0x%016" PRIx64, regs[8]);
|
||||
tty->print_cr(" r9 = 0x%016" PRIx64, regs[9]);
|
||||
tty->print_cr("r10 = 0x%016" PRIx64, regs[10]);
|
||||
tty->print_cr("r11 = 0x%016" PRIx64, regs[11]);
|
||||
tty->print_cr("r12 = 0x%016" PRIx64, regs[12]);
|
||||
tty->print_cr("r13 = 0x%016" PRIx64, regs[13]);
|
||||
tty->print_cr("r14 = 0x%016" PRIx64, regs[14]);
|
||||
tty->print_cr("r15 = 0x%016" PRIx64, regs[15]);
|
||||
tty->print_cr("r16 = 0x%016" PRIx64, regs[16]);
|
||||
tty->print_cr("r17 = 0x%016" PRIx64, regs[17]);
|
||||
tty->print_cr("r18 = 0x%016" PRIx64, regs[18]);
|
||||
tty->print_cr("r19 = 0x%016" PRIx64, regs[19]);
|
||||
tty->print_cr("r20 = 0x%016" PRIx64, regs[20]);
|
||||
tty->print_cr("r21 = 0x%016" PRIx64, regs[21]);
|
||||
tty->print_cr("r22 = 0x%016" PRIx64, regs[22]);
|
||||
tty->print_cr("r23 = 0x%016" PRIx64, regs[23]);
|
||||
tty->print_cr("r24 = 0x%016" PRIx64, regs[24]);
|
||||
tty->print_cr("r25 = 0x%016" PRIx64, regs[25]);
|
||||
tty->print_cr("r26 = 0x%016" PRIx64, regs[26]);
|
||||
tty->print_cr("r27 = 0x%016" PRIx64, regs[27]);
|
||||
tty->print_cr("r28 = 0x%016" PRIx64, regs[28]);
|
||||
tty->print_cr("r30 = 0x%016" PRIx64, regs[30]);
|
||||
tty->print_cr("r31 = 0x%016" PRIx64, regs[31]);
|
||||
BREAKPOINT;
|
||||
}
|
||||
ThreadStateTransition::transition(thread, _thread_in_vm, saved_state);
|
||||
@@ -2544,9 +2550,17 @@ void MacroAssembler::debug64(char* msg, int64_t pc, int64_t regs[])
|
||||
}
|
||||
}
|
||||
|
||||
RegSet MacroAssembler::call_clobbered_registers() {
|
||||
RegSet regs = RegSet::range(r0, r17) - RegSet::of(rscratch1, rscratch2);
|
||||
#ifndef R18_RESERVED
|
||||
regs += r18_tls;
|
||||
#endif
|
||||
return regs;
|
||||
}
|
||||
|
||||
void MacroAssembler::push_call_clobbered_registers() {
|
||||
int step = 4 * wordSize;
|
||||
push(RegSet::range(r0, r18) - RegSet::of(rscratch1, rscratch2), sp);
|
||||
push(call_clobbered_registers(), sp);
|
||||
sub(sp, sp, step);
|
||||
mov(rscratch1, -step);
|
||||
// Push v0-v7, v16-v31.
|
||||
@@ -2566,12 +2580,12 @@ void MacroAssembler::pop_call_clobbered_registers() {
|
||||
as_FloatRegister(i+3), T1D, Address(post(sp, 4 * wordSize)));
|
||||
}
|
||||
|
||||
pop(RegSet::range(r0, r18) - RegSet::of(rscratch1, rscratch2), sp);
|
||||
pop(call_clobbered_registers() - RegSet::of(rscratch1, rscratch2), sp);
|
||||
}
|
||||
|
||||
void MacroAssembler::push_CPU_state(bool save_vectors) {
|
||||
int step = (save_vectors ? 8 : 4) * wordSize;
|
||||
push(0x3fffffff, sp); // integer registers except lr & sp
|
||||
push(RegSet::range(r0, r29), sp); // integer registers except lr & sp
|
||||
mov(rscratch1, -step);
|
||||
sub(sp, sp, step);
|
||||
for (int i = 28; i >= 4; i -= 4) {
|
||||
@@ -2586,7 +2600,15 @@ void MacroAssembler::pop_CPU_state(bool restore_vectors) {
|
||||
for (int i = 0; i <= 28; i += 4)
|
||||
ld1(as_FloatRegister(i), as_FloatRegister(i+1), as_FloatRegister(i+2),
|
||||
as_FloatRegister(i+3), restore_vectors ? T2D : T1D, Address(post(sp, step)));
|
||||
pop(0x3fffffff, sp); // integer registers except lr & sp
|
||||
|
||||
// integer registers except lr & sp
|
||||
pop(RegSet::range(r0, r17), sp);
|
||||
#ifdef R18_RESERVED
|
||||
ldp(zr, r19, Address(post(sp, 2 * wordSize)));
|
||||
pop(RegSet::range(r20, r29), sp);
|
||||
#else
|
||||
pop(RegSet::range(r18_tls, r29), sp);
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2752,7 +2774,7 @@ void MacroAssembler::merge_ldst(Register rt,
|
||||
// Overwrite previous generated binary.
|
||||
code_section()->set_end(prev);
|
||||
|
||||
const int sz = prev_ldst->size_in_bytes();
|
||||
const size_t sz = prev_ldst->size_in_bytes();
|
||||
assert(sz == 8 || sz == 4, "only supports 64/32bit merging.");
|
||||
if (!is_store) {
|
||||
BLOCK_COMMENT("merged ldr pair");
|
||||
@@ -4199,7 +4221,7 @@ void MacroAssembler::get_polling_page(Register dest, address page, relocInfo::re
|
||||
if (SafepointMechanism::uses_thread_local_poll()) {
|
||||
ldr(dest, Address(rthread, Thread::polling_page_offset()));
|
||||
} else {
|
||||
unsigned long off;
|
||||
uint64_t off;
|
||||
adrp(dest, Address(page, rtype), off);
|
||||
assert(off == 0, "polling page must be page aligned");
|
||||
}
|
||||
@@ -4797,7 +4819,7 @@ void MacroAssembler::string_compare(Register str1, Register str2,
|
||||
Register cnt1, Register cnt2, Register result, Register tmp1, Register tmp2,
|
||||
FloatRegister vtmp1, FloatRegister vtmp2, FloatRegister vtmp3, int ae) {
|
||||
Label DONE, SHORT_LOOP, SHORT_STRING, SHORT_LAST, TAIL, STUB,
|
||||
DIFFERENCE, NEXT_WORD, SHORT_LOOP_TAIL, SHORT_LAST2, SHORT_LAST_INIT,
|
||||
DIFF, NEXT_WORD, SHORT_LOOP_TAIL, SHORT_LAST2, SHORT_LAST_INIT,
|
||||
SHORT_LOOP_START, TAIL_CHECK;
|
||||
|
||||
const int STUB_THRESHOLD = 64 + 8;
|
||||
@@ -4884,7 +4906,7 @@ void MacroAssembler::string_compare(Register str1, Register str2,
|
||||
adds(cnt2, cnt2, isUL ? 4 : 8);
|
||||
br(GE, TAIL);
|
||||
eor(rscratch2, tmp1, tmp2);
|
||||
cbnz(rscratch2, DIFFERENCE);
|
||||
cbnz(rscratch2, DIFF);
|
||||
// main loop
|
||||
bind(NEXT_WORD);
|
||||
if (str1_isL == str2_isL) {
|
||||
@@ -4910,10 +4932,10 @@ void MacroAssembler::string_compare(Register str1, Register str2,
|
||||
|
||||
eor(rscratch2, tmp1, tmp2);
|
||||
cbz(rscratch2, NEXT_WORD);
|
||||
b(DIFFERENCE);
|
||||
b(DIFF);
|
||||
bind(TAIL);
|
||||
eor(rscratch2, tmp1, tmp2);
|
||||
cbnz(rscratch2, DIFFERENCE);
|
||||
cbnz(rscratch2, DIFF);
|
||||
// Last longword. In the case where length == 4 we compare the
|
||||
// same longword twice, but that's still faster than another
|
||||
// conditional branch.
|
||||
@@ -4937,7 +4959,7 @@ void MacroAssembler::string_compare(Register str1, Register str2,
|
||||
|
||||
// Find the first different characters in the longwords and
|
||||
// compute their difference.
|
||||
bind(DIFFERENCE);
|
||||
bind(DIFF);
|
||||
rev(rscratch2, rscratch2);
|
||||
clz(rscratch2, rscratch2);
|
||||
andr(rscratch2, rscratch2, isLL ? -8 : -16);
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
#define CPU_AARCH64_VM_MACROASSEMBLER_AARCH64_HPP
|
||||
|
||||
#include "asm/assembler.inline.hpp"
|
||||
#include "runtime/vm_version.hpp"
|
||||
|
||||
// MacroAssembler extends Assembler by frequently used macros.
|
||||
//
|
||||
@@ -88,7 +89,7 @@ class MacroAssembler: public Assembler {
|
||||
= (operand_valid_for_logical_immediate(false /*is32*/,
|
||||
(uint64_t)Universe::narrow_klass_base())
|
||||
&& ((uint64_t)Universe::narrow_klass_base()
|
||||
> (1UL << log2_intptr(Universe::narrow_klass_range()))));
|
||||
> (1ULL << log2_intptr(checked_cast<uintptr_t>(Universe::narrow_klass_range())))));
|
||||
}
|
||||
|
||||
// These routines should emit JVMTI PopFrame and ForceEarlyReturn handling code.
|
||||
@@ -185,7 +186,15 @@ class MacroAssembler: public Assembler {
|
||||
mov(rscratch2, call_site);
|
||||
}
|
||||
|
||||
// Microsoft's MSVC team thinks that the __FUNCSIG__ is approximately (sympathy for calling conventions) equivalent to __PRETTY_FUNCTION__
|
||||
// Also, from Clang patch: "It is very similar to GCC's PRETTY_FUNCTION, except it prints the calling convention."
|
||||
// https://reviews.llvm.org/D3311
|
||||
|
||||
#ifdef _WIN64
|
||||
#define call_Unimplemented() _call_Unimplemented((address)__FUNCSIG__)
|
||||
#else
|
||||
#define call_Unimplemented() _call_Unimplemented((address)__PRETTY_FUNCTION__)
|
||||
#endif
|
||||
|
||||
// aliases defined in AARCH64 spec
|
||||
|
||||
@@ -460,6 +469,8 @@ public:
|
||||
void push(RegSet regs, Register stack) { if (regs.bits()) push(regs.bits(), stack); }
|
||||
void pop(RegSet regs, Register stack) { if (regs.bits()) pop(regs.bits(), stack); }
|
||||
|
||||
static RegSet call_clobbered_registers();
|
||||
|
||||
// Push and pop everything that might be clobbered by a native
|
||||
// runtime call except rscratch1 and rscratch2. (They are always
|
||||
// scratch, so we don't have to protect them.) Only save the lower
|
||||
@@ -470,31 +481,20 @@ public:
|
||||
// now mov instructions for loading absolute addresses and 32 or
|
||||
// 64 bit integers
|
||||
|
||||
inline void mov(Register dst, address addr)
|
||||
{
|
||||
mov_immediate64(dst, (uint64_t)addr);
|
||||
}
|
||||
inline void mov(Register dst, address addr) { mov_immediate64(dst, (uint64_t)addr); }
|
||||
|
||||
inline void mov(Register dst, uint64_t imm64)
|
||||
{
|
||||
mov_immediate64(dst, imm64);
|
||||
}
|
||||
inline void mov(Register dst, int imm64) { mov_immediate64(dst, (uint64_t)imm64); }
|
||||
inline void mov(Register dst, long imm64) { mov_immediate64(dst, (uint64_t)imm64); }
|
||||
inline void mov(Register dst, long long imm64) { mov_immediate64(dst, (uint64_t)imm64); }
|
||||
inline void mov(Register dst, unsigned int imm64) { mov_immediate64(dst, (uint64_t)imm64); }
|
||||
inline void mov(Register dst, unsigned long imm64) { mov_immediate64(dst, (uint64_t)imm64); }
|
||||
inline void mov(Register dst, unsigned long long imm64) { mov_immediate64(dst, (uint64_t)imm64); }
|
||||
|
||||
inline void movw(Register dst, uint32_t imm32)
|
||||
{
|
||||
mov_immediate32(dst, imm32);
|
||||
}
|
||||
|
||||
inline void mov(Register dst, int64_t l)
|
||||
{
|
||||
mov(dst, (uint64_t)l);
|
||||
}
|
||||
|
||||
inline void mov(Register dst, int i)
|
||||
{
|
||||
mov(dst, (int64_t)i);
|
||||
}
|
||||
|
||||
void mov(Register dst, RegisterOrConstant src) {
|
||||
if (src.is_register())
|
||||
mov(dst, src.as_register());
|
||||
@@ -514,10 +514,10 @@ public:
|
||||
|
||||
// Generalized Test Bit And Branch, including a "far" variety which
|
||||
// spans more than 32KiB.
|
||||
void tbr(Condition cond, Register Rt, int bitpos, Label &dest, bool far = false) {
|
||||
void tbr(Condition cond, Register Rt, int bitpos, Label &dest, bool isfar = false) {
|
||||
assert(cond == EQ || cond == NE, "must be");
|
||||
|
||||
if (far)
|
||||
if (isfar)
|
||||
cond = ~cond;
|
||||
|
||||
void (Assembler::* branch)(Register Rt, int bitpos, Label &L);
|
||||
@@ -526,7 +526,7 @@ public:
|
||||
else
|
||||
branch = &Assembler::tbnz;
|
||||
|
||||
if (far) {
|
||||
if (isfar) {
|
||||
Label L;
|
||||
(this->*branch)(Rt, bitpos, L);
|
||||
b(dest);
|
||||
@@ -1300,6 +1300,24 @@ public:
|
||||
Register zlen, Register tmp1, Register tmp2, Register tmp3,
|
||||
Register tmp4, Register tmp5, Register tmp6, Register tmp7);
|
||||
void mul_add(Register out, Register in, Register offs, Register len, Register k);
|
||||
void ghash_multiply(FloatRegister result_lo, FloatRegister result_hi,
|
||||
FloatRegister a, FloatRegister b, FloatRegister a1_xor_a0,
|
||||
FloatRegister tmp1, FloatRegister tmp2, FloatRegister tmp3);
|
||||
void ghash_reduce(FloatRegister result, FloatRegister lo, FloatRegister hi,
|
||||
FloatRegister p, FloatRegister z, FloatRegister t1);
|
||||
void ghash_processBlocks_wide(address p, Register state, Register subkeyH,
|
||||
Register data, Register blocks, int unrolls);
|
||||
void ghash_modmul (FloatRegister result,
|
||||
FloatRegister result_lo, FloatRegister result_hi, FloatRegister b,
|
||||
FloatRegister a, FloatRegister vzr, FloatRegister a1_xor_a0, FloatRegister p,
|
||||
FloatRegister t1, FloatRegister t2, FloatRegister t3);
|
||||
|
||||
void aesenc_loadkeys(Register key, Register keylen);
|
||||
void aesecb_encrypt(Register from, Register to, Register keylen,
|
||||
FloatRegister data = v0, int unrolls = 1);
|
||||
void aesecb_decrypt(Register from, Register to, Register key, Register keylen);
|
||||
void aes_round(FloatRegister input, FloatRegister subkey);
|
||||
|
||||
// ISB may be needed because of a safepoint
|
||||
void maybe_isb() { isb(); }
|
||||
|
||||
|
||||
685
src/hotspot/cpu/aarch64/macroAssembler_aarch64_aes.cpp
Normal file
685
src/hotspot/cpu/aarch64/macroAssembler_aarch64_aes.cpp
Normal file
@@ -0,0 +1,685 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2014, 2021, Red Hat Inc. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "precompiled.hpp"
|
||||
|
||||
#include "asm/assembler.hpp"
|
||||
#include "asm/assembler.inline.hpp"
|
||||
#include "macroAssembler_aarch64.hpp"
|
||||
#include "memory/resourceArea.hpp"
|
||||
#include "runtime/stubRoutines.hpp"
|
||||
|
||||
void MacroAssembler::aesecb_decrypt(Register from, Register to, Register key, Register keylen) {
|
||||
Label L_doLast;
|
||||
|
||||
ld1(v0, T16B, from); // get 16 bytes of input
|
||||
|
||||
ld1(v5, T16B, post(key, 16));
|
||||
rev32(v5, T16B, v5);
|
||||
|
||||
ld1(v1, v2, v3, v4, T16B, post(key, 64));
|
||||
rev32(v1, T16B, v1);
|
||||
rev32(v2, T16B, v2);
|
||||
rev32(v3, T16B, v3);
|
||||
rev32(v4, T16B, v4);
|
||||
aesd(v0, v1);
|
||||
aesimc(v0, v0);
|
||||
aesd(v0, v2);
|
||||
aesimc(v0, v0);
|
||||
aesd(v0, v3);
|
||||
aesimc(v0, v0);
|
||||
aesd(v0, v4);
|
||||
aesimc(v0, v0);
|
||||
|
||||
ld1(v1, v2, v3, v4, T16B, post(key, 64));
|
||||
rev32(v1, T16B, v1);
|
||||
rev32(v2, T16B, v2);
|
||||
rev32(v3, T16B, v3);
|
||||
rev32(v4, T16B, v4);
|
||||
aesd(v0, v1);
|
||||
aesimc(v0, v0);
|
||||
aesd(v0, v2);
|
||||
aesimc(v0, v0);
|
||||
aesd(v0, v3);
|
||||
aesimc(v0, v0);
|
||||
aesd(v0, v4);
|
||||
aesimc(v0, v0);
|
||||
|
||||
ld1(v1, v2, T16B, post(key, 32));
|
||||
rev32(v1, T16B, v1);
|
||||
rev32(v2, T16B, v2);
|
||||
|
||||
cmpw(keylen, 44);
|
||||
br(Assembler::EQ, L_doLast);
|
||||
|
||||
aesd(v0, v1);
|
||||
aesimc(v0, v0);
|
||||
aesd(v0, v2);
|
||||
aesimc(v0, v0);
|
||||
|
||||
ld1(v1, v2, T16B, post(key, 32));
|
||||
rev32(v1, T16B, v1);
|
||||
rev32(v2, T16B, v2);
|
||||
|
||||
cmpw(keylen, 52);
|
||||
br(Assembler::EQ, L_doLast);
|
||||
|
||||
aesd(v0, v1);
|
||||
aesimc(v0, v0);
|
||||
aesd(v0, v2);
|
||||
aesimc(v0, v0);
|
||||
|
||||
ld1(v1, v2, T16B, post(key, 32));
|
||||
rev32(v1, T16B, v1);
|
||||
rev32(v2, T16B, v2);
|
||||
|
||||
bind(L_doLast);
|
||||
|
||||
aesd(v0, v1);
|
||||
aesimc(v0, v0);
|
||||
aesd(v0, v2);
|
||||
|
||||
eor(v0, T16B, v0, v5);
|
||||
|
||||
st1(v0, T16B, to);
|
||||
|
||||
// Preserve the address of the start of the key
|
||||
sub(key, key, keylen, LSL, exact_log2(sizeof (jint)));
|
||||
}
|
||||
|
||||
// Load expanded key into v17..v31
|
||||
void MacroAssembler::aesenc_loadkeys(Register key, Register keylen) {
|
||||
Label L_loadkeys_44, L_loadkeys_52;
|
||||
cmpw(keylen, 52);
|
||||
br(Assembler::LO, L_loadkeys_44);
|
||||
br(Assembler::EQ, L_loadkeys_52);
|
||||
|
||||
ld1(v17, v18, T16B, post(key, 32));
|
||||
rev32(v17, T16B, v17);
|
||||
rev32(v18, T16B, v18);
|
||||
bind(L_loadkeys_52);
|
||||
ld1(v19, v20, T16B, post(key, 32));
|
||||
rev32(v19, T16B, v19);
|
||||
rev32(v20, T16B, v20);
|
||||
bind(L_loadkeys_44);
|
||||
ld1(v21, v22, v23, v24, T16B, post(key, 64));
|
||||
rev32(v21, T16B, v21);
|
||||
rev32(v22, T16B, v22);
|
||||
rev32(v23, T16B, v23);
|
||||
rev32(v24, T16B, v24);
|
||||
ld1(v25, v26, v27, v28, T16B, post(key, 64));
|
||||
rev32(v25, T16B, v25);
|
||||
rev32(v26, T16B, v26);
|
||||
rev32(v27, T16B, v27);
|
||||
rev32(v28, T16B, v28);
|
||||
ld1(v29, v30, v31, T16B, post(key, 48));
|
||||
rev32(v29, T16B, v29);
|
||||
rev32(v30, T16B, v30);
|
||||
rev32(v31, T16B, v31);
|
||||
|
||||
// Preserve the address of the start of the key
|
||||
sub(key, key, keylen, LSL, exact_log2(sizeof (jint)));
|
||||
}
|
||||
|
||||
// NeoverseTM N1Software Optimization Guide:
|
||||
// Adjacent AESE/AESMC instruction pairs and adjacent AESD/AESIMC
|
||||
// instruction pairs will exhibit the performance characteristics
|
||||
// described in Section 4.6.
|
||||
void MacroAssembler::aes_round(FloatRegister input, FloatRegister subkey) {
|
||||
aese(input, subkey); aesmc(input, input);
|
||||
}
|
||||
|
||||
// KernelGenerator
|
||||
//
|
||||
// The abstract base class of an unrolled function generator.
|
||||
// Subclasses override generate(), length(), and next() to generate
|
||||
// unrolled and interleaved functions.
|
||||
//
|
||||
// The core idea is that a subclass defines a method which generates
|
||||
// the base case of a function and a method to generate a clone of it,
|
||||
// shifted to a different set of registers. KernelGenerator will then
|
||||
// generate several interleaved copies of the function, with each one
|
||||
// using a different set of registers.
|
||||
|
||||
// The subclass must implement three methods: length(), which is the
|
||||
// number of instruction bundles in the intrinsic, generate(int n)
|
||||
// which emits the nth instruction bundle in the intrinsic, and next()
|
||||
// which takes an instance of the generator and returns a version of it,
|
||||
// shifted to a new set of registers.
|
||||
|
||||
class KernelGenerator: public MacroAssembler {
|
||||
protected:
|
||||
const int _unrolls;
|
||||
public:
|
||||
KernelGenerator(Assembler *as, int unrolls)
|
||||
: MacroAssembler(as->code()), _unrolls(unrolls) { }
|
||||
virtual void generate(int index) = 0;
|
||||
virtual int length() = 0;
|
||||
virtual KernelGenerator *next() = 0;
|
||||
int unrolls() { return _unrolls; }
|
||||
void unroll();
|
||||
};
|
||||
|
||||
void KernelGenerator::unroll() {
|
||||
ResourceMark rm;
|
||||
KernelGenerator **generators
|
||||
= NEW_RESOURCE_ARRAY(KernelGenerator *, unrolls());
|
||||
|
||||
generators[0] = this;
|
||||
for (int i = 1; i < unrolls(); i++) {
|
||||
generators[i] = generators[i-1]->next();
|
||||
}
|
||||
|
||||
for (int j = 0; j < length(); j++) {
|
||||
for (int i = 0; i < unrolls(); i++) {
|
||||
generators[i]->generate(j);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// An unrolled and interleaved generator for AES encryption.
|
||||
class AESKernelGenerator: public KernelGenerator {
|
||||
Register _from, _to;
|
||||
const Register _keylen;
|
||||
FloatRegister _data;
|
||||
const FloatRegister _subkeys;
|
||||
bool _once;
|
||||
Label _rounds_44, _rounds_52;
|
||||
|
||||
public:
|
||||
AESKernelGenerator(Assembler *as, int unrolls,
|
||||
Register from, Register to, Register keylen, FloatRegister data,
|
||||
FloatRegister subkeys, bool once = true)
|
||||
: KernelGenerator(as, unrolls),
|
||||
_from(from), _to(to), _keylen(keylen), _data(data),
|
||||
_subkeys(subkeys), _once(once) {
|
||||
}
|
||||
|
||||
virtual void generate(int index) {
|
||||
switch (index) {
|
||||
case 0:
|
||||
if (_from != noreg) {
|
||||
ld1(_data, T16B, _from); // get 16 bytes of input
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (_once) {
|
||||
cmpw(_keylen, 52);
|
||||
br(Assembler::LO, _rounds_44);
|
||||
br(Assembler::EQ, _rounds_52);
|
||||
}
|
||||
break;
|
||||
case 2: aes_round(_data, _subkeys + 0); break;
|
||||
case 3: aes_round(_data, _subkeys + 1); break;
|
||||
case 4:
|
||||
if (_once) bind(_rounds_52);
|
||||
break;
|
||||
case 5: aes_round(_data, _subkeys + 2); break;
|
||||
case 6: aes_round(_data, _subkeys + 3); break;
|
||||
case 7:
|
||||
if (_once) bind(_rounds_44);
|
||||
break;
|
||||
case 8: aes_round(_data, _subkeys + 4); break;
|
||||
case 9: aes_round(_data, _subkeys + 5); break;
|
||||
case 10: aes_round(_data, _subkeys + 6); break;
|
||||
case 11: aes_round(_data, _subkeys + 7); break;
|
||||
case 12: aes_round(_data, _subkeys + 8); break;
|
||||
case 13: aes_round(_data, _subkeys + 9); break;
|
||||
case 14: aes_round(_data, _subkeys + 10); break;
|
||||
case 15: aes_round(_data, _subkeys + 11); break;
|
||||
case 16: aes_round(_data, _subkeys + 12); break;
|
||||
case 17: aese(_data, _subkeys + 13); break;
|
||||
case 18: eor(_data, T16B, _data, _subkeys + 14); break;
|
||||
case 19:
|
||||
if (_to != noreg) {
|
||||
st1(_data, T16B, _to);
|
||||
}
|
||||
break;
|
||||
default: ShouldNotReachHere();
|
||||
}
|
||||
}
|
||||
|
||||
virtual KernelGenerator *next() {
|
||||
return new AESKernelGenerator(this, _unrolls,
|
||||
_from, _to, _keylen,
|
||||
_data + 1, _subkeys, /*once*/false);
|
||||
}
|
||||
|
||||
virtual int length() { return 20; }
|
||||
};
|
||||
|
||||
// Uses expanded key in v17..v31
|
||||
// Returns encrypted values in inputs.
|
||||
// If to != noreg, store value at to; likewise from
|
||||
// Preserves key, keylen
|
||||
// Increments from, to
|
||||
// Input data in v0, v1, ...
|
||||
// unrolls controls the number of times to unroll the generated function
|
||||
void MacroAssembler::aesecb_encrypt(Register from, Register to, Register keylen,
|
||||
FloatRegister data, int unrolls) {
|
||||
AESKernelGenerator(this, unrolls, from, to, keylen, data, v17) .unroll();
|
||||
}
|
||||
|
||||
// ghash_multiply and ghash_reduce are the non-unrolled versions of
|
||||
// the GHASH function generators.
|
||||
void MacroAssembler::ghash_multiply(FloatRegister result_lo, FloatRegister result_hi,
|
||||
FloatRegister a, FloatRegister b, FloatRegister a1_xor_a0,
|
||||
FloatRegister tmp1, FloatRegister tmp2, FloatRegister tmp3) {
|
||||
// Karatsuba multiplication performs a 128*128 -> 256-bit
|
||||
// multiplication in three 128-bit multiplications and a few
|
||||
// additions.
|
||||
//
|
||||
// (C1:C0) = A1*B1, (D1:D0) = A0*B0, (E1:E0) = (A0+A1)(B0+B1)
|
||||
// (A1:A0)(B1:B0) = C1:(C0+C1+D1+E1):(D1+C0+D0+E0):D0
|
||||
//
|
||||
// Inputs:
|
||||
//
|
||||
// A0 in a.d[0] (subkey)
|
||||
// A1 in a.d[1]
|
||||
// (A1+A0) in a1_xor_a0.d[0]
|
||||
//
|
||||
// B0 in b.d[0] (state)
|
||||
// B1 in b.d[1]
|
||||
|
||||
ext(tmp1, T16B, b, b, 0x08);
|
||||
pmull2(result_hi, T1Q, b, a, T2D); // A1*B1
|
||||
eor(tmp1, T16B, tmp1, b); // (B1+B0)
|
||||
pmull(result_lo, T1Q, b, a, T1D); // A0*B0
|
||||
pmull(tmp2, T1Q, tmp1, a1_xor_a0, T1D); // (A1+A0)(B1+B0)
|
||||
|
||||
ext(tmp1, T16B, result_lo, result_hi, 0x08);
|
||||
eor(tmp3, T16B, result_hi, result_lo); // A1*B1+A0*B0
|
||||
eor(tmp2, T16B, tmp2, tmp1);
|
||||
eor(tmp2, T16B, tmp2, tmp3);
|
||||
|
||||
// Register pair <result_hi:result_lo> holds the result of carry-less multiplication
|
||||
ins(result_hi, D, tmp2, 0, 1);
|
||||
ins(result_lo, D, tmp2, 1, 0);
|
||||
}
|
||||
|
||||
void MacroAssembler::ghash_reduce(FloatRegister result, FloatRegister lo, FloatRegister hi,
|
||||
FloatRegister p, FloatRegister vzr, FloatRegister t1) {
|
||||
const FloatRegister t0 = result;
|
||||
|
||||
// The GCM field polynomial f is z^128 + p(z), where p =
|
||||
// z^7+z^2+z+1.
|
||||
//
|
||||
// z^128 === -p(z) (mod (z^128 + p(z)))
|
||||
//
|
||||
// so, given that the product we're reducing is
|
||||
// a == lo + hi * z^128
|
||||
// substituting,
|
||||
// === lo - hi * p(z) (mod (z^128 + p(z)))
|
||||
//
|
||||
// we reduce by multiplying hi by p(z) and subtracting the result
|
||||
// from (i.e. XORing it with) lo. Because p has no nonzero high
|
||||
// bits we can do this with two 64-bit multiplications, lo*p and
|
||||
// hi*p.
|
||||
|
||||
pmull2(t0, T1Q, hi, p, T2D);
|
||||
ext(t1, T16B, t0, vzr, 8);
|
||||
eor(hi, T16B, hi, t1);
|
||||
ext(t1, T16B, vzr, t0, 8);
|
||||
eor(lo, T16B, lo, t1);
|
||||
pmull(t0, T1Q, hi, p, T1D);
|
||||
eor(result, T16B, lo, t0);
|
||||
}
|
||||
|
||||
class GHASHMultiplyGenerator: public KernelGenerator {
|
||||
FloatRegister _result_lo, _result_hi, _b,
|
||||
_a, _vzr, _a1_xor_a0, _p,
|
||||
_tmp1, _tmp2, _tmp3;
|
||||
|
||||
public:
|
||||
GHASHMultiplyGenerator(Assembler *as, int unrolls,
|
||||
FloatRegister result_lo, FloatRegister result_hi,
|
||||
/* offsetted registers */
|
||||
FloatRegister b,
|
||||
/* non-offsetted (shared) registers */
|
||||
FloatRegister a, FloatRegister a1_xor_a0, FloatRegister p, FloatRegister vzr,
|
||||
/* offseted (temp) registers */
|
||||
FloatRegister tmp1, FloatRegister tmp2, FloatRegister tmp3)
|
||||
: KernelGenerator(as, unrolls),
|
||||
_result_lo(result_lo), _result_hi(result_hi), _b(b),
|
||||
_a(a), _vzr(vzr), _a1_xor_a0(a1_xor_a0), _p(p),
|
||||
_tmp1(tmp1), _tmp2(tmp2), _tmp3(tmp3) { }
|
||||
|
||||
static const int register_stride = 7;
|
||||
|
||||
virtual void generate(int index) {
|
||||
// Karatsuba multiplication performs a 128*128 -> 256-bit
|
||||
// multiplication in three 128-bit multiplications and a few
|
||||
// additions.
|
||||
//
|
||||
// (C1:C0) = A1*B1, (D1:D0) = A0*B0, (E1:E0) = (A0+A1)(B0+B1)
|
||||
// (A1:A0)(B1:B0) = C1:(C0+C1+D1+E1):(D1+C0+D0+E0):D0
|
||||
//
|
||||
// Inputs:
|
||||
//
|
||||
// A0 in a.d[0] (subkey)
|
||||
// A1 in a.d[1]
|
||||
// (A1+A0) in a1_xor_a0.d[0]
|
||||
//
|
||||
// B0 in b.d[0] (state)
|
||||
// B1 in b.d[1]
|
||||
|
||||
switch (index) {
|
||||
case 0: ext(_tmp1, T16B, _b, _b, 0x08); break;
|
||||
case 1: pmull2(_result_hi, T1Q, _b, _a, T2D); // A1*B1
|
||||
break;
|
||||
case 2: eor(_tmp1, T16B, _tmp1, _b); // (B1+B0)
|
||||
break;
|
||||
case 3: pmull(_result_lo, T1Q, _b, _a, T1D); // A0*B0
|
||||
break;
|
||||
case 4: pmull(_tmp2, T1Q, _tmp1, _a1_xor_a0, T1D); // (A1+A0)(B1+B0)
|
||||
break;
|
||||
|
||||
case 5: ext(_tmp1, T16B, _result_lo, _result_hi, 0x08); break;
|
||||
case 6: eor(_tmp3, T16B, _result_hi, _result_lo); // A1*B1+A0*B0
|
||||
break;
|
||||
case 7: eor(_tmp2, T16B, _tmp2, _tmp1); break;
|
||||
case 8: eor(_tmp2, T16B, _tmp2, _tmp3); break;
|
||||
|
||||
// Register pair <_result_hi:_result_lo> holds the _result of carry-less multiplication
|
||||
case 9: ins(_result_hi, D, _tmp2, 0, 1); break;
|
||||
case 10: ins(_result_lo, D, _tmp2, 1, 0); break;
|
||||
default: ShouldNotReachHere();
|
||||
}
|
||||
}
|
||||
|
||||
virtual KernelGenerator *next() {
|
||||
GHASHMultiplyGenerator *result
|
||||
= new GHASHMultiplyGenerator(this, _unrolls, _result_lo, _result_hi,
|
||||
_b, _a, _a1_xor_a0, _p, _vzr,
|
||||
_tmp1, _tmp2, _tmp3);
|
||||
result->_result_lo += register_stride;
|
||||
result->_result_hi += register_stride;
|
||||
result->_b += register_stride;
|
||||
result->_tmp1 += register_stride;
|
||||
result->_tmp2 += register_stride;
|
||||
result->_tmp3 += register_stride;
|
||||
return result;
|
||||
}
|
||||
|
||||
virtual int length() { return 11; }
|
||||
};
|
||||
|
||||
// Reduce the 128-bit product in hi:lo by the GCM field polynomial.
|
||||
// The FloatRegister argument called data is optional: if it is a
|
||||
// valid register, we interleave LD1 instructions with the
|
||||
// reduction. This is to reduce latency next time around the loop.
|
||||
class GHASHReduceGenerator: public KernelGenerator {
|
||||
FloatRegister _result, _lo, _hi, _p, _vzr, _data, _t1;
|
||||
int _once;
|
||||
public:
|
||||
GHASHReduceGenerator(Assembler *as, int unrolls,
|
||||
/* offsetted registers */
|
||||
FloatRegister result, FloatRegister lo, FloatRegister hi,
|
||||
/* non-offsetted (shared) registers */
|
||||
FloatRegister p, FloatRegister vzr, FloatRegister data,
|
||||
/* offseted (temp) registers */
|
||||
FloatRegister t1)
|
||||
: KernelGenerator(as, unrolls),
|
||||
_result(result), _lo(lo), _hi(hi),
|
||||
_p(p), _vzr(vzr), _data(data), _t1(t1), _once(true) { }
|
||||
|
||||
static const int register_stride = 7;
|
||||
|
||||
virtual void generate(int index) {
|
||||
const FloatRegister t0 = _result;
|
||||
|
||||
switch (index) {
|
||||
// The GCM field polynomial f is z^128 + p(z), where p =
|
||||
// z^7+z^2+z+1.
|
||||
//
|
||||
// z^128 === -p(z) (mod (z^128 + p(z)))
|
||||
//
|
||||
// so, given that the product we're reducing is
|
||||
// a == lo + hi * z^128
|
||||
// substituting,
|
||||
// === lo - hi * p(z) (mod (z^128 + p(z)))
|
||||
//
|
||||
// we reduce by multiplying hi by p(z) and subtracting the _result
|
||||
// from (i.e. XORing it with) lo. Because p has no nonzero high
|
||||
// bits we can do this with two 64-bit multiplications, lo*p and
|
||||
// hi*p.
|
||||
|
||||
case 0: pmull2(t0, T1Q, _hi, _p, T2D); break;
|
||||
case 1: ext(_t1, T16B, t0, _vzr, 8); break;
|
||||
case 2: eor(_hi, T16B, _hi, _t1); break;
|
||||
case 3: ext(_t1, T16B, _vzr, t0, 8); break;
|
||||
case 4: eor(_lo, T16B, _lo, _t1); break;
|
||||
case 5: pmull(t0, T1Q, _hi, _p, T1D); break;
|
||||
case 6: eor(_result, T16B, _lo, t0); break;
|
||||
default: ShouldNotReachHere();
|
||||
}
|
||||
|
||||
// Sprinkle load instructions into the generated instructions
|
||||
if (_data->is_valid() && _once) {
|
||||
assert(length() >= unrolls(), "not enough room for inteleaved loads");
|
||||
if (index < unrolls()) {
|
||||
ld1((_data + index*register_stride), T16B, post(r2, 0x10));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
virtual KernelGenerator *next() {
|
||||
GHASHReduceGenerator *result
|
||||
= new GHASHReduceGenerator(this, _unrolls,
|
||||
_result, _lo, _hi, _p, _vzr, _data, _t1);
|
||||
result->_result += register_stride;
|
||||
result->_hi += register_stride;
|
||||
result->_lo += register_stride;
|
||||
result->_t1 += register_stride;
|
||||
result->_once = false;
|
||||
return result;
|
||||
}
|
||||
|
||||
int length() { return 7; }
|
||||
};
|
||||
|
||||
// Perform a GHASH multiply/reduce on a single FloatRegister.
|
||||
void MacroAssembler::ghash_modmul(FloatRegister result,
|
||||
FloatRegister result_lo, FloatRegister result_hi, FloatRegister b,
|
||||
FloatRegister a, FloatRegister vzr, FloatRegister a1_xor_a0, FloatRegister p,
|
||||
FloatRegister t1, FloatRegister t2, FloatRegister t3) {
|
||||
ghash_multiply(result_lo, result_hi, a, b, a1_xor_a0, t1, t2, t3);
|
||||
ghash_reduce(result, result_lo, result_hi, p, vzr, t1);
|
||||
}
|
||||
|
||||
// Interleaved GHASH processing.
|
||||
//
|
||||
// Clobbers all vector registers.
|
||||
//
|
||||
void MacroAssembler::ghash_processBlocks_wide(address field_polynomial, Register state,
|
||||
Register subkeyH,
|
||||
Register data, Register blocks, int unrolls) {
|
||||
int register_stride = 7;
|
||||
|
||||
// Bafflingly, GCM uses little-endian for the byte order, but
|
||||
// big-endian for the bit order. For example, the polynomial 1 is
|
||||
// represented as the 16-byte string 80 00 00 00 | 12 bytes of 00.
|
||||
//
|
||||
// So, we must either reverse the bytes in each word and do
|
||||
// everything big-endian or reverse the bits in each byte and do
|
||||
// it little-endian. On AArch64 it's more idiomatic to reverse
|
||||
// the bits in each byte (we have an instruction, RBIT, to do
|
||||
// that) and keep the data in little-endian bit order throught the
|
||||
// calculation, bit-reversing the inputs and outputs.
|
||||
|
||||
assert(unrolls * register_stride < 32, "out of registers");
|
||||
|
||||
FloatRegister a1_xor_a0 = v28;
|
||||
FloatRegister Hprime = v29;
|
||||
FloatRegister vzr = v30;
|
||||
FloatRegister p = v31;
|
||||
eor(vzr, T16B, vzr, vzr); // zero register
|
||||
|
||||
ldrq(p, field_polynomial); // The field polynomial
|
||||
|
||||
ldrq(v0, Address(state));
|
||||
ldrq(Hprime, Address(subkeyH));
|
||||
|
||||
rev64(v0, T16B, v0); // Bit-reverse words in state and subkeyH
|
||||
rbit(v0, T16B, v0);
|
||||
rev64(Hprime, T16B, Hprime);
|
||||
rbit(Hprime, T16B, Hprime);
|
||||
|
||||
// Powers of H -> Hprime
|
||||
|
||||
Label already_calculated, done;
|
||||
{
|
||||
// The first time around we'll have to calculate H**2, H**3, etc.
|
||||
// Look at the largest power of H in the subkeyH array to see if
|
||||
// it's already been calculated.
|
||||
ldp(rscratch1, rscratch2, Address(subkeyH, 16 * (unrolls - 1)));
|
||||
orr(rscratch1, rscratch1, rscratch2);
|
||||
cbnz(rscratch1, already_calculated);
|
||||
|
||||
orr(v6, T16B, Hprime, Hprime); // Start with H in v6 and Hprime
|
||||
for (int i = 1; i < unrolls; i++) {
|
||||
ext(a1_xor_a0, T16B, Hprime, Hprime, 0x08); // long-swap subkeyH into a1_xor_a0
|
||||
eor(a1_xor_a0, T16B, a1_xor_a0, Hprime); // xor subkeyH into subkeyL (Karatsuba: (A1+A0))
|
||||
ghash_modmul(/*result*/v6, /*result_lo*/v5, /*result_hi*/v4, /*b*/v6,
|
||||
Hprime, vzr, a1_xor_a0, p,
|
||||
/*temps*/v1, v3, v2);
|
||||
rev64(v1, T16B, v6);
|
||||
rbit(v1, T16B, v1);
|
||||
strq(v1, Address(subkeyH, 16 * i));
|
||||
}
|
||||
b(done);
|
||||
}
|
||||
{
|
||||
bind(already_calculated);
|
||||
|
||||
// Load the largest power of H we need into v6.
|
||||
ldrq(v6, Address(subkeyH, 16 * (unrolls - 1)));
|
||||
rev64(v6, T16B, v6);
|
||||
rbit(v6, T16B, v6);
|
||||
}
|
||||
bind(done);
|
||||
|
||||
orr(Hprime, T16B, v6, v6); // Move H ** unrolls into Hprime
|
||||
|
||||
// Hprime contains (H ** 1, H ** 2, ... H ** unrolls)
|
||||
// v0 contains the initial state. Clear the others.
|
||||
for (int i = 1; i < unrolls; i++) {
|
||||
int ofs = register_stride * i;
|
||||
eor(ofs+v0, T16B, ofs+v0, ofs+v0); // zero each state register
|
||||
}
|
||||
|
||||
ext(a1_xor_a0, T16B, Hprime, Hprime, 0x08); // long-swap subkeyH into a1_xor_a0
|
||||
eor(a1_xor_a0, T16B, a1_xor_a0, Hprime); // xor subkeyH into subkeyL (Karatsuba: (A1+A0))
|
||||
|
||||
// Load #unrolls blocks of data
|
||||
for (int ofs = 0; ofs < unrolls * register_stride; ofs += register_stride) {
|
||||
ld1(v2+ofs, T16B, post(data, 0x10));
|
||||
}
|
||||
|
||||
// Register assignments, replicated across 4 clones, v0 ... v23
|
||||
//
|
||||
// v0: input / output: current state, result of multiply/reduce
|
||||
// v1: temp
|
||||
// v2: input: one block of data (the ciphertext)
|
||||
// also used as a temp once the data has been consumed
|
||||
// v3: temp
|
||||
// v4: output: high part of product
|
||||
// v5: output: low part ...
|
||||
// v6: unused
|
||||
//
|
||||
// Not replicated:
|
||||
//
|
||||
// v28: High part of H xor low part of H'
|
||||
// v29: H' (hash subkey)
|
||||
// v30: zero
|
||||
// v31: Reduction polynomial of the Galois field
|
||||
|
||||
// Inner loop.
|
||||
// Do the whole load/add/multiply/reduce over all our data except
|
||||
// the last few rows.
|
||||
{
|
||||
Label L_ghash_loop;
|
||||
bind(L_ghash_loop);
|
||||
|
||||
// Prefetching doesn't help here. In fact, on Neoverse N1 it's worse.
|
||||
// prfm(Address(data, 128), PLDL1KEEP);
|
||||
|
||||
// Xor data into current state
|
||||
for (int ofs = 0; ofs < unrolls * register_stride; ofs += register_stride) {
|
||||
rbit((v2+ofs), T16B, (v2+ofs));
|
||||
eor((v2+ofs), T16B, v0+ofs, (v2+ofs)); // bit-swapped data ^ bit-swapped state
|
||||
}
|
||||
|
||||
// Generate fully-unrolled multiply-reduce in two stages.
|
||||
|
||||
(new GHASHMultiplyGenerator(this, unrolls,
|
||||
/*result_lo*/v5, /*result_hi*/v4, /*data*/v2,
|
||||
Hprime, a1_xor_a0, p, vzr,
|
||||
/*temps*/v1, v3, /* reuse b*/v2))->unroll();
|
||||
|
||||
// NB: GHASHReduceGenerator also loads the next #unrolls blocks of
|
||||
// data into v0, v0+ofs, the current state.
|
||||
(new GHASHReduceGenerator (this, unrolls,
|
||||
/*result*/v0, /*lo*/v5, /*hi*/v4, p, vzr,
|
||||
/*data*/v2, /*temp*/v3))->unroll();
|
||||
|
||||
sub(blocks, blocks, unrolls);
|
||||
cmp(blocks, (unsigned char)(unrolls * 2));
|
||||
br(GE, L_ghash_loop);
|
||||
}
|
||||
|
||||
// Merge the #unrolls states. Note that the data for the next
|
||||
// iteration has already been loaded into v4, v4+ofs, etc...
|
||||
|
||||
// First, we multiply/reduce each clone by the appropriate power of H.
|
||||
for (int i = 0; i < unrolls; i++) {
|
||||
int ofs = register_stride * i;
|
||||
ldrq(Hprime, Address(subkeyH, 16 * (unrolls - i - 1)));
|
||||
|
||||
rbit(v2+ofs, T16B, v2+ofs);
|
||||
eor(v2+ofs, T16B, ofs+v0, v2+ofs); // bit-swapped data ^ bit-swapped state
|
||||
|
||||
rev64(Hprime, T16B, Hprime);
|
||||
rbit(Hprime, T16B, Hprime);
|
||||
ext(a1_xor_a0, T16B, Hprime, Hprime, 0x08); // long-swap subkeyH into a1_xor_a0
|
||||
eor(a1_xor_a0, T16B, a1_xor_a0, Hprime); // xor subkeyH into subkeyL (Karatsuba: (A1+A0))
|
||||
ghash_modmul(/*result*/v0+ofs, /*result_lo*/v5+ofs, /*result_hi*/v4+ofs, /*b*/v2+ofs,
|
||||
Hprime, vzr, a1_xor_a0, p,
|
||||
/*temps*/v1+ofs, v3+ofs, /* reuse b*/v2+ofs);
|
||||
}
|
||||
|
||||
// Then we sum the results.
|
||||
for (int i = 0; i < unrolls - 1; i++) {
|
||||
int ofs = register_stride * i;
|
||||
eor(v0, T16B, v0, v0 + register_stride + ofs);
|
||||
}
|
||||
|
||||
sub(blocks, blocks, (unsigned char)unrolls);
|
||||
|
||||
// And finally bit-reverse the state back to big endian.
|
||||
rev64(v0, T16B, v0);
|
||||
rbit(v0, T16B, v0);
|
||||
st1(v0, T16B, state);
|
||||
}
|
||||
@@ -689,7 +689,7 @@ void MacroAssembler::generate__kernel_rem_pio2(address two_over_pi, address pio2
|
||||
RECOMP_FOR1_CHECK;
|
||||
Register tmp2 = r1, n = r2, jv = r4, tmp5 = r5, jx = r6,
|
||||
tmp3 = r7, iqBase = r10, ih = r11, tmp4 = r12, tmp1 = r13,
|
||||
jz = r14, j = r15, twoOverPiBase = r16, i = r17, qBase = r18;
|
||||
jz = r14, j = r15, twoOverPiBase = r16, i = r17, qBase = r19;
|
||||
// jp = jk == init_jk[prec] = init_jk[2] == {2,3,4,6}[2] == 4
|
||||
// jx = nx - 1
|
||||
lea(twoOverPiBase, ExternalAddress(two_over_pi));
|
||||
@@ -1421,6 +1421,12 @@ void MacroAssembler::generate_dsin_dcos(bool isCos, address npio2_hw,
|
||||
Label DONE, ARG_REDUCTION, TINY_X, RETURN_SIN, EARLY_CASE;
|
||||
Register X = r0, absX = r1, n = r2, ix = r3;
|
||||
FloatRegister y0 = v4, y1 = v5;
|
||||
|
||||
enter();
|
||||
// r19 is used in TemplateInterpreterGenerator::generate_math_entry
|
||||
RegSet saved_regs = RegSet::of(r19);
|
||||
push (saved_regs, sp);
|
||||
|
||||
block_comment("check |x| ~< pi/4, NaN, Inf and |x| < 2**-27 cases"); {
|
||||
fmovd(X, v0);
|
||||
mov(rscratch2, 0x3e400000);
|
||||
@@ -1438,14 +1444,14 @@ void MacroAssembler::generate_dsin_dcos(bool isCos, address npio2_hw,
|
||||
// Set last bit unconditionally to make it NaN
|
||||
orr(r10, r10, 1);
|
||||
fmovd(v0, r10);
|
||||
ret(lr);
|
||||
b(DONE);
|
||||
}
|
||||
block_comment("kernel_sin/kernel_cos: if(ix<0x3e400000) {<fast return>}"); {
|
||||
bind(TINY_X);
|
||||
if (isCos) {
|
||||
fmovd(v0, 1.0);
|
||||
}
|
||||
ret(lr);
|
||||
b(DONE);
|
||||
}
|
||||
bind(ARG_REDUCTION); /* argument reduction needed */
|
||||
block_comment("n = __ieee754_rem_pio2(x,y);"); {
|
||||
@@ -1465,7 +1471,7 @@ void MacroAssembler::generate_dsin_dcos(bool isCos, address npio2_hw,
|
||||
tbz(n, 1, DONE);
|
||||
}
|
||||
fnegd(v0, v0);
|
||||
ret(lr);
|
||||
b(DONE);
|
||||
bind(RETURN_SIN);
|
||||
generate_kernel_sin(y0, true, dsin_coef);
|
||||
if (isCos) {
|
||||
@@ -1474,7 +1480,7 @@ void MacroAssembler::generate_dsin_dcos(bool isCos, address npio2_hw,
|
||||
tbz(n, 1, DONE);
|
||||
}
|
||||
fnegd(v0, v0);
|
||||
ret(lr);
|
||||
b(DONE);
|
||||
}
|
||||
bind(EARLY_CASE);
|
||||
eor(y1, T8B, y1, y1);
|
||||
@@ -1484,5 +1490,7 @@ void MacroAssembler::generate_dsin_dcos(bool isCos, address npio2_hw,
|
||||
generate_kernel_sin(v0, false, dsin_coef);
|
||||
}
|
||||
bind(DONE);
|
||||
pop(saved_regs, sp);
|
||||
leave();
|
||||
ret(lr);
|
||||
}
|
||||
|
||||
@@ -681,7 +681,7 @@ public:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
size_t size_in_bytes() { return 1 << size(); }
|
||||
size_t size_in_bytes() { return 1ULL << size(); }
|
||||
bool is_not_pre_post_index() { return (is_ldst_ur() || is_ldst_unsigned_offset()); }
|
||||
bool is_load() {
|
||||
assert(Instruction_aarch64::extract(uint_at(0), 23, 22) == 0b01 ||
|
||||
|
||||
@@ -38,7 +38,7 @@ const char* RegisterImpl::name() const {
|
||||
"c_rarg0", "c_rarg1", "c_rarg2", "c_rarg3", "c_rarg4", "c_rarg5", "c_rarg6", "c_rarg7",
|
||||
"rscratch1", "rscratch2",
|
||||
"r10", "r11", "r12", "r13", "r14", "r15", "r16",
|
||||
"r17", "r18", "r19",
|
||||
"r17", "r18_tls", "r19",
|
||||
"resp", "rdispatch", "rbcp", "r23", "rlocals", "rmonitors", "rcpool", "rheapbase",
|
||||
"rthread", "rfp", "lr", "sp"
|
||||
};
|
||||
|
||||
@@ -91,7 +91,18 @@ CONSTANT_REGISTER_DECLARATION(Register, r14, (14));
|
||||
CONSTANT_REGISTER_DECLARATION(Register, r15, (15));
|
||||
CONSTANT_REGISTER_DECLARATION(Register, r16, (16));
|
||||
CONSTANT_REGISTER_DECLARATION(Register, r17, (17));
|
||||
CONSTANT_REGISTER_DECLARATION(Register, r18, (18));
|
||||
|
||||
// In the ABI for Windows+AArch64 the register r18 is used to store the pointer
|
||||
// to the current thread's TEB (where TLS variables are stored). We could
|
||||
// carefully save and restore r18 at key places, however Win32 Structured
|
||||
// Exception Handling (SEH) is using TLS to unwind the stack. If r18 is used
|
||||
// for any other purpose at the time of an exception happening, SEH would not
|
||||
// be able to unwind the stack properly and most likely crash.
|
||||
//
|
||||
// It's easier to avoid allocating r18 altogether.
|
||||
//
|
||||
// See https://docs.microsoft.com/en-us/cpp/build/arm64-windows-abi-conventions?view=vs-2019#integer-registers
|
||||
CONSTANT_REGISTER_DECLARATION(Register, r18_tls, (18));
|
||||
CONSTANT_REGISTER_DECLARATION(Register, r19, (19));
|
||||
CONSTANT_REGISTER_DECLARATION(Register, r20, (20));
|
||||
CONSTANT_REGISTER_DECLARATION(Register, r21, (21));
|
||||
@@ -207,6 +218,8 @@ class ConcreteRegisterImpl : public AbstractRegisterImpl {
|
||||
static const int max_fpr;
|
||||
};
|
||||
|
||||
class RegSetIterator;
|
||||
|
||||
// A set of registers
|
||||
class RegSet {
|
||||
uint32_t _bitset;
|
||||
@@ -234,6 +247,11 @@ public:
|
||||
return *this;
|
||||
}
|
||||
|
||||
RegSet &operator-=(const RegSet aSet) {
|
||||
*this = *this - aSet;
|
||||
return *this;
|
||||
}
|
||||
|
||||
static RegSet of(Register r1) {
|
||||
return RegSet(r1);
|
||||
}
|
||||
@@ -260,6 +278,49 @@ public:
|
||||
}
|
||||
|
||||
uint32_t bits() const { return _bitset; }
|
||||
|
||||
private:
|
||||
|
||||
Register first() {
|
||||
uint32_t first = _bitset & -_bitset;
|
||||
return first ? as_Register(exact_log2(first)) : noreg;
|
||||
}
|
||||
|
||||
public:
|
||||
|
||||
friend class RegSetIterator;
|
||||
|
||||
RegSetIterator begin();
|
||||
};
|
||||
|
||||
class RegSetIterator {
|
||||
RegSet _regs;
|
||||
|
||||
public:
|
||||
RegSetIterator(RegSet x): _regs(x) {}
|
||||
RegSetIterator(const RegSetIterator& mit) : _regs(mit._regs) {}
|
||||
|
||||
RegSetIterator& operator++() {
|
||||
Register r = _regs.first();
|
||||
if (r != noreg)
|
||||
_regs -= r;
|
||||
return *this;
|
||||
}
|
||||
|
||||
bool operator==(const RegSetIterator& rhs) const {
|
||||
return _regs.bits() == rhs._regs.bits();
|
||||
}
|
||||
bool operator!=(const RegSetIterator& rhs) const {
|
||||
return ! (rhs == *this);
|
||||
}
|
||||
|
||||
Register operator*() {
|
||||
return _regs.first();
|
||||
}
|
||||
};
|
||||
|
||||
inline RegSetIterator RegSet::begin() {
|
||||
return RegSetIterator(*this);
|
||||
}
|
||||
|
||||
#endif // CPU_AARCH64_VM_REGISTER_AARCH64_HPP
|
||||
|
||||
@@ -50,7 +50,7 @@ REGISTER_DEFINITION(Register, r14);
|
||||
REGISTER_DEFINITION(Register, r15);
|
||||
REGISTER_DEFINITION(Register, r16);
|
||||
REGISTER_DEFINITION(Register, r17);
|
||||
REGISTER_DEFINITION(Register, r18);
|
||||
REGISTER_DEFINITION(Register, r18_tls); // see comment in register_aarch64.hpp
|
||||
REGISTER_DEFINITION(Register, r19);
|
||||
REGISTER_DEFINITION(Register, r20);
|
||||
REGISTER_DEFINITION(Register, r21);
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2014, 2019, Red Hat Inc. All rights reserved.
|
||||
* Copyright (c) 2021, Azul Systems, Inc. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -715,7 +716,7 @@ AdapterHandlerEntry* SharedRuntime::generate_i2c2i_adapters(MacroAssembler *masm
|
||||
return AdapterHandlerLibrary::new_entry(fingerprint, i2c_entry, c2i_entry, c2i_unverified_entry);
|
||||
}
|
||||
|
||||
int SharedRuntime::c_calling_convention(const BasicType *sig_bt,
|
||||
static int c_calling_convention_priv(const BasicType *sig_bt,
|
||||
VMRegPair *regs,
|
||||
VMRegPair *regs2,
|
||||
int total_args_passed) {
|
||||
@@ -746,6 +747,11 @@ int SharedRuntime::c_calling_convention(const BasicType *sig_bt,
|
||||
if (int_args < Argument::n_int_register_parameters_c) {
|
||||
regs[i].set1(INT_ArgReg[int_args++]->as_VMReg());
|
||||
} else {
|
||||
#ifdef __APPLE__
|
||||
// Less-than word types are stored one after another.
|
||||
// The code is unable to handle this so bailout.
|
||||
return -1;
|
||||
#endif
|
||||
regs[i].set1(VMRegImpl::stack2reg(stk_args));
|
||||
stk_args += 2;
|
||||
}
|
||||
@@ -768,6 +774,11 @@ int SharedRuntime::c_calling_convention(const BasicType *sig_bt,
|
||||
if (fp_args < Argument::n_float_register_parameters_c) {
|
||||
regs[i].set1(FP_ArgReg[fp_args++]->as_VMReg());
|
||||
} else {
|
||||
#ifdef __APPLE__
|
||||
// Less-than word types are stored one after another.
|
||||
// The code is unable to handle this so bailout.
|
||||
return -1;
|
||||
#endif
|
||||
regs[i].set1(VMRegImpl::stack2reg(stk_args));
|
||||
stk_args += 2;
|
||||
}
|
||||
@@ -794,6 +805,16 @@ int SharedRuntime::c_calling_convention(const BasicType *sig_bt,
|
||||
return stk_args;
|
||||
}
|
||||
|
||||
int SharedRuntime::c_calling_convention(const BasicType *sig_bt,
|
||||
VMRegPair *regs,
|
||||
VMRegPair *regs2,
|
||||
int total_args_passed)
|
||||
{
|
||||
int result = c_calling_convention_priv(sig_bt, regs, regs2, total_args_passed);
|
||||
guarantee(result >= 0, "Unsupported arguments configuration");
|
||||
return result;
|
||||
}
|
||||
|
||||
// On 64 bit we will store integer like items to the stack as
|
||||
// 64 bits items (sparc abi) even though java would only store
|
||||
// 32bits for a parameter. On 32bit it will simply be 32 bits
|
||||
@@ -1340,7 +1361,11 @@ nmethod* SharedRuntime::generate_native_wrapper(MacroAssembler* masm,
|
||||
// Now figure out where the args must be stored and how much stack space
|
||||
// they require.
|
||||
int out_arg_slots;
|
||||
out_arg_slots = c_calling_convention(out_sig_bt, out_regs, NULL, total_c_args);
|
||||
out_arg_slots = c_calling_convention_priv(out_sig_bt, out_regs, NULL, total_c_args);
|
||||
|
||||
if (out_arg_slots < 0) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// Compute framesize for the wrapper. We need to handlize all oops in
|
||||
// incoming registers
|
||||
@@ -1473,7 +1498,7 @@ nmethod* SharedRuntime::generate_native_wrapper(MacroAssembler* masm,
|
||||
|
||||
// Generate stack overflow check
|
||||
if (UseStackBanging) {
|
||||
__ bang_stack_with_offset(JavaThread::stack_shadow_zone_size());
|
||||
__ bang_stack_with_offset(checked_cast<int>(JavaThread::stack_shadow_zone_size()));
|
||||
} else {
|
||||
Unimplemented();
|
||||
}
|
||||
@@ -2421,7 +2446,7 @@ void SharedRuntime::generate_deopt_blob() {
|
||||
__ sub(sp, sp, r19);
|
||||
|
||||
// Push interpreter frames in a loop
|
||||
__ mov(rscratch1, (address)0xDEADDEAD); // Make a recognizable pattern
|
||||
__ mov(rscratch1, (uint64_t)0xDEADDEAD); // Make a recognizable pattern
|
||||
__ mov(rscratch2, rscratch1);
|
||||
Label loop;
|
||||
__ bind(loop);
|
||||
|
||||
@@ -1073,7 +1073,7 @@ class StubGenerator: public StubCodeGenerator {
|
||||
Label copy4, copy8, copy16, copy32, copy80, copy128, copy_big, finish;
|
||||
const Register t2 = r5, t3 = r6, t4 = r7, t5 = r8;
|
||||
const Register t6 = r9, t7 = r10, t8 = r11, t9 = r12;
|
||||
const Register send = r17, dend = r18;
|
||||
const Register send = r17, dend = r16;
|
||||
|
||||
if (PrefetchCopyIntervalInBytes > 0)
|
||||
__ prfm(Address(s, 0), PLDL1KEEP);
|
||||
@@ -1286,23 +1286,27 @@ class StubGenerator: public StubCodeGenerator {
|
||||
|
||||
void clobber_registers() {
|
||||
#ifdef ASSERT
|
||||
RegSet clobbered
|
||||
= MacroAssembler::call_clobbered_registers() - rscratch1;
|
||||
__ mov(rscratch1, (uint64_t)0xdeadbeef);
|
||||
__ orr(rscratch1, rscratch1, rscratch1, Assembler::LSL, 32);
|
||||
for (Register r = r3; r <= r18; r++)
|
||||
if (r != rscratch1) __ mov(r, rscratch1);
|
||||
for (RegSetIterator it = clobbered.begin(); *it != noreg; ++it) {
|
||||
__ mov(*it, rscratch1);
|
||||
}
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
// Scan over array at a for count oops, verifying each one.
|
||||
// Preserves a and count, clobbers rscratch1 and rscratch2.
|
||||
void verify_oop_array (size_t size, Register a, Register count, Register temp) {
|
||||
void verify_oop_array (int size, Register a, Register count, Register temp) {
|
||||
Label loop, end;
|
||||
__ mov(rscratch1, a);
|
||||
__ mov(rscratch2, zr);
|
||||
__ bind(loop);
|
||||
__ cmp(rscratch2, count);
|
||||
__ br(Assembler::HS, end);
|
||||
if (size == (size_t)wordSize) {
|
||||
if (size == wordSize) {
|
||||
__ ldr(temp, Address(a, rscratch2, Address::lsl(exact_log2(size))));
|
||||
__ verify_oop(temp);
|
||||
} else {
|
||||
@@ -1334,7 +1338,7 @@ class StubGenerator: public StubCodeGenerator {
|
||||
// used by generate_conjoint_int_oop_copy().
|
||||
//
|
||||
address generate_disjoint_copy(size_t size, bool aligned, bool is_oop, address *entry,
|
||||
const char *name, bool dest_uninitialized = false) {
|
||||
const char *name, bool dest_uninitialized = false) {
|
||||
Register s = c_rarg0, d = c_rarg1, count = c_rarg2;
|
||||
RegSet saved_reg = RegSet::of(s, d, count);
|
||||
__ align(CodeEntryAlignment);
|
||||
@@ -1363,12 +1367,12 @@ class StubGenerator: public StubCodeGenerator {
|
||||
// save regs before copy_memory
|
||||
__ push(RegSet::of(d, count), sp);
|
||||
}
|
||||
copy_memory(aligned, s, d, count, rscratch1, size);
|
||||
copy_memory(aligned, s, d, count, rscratch1, checked_cast<int>(size));
|
||||
|
||||
if (is_oop) {
|
||||
__ pop(RegSet::of(d, count), sp);
|
||||
if (VerifyOops)
|
||||
verify_oop_array(size, d, count, r16);
|
||||
verify_oop_array(checked_cast<int>(size), d, count, r16);
|
||||
}
|
||||
|
||||
bs->arraycopy_epilogue(_masm, decorators, is_oop, d, count, rscratch1, RegSet());
|
||||
@@ -1394,7 +1398,7 @@ class StubGenerator: public StubCodeGenerator {
|
||||
// the hardware handle it. The two dwords within qwords that span
|
||||
// cache line boundaries will still be loaded and stored atomically.
|
||||
//
|
||||
address generate_conjoint_copy(size_t size, bool aligned, bool is_oop, address nooverlap_target,
|
||||
address generate_conjoint_copy(int size, bool aligned, bool is_oop, address nooverlap_target,
|
||||
address *entry, const char *name,
|
||||
bool dest_uninitialized = false) {
|
||||
Register s = c_rarg0, d = c_rarg1, count = c_rarg2;
|
||||
@@ -1640,7 +1644,7 @@ class StubGenerator: public StubCodeGenerator {
|
||||
address generate_disjoint_oop_copy(bool aligned, address *entry,
|
||||
const char *name, bool dest_uninitialized) {
|
||||
const bool is_oop = true;
|
||||
const size_t size = UseCompressedOops ? sizeof (jint) : sizeof (jlong);
|
||||
const int size = UseCompressedOops ? sizeof (jint) : sizeof (jlong);
|
||||
return generate_disjoint_copy(size, aligned, is_oop, entry, name, dest_uninitialized);
|
||||
}
|
||||
|
||||
@@ -1658,7 +1662,7 @@ class StubGenerator: public StubCodeGenerator {
|
||||
address nooverlap_target, address *entry,
|
||||
const char *name, bool dest_uninitialized) {
|
||||
const bool is_oop = true;
|
||||
const size_t size = UseCompressedOops ? sizeof (jint) : sizeof (jlong);
|
||||
const int size = UseCompressedOops ? sizeof (jint) : sizeof (jlong);
|
||||
return generate_conjoint_copy(size, aligned, is_oop, nooverlap_target, entry,
|
||||
name, dest_uninitialized);
|
||||
}
|
||||
@@ -1713,10 +1717,10 @@ class StubGenerator: public StubCodeGenerator {
|
||||
RegSet wb_pre_saved_regs = RegSet::range(c_rarg0, c_rarg4);
|
||||
RegSet wb_post_saved_regs = RegSet::of(count);
|
||||
|
||||
// Registers used as temps (r18, r19, r20 are save-on-entry)
|
||||
// Registers used as temps (r19, r20, r21, r22 are save-on-entry)
|
||||
const Register copied_oop = r22; // actual oop copied
|
||||
const Register count_save = r21; // orig elementscount
|
||||
const Register start_to = r20; // destination array start address
|
||||
const Register copied_oop = r18; // actual oop copied
|
||||
const Register r19_klass = r19; // oop._klass
|
||||
|
||||
//---------------------------------------------------------------
|
||||
@@ -1753,8 +1757,7 @@ class StubGenerator: public StubCodeGenerator {
|
||||
|
||||
// Empty array: Nothing to do.
|
||||
__ cbz(count, L_done);
|
||||
|
||||
__ push(RegSet::of(r18, r19, r20, r21), sp);
|
||||
__ push(RegSet::of(r19, r20, r21, r22), sp);
|
||||
|
||||
#ifdef ASSERT
|
||||
BLOCK_COMMENT("assert consistent ckoff/ckval");
|
||||
@@ -1823,7 +1826,7 @@ class StubGenerator: public StubCodeGenerator {
|
||||
bs->arraycopy_epilogue(_masm, decorators, is_oop, start_to, count_save, rscratch1, wb_post_saved_regs);
|
||||
|
||||
__ bind(L_done_pop);
|
||||
__ pop(RegSet::of(r18, r19, r20, r21), sp);
|
||||
__ pop(RegSet::of(r19, r20, r21, r22), sp);
|
||||
inc_counter_np(SharedRuntime::_checkcast_array_copy_ctr);
|
||||
|
||||
__ bind(L_done);
|
||||
@@ -1999,7 +2002,7 @@ class StubGenerator: public StubCodeGenerator {
|
||||
// registers used as temp
|
||||
const Register scratch_length = r16; // elements count to copy
|
||||
const Register scratch_src_klass = r17; // array klass
|
||||
const Register lh = r18; // layout helper
|
||||
const Register lh = r15; // layout helper
|
||||
|
||||
// if (length < 0) return -1;
|
||||
__ movw(scratch_length, length); // length (elements count, 32-bits value)
|
||||
@@ -2070,7 +2073,7 @@ class StubGenerator: public StubCodeGenerator {
|
||||
//
|
||||
|
||||
const Register rscratch1_offset = rscratch1; // array offset
|
||||
const Register r18_elsize = lh; // element size
|
||||
const Register r15_elsize = lh; // element size
|
||||
|
||||
__ ubfx(rscratch1_offset, lh, Klass::_lh_header_size_shift,
|
||||
exact_log2(Klass::_lh_header_size_mask+1)); // array_offset
|
||||
@@ -2091,8 +2094,8 @@ class StubGenerator: public StubCodeGenerator {
|
||||
// The possible values of elsize are 0-3, i.e. exact_log2(element
|
||||
// size in bytes). We do a simple bitwise binary search.
|
||||
__ BIND(L_copy_bytes);
|
||||
__ tbnz(r18_elsize, 1, L_copy_ints);
|
||||
__ tbnz(r18_elsize, 0, L_copy_shorts);
|
||||
__ tbnz(r15_elsize, 1, L_copy_ints);
|
||||
__ tbnz(r15_elsize, 0, L_copy_shorts);
|
||||
__ lea(from, Address(src, src_pos));// src_addr
|
||||
__ lea(to, Address(dst, dst_pos));// dst_addr
|
||||
__ movw(count, scratch_length); // length
|
||||
@@ -2105,7 +2108,7 @@ class StubGenerator: public StubCodeGenerator {
|
||||
__ b(RuntimeAddress(short_copy_entry));
|
||||
|
||||
__ BIND(L_copy_ints);
|
||||
__ tbnz(r18_elsize, 0, L_copy_longs);
|
||||
__ tbnz(r15_elsize, 0, L_copy_longs);
|
||||
__ lea(from, Address(src, src_pos, Address::lsl(2)));// src_addr
|
||||
__ lea(to, Address(dst, dst_pos, Address::lsl(2)));// dst_addr
|
||||
__ movw(count, scratch_length); // length
|
||||
@@ -2116,8 +2119,8 @@ class StubGenerator: public StubCodeGenerator {
|
||||
{
|
||||
BLOCK_COMMENT("assert long copy {");
|
||||
Label L;
|
||||
__ andw(lh, lh, Klass::_lh_log2_element_size_mask); // lh -> r18_elsize
|
||||
__ cmpw(r18_elsize, LogBytesPerLong);
|
||||
__ andw(lh, lh, Klass::_lh_log2_element_size_mask); // lh -> r15_elsize
|
||||
__ cmpw(r15_elsize, LogBytesPerLong);
|
||||
__ br(Assembler::EQ, L);
|
||||
__ stop("must be long copy, but elsize is wrong");
|
||||
__ bind(L);
|
||||
@@ -2135,8 +2138,8 @@ class StubGenerator: public StubCodeGenerator {
|
||||
|
||||
Label L_plain_copy, L_checkcast_copy;
|
||||
// test array classes for subtyping
|
||||
__ load_klass(r18, dst);
|
||||
__ cmp(scratch_src_klass, r18); // usual case is exact equality
|
||||
__ load_klass(r15, dst);
|
||||
__ cmp(scratch_src_klass, r15); // usual case is exact equality
|
||||
__ br(Assembler::NE, L_checkcast_copy);
|
||||
|
||||
// Identically typed arrays can be copied without element-wise checks.
|
||||
@@ -2152,17 +2155,17 @@ class StubGenerator: public StubCodeGenerator {
|
||||
__ b(RuntimeAddress(oop_copy_entry));
|
||||
|
||||
__ BIND(L_checkcast_copy);
|
||||
// live at this point: scratch_src_klass, scratch_length, r18 (dst_klass)
|
||||
// live at this point: scratch_src_klass, scratch_length, r15 (dst_klass)
|
||||
{
|
||||
// Before looking at dst.length, make sure dst is also an objArray.
|
||||
__ ldrw(rscratch1, Address(r18, lh_offset));
|
||||
__ ldrw(rscratch1, Address(r15, lh_offset));
|
||||
__ movw(rscratch2, objArray_lh);
|
||||
__ eorw(rscratch1, rscratch1, rscratch2);
|
||||
__ cbnzw(rscratch1, L_failed);
|
||||
|
||||
// It is safe to examine both src.length and dst.length.
|
||||
arraycopy_range_checks(src, src_pos, dst, dst_pos, scratch_length,
|
||||
r18, L_failed);
|
||||
r15, L_failed);
|
||||
|
||||
__ load_klass(dst_klass, dst); // reload
|
||||
|
||||
@@ -2879,6 +2882,265 @@ class StubGenerator: public StubCodeGenerator {
|
||||
return start;
|
||||
}
|
||||
|
||||
// CTR AES crypt.
|
||||
// Arguments:
|
||||
//
|
||||
// Inputs:
|
||||
// c_rarg0 - source byte array address
|
||||
// c_rarg1 - destination byte array address
|
||||
// c_rarg2 - K (key) in little endian int array
|
||||
// c_rarg3 - counter vector byte array address
|
||||
// c_rarg4 - input length
|
||||
// c_rarg5 - saved encryptedCounter start
|
||||
// c_rarg6 - saved used length
|
||||
//
|
||||
// Output:
|
||||
// r0 - input length
|
||||
//
|
||||
address generate_counterMode_AESCrypt() {
|
||||
const Register in = c_rarg0;
|
||||
const Register out = c_rarg1;
|
||||
const Register key = c_rarg2;
|
||||
const Register counter = c_rarg3;
|
||||
const Register saved_len = c_rarg4, len = r10;
|
||||
const Register saved_encrypted_ctr = c_rarg5;
|
||||
const Register used_ptr = c_rarg6, used = r12;
|
||||
|
||||
const Register offset = r7;
|
||||
const Register keylen = r11;
|
||||
|
||||
const unsigned char block_size = 16;
|
||||
const int bulk_width = 4;
|
||||
// NB: bulk_width can be 4 or 8. 8 gives slightly faster
|
||||
// performance with larger data sizes, but it also means that the
|
||||
// fast path isn't used until you have at least 8 blocks, and up
|
||||
// to 127 bytes of data will be executed on the slow path. For
|
||||
// that reason, and also so as not to blow away too much icache, 4
|
||||
// blocks seems like a sensible compromise.
|
||||
|
||||
// Algorithm:
|
||||
//
|
||||
// if (len == 0) {
|
||||
// goto DONE;
|
||||
// }
|
||||
// int result = len;
|
||||
// do {
|
||||
// if (used >= blockSize) {
|
||||
// if (len >= bulk_width * blockSize) {
|
||||
// CTR_large_block();
|
||||
// if (len == 0)
|
||||
// goto DONE;
|
||||
// }
|
||||
// for (;;) {
|
||||
// 16ByteVector v0 = counter;
|
||||
// embeddedCipher.encryptBlock(v0, 0, encryptedCounter, 0);
|
||||
// used = 0;
|
||||
// if (len < blockSize)
|
||||
// break; /* goto NEXT */
|
||||
// 16ByteVector v1 = load16Bytes(in, offset);
|
||||
// v1 = v1 ^ encryptedCounter;
|
||||
// store16Bytes(out, offset);
|
||||
// used = blockSize;
|
||||
// offset += blockSize;
|
||||
// len -= blockSize;
|
||||
// if (len == 0)
|
||||
// goto DONE;
|
||||
// }
|
||||
// }
|
||||
// NEXT:
|
||||
// out[outOff++] = (byte)(in[inOff++] ^ encryptedCounter[used++]);
|
||||
// len--;
|
||||
// } while (len != 0);
|
||||
// DONE:
|
||||
// return result;
|
||||
//
|
||||
// CTR_large_block()
|
||||
// Wide bulk encryption of whole blocks.
|
||||
|
||||
__ align(CodeEntryAlignment);
|
||||
StubCodeMark mark(this, "StubRoutines", "counterMode_AESCrypt");
|
||||
const address start = __ pc();
|
||||
__ enter();
|
||||
|
||||
Label DONE, CTR_large_block, large_block_return;
|
||||
__ ldrw(used, Address(used_ptr));
|
||||
__ cbzw(saved_len, DONE);
|
||||
|
||||
__ mov(len, saved_len);
|
||||
__ mov(offset, 0);
|
||||
|
||||
// Compute #rounds for AES based on the length of the key array
|
||||
__ ldrw(keylen, Address(key, arrayOopDesc::length_offset_in_bytes() - arrayOopDesc::base_offset_in_bytes(T_INT)));
|
||||
|
||||
__ aesenc_loadkeys(key, keylen);
|
||||
|
||||
{
|
||||
Label L_CTR_loop, NEXT;
|
||||
|
||||
__ bind(L_CTR_loop);
|
||||
|
||||
__ cmp(used, block_size);
|
||||
__ br(__ LO, NEXT);
|
||||
|
||||
// Maybe we have a lot of data
|
||||
__ subsw(rscratch1, len, bulk_width * block_size);
|
||||
__ br(__ HS, CTR_large_block);
|
||||
__ BIND(large_block_return);
|
||||
__ cbzw(len, DONE);
|
||||
|
||||
// Setup the counter
|
||||
__ movi(v4, __ T4S, 0);
|
||||
__ movi(v5, __ T4S, 1);
|
||||
__ ins(v4, __ S, v5, 3, 3); // v4 contains { 0, 0, 0, 1 }
|
||||
|
||||
__ ld1(v0, __ T16B, counter); // Load the counter into v0
|
||||
__ rev32(v16, __ T16B, v0);
|
||||
__ addv(v16, __ T4S, v16, v4);
|
||||
__ rev32(v16, __ T16B, v16);
|
||||
__ st1(v16, __ T16B, counter); // Save the incremented counter back
|
||||
|
||||
{
|
||||
// We have fewer than bulk_width blocks of data left. Encrypt
|
||||
// them one by one until there is less than a full block
|
||||
// remaining, being careful to save both the encrypted counter
|
||||
// and the counter.
|
||||
|
||||
Label inner_loop;
|
||||
__ bind(inner_loop);
|
||||
// Counter to encrypt is in v0
|
||||
__ aesecb_encrypt(noreg, noreg, keylen);
|
||||
__ st1(v0, __ T16B, saved_encrypted_ctr);
|
||||
|
||||
// Do we have a remaining full block?
|
||||
|
||||
__ mov(used, 0);
|
||||
__ cmp(len, block_size);
|
||||
__ br(__ LO, NEXT);
|
||||
|
||||
// Yes, we have a full block
|
||||
__ ldrq(v1, Address(in, offset));
|
||||
__ eor(v1, __ T16B, v1, v0);
|
||||
__ strq(v1, Address(out, offset));
|
||||
__ mov(used, block_size);
|
||||
__ add(offset, offset, block_size);
|
||||
|
||||
__ subw(len, len, block_size);
|
||||
__ cbzw(len, DONE);
|
||||
|
||||
// Increment the counter, store it back
|
||||
__ orr(v0, __ T16B, v16, v16);
|
||||
__ rev32(v16, __ T16B, v16);
|
||||
__ addv(v16, __ T4S, v16, v4);
|
||||
__ rev32(v16, __ T16B, v16);
|
||||
__ st1(v16, __ T16B, counter); // Save the incremented counter back
|
||||
|
||||
__ b(inner_loop);
|
||||
}
|
||||
|
||||
__ BIND(NEXT);
|
||||
|
||||
// Encrypt a single byte, and loop.
|
||||
// We expect this to be a rare event.
|
||||
__ ldrb(rscratch1, Address(in, offset));
|
||||
__ ldrb(rscratch2, Address(saved_encrypted_ctr, used));
|
||||
__ eor(rscratch1, rscratch1, rscratch2);
|
||||
__ strb(rscratch1, Address(out, offset));
|
||||
__ add(offset, offset, 1);
|
||||
__ add(used, used, 1);
|
||||
__ subw(len, len,1);
|
||||
__ cbnzw(len, L_CTR_loop);
|
||||
}
|
||||
|
||||
__ bind(DONE);
|
||||
__ strw(used, Address(used_ptr));
|
||||
__ mov(r0, saved_len);
|
||||
|
||||
__ leave(); // required for proper stackwalking of RuntimeStub frame
|
||||
__ ret(lr);
|
||||
|
||||
// Bulk encryption
|
||||
|
||||
__ BIND (CTR_large_block);
|
||||
assert(bulk_width == 4 || bulk_width == 8, "must be");
|
||||
|
||||
if (bulk_width == 8) {
|
||||
__ sub(sp, sp, 4 * 16);
|
||||
__ st1(v12, v13, v14, v15, __ T16B, Address(sp));
|
||||
}
|
||||
__ sub(sp, sp, 4 * 16);
|
||||
__ st1(v8, v9, v10, v11, __ T16B, Address(sp));
|
||||
RegSet saved_regs = (RegSet::of(in, out, offset)
|
||||
+ RegSet::of(saved_encrypted_ctr, used_ptr, len));
|
||||
__ push(saved_regs, sp);
|
||||
__ andr(len, len, -16 * bulk_width); // 8/4 encryptions, 16 bytes per encryption
|
||||
__ add(in, in, offset);
|
||||
__ add(out, out, offset);
|
||||
|
||||
// Keys should already be loaded into the correct registers
|
||||
|
||||
__ ld1(v0, __ T16B, counter); // v0 contains the first counter
|
||||
__ rev32(v16, __ T16B, v0); // v16 contains byte-reversed counter
|
||||
|
||||
// AES/CTR loop
|
||||
{
|
||||
Label L_CTR_loop;
|
||||
__ BIND(L_CTR_loop);
|
||||
|
||||
// Setup the counters
|
||||
__ movi(v8, __ T4S, 0);
|
||||
__ movi(v9, __ T4S, 1);
|
||||
__ ins(v8, __ S, v9, 3, 3); // v8 contains { 0, 0, 0, 1 }
|
||||
|
||||
for (FloatRegister f = v0; f < v0 + bulk_width; f++) {
|
||||
__ rev32(f, __ T16B, v16);
|
||||
__ addv(v16, __ T4S, v16, v8);
|
||||
}
|
||||
|
||||
__ ld1(v8, v9, v10, v11, __ T16B, __ post(in, 4 * 16));
|
||||
|
||||
// Encrypt the counters
|
||||
__ aesecb_encrypt(noreg, noreg, keylen, v0, bulk_width);
|
||||
|
||||
if (bulk_width == 8) {
|
||||
__ ld1(v12, v13, v14, v15, __ T16B, __ post(in, 4 * 16));
|
||||
}
|
||||
|
||||
// XOR the encrypted counters with the inputs
|
||||
for (int i = 0; i < bulk_width; i++) {
|
||||
__ eor(v0 + i, __ T16B, v0 + i, v8 + i);
|
||||
}
|
||||
|
||||
// Write the encrypted data
|
||||
__ st1(v0, v1, v2, v3, __ T16B, __ post(out, 4 * 16));
|
||||
if (bulk_width == 8) {
|
||||
__ st1(v4, v5, v6, v7, __ T16B, __ post(out, 4 * 16));
|
||||
}
|
||||
|
||||
__ subw(len, len, 16 * bulk_width);
|
||||
__ cbnzw(len, L_CTR_loop);
|
||||
}
|
||||
|
||||
// Save the counter back where it goes
|
||||
__ rev32(v16, __ T16B, v16);
|
||||
__ st1(v16, __ T16B, counter);
|
||||
|
||||
__ pop(saved_regs, sp);
|
||||
|
||||
__ ld1(v8, v9, v10, v11, __ T16B, __ post(sp, 4 * 16));
|
||||
if (bulk_width == 8) {
|
||||
__ ld1(v12, v13, v14, v15, __ T16B, __ post(sp, 4 * 16));
|
||||
}
|
||||
|
||||
__ andr(rscratch1, len, -16 * bulk_width);
|
||||
__ sub(len, len, rscratch1);
|
||||
__ add(offset, offset, rscratch1);
|
||||
__ mov(used, 16);
|
||||
__ strw(used, Address(used_ptr));
|
||||
__ b(large_block_return);
|
||||
|
||||
return start;
|
||||
}
|
||||
|
||||
// Arguments:
|
||||
//
|
||||
// Inputs:
|
||||
@@ -4685,6 +4947,55 @@ class StubGenerator: public StubCodeGenerator {
|
||||
return start;
|
||||
}
|
||||
|
||||
address generate_ghash_processBlocks_wide() {
|
||||
address small = generate_ghash_processBlocks();
|
||||
|
||||
StubCodeMark mark(this, "StubRoutines", "ghash_processBlocks_wide");
|
||||
__ align(wordSize * 2);
|
||||
address p = __ pc();
|
||||
__ emit_int64(0x87); // The low-order bits of the field
|
||||
// polynomial (i.e. p = z^7+z^2+z+1)
|
||||
// repeated in the low and high parts of a
|
||||
// 128-bit vector
|
||||
__ emit_int64(0x87);
|
||||
|
||||
__ align(CodeEntryAlignment);
|
||||
address start = __ pc();
|
||||
|
||||
Register state = c_rarg0;
|
||||
Register subkeyH = c_rarg1;
|
||||
Register data = c_rarg2;
|
||||
Register blocks = c_rarg3;
|
||||
|
||||
const int unroll = 4;
|
||||
|
||||
__ cmp(blocks, (unsigned char)(unroll * 2));
|
||||
__ br(__ LT, small);
|
||||
|
||||
if (unroll > 1) {
|
||||
// Save state before entering routine
|
||||
__ sub(sp, sp, 4 * 16);
|
||||
__ st1(v12, v13, v14, v15, __ T16B, Address(sp));
|
||||
__ sub(sp, sp, 4 * 16);
|
||||
__ st1(v8, v9, v10, v11, __ T16B, Address(sp));
|
||||
}
|
||||
|
||||
__ ghash_processBlocks_wide(p, state, subkeyH, data, blocks, unroll);
|
||||
|
||||
if (unroll > 1) {
|
||||
// And restore state
|
||||
__ ld1(v8, v9, v10, v11, __ T16B, __ post(sp, 4 * 16));
|
||||
__ ld1(v12, v13, v14, v15, __ T16B, __ post(sp, 4 * 16));
|
||||
}
|
||||
|
||||
__ cmp(blocks, 0u);
|
||||
__ br(__ GT, small);
|
||||
|
||||
__ ret(lr);
|
||||
|
||||
return start;
|
||||
}
|
||||
|
||||
#ifdef LINUX
|
||||
|
||||
// ARMv8.1 LSE versions of the atomic stubs used by Atomic::PlatformXX.
|
||||
@@ -5115,42 +5426,42 @@ class StubGenerator: public StubCodeGenerator {
|
||||
|
||||
// Register allocation
|
||||
|
||||
Register reg = c_rarg0;
|
||||
Pa_base = reg; // Argument registers
|
||||
RegSetIterator regs = (RegSet::range(r0, r26) - r18_tls).begin();
|
||||
Pa_base = *regs; // Argument registers
|
||||
if (squaring)
|
||||
Pb_base = Pa_base;
|
||||
else
|
||||
Pb_base = ++reg;
|
||||
Pn_base = ++reg;
|
||||
Rlen= ++reg;
|
||||
inv = ++reg;
|
||||
Pm_base = ++reg;
|
||||
Pb_base = *++regs;
|
||||
Pn_base = *++regs;
|
||||
Rlen= *++regs;
|
||||
inv = *++regs;
|
||||
Pm_base = *++regs;
|
||||
|
||||
// Working registers:
|
||||
Ra = ++reg; // The current digit of a, b, n, and m.
|
||||
Rb = ++reg;
|
||||
Rm = ++reg;
|
||||
Rn = ++reg;
|
||||
Ra = *++regs; // The current digit of a, b, n, and m.
|
||||
Rb = *++regs;
|
||||
Rm = *++regs;
|
||||
Rn = *++regs;
|
||||
|
||||
Pa = ++reg; // Pointers to the current/next digit of a, b, n, and m.
|
||||
Pb = ++reg;
|
||||
Pm = ++reg;
|
||||
Pn = ++reg;
|
||||
Pa = *++regs; // Pointers to the current/next digit of a, b, n, and m.
|
||||
Pb = *++regs;
|
||||
Pm = *++regs;
|
||||
Pn = *++regs;
|
||||
|
||||
t0 = ++reg; // Three registers which form a
|
||||
t1 = ++reg; // triple-precision accumuator.
|
||||
t2 = ++reg;
|
||||
t0 = *++regs; // Three registers which form a
|
||||
t1 = *++regs; // triple-precision accumuator.
|
||||
t2 = *++regs;
|
||||
|
||||
Ri = ++reg; // Inner and outer loop indexes.
|
||||
Rj = ++reg;
|
||||
Ri = *++regs; // Inner and outer loop indexes.
|
||||
Rj = *++regs;
|
||||
|
||||
Rhi_ab = ++reg; // Product registers: low and high parts
|
||||
Rlo_ab = ++reg; // of a*b and m*n.
|
||||
Rhi_mn = ++reg;
|
||||
Rlo_mn = ++reg;
|
||||
Rhi_ab = *++regs; // Product registers: low and high parts
|
||||
Rlo_ab = *++regs; // of a*b and m*n.
|
||||
Rhi_mn = *++regs;
|
||||
Rlo_mn = *++regs;
|
||||
|
||||
// r19 and up are callee-saved.
|
||||
_toSave = RegSet::range(r19, reg) + Pm_base;
|
||||
_toSave = RegSet::range(r19, *regs) + Pm_base;
|
||||
}
|
||||
|
||||
private:
|
||||
@@ -6047,7 +6358,11 @@ class StubGenerator: public StubCodeGenerator {
|
||||
|
||||
// generate GHASH intrinsics code
|
||||
if (UseGHASHIntrinsics) {
|
||||
StubRoutines::_ghash_processBlocks = generate_ghash_processBlocks();
|
||||
if (UseAESCTRIntrinsics) {
|
||||
StubRoutines::_ghash_processBlocks = generate_ghash_processBlocks_wide();
|
||||
} else {
|
||||
StubRoutines::_ghash_processBlocks = generate_ghash_processBlocks();
|
||||
}
|
||||
}
|
||||
|
||||
if (UseBASE64Intrinsics) {
|
||||
@@ -6061,6 +6376,10 @@ class StubGenerator: public StubCodeGenerator {
|
||||
StubRoutines::_cipherBlockChaining_decryptAESCrypt = generate_cipherBlockChaining_decryptAESCrypt();
|
||||
}
|
||||
|
||||
if (UseAESCTRIntrinsics) {
|
||||
StubRoutines::_counterMode_AESCrypt = generate_counterMode_AESCrypt();
|
||||
}
|
||||
|
||||
if (UseSHA1Intrinsics) {
|
||||
StubRoutines::_sha1_implCompress = generate_sha1_implCompress(false, "sha1_implCompress");
|
||||
StubRoutines::_sha1_implCompressMB = generate_sha1_implCompress(true, "sha1_implCompressMB");
|
||||
|
||||
@@ -36,7 +36,7 @@ static bool returns_to_call_stub(address return_pc) {
|
||||
|
||||
enum platform_dependent_constants {
|
||||
code_size1 = 19000, // simply increase if too small (assembler will crash if too small)
|
||||
code_size2 = 28000 // simply increase if too small (assembler will crash if too small)
|
||||
code_size2 = 32000 // simply increase if too small (assembler will crash if too small)
|
||||
};
|
||||
|
||||
class aarch64 {
|
||||
|
||||
@@ -1125,7 +1125,7 @@ void TemplateInterpreterGenerator::bang_stack_shadow_pages(bool native_call) {
|
||||
// an interpreter frame with greater than a page of locals, so each page
|
||||
// needs to be checked. Only true for non-native.
|
||||
if (UseStackBanging) {
|
||||
const int n_shadow_pages = JavaThread::stack_shadow_zone_size() / os::vm_page_size();
|
||||
const int n_shadow_pages = checked_cast<int>(JavaThread::stack_shadow_zone_size() / os::vm_page_size());
|
||||
const int start_page = native_call ? n_shadow_pages : 1;
|
||||
const int page_size = os::vm_page_size();
|
||||
for (int pages = start_page; pages <= n_shadow_pages ; pages++) {
|
||||
@@ -1458,11 +1458,12 @@ address TemplateInterpreterGenerator::generate_native_entry(bool synchronized) {
|
||||
__ cmp(rscratch1, JavaThread::stack_guard_yellow_reserved_disabled);
|
||||
__ br(Assembler::NE, no_reguard);
|
||||
|
||||
__ pusha(); // XXX only save smashed registers
|
||||
__ push_call_clobbered_registers();
|
||||
__ mov(c_rarg0, rthread);
|
||||
__ mov(rscratch2, CAST_FROM_FN_PTR(address, SharedRuntime::reguard_yellow_pages));
|
||||
__ blr(rscratch2);
|
||||
__ popa(); // XXX only restore smashed registers
|
||||
__ pop_call_clobbered_registers();
|
||||
|
||||
__ bind(no_reguard);
|
||||
}
|
||||
|
||||
|
||||
@@ -94,10 +94,6 @@ static inline Address aaddress(Register r) {
|
||||
return iaddress(r);
|
||||
}
|
||||
|
||||
static inline Address at_rsp() {
|
||||
return Address(esp, 0);
|
||||
}
|
||||
|
||||
// At top of Java expression stack which may be different than esp(). It
|
||||
// isn't for category 1 objects.
|
||||
static inline Address at_tos () {
|
||||
@@ -2323,6 +2319,7 @@ void TemplateTable::resolve_cache_and_index(int byte_no,
|
||||
switch (code) {
|
||||
case Bytecodes::_nofast_getfield: code = Bytecodes::_getfield; break;
|
||||
case Bytecodes::_nofast_putfield: code = Bytecodes::_putfield; break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
assert(byte_no == f1_byte || byte_no == f2_byte, "byte_no out of range");
|
||||
@@ -2947,6 +2944,7 @@ void TemplateTable::jvmti_post_fast_field_mod()
|
||||
case Bytecodes::_fast_dputfield: __ pop_d(); break;
|
||||
case Bytecodes::_fast_fputfield: __ pop_f(); break;
|
||||
case Bytecodes::_fast_lputfield: __ pop_l(r0); break;
|
||||
default: break;
|
||||
}
|
||||
__ bind(L2);
|
||||
}
|
||||
|
||||
@@ -24,100 +24,35 @@
|
||||
*/
|
||||
|
||||
#include "precompiled.hpp"
|
||||
#include "asm/macroAssembler.hpp"
|
||||
#include "asm/macroAssembler.inline.hpp"
|
||||
#include "memory/resourceArea.hpp"
|
||||
#include "runtime/arguments.hpp"
|
||||
#include "runtime/globals_extension.hpp"
|
||||
#include "runtime/java.hpp"
|
||||
#include "runtime/stubCodeGenerator.hpp"
|
||||
#include "runtime/os.hpp"
|
||||
#include "runtime/vm_version.hpp"
|
||||
#include "utilities/formatBuffer.hpp"
|
||||
#include "utilities/macros.hpp"
|
||||
|
||||
#include OS_HEADER_INLINE(os)
|
||||
|
||||
#include <sys/auxv.h>
|
||||
#include <asm/hwcap.h>
|
||||
|
||||
#ifndef HWCAP_AES
|
||||
#define HWCAP_AES (1<<3)
|
||||
#endif
|
||||
|
||||
#ifndef HWCAP_PMULL
|
||||
#define HWCAP_PMULL (1<<4)
|
||||
#endif
|
||||
|
||||
#ifndef HWCAP_SHA1
|
||||
#define HWCAP_SHA1 (1<<5)
|
||||
#endif
|
||||
|
||||
#ifndef HWCAP_SHA2
|
||||
#define HWCAP_SHA2 (1<<6)
|
||||
#endif
|
||||
|
||||
#ifndef HWCAP_CRC32
|
||||
#define HWCAP_CRC32 (1<<7)
|
||||
#endif
|
||||
|
||||
#ifndef HWCAP_ATOMICS
|
||||
#define HWCAP_ATOMICS (1<<8)
|
||||
#endif
|
||||
|
||||
int VM_Version::_cpu;
|
||||
int VM_Version::_model;
|
||||
int VM_Version::_model2;
|
||||
int VM_Version::_variant;
|
||||
int VM_Version::_revision;
|
||||
int VM_Version::_stepping;
|
||||
VM_Version::PsrInfo VM_Version::_psr_info = { 0, };
|
||||
|
||||
static BufferBlob* stub_blob;
|
||||
static const int stub_size = 550;
|
||||
int VM_Version::_zva_length;
|
||||
int VM_Version::_dcache_line_size;
|
||||
int VM_Version::_icache_line_size;
|
||||
|
||||
extern "C" {
|
||||
typedef void (*getPsrInfo_stub_t)(void*);
|
||||
}
|
||||
static getPsrInfo_stub_t getPsrInfo_stub = NULL;
|
||||
|
||||
|
||||
class VM_Version_StubGenerator: public StubCodeGenerator {
|
||||
public:
|
||||
|
||||
VM_Version_StubGenerator(CodeBuffer *c) : StubCodeGenerator(c) {}
|
||||
|
||||
address generate_getPsrInfo() {
|
||||
StubCodeMark mark(this, "VM_Version", "getPsrInfo_stub");
|
||||
# define __ _masm->
|
||||
address start = __ pc();
|
||||
|
||||
// void getPsrInfo(VM_Version::PsrInfo* psr_info);
|
||||
|
||||
address entry = __ pc();
|
||||
|
||||
__ enter();
|
||||
|
||||
__ get_dczid_el0(rscratch1);
|
||||
__ strw(rscratch1, Address(c_rarg0, in_bytes(VM_Version::dczid_el0_offset())));
|
||||
|
||||
__ get_ctr_el0(rscratch1);
|
||||
__ strw(rscratch1, Address(c_rarg0, in_bytes(VM_Version::ctr_el0_offset())));
|
||||
|
||||
__ leave();
|
||||
__ ret(lr);
|
||||
|
||||
# undef __
|
||||
|
||||
return start;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
void VM_Version::get_processor_features() {
|
||||
void VM_Version::initialize() {
|
||||
_supports_cx8 = true;
|
||||
_supports_atomic_getset4 = true;
|
||||
_supports_atomic_getadd4 = true;
|
||||
_supports_atomic_getset8 = true;
|
||||
_supports_atomic_getadd8 = true;
|
||||
|
||||
getPsrInfo_stub(&_psr_info);
|
||||
get_os_cpu_info();
|
||||
|
||||
int dcache_line = VM_Version::dcache_line_size();
|
||||
|
||||
@@ -163,34 +98,6 @@ void VM_Version::get_processor_features() {
|
||||
ContendedPaddingWidth = dcache_line;
|
||||
}
|
||||
|
||||
uint64_t auxv = getauxval(AT_HWCAP);
|
||||
|
||||
char buf[512];
|
||||
|
||||
_features = auxv;
|
||||
|
||||
int cpu_lines = 0;
|
||||
if (FILE *f = fopen("/proc/cpuinfo", "r")) {
|
||||
char buf[128], *p;
|
||||
while (fgets(buf, sizeof (buf), f) != NULL) {
|
||||
if ((p = strchr(buf, ':')) != NULL) {
|
||||
long v = strtol(p+1, NULL, 0);
|
||||
if (strncmp(buf, "CPU implementer", sizeof "CPU implementer" - 1) == 0) {
|
||||
_cpu = v;
|
||||
cpu_lines++;
|
||||
} else if (strncmp(buf, "CPU variant", sizeof "CPU variant" - 1) == 0) {
|
||||
_variant = v;
|
||||
} else if (strncmp(buf, "CPU part", sizeof "CPU part" - 1) == 0) {
|
||||
if (_model != v) _model2 = _model;
|
||||
_model = v;
|
||||
} else if (strncmp(buf, "CPU revision", sizeof "CPU revision" - 1) == 0) {
|
||||
_revision = v;
|
||||
}
|
||||
}
|
||||
}
|
||||
fclose(f);
|
||||
}
|
||||
|
||||
// Enable vendor specific features
|
||||
|
||||
// ThunderX
|
||||
@@ -256,27 +163,28 @@ void VM_Version::get_processor_features() {
|
||||
}
|
||||
|
||||
if (_cpu == CPU_ARM && (_model == 0xd07 || _model2 == 0xd07)) _features |= CPU_STXR_PREFETCH;
|
||||
// If an olde style /proc/cpuinfo (cpu_lines == 1) then if _model is an A57 (0xd07)
|
||||
// If an olde style /proc/cpuinfo (cores == 1) then if _model is an A57 (0xd07)
|
||||
// we assume the worst and assume we could be on a big little system and have
|
||||
// undisclosed A53 cores which we could be swapped to at any stage
|
||||
if (_cpu == CPU_ARM && cpu_lines == 1 && _model == 0xd07) _features |= CPU_A53MAC;
|
||||
if (_cpu == CPU_ARM && os::processor_count() == 1 && _model == 0xd07) _features |= CPU_A53MAC;
|
||||
|
||||
char buf[512];
|
||||
sprintf(buf, "0x%02x:0x%x:0x%03x:%d", _cpu, _variant, _model, _revision);
|
||||
if (_model2) sprintf(buf+strlen(buf), "(0x%03x)", _model2);
|
||||
if (auxv & HWCAP_ASIMD) strcat(buf, ", simd");
|
||||
if (auxv & HWCAP_CRC32) strcat(buf, ", crc");
|
||||
if (auxv & HWCAP_AES) strcat(buf, ", aes");
|
||||
if (auxv & HWCAP_SHA1) strcat(buf, ", sha1");
|
||||
if (auxv & HWCAP_SHA2) strcat(buf, ", sha256");
|
||||
if (auxv & HWCAP_ATOMICS) strcat(buf, ", lse");
|
||||
if (_features & CPU_ASIMD) strcat(buf, ", simd");
|
||||
if (_features & CPU_CRC32) strcat(buf, ", crc");
|
||||
if (_features & CPU_AES) strcat(buf, ", aes");
|
||||
if (_features & CPU_SHA1) strcat(buf, ", sha1");
|
||||
if (_features & CPU_SHA2) strcat(buf, ", sha256");
|
||||
if (_features & CPU_LSE) strcat(buf, ", lse");
|
||||
|
||||
_features_string = os::strdup(buf);
|
||||
|
||||
if (FLAG_IS_DEFAULT(UseCRC32)) {
|
||||
UseCRC32 = (auxv & HWCAP_CRC32) != 0;
|
||||
UseCRC32 = (_features & CPU_CRC32) != 0;
|
||||
}
|
||||
|
||||
if (UseCRC32 && (auxv & HWCAP_CRC32) == 0) {
|
||||
if (UseCRC32 && (_features & CPU_CRC32) == 0) {
|
||||
warning("UseCRC32 specified, but not supported on this CPU");
|
||||
FLAG_SET_DEFAULT(UseCRC32, false);
|
||||
}
|
||||
@@ -290,7 +198,7 @@ void VM_Version::get_processor_features() {
|
||||
FLAG_SET_DEFAULT(UseVectorizedMismatchIntrinsic, false);
|
||||
}
|
||||
|
||||
if (auxv & HWCAP_ATOMICS) {
|
||||
if (_features & CPU_LSE) {
|
||||
if (FLAG_IS_DEFAULT(UseLSE))
|
||||
FLAG_SET_DEFAULT(UseLSE, true);
|
||||
} else {
|
||||
@@ -300,7 +208,7 @@ void VM_Version::get_processor_features() {
|
||||
}
|
||||
}
|
||||
|
||||
if (auxv & HWCAP_AES) {
|
||||
if (_features & CPU_AES) {
|
||||
UseAES = UseAES || FLAG_IS_DEFAULT(UseAES);
|
||||
UseAESIntrinsics =
|
||||
UseAESIntrinsics || (UseAES && FLAG_IS_DEFAULT(UseAESIntrinsics));
|
||||
@@ -308,6 +216,9 @@ void VM_Version::get_processor_features() {
|
||||
warning("UseAESIntrinsics enabled, but UseAES not, enabling");
|
||||
UseAES = true;
|
||||
}
|
||||
if (FLAG_IS_DEFAULT(UseAESCTRIntrinsics)) {
|
||||
FLAG_SET_DEFAULT(UseAESCTRIntrinsics, false);
|
||||
}
|
||||
} else {
|
||||
if (UseAES) {
|
||||
warning("AES instructions are not available on this CPU");
|
||||
@@ -317,18 +228,17 @@ void VM_Version::get_processor_features() {
|
||||
warning("AES intrinsics are not available on this CPU");
|
||||
FLAG_SET_DEFAULT(UseAESIntrinsics, false);
|
||||
}
|
||||
}
|
||||
|
||||
if (UseAESCTRIntrinsics) {
|
||||
warning("AES/CTR intrinsics are not available on this CPU");
|
||||
FLAG_SET_DEFAULT(UseAESCTRIntrinsics, false);
|
||||
if (UseAESCTRIntrinsics) {
|
||||
warning("AES/CTR intrinsics are not available on this CPU");
|
||||
FLAG_SET_DEFAULT(UseAESCTRIntrinsics, false);
|
||||
}
|
||||
}
|
||||
|
||||
if (FLAG_IS_DEFAULT(UseCRC32Intrinsics)) {
|
||||
UseCRC32Intrinsics = true;
|
||||
}
|
||||
|
||||
if (auxv & HWCAP_CRC32) {
|
||||
if (_features & CPU_CRC32) {
|
||||
if (FLAG_IS_DEFAULT(UseCRC32CIntrinsics)) {
|
||||
FLAG_SET_DEFAULT(UseCRC32CIntrinsics, true);
|
||||
}
|
||||
@@ -341,7 +251,7 @@ void VM_Version::get_processor_features() {
|
||||
FLAG_SET_DEFAULT(UseFMA, true);
|
||||
}
|
||||
|
||||
if (auxv & (HWCAP_SHA1 | HWCAP_SHA2)) {
|
||||
if (_features & (CPU_SHA1 | CPU_SHA2)) {
|
||||
if (FLAG_IS_DEFAULT(UseSHA)) {
|
||||
FLAG_SET_DEFAULT(UseSHA, true);
|
||||
}
|
||||
@@ -350,7 +260,7 @@ void VM_Version::get_processor_features() {
|
||||
FLAG_SET_DEFAULT(UseSHA, false);
|
||||
}
|
||||
|
||||
if (UseSHA && (auxv & HWCAP_SHA1)) {
|
||||
if (UseSHA && (_features & CPU_SHA1)) {
|
||||
if (FLAG_IS_DEFAULT(UseSHA1Intrinsics)) {
|
||||
FLAG_SET_DEFAULT(UseSHA1Intrinsics, true);
|
||||
}
|
||||
@@ -359,7 +269,7 @@ void VM_Version::get_processor_features() {
|
||||
FLAG_SET_DEFAULT(UseSHA1Intrinsics, false);
|
||||
}
|
||||
|
||||
if (UseSHA && (auxv & HWCAP_SHA2)) {
|
||||
if (UseSHA && (_features & CPU_SHA2)) {
|
||||
if (FLAG_IS_DEFAULT(UseSHA256Intrinsics)) {
|
||||
FLAG_SET_DEFAULT(UseSHA256Intrinsics, true);
|
||||
}
|
||||
@@ -377,7 +287,7 @@ void VM_Version::get_processor_features() {
|
||||
FLAG_SET_DEFAULT(UseSHA, false);
|
||||
}
|
||||
|
||||
if (auxv & HWCAP_PMULL) {
|
||||
if (_features & CPU_PMULL) {
|
||||
if (FLAG_IS_DEFAULT(UseGHASHIntrinsics)) {
|
||||
FLAG_SET_DEFAULT(UseGHASHIntrinsics, true);
|
||||
}
|
||||
@@ -439,22 +349,6 @@ void VM_Version::get_processor_features() {
|
||||
OptoScheduling = true;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void VM_Version::initialize() {
|
||||
ResourceMark rm;
|
||||
|
||||
stub_blob = BufferBlob::create("getPsrInfo_stub", stub_size);
|
||||
if (stub_blob == NULL) {
|
||||
vm_exit_during_initialization("Unable to allocate getPsrInfo_stub");
|
||||
}
|
||||
|
||||
CodeBuffer c(stub_blob);
|
||||
VM_Version_StubGenerator g(&c);
|
||||
getPsrInfo_stub = CAST_TO_FN_PTR(getPsrInfo_stub_t,
|
||||
g.generate_getPsrInfo());
|
||||
|
||||
get_processor_features();
|
||||
|
||||
UNSUPPORTED_OPTION(CriticalJNINatives);
|
||||
}
|
||||
|
||||
@@ -41,12 +41,12 @@ protected:
|
||||
static int _revision;
|
||||
static int _stepping;
|
||||
|
||||
struct PsrInfo {
|
||||
uint32_t dczid_el0;
|
||||
uint32_t ctr_el0;
|
||||
};
|
||||
static PsrInfo _psr_info;
|
||||
static void get_processor_features();
|
||||
static int _zva_length;
|
||||
static int _dcache_line_size;
|
||||
static int _icache_line_size;
|
||||
|
||||
// Read additional info using OS-specific interfaces
|
||||
static void get_os_cpu_info();
|
||||
|
||||
public:
|
||||
// Initialization
|
||||
@@ -67,6 +67,9 @@ public:
|
||||
return false;
|
||||
}
|
||||
|
||||
// Arm can assign codes that are not published in the manual.
|
||||
// Apple's code is defined in
|
||||
// https://github.com/apple/darwin-xnu/blob/33eb983/osfmk/arm/cpuid.h#L62
|
||||
enum Family {
|
||||
CPU_ARM = 'A',
|
||||
CPU_BROADCOM = 'B',
|
||||
@@ -79,6 +82,7 @@ public:
|
||||
CPU_QUALCOM = 'Q',
|
||||
CPU_MARVELL = 'V',
|
||||
CPU_INTEL = 'i',
|
||||
CPU_APPLE = 'a',
|
||||
};
|
||||
|
||||
enum Feature_Flag {
|
||||
@@ -91,6 +95,7 @@ public:
|
||||
CPU_SHA2 = (1<<6),
|
||||
CPU_CRC32 = (1<<7),
|
||||
CPU_LSE = (1<<8),
|
||||
// flags above must follow Linux HWCAP
|
||||
CPU_STXR_PREFETCH= (1 << 29),
|
||||
CPU_A53MAC = (1 << 30),
|
||||
CPU_DMB_ATOMICS = (1 << 31),
|
||||
@@ -101,24 +106,20 @@ public:
|
||||
static int cpu_model2() { return _model2; }
|
||||
static int cpu_variant() { return _variant; }
|
||||
static int cpu_revision() { return _revision; }
|
||||
static ByteSize dczid_el0_offset() { return byte_offset_of(PsrInfo, dczid_el0); }
|
||||
static ByteSize ctr_el0_offset() { return byte_offset_of(PsrInfo, ctr_el0); }
|
||||
static bool is_zva_enabled() {
|
||||
// Check the DZP bit (bit 4) of dczid_el0 is zero
|
||||
// and block size (bit 0~3) is not zero.
|
||||
return ((_psr_info.dczid_el0 & 0x10) == 0 &&
|
||||
(_psr_info.dczid_el0 & 0xf) != 0);
|
||||
}
|
||||
|
||||
static bool is_zva_enabled() { return 0 <= _zva_length; }
|
||||
static int zva_length() {
|
||||
assert(is_zva_enabled(), "ZVA not available");
|
||||
return 4 << (_psr_info.dczid_el0 & 0xf);
|
||||
}
|
||||
static int icache_line_size() {
|
||||
return (1 << (_psr_info.ctr_el0 & 0x0f)) * 4;
|
||||
}
|
||||
static int dcache_line_size() {
|
||||
return (1 << ((_psr_info.ctr_el0 >> 16) & 0x0f)) * 4;
|
||||
return _zva_length;
|
||||
}
|
||||
|
||||
static int icache_line_size() { return _icache_line_size; }
|
||||
static int dcache_line_size() { return _dcache_line_size; }
|
||||
|
||||
#ifdef __APPLE__
|
||||
// Is the CPU running emulated (for example macOS Rosetta running x86_64 code on M1 ARM (aarch64)
|
||||
static bool is_cpu_emulated();
|
||||
#endif
|
||||
};
|
||||
|
||||
#endif // CPU_AARCH64_VM_VM_VERSION_AARCH64_HPP
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#include "precompiled.hpp"
|
||||
#include "memory/allocation.hpp"
|
||||
#include "memory/allocation.inline.hpp"
|
||||
#include "runtime/os.inline.hpp"
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user