Compare commits
802
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2ef1e43baa | ||
|
|
b959eceec8 | ||
|
|
eb154010c6 | ||
|
|
c8c69dbcbd | ||
|
|
00030d793f | ||
|
|
18d199c498 | ||
|
|
c6896dd46a | ||
|
|
b7a9cb7439 | ||
|
|
d913c6e796 | ||
|
|
fe8858d59e | ||
|
|
84492befc5 | ||
|
|
bb00212b21 | ||
|
|
02bc1dd064 | ||
|
|
3b4d876521 | ||
|
|
b11d96dcbb | ||
|
|
28a04f8ffd | ||
|
|
944460fa76 | ||
|
|
a8d7b80444 | ||
|
|
7686e15af4 | ||
|
|
ce7e4d79e1 | ||
|
|
9fde750935 | ||
|
|
37d3af4d6e | ||
|
|
9f82baae4e | ||
|
|
d828724fad | ||
|
|
90e8979961 | ||
|
|
ceb3c2a2eb | ||
|
|
e8482cfb39 | ||
|
|
7699f8d537 | ||
|
|
cb9313a27c | ||
|
|
8bd5c997b8 | ||
|
|
2f2e179132 | ||
|
|
0e8cb764e1 | ||
|
|
73f6cfa0aa | ||
|
|
7d8ef5a2c0 | ||
|
|
09ad0c8115 | ||
|
|
be9615a763 | ||
|
|
33b8a219f5 | ||
|
|
063330935b | ||
|
|
3d57e0b688 | ||
|
|
057c14ad62 | ||
|
|
2384f85b13 | ||
|
|
3555805692 | ||
|
|
2ae9b087e6 | ||
|
|
e10b7c2929 | ||
|
|
5eb0b74350 | ||
|
|
bf4b8a9051 | ||
|
|
9e3fa6e6f7 | ||
|
|
326dc7b8b5 | ||
|
|
3dd4d8f220 | ||
|
|
5ccbcf999d | ||
|
|
40b98f4ca8 | ||
|
|
ccfa6e2d8e | ||
|
|
96d2742377 | ||
|
|
861fb8e553 | ||
|
|
cec2a9de58 | ||
|
|
4499ff72c7 | ||
|
|
19c1762248 | ||
|
|
3d513070ad | ||
|
|
0ea7b9a70a | ||
|
|
206b763d56 | ||
|
|
c4110b60a7 | ||
|
|
e3921e5d5e | ||
|
|
f5ef288dce | ||
|
|
7fcb579030 | ||
|
|
54825690b0 | ||
|
|
5406010320 | ||
|
|
f1339bdba1 | ||
|
|
8ae04602a9 | ||
|
|
fd34a04679 | ||
|
|
536da1c1a7 | ||
|
|
05aa9bed4d | ||
|
|
e38f1de121 | ||
|
|
83ef586986 | ||
|
|
3003f25696 | ||
|
|
00ed89baff | ||
|
|
2bff253d7d | ||
|
|
a4e0754cd8 | ||
|
|
4df7d8011d | ||
|
|
a238ca4ff1 | ||
|
|
5b77b0ff25 | ||
|
|
2fb18b5d30 | ||
|
|
17ab67d2b6 | ||
|
|
8f6a331ffd | ||
|
|
7c079a69fd | ||
|
|
f90149a024 | ||
|
|
3bb5504643 | ||
|
|
975640fc7b | ||
|
|
bc17119682 | ||
|
|
9620435c92 | ||
|
|
e2e4bb3df2 | ||
|
|
24d0ce16e5 | ||
|
|
624c965b41 | ||
|
|
71a9fec125 | ||
|
|
7e4b70ddf4 | ||
|
|
a4f35cb7d6 | ||
|
|
ec14336927 | ||
|
|
58bb1ab8f3 | ||
|
|
74ac6819c9 | ||
|
|
17292f4f5e | ||
|
|
82b143f3f0 | ||
|
|
745cefca8a | ||
|
|
0cebe2a3a2 | ||
|
|
fb05a9e586 | ||
|
|
258e92e942 | ||
|
|
624e777a6f | ||
|
|
8220ed31e6 | ||
|
|
07a382a8b7 | ||
|
|
1f9f9f628c | ||
|
|
f8f2ff56e2 | ||
|
|
7688f6dfa1 | ||
|
|
02f09d66e2 | ||
|
|
df665a4980 | ||
|
|
a66fed62cc | ||
|
|
90e2cc7eff | ||
|
|
4553bd705a | ||
|
|
0a634a4932 | ||
|
|
fb477bab21 | ||
|
|
4f3360c051 | ||
|
|
377426d090 | ||
|
|
359991bcab | ||
|
|
c72e009383 | ||
|
|
8cae9e1b2b | ||
|
|
98b21a669b | ||
|
|
7fb32b86a4 | ||
|
|
020dd0e9f2 | ||
|
|
069fabbd3d | ||
|
|
375e98b950 | ||
|
|
af263907ca | ||
|
|
f0a25157c2 | ||
|
|
16ae92881b | ||
|
|
744ec73423 | ||
|
|
cf61e0aea3 | ||
|
|
327a1ed9bb | ||
|
|
77b9ea027f | ||
|
|
a45391cd51 | ||
|
|
0e0744b923 | ||
|
|
5f8b3e4d55 | ||
|
|
4e47e256d9 | ||
|
|
86b267ee8a | ||
|
|
95592e8fb9 | ||
|
|
6b142e0139 | ||
|
|
ffcbe7eda3 | ||
|
|
e0779c1194 | ||
|
|
74c9fe728d | ||
|
|
8f86bc7673 | ||
|
|
1f3da92acf | ||
|
|
e104adce0e | ||
|
|
d755ae15b4 | ||
|
|
bb157a482e | ||
|
|
32a0ff7222 | ||
|
|
d9ba1b6da9 | ||
|
|
81ff448084 | ||
|
|
e204a8076e | ||
|
|
49ecb02343 | ||
|
|
9862981c68 | ||
|
|
624804cbff | ||
|
|
b5398b9723 | ||
|
|
c2a2670d3d | ||
|
|
9ad2131bac | ||
|
|
00a6a5ef85 | ||
|
|
12cec22801 | ||
|
|
bd64bd0172 | ||
|
|
5c30291805 | ||
|
|
4da0125b9e | ||
|
|
2e0412787e | ||
|
|
9617038a29 | ||
|
|
67fee813f4 | ||
|
|
566c5fcacb | ||
|
|
16641e0946 | ||
|
|
70f917c744 | ||
|
|
379e9e6987 | ||
|
|
3469aa04bc | ||
|
|
9a99081929 | ||
|
|
595c9c5bbf | ||
|
|
3610e8187c | ||
|
|
a7a2ea5d13 | ||
|
|
fa4418b4a4 | ||
|
|
5bb5d2fe46 | ||
|
|
d591cd2a38 | ||
|
|
1b5e1e0d0c | ||
|
|
24df480254 | ||
|
|
80a260d778 | ||
|
|
d328132888 | ||
|
|
59703a3ac0 | ||
|
|
5b5790e246 | ||
|
|
9e5424ec42 | ||
|
|
bdce39ee7d | ||
|
|
14e82cd291 | ||
|
|
9fcf7798c6 | ||
|
|
175afb81f9 | ||
|
|
7bc1750d64 | ||
|
|
6834486531 | ||
|
|
9c2d1e2124 | ||
|
|
918579087a | ||
|
|
3209440946 | ||
|
|
7974e392f1 | ||
|
|
c1d859554e | ||
|
|
40754def82 | ||
|
|
c7265011db | ||
|
|
eecd32812d | ||
|
|
e3d9cc2a9e | ||
|
|
e5e8991f79 | ||
|
|
f4b127356f | ||
|
|
7bc8d09013 | ||
|
|
cd94b3ef74 | ||
|
|
c61f0dae5e | ||
|
|
99d90175bf | ||
|
|
f51840620b | ||
|
|
593fe01bb8 | ||
|
|
dc8128f2dc | ||
|
|
0f575f81c6 | ||
|
|
f6e76368c1 | ||
|
|
97f3092b88 | ||
|
|
35c431ee8f | ||
|
|
b36217eefe | ||
|
|
aebe74f61e | ||
|
|
7a320245bc | ||
|
|
71815d8718 | ||
|
|
30e708c0f7 | ||
|
|
2e31fbb242 | ||
|
|
92454681aa | ||
|
|
5f7ad0f458 | ||
|
|
3336552bef | ||
|
|
974fa8e028 | ||
|
|
80cf689e81 | ||
|
|
2cba912d15 | ||
|
|
96e2e6df66 | ||
|
|
5b1a20fbaf | ||
|
|
b446c06b79 | ||
|
|
bbf3e19294 | ||
|
|
e4cc96d27e | ||
|
|
568b156c14 | ||
|
|
3bcc7efacb | ||
|
|
9d9fdc76cb | ||
|
|
3c2ed666a6 | ||
|
|
15e5de079c | ||
|
|
8b688c81e4 | ||
|
|
7232400400 | ||
|
|
4d7b35d0de | ||
|
|
693079abb5 | ||
|
|
e25a233534 | ||
|
|
77a57de7ed | ||
|
|
72822cf030 | ||
|
|
3bba29a6ef | ||
|
|
36d68814fd | ||
|
|
33634b0b58 | ||
|
|
2087c988ad | ||
|
|
eb69775588 | ||
|
|
83592a0522 | ||
|
|
83d5c758f4 | ||
|
|
07cbc8cf18 | ||
|
|
dd3d5cda92 | ||
|
|
47d9a0871f | ||
|
|
3cdb983863 | ||
|
|
cb1e3c20b4 | ||
|
|
ec2ec5b84b | ||
|
|
64e8ee6279 | ||
|
|
93aeda32da | ||
|
|
458d6e80e1 | ||
|
|
75c8eaeaf7 | ||
|
|
e504c8d1b9 | ||
|
|
cdd889cbbe | ||
|
|
da47e5faab | ||
|
|
11b1448aa5 | ||
|
|
a4c298f829 | ||
|
|
120fec4fa4 | ||
|
|
96c46d92d6 | ||
|
|
b77f0911b8 | ||
|
|
f45faa2c2a | ||
|
|
9302c5f9aa | ||
|
|
c45bca7099 | ||
|
|
6cfc00bbdd | ||
|
|
dcc2ce2438 | ||
|
|
5267dd0301 | ||
|
|
3e883537f1 | ||
|
|
2d08cf8554 | ||
|
|
1fb005eec4 | ||
|
|
9ea0ca4de7 | ||
|
|
abb5302992 | ||
|
|
debf530c78 | ||
|
|
21852b3cc6 | ||
|
|
a31cc23571 | ||
|
|
d72923dcd5 | ||
|
|
4f5aa75375 | ||
|
|
5d478a8e48 | ||
|
|
94d5efbc96 | ||
|
|
f343cb5a0e | ||
|
|
da260f4652 | ||
|
|
3b35907c50 | ||
|
|
e927feb4d5 | ||
|
|
6761bc8e78 | ||
|
|
322cec513c | ||
|
|
aff352d9c3 | ||
|
|
a49f691f49 | ||
|
|
85586ffbed | ||
|
|
67eb31effd | ||
|
|
85dfee5b75 | ||
|
|
5f3d999689 | ||
|
|
b42a538152 | ||
|
|
36addd6698 | ||
|
|
1f8095771c | ||
|
|
b4b7f1ffdc | ||
|
|
1528be93f3 | ||
|
|
2978dfd42a | ||
|
|
eb0622513b | ||
|
|
28cc2ecfe4 | ||
|
|
acf5e6d394 | ||
|
|
d559a0fe7e | ||
|
|
a84c8ce6f8 | ||
|
|
5cf1ee92e8 | ||
|
|
4ce7075d67 | ||
|
|
d3d2b8dfdb | ||
|
|
d934c86f52 | ||
|
|
271aba5d0f | ||
|
|
230433ad9d | ||
|
|
f3bd8707a1 | ||
|
|
ba8a3ac375 | ||
|
|
938fe1a52a | ||
|
|
6818cd6bac | ||
|
|
7d8587a9db | ||
|
|
4e9d08d39e | ||
|
|
8caa370611 | ||
|
|
badaed7177 | ||
|
|
1788bb25a3 | ||
|
|
c6e854b186 | ||
|
|
0ca885b592 | ||
|
|
7a0543c414 | ||
|
|
b4ed4fce33 | ||
|
|
e91b7e780e | ||
|
|
b758c7a4b2 | ||
|
|
973654c90a | ||
|
|
74142b4d67 | ||
|
|
d0f5d25e4d | ||
|
|
f05374fa1c | ||
|
|
ffbbe41d63 | ||
|
|
28ab7dc9f3 | ||
|
|
e4623227ef | ||
|
|
548e9465f9 | ||
|
|
9353bca73f | ||
|
|
5aa8866347 | ||
|
|
db9611cdab | ||
|
|
4c42992532 | ||
|
|
3d0b44dded | ||
|
|
de62525708 | ||
|
|
517e93edc0 | ||
|
|
8a58003d56 | ||
|
|
1031ff82a6 | ||
|
|
2c07f28419 | ||
|
|
6b9ef9fda0 | ||
|
|
eadb61205e | ||
|
|
77706b3b73 | ||
|
|
3f05e11467 | ||
|
|
1ec81fcdfe | ||
|
|
ea072f89f5 | ||
|
|
d4a468c24a | ||
|
|
d6fdf52351 | ||
|
|
24814b2ccb | ||
|
|
e66967c06e | ||
|
|
e752240ee7 | ||
|
|
a169c1335a | ||
|
|
9b88689b9d | ||
|
|
9b6ea60690 | ||
|
|
467338098e | ||
|
|
40c126b925 | ||
|
|
de7e9c1456 | ||
|
|
2e9beef9f2 | ||
|
|
1c4980bda5 | ||
|
|
e4aa322e33 | ||
|
|
7e742e2ca3 | ||
|
|
3928475fd6 | ||
|
|
dfebf60c9b | ||
|
|
fb784b6236 | ||
|
|
6e3252e401 | ||
|
|
8a22cce65e | ||
|
|
39971739fa | ||
|
|
9bf7948303 | ||
|
|
958f597a6c | ||
|
|
9c90da7969 | ||
|
|
f540943f0c | ||
|
|
40d110fcc9 | ||
|
|
97fd10aed4 | ||
|
|
1ee8db41db | ||
|
|
e3b1796552 | ||
|
|
b19509a8fa | ||
|
|
568e035837 | ||
|
|
874a309eed | ||
|
|
95198e12e9 | ||
|
|
c6aae11598 | ||
|
|
481bd4493b | ||
|
|
38dbafb98e | ||
|
|
32a6db0ca6 | ||
|
|
b6ec855077 | ||
|
|
68c1d5d2bd | ||
|
|
0d966c7a6f | ||
|
|
1672f9f5d3 | ||
|
|
def0dac79f | ||
|
|
4c222eee7b | ||
|
|
2651b565e0 | ||
|
|
eebeb32a6c | ||
|
|
2a0dcdac5a | ||
|
|
9c04dc4a1b | ||
|
|
8b9998fc64 | ||
|
|
411746babf | ||
|
|
9efaad6d21 | ||
|
|
7a604328ac | ||
|
|
3a9ab3c7e6 | ||
|
|
bc6d1dae35 | ||
|
|
d5888c52cc | ||
|
|
9ac0421a34 | ||
|
|
e086865713 | ||
|
|
a2200d5d15 | ||
|
|
7ab24cb685 | ||
|
|
e0b9afc15e | ||
|
|
8f7ee135c3 | ||
|
|
e29c8ede3d | ||
|
|
b567dadd68 | ||
|
|
3f07921f5d | ||
|
|
6b7e88b7ed | ||
|
|
291d28fe28 | ||
|
|
0b9450abe5 | ||
|
|
60f4b70c71 | ||
|
|
f1121b5e07 | ||
|
|
83bdddad4c | ||
|
|
9150a7c966 | ||
|
|
3fb645e916 | ||
|
|
a6c94af6d2 | ||
|
|
70d0fe5272 | ||
|
|
a0eb18e1e6 | ||
|
|
d0a3ce3097 | ||
|
|
3daead037b | ||
|
|
6f3635fc24 | ||
|
|
2829d65e98 | ||
|
|
05358f9a5f | ||
|
|
8a666ce1a9 | ||
|
|
2958364ce0 | ||
|
|
e274604193 | ||
|
|
233a401645 | ||
|
|
e76bd07487 | ||
|
|
c913c48c19 | ||
|
|
2385f68a02 | ||
|
|
88b303268e | ||
|
|
e1dda38396 | ||
|
|
d0cbf68aec | ||
|
|
6dd3ef2fcb | ||
|
|
8c9b01ce8e | ||
|
|
9c2ce7b1a1 | ||
|
|
454b28e421 | ||
|
|
d079a3d0de | ||
|
|
ebfbbacefd | ||
|
|
24f7935c06 | ||
|
|
f49cab175e | ||
|
|
bf9b3875a1 | ||
|
|
bfcae57384 | ||
|
|
152dfb2850 | ||
|
|
3030c00ba2 | ||
|
|
81cee38610 | ||
|
|
125ab01876 | ||
|
|
45fd30fa32 | ||
|
|
20e1366cc4 | ||
|
|
2a678ef435 | ||
|
|
e4d9e37fda | ||
|
|
f6c9cbdcc1 | ||
|
|
8909e932d0 | ||
|
|
e8a7926eb6 | ||
|
|
d64c80992d | ||
|
|
98197693f5 | ||
|
|
16b3556ffa | ||
|
|
a04ac6361b | ||
|
|
53d13cb4c8 | ||
|
|
67ceee4079 | ||
|
|
17dae7d98c | ||
|
|
e48b212fdd | ||
|
|
77598f47f2 | ||
|
|
4f6f417089 | ||
|
|
27a56b4f18 | ||
|
|
946328507b | ||
|
|
11d7172334 | ||
|
|
7df2c93459 | ||
|
|
624c046cd4 | ||
|
|
7896439813 | ||
|
|
ba902038ca | ||
|
|
2f06979a09 | ||
|
|
9384be0e78 | ||
|
|
62d0b719ad | ||
|
|
f5b9af638e | ||
|
|
156aac8199 | ||
|
|
2dc0718ddd | ||
|
|
3ed0baa39a | ||
|
|
021640f04b | ||
|
|
feae4a67f8 | ||
|
|
e9f8f27b51 | ||
|
|
a38f1fb092 | ||
|
|
3b0f06c3a8 | ||
|
|
7597fa7a22 | ||
|
|
917ad071f0 | ||
|
|
c5db817421 | ||
|
|
bf12556657 | ||
|
|
09ce31ca20 | ||
|
|
778880e87a | ||
|
|
3de8300f91 | ||
|
|
85bafd1e3a | ||
|
|
a3b88e2e28 | ||
|
|
bc0a942628 | ||
|
|
2d638d1a3a | ||
|
|
6d3d5723b6 | ||
|
|
28502356d6 | ||
|
|
8ebafdf992 | ||
|
|
8c2a95dbe2 | ||
|
|
7df8828dfb | ||
|
|
6b1072a789 | ||
|
|
62b145d8db | ||
|
|
1b353c020a | ||
|
|
33900c7889 | ||
|
|
7b3702e2dd | ||
|
|
2f4da158d0 | ||
|
|
774046c85b | ||
|
|
14c0397f26 | ||
|
|
54a186d08b | ||
|
|
17f88bd2f8 | ||
|
|
3d4b38b014 | ||
|
|
1d0437072f | ||
|
|
e007f80165 | ||
|
|
a72cf419ad | ||
|
|
8e00db7fef | ||
|
|
d873bc0d28 | ||
|
|
dcaf388c44 | ||
|
|
fd73c12f8d | ||
|
|
2a4d30e52a | ||
|
|
c07618dcd3 | ||
|
|
4d94dd2953 | ||
|
|
1691f5157d | ||
|
|
bbcc878e4f | ||
|
|
b6fe2fd834 | ||
|
|
6b3b08f08a | ||
|
|
797f0d5319 | ||
|
|
4346402695 | ||
|
|
9be5be7123 | ||
|
|
8fc1c28d9a | ||
|
|
34d157a255 | ||
|
|
e222859dea | ||
|
|
d0f36689ab | ||
|
|
afe0f14e34 | ||
|
|
99336d5992 | ||
|
|
5b25a32861 | ||
|
|
e04192baf3 | ||
|
|
4328e5fe2f | ||
|
|
7b86ca313d | ||
|
|
d65f0a1f8e | ||
|
|
c6e5ec1dff | ||
|
|
f0f504798e | ||
|
|
e41b484d36 | ||
|
|
fd8582fe6c | ||
|
|
03a22d6ef3 | ||
|
|
03fcb0d08f | ||
|
|
ff25ad7a0c | ||
|
|
018e28cc66 | ||
|
|
b24a2a4c96 | ||
|
|
eb30c690fc | ||
|
|
db85aebd0f | ||
|
|
f9915bd0ea | ||
|
|
79e655f6e9 | ||
|
|
02f73e7e8a | ||
|
|
7828c621da | ||
|
|
093b6869e3 | ||
|
|
b226f61602 | ||
|
|
9c51b26162 | ||
|
|
c25ca37999 | ||
|
|
0746e147d0 | ||
|
|
dca30e4e60 | ||
|
|
7f69748faf | ||
|
|
26592daadc | ||
|
|
879213f02c | ||
|
|
170c9aaaf1 | ||
|
|
158ac15143 | ||
|
|
f0f6db1bae | ||
|
|
99700879f3 | ||
|
|
7d8dcb7ea6 | ||
|
|
c54463924f | ||
|
|
3c717ca38b | ||
|
|
468b53a411 | ||
|
|
a56afc54c3 | ||
|
|
8c1ebc31a8 | ||
|
|
4edbac805d | ||
|
|
8b758c877c | ||
|
|
2f6f4a2afb | ||
|
|
fb436c7b29 | ||
|
|
bccf3d10e2 | ||
|
|
d6c5d0ec4d | ||
|
|
4dcaa95413 | ||
|
|
6178ebda12 | ||
|
|
6e7778f4bd | ||
|
|
82d9c87d4f | ||
|
|
093cc7d002 | ||
|
|
f658d0d5de | ||
|
|
0bf985f5e1 | ||
|
|
2c08e209fe | ||
|
|
aaae271609 | ||
|
|
ab9d05eea6 | ||
|
|
f842a0e39f | ||
|
|
61d42aa1e7 | ||
|
|
f9c6aa17cc | ||
|
|
ed063565df | ||
|
|
e832d89b38 | ||
|
|
c43d9f22d3 | ||
|
|
7f1c8ba865 | ||
|
|
b21caaeeb8 | ||
|
|
ef59cc8a30 | ||
|
|
386354e630 | ||
|
|
d6963a0688 | ||
|
|
038ecb45b3 | ||
|
|
cb200a36db | ||
|
|
a03b21723d | ||
|
|
7194f63d3f | ||
|
|
13c73cba5a | ||
|
|
66121592c2 | ||
|
|
ffa2dad8ca | ||
|
|
c60f29e974 | ||
|
|
6225dfa554 | ||
|
|
9f00f17d94 | ||
|
|
9b4435bcd0 | ||
|
|
81b184522a | ||
|
|
c28fffa5b3 | ||
|
|
2bc4b640b0 | ||
|
|
b682ed3a98 | ||
|
|
88abc21167 | ||
|
|
b95b73e26c | ||
|
|
ac2730385b | ||
|
|
2593798fa0 | ||
|
|
1b7d532bb9 | ||
|
|
5a5cfa6b91 | ||
|
|
b08b250cd1 | ||
|
|
14bb25ebe1 | ||
|
|
984476227f | ||
|
|
14cf39a836 | ||
|
|
8d4232d1fd | ||
|
|
7dfb3b8d2b | ||
|
|
f09c7225dd | ||
|
|
232aeaf6f3 | ||
|
|
3072439c23 | ||
|
|
fd6c875064 | ||
|
|
bcd2b13e5e | ||
|
|
6d89f465a4 | ||
|
|
8a05aacfc6 | ||
|
|
bbec7c41ea | ||
|
|
a98b900b65 | ||
|
|
6d25c1bef6 | ||
|
|
42b48451b2 | ||
|
|
ea16f7c523 | ||
|
|
bfd3159d3c | ||
|
|
968bb4ed37 | ||
|
|
3fe8d0e053 | ||
|
|
74941fe0d4 | ||
|
|
b46484ac65 | ||
|
|
15ff816233 | ||
|
|
d0fc7218b0 | ||
|
|
a6baf4b732 | ||
|
|
001de9e6dc | ||
|
|
ea3dc3d5a5 | ||
|
|
c83052c9f3 | ||
|
|
14d60fe243 | ||
|
|
4631c2c879 | ||
|
|
76889851be | ||
|
|
53e3721ac8 | ||
|
|
54f977435d | ||
|
|
9ec2f13a38 | ||
|
|
7a916698dc | ||
|
|
2076d63cd4 | ||
|
|
6179f45791 | ||
|
|
683bc62f96 | ||
|
|
c7b42e9ed6 | ||
|
|
e735c3f008 | ||
|
|
017376be29 | ||
|
|
f5e57dc9fd | ||
|
|
d7b3ea9b5f | ||
|
|
bde7c3b90b | ||
|
|
b99764378c | ||
|
|
dfedbf6485 | ||
|
|
15a1f45a4d | ||
|
|
4c085ddf54 | ||
|
|
ec1016b385 | ||
|
|
e090a0a498 | ||
|
|
aaf1fbe17a | ||
|
|
242ab9ac7a | ||
|
|
6e7c39bbe7 | ||
|
|
7aded95988 | ||
|
|
a1acf0128d | ||
|
|
afd26b3b97 | ||
|
|
9a009ca393 | ||
|
|
1c0108f836 | ||
|
|
9933a27128 | ||
|
|
fd20344cff | ||
|
|
7a6e8aa044 | ||
|
|
5cef6135da | ||
|
|
ee659a5bb4 | ||
|
|
d56a2facfb | ||
|
|
a9570538e2 | ||
|
|
0ab7ce3676 | ||
|
|
81c3b3c2dd | ||
|
|
b4e50f18be | ||
|
|
d4e4d02774 | ||
|
|
069a27c331 | ||
|
|
542acc1953 | ||
|
|
48b497e22d | ||
|
|
ffee5d6a4a | ||
|
|
18366bb90b | ||
|
|
e371209b29 | ||
|
|
4468cf9b97 | ||
|
|
7728b65460 | ||
|
|
87434c2062 | ||
|
|
1358b1a91d | ||
|
|
80a704e1c6 | ||
|
|
ab939626f5 | ||
|
|
4dbbfbc0ba | ||
|
|
a777bf071b | ||
|
|
eb582ea44e | ||
|
|
aefde918c3 | ||
|
|
2f125587fe | ||
|
|
46aaf093f0 | ||
|
|
c7096e13ad | ||
|
|
70a3d3b9d5 | ||
|
|
9b250a94a7 | ||
|
|
ce429a7f80 | ||
|
|
102a2cb2d8 | ||
|
|
fda3dd366a | ||
|
|
1c75f5080f | ||
|
|
d35de1376d | ||
|
|
e64b70bd5c | ||
|
|
75feba5476 | ||
|
|
2e7437825b | ||
|
|
9b4a1b0a53 | ||
|
|
aee2acaeb9 | ||
|
|
1834a92a5b | ||
|
|
771612344d | ||
|
|
82fb0a2d59 | ||
|
|
ac6c0a2997 | ||
|
|
658b6c75c9 | ||
|
|
9814d78e73 | ||
|
|
d32efabc06 | ||
|
|
61489b8367 | ||
|
|
adaf4f3ced | ||
|
|
0188930f21 | ||
|
|
467c240aee | ||
|
|
70496ed696 | ||
|
|
31386bfc02 | ||
|
|
ea341e8b2f | ||
|
|
5db8fd724c | ||
|
|
ea0040efc1 | ||
|
|
a5c1b210c9 | ||
|
|
bd38a672bb | ||
|
|
f30758fb4a | ||
|
|
2d2e53e95b | ||
|
|
f02b100ee9 | ||
|
|
98c88bd9f6 | ||
|
|
9d8928f2a0 | ||
|
|
a82204c127 | ||
|
|
9666ffaa98 | ||
|
|
6c015c95ae | ||
|
|
3324b51fdd | ||
|
|
9249bf2122 | ||
|
|
10cbdc7225 | ||
|
|
da08bebb0b | ||
|
|
2274c1326d | ||
|
|
272820674e | ||
|
|
632dac179d | ||
|
|
b790d6f764 | ||
|
|
9e7e7c4bc4 | ||
|
|
c62b3642dc | ||
|
|
f1841337e7 | ||
|
|
c7dd66ad40 | ||
|
|
652105d7fc | ||
|
|
3d99fad482 | ||
|
|
ea45d2d4ed | ||
|
|
b90a4abbe0 | ||
|
|
7dca9c4703 | ||
|
|
45d4d7ec58 | ||
|
|
4472448e6b | ||
|
|
1303b77c08 | ||
|
|
c2f57b050e | ||
|
|
e7f828b07f | ||
|
|
084663e6cc | ||
|
|
12d0e92bf5 | ||
|
|
d3c369bc43 | ||
|
|
e07a79aa5d | ||
|
|
dd17dc5c06 | ||
|
|
1b78e64748 | ||
|
|
7e89296ab4 | ||
|
|
4dbef543cd | ||
|
|
1ffa59d892 | ||
|
|
7bff136eea | ||
|
|
4101340742 | ||
|
|
479055e896 | ||
|
|
737cff798a | ||
|
|
56f1e0c10f | ||
|
|
022240425a | ||
|
|
17ba355220 | ||
|
|
290bf810d4 | ||
|
|
36f4e86688 | ||
|
|
25380ced2f | ||
|
|
4e940e519d | ||
|
|
81822748af | ||
|
|
e9fd509914 | ||
|
|
bbc4b6bbfe |
No files matched your search
@@ -0,0 +1,9 @@
|
||||
---
|
||||
# C and C++ code
|
||||
Language: Cpp
|
||||
BasedOnStyle: WebKit
|
||||
DerivePointerAlignment: false
|
||||
PointerAlignment: Right
|
||||
TabWidth: 4
|
||||
UseTab: Always
|
||||
...
|
||||
@@ -0,0 +1,14 @@
|
||||
; This file is for unifying the coding style for different editors and IDEs.
|
||||
; Plugins are available for notepad++, emacs, vim, gedit,
|
||||
; textmate, visual studio, and more.
|
||||
;
|
||||
; See http://editorconfig.org for details.
|
||||
|
||||
# Top-most EditorConfig file.
|
||||
root = true
|
||||
|
||||
[**/APKBUILD]
|
||||
indent_style = tab
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
+45
-4
@@ -1,16 +1,31 @@
|
||||
---
|
||||
|
||||
# global settings
|
||||
image: alpine:3.8
|
||||
image: alpine:latest
|
||||
after_script:
|
||||
- .gitlab-ci/move_logs.sh $CI_PROJECT_DIR
|
||||
stages:
|
||||
- first
|
||||
- second
|
||||
|
||||
# defaults for "only"
|
||||
# We need to run the CI jobs in a "merge request specific context", if CI is
|
||||
# running in a merge request. Otherwise the environment variable that holds the
|
||||
# merge request ID is not available. This means, we must set the "only"
|
||||
# variable accordingly - and if we only do it for one job, all other jobs will
|
||||
# not get executed. So have the defaults here, and use them in all jobs that
|
||||
# should run on both the master branch, and in merge requests.
|
||||
# https://docs.gitlab.com/ee/ci/merge_request_pipelines/index.html#excluding-certain-jobs
|
||||
.only-default: &only-default
|
||||
only:
|
||||
- master
|
||||
- merge_requests
|
||||
- tags
|
||||
|
||||
# device documentation
|
||||
wiki:
|
||||
stage: first
|
||||
<<: *only-default
|
||||
before_script:
|
||||
- apk -q add python3
|
||||
script:
|
||||
@@ -19,6 +34,7 @@ wiki:
|
||||
# static code analysis (shellcheck is not in Alpine, so we use Debian)
|
||||
py-sh-static:
|
||||
stage: first
|
||||
<<: *only-default
|
||||
image: python:3.6-slim-stretch
|
||||
before_script:
|
||||
- apt -q update >/dev/null
|
||||
@@ -26,14 +42,27 @@ py-sh-static:
|
||||
script:
|
||||
- .gitlab-ci/static_code_analysis.sh
|
||||
|
||||
# coding style check
|
||||
clang-format-static:
|
||||
stage: first
|
||||
<<: *only-default
|
||||
before_script:
|
||||
- apk -q add clang git
|
||||
script:
|
||||
- .gitlab-ci/static_clang-format.sh
|
||||
|
||||
# aports checks (generic)
|
||||
aports-static:
|
||||
stage: first
|
||||
<<: *only-default
|
||||
before_script:
|
||||
- .gitlab-ci/install_pmbootstrap.sh pytest
|
||||
script:
|
||||
- apk -q add git
|
||||
- su pmos -c "pmbootstrap kconfig check"
|
||||
- su pmos -c ".gitlab-ci/run_testcases.sh
|
||||
-m 'not pmaports_upstream_compat'"
|
||||
- su pmos -c ".gitlab-ci/check_changed_aports_versions.py"
|
||||
artifacts:
|
||||
when: on_failure
|
||||
paths:
|
||||
@@ -42,9 +71,22 @@ aports-static:
|
||||
- pmbootstrap.cfg
|
||||
expire_in: 1 week
|
||||
|
||||
# MR settings
|
||||
# (Checks for "Allow commits from members who can merge to the target branch")
|
||||
mr-settings:
|
||||
stage: first
|
||||
only:
|
||||
- merge_requests
|
||||
before_script:
|
||||
- apk -q add python3
|
||||
script:
|
||||
- .gitlab-ci/check_mr_settings.py
|
||||
|
||||
# aports checks (upstream compatibility)
|
||||
aports-static-upstream:
|
||||
stage: second
|
||||
only:
|
||||
- master@postmarketOS/pmaports
|
||||
before_script:
|
||||
- .gitlab-ci/install_pmbootstrap.sh pytest
|
||||
script:
|
||||
@@ -57,13 +99,12 @@ aports-static-upstream:
|
||||
- log_testsuite_pmaports.txt
|
||||
- pmbootstrap.cfg
|
||||
expire_in: 1 week
|
||||
only:
|
||||
- master
|
||||
|
||||
# build changed aports
|
||||
aports-build:
|
||||
stage: second
|
||||
<<: *only-default
|
||||
before_script:
|
||||
- .gitlab-ci/install_pmbootstrap.sh git
|
||||
script:
|
||||
- su pmos -c ".gitlab-ci/build_changed_aports.py"
|
||||
- PYTHONUNBUFFERED=1 su pmos -c ".gitlab-ci/build_changed_aports.py"
|
||||
@@ -1,91 +1,37 @@
|
||||
#!/usr/bin/env python3
|
||||
# Copyright 2018 Oliver Smith
|
||||
# Copyright 2019 Oliver Smith
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
# Same dir
|
||||
import common
|
||||
|
||||
|
||||
def get_pmaports_dir():
|
||||
return os.path.realpath(os.path.join(os.path.dirname(__file__) + "/.."))
|
||||
|
||||
|
||||
def run_git(parameters):
|
||||
""" Run git in the pmaports folder and return the output """
|
||||
cmd = ["git", "-C", get_pmaports_dir()] + parameters
|
||||
return subprocess.check_output(cmd).decode()
|
||||
|
||||
|
||||
def run_pmbootstrap(parameters):
|
||||
""" Run pmbootstrap with the pmaports folder as --aports """
|
||||
cmd = ["pmbootstrap", "--aports", get_pmaports_dir()] + parameters
|
||||
process = subprocess.Popen(cmd)
|
||||
process.communicate()
|
||||
if process.returncode != 0:
|
||||
print("** Building failed")
|
||||
exit(1)
|
||||
|
||||
|
||||
def get_changed_files():
|
||||
""" Get all changed files and print them, as well as the branch and the
|
||||
commit that was used for the diff.
|
||||
:returns: list of changed files
|
||||
"""
|
||||
# Current branch
|
||||
branch = run_git(["rev-parse", "--abbrev-ref", "HEAD"])[:-1]
|
||||
print("branch: " + branch)
|
||||
|
||||
# Commit to diff against
|
||||
commit = "HEAD~1"
|
||||
if branch != "master":
|
||||
commit = run_git(["merge-base", "master", "HEAD"])[:-1]
|
||||
print("comparing HEAD with: " + commit)
|
||||
|
||||
# Changed files
|
||||
ret = run_git(["diff", "--name-only", commit, "HEAD"]).splitlines()
|
||||
print("changed file(s):")
|
||||
for file in ret:
|
||||
print(" " + file)
|
||||
return ret
|
||||
|
||||
|
||||
def get_changed_packages():
|
||||
files = get_changed_files()
|
||||
ret = set()
|
||||
for file in files:
|
||||
# Skip files in the root folder of pmaports as well as folders
|
||||
# beginning with a dot (.gitlab-ci/)
|
||||
if "/" not in file or file.startswith("."):
|
||||
continue
|
||||
|
||||
# Add to the ret set (removes duplicated automatically)
|
||||
ret.add(file.split("/")[1])
|
||||
|
||||
if len(ret) > 10:
|
||||
print("ERROR: Too many packages have changed!")
|
||||
print("This is a sanity check, so we don't end up building packages"
|
||||
" that have not been modified. CI won't run for more than one"
|
||||
" hour anyway.")
|
||||
print("If you see this message on your personal fork of the"
|
||||
" pmbootstrap repository, try to update your fork's master"
|
||||
" branch to the upstream master branch.")
|
||||
sys.exit(1)
|
||||
return ret
|
||||
|
||||
|
||||
def check_build(packages):
|
||||
def check_build(packages, verify_only=False):
|
||||
# Initialize build environment with less logging
|
||||
run_pmbootstrap(["build_init"])
|
||||
run_pmbootstrap(["--details-to-stdout", "build", "--strict"] +
|
||||
list(packages))
|
||||
common.run_pmbootstrap(["build_init"])
|
||||
|
||||
if verify_only:
|
||||
common.run_pmbootstrap(["--details-to-stdout", "checksum",
|
||||
"--verify"] + list(packages))
|
||||
else:
|
||||
common.run_pmbootstrap(["--details-to-stdout", "build", "--strict",
|
||||
"--force"] + list(packages))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
packages = get_changed_packages()
|
||||
# Get and print modified packages
|
||||
common.add_upstream_git_remote()
|
||||
packages = common.get_changed_packages()
|
||||
|
||||
# Build changed packages
|
||||
common.get_changed_packages_sanity_check(len(packages))
|
||||
if len(packages) == 0:
|
||||
print("no aports changed in this branch")
|
||||
else:
|
||||
print("building in strict mode: " + ", ".join(packages))
|
||||
check_build(packages)
|
||||
verify_only = common.commit_message_has_string("[ci:skip-build]")
|
||||
if verify_only:
|
||||
print("WARNING: not building changed packages ([ci:skip-build])!")
|
||||
print("verifying checksums: " + ", ".join(packages))
|
||||
else:
|
||||
print("building in strict mode: " + ", ".join(packages))
|
||||
check_build(packages, verify_only)
|
||||
Executable
+147
@@ -0,0 +1,147 @@
|
||||
#!/usr/bin/env python3
|
||||
# Copyright 2019 Oliver Smith
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
import glob
|
||||
import tempfile
|
||||
import sys
|
||||
import subprocess
|
||||
|
||||
# Same dir
|
||||
import common
|
||||
|
||||
# pmbootstrap
|
||||
import testcases.add_pmbootstrap_to_import_path # noqa
|
||||
import pmb.parse
|
||||
import pmb.parse.version
|
||||
import pmb.helpers.logging
|
||||
|
||||
|
||||
def get_package_version(args, package, revision, check=True):
|
||||
# Redirect stderr to /dev/null, so git doesn't complain about files not
|
||||
# existing in master for new packages
|
||||
stderr = None
|
||||
if not check:
|
||||
stderr = subprocess.DEVNULL
|
||||
|
||||
# Run something like "git show upstream/master:main/hello-world/APKBUILD"
|
||||
pmaports_dir = common.get_pmaports_dir()
|
||||
pattern = pmaports_dir + "/*/" + package + "/APKBUILD"
|
||||
path = glob.glob(pattern)[0][len(pmaports_dir + "/"):]
|
||||
apkbuild_content = common.run_git(["show", revision + ":" + path], check,
|
||||
stderr)
|
||||
if not apkbuild_content:
|
||||
return None
|
||||
|
||||
# Save APKBUILD to a temporary path and parse it from there. (Not the best
|
||||
# way to do things, but good enough for this CI script.)
|
||||
with tempfile.TemporaryDirectory() as tempdir:
|
||||
with open(tempdir + "/APKBUILD", "w", encoding="utf-8") as handle:
|
||||
handle.write(apkbuild_content)
|
||||
parsed = pmb.parse.apkbuild(args, tempdir + "/APKBUILD", False, False)
|
||||
|
||||
return parsed["pkgver"] + "-r" + parsed["pkgrel"]
|
||||
|
||||
|
||||
def version_compare_operator(result):
|
||||
""" :param result: return value from pmb.parse.version.compare() """
|
||||
if result == -1:
|
||||
return "<"
|
||||
elif result == 0:
|
||||
return "=="
|
||||
elif result == 1:
|
||||
return ">"
|
||||
|
||||
raise RuntimeError("Unexpected version_compare_operator input: " + result)
|
||||
|
||||
|
||||
def exit_with_error_message():
|
||||
print()
|
||||
print("ERROR: Modified package(s) don't have an increased version!")
|
||||
print()
|
||||
print("This can either happen if you did not change the pkgver/pkgrel")
|
||||
print("variables in the APKBUILDs. Or you did change them, but the")
|
||||
print("packages have been updated in the official master branch, and now")
|
||||
print("your versions are not higher anymore.")
|
||||
print()
|
||||
print("Your options:")
|
||||
print("a) If you made changes to the packages, and did not increase the")
|
||||
print(" pkgrel/pkgver: increase them now, and force push your branch.")
|
||||
print(" => https://postmarketos.org/howto-bump-pkgrel-pkgver")
|
||||
print("b) If you had already increased the package versions, rebase on")
|
||||
print(" master, increase the versions again and then force push:")
|
||||
print(" => https://postmarketos.org/rebase")
|
||||
print("c) If you made a change, that does not require rebuilding the")
|
||||
print(" packages, such as only changing the arch=... line: you can")
|
||||
print(" disable this check by adding '[ci:skip-vercheck]' to the")
|
||||
print(" latest commit message, then force push.")
|
||||
print()
|
||||
print("Thank you and sorry for the inconvenience.")
|
||||
exit(1)
|
||||
|
||||
|
||||
def check_versions(args, packages):
|
||||
error = False
|
||||
|
||||
# Get relevant commits: compare HEAD against upstream/master or HEAD~1
|
||||
# (the latter if this CI check is running on upstream/master). Note that
|
||||
# for the common.get_changed_files() code, we don't check against
|
||||
# upstream/master, but against the latest common ancestor. This is not
|
||||
# desired here, since we already know what packages changed, and really
|
||||
# want to check if the version was increased towards *current* master.
|
||||
commit = "upstream/master"
|
||||
if common.run_git(["rev-parse", "HEAD"]) == common.run_git(["rev-parse",
|
||||
commit]):
|
||||
print("NOTE: upstream/master is on same commit as HEAD, comparing"
|
||||
" HEAD against HEAD~1.")
|
||||
commit = "HEAD~1"
|
||||
|
||||
for package in packages:
|
||||
# Get versions, skip new packages
|
||||
head = get_package_version(args, package, "HEAD")
|
||||
master = get_package_version(args, package, commit, False)
|
||||
if not master:
|
||||
print("- {}: {} (HEAD) (new package)".format(package, head))
|
||||
continue
|
||||
|
||||
# Compare head and master versions
|
||||
result = pmb.parse.version.compare(head, master)
|
||||
if result != 1:
|
||||
error = True
|
||||
|
||||
# Print result line ("- hello-world: 1-r2 (HEAD) > 1-r1 (HEAD~1)")
|
||||
formatstr = "- {}: {} (HEAD) {} {} ({})"
|
||||
if result != 1:
|
||||
formatstr += " [ERROR]"
|
||||
operator = version_compare_operator(result)
|
||||
print(formatstr.format(package, head, operator, master, commit))
|
||||
|
||||
if error:
|
||||
exit_with_error_message()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
# Get and print modified packages
|
||||
common.add_upstream_git_remote()
|
||||
packages = common.get_changed_packages()
|
||||
|
||||
# Verify modified package count
|
||||
common.get_changed_packages_sanity_check(len(packages))
|
||||
if len(packages) == 0:
|
||||
print("no aports changed in this branch")
|
||||
exit(0)
|
||||
|
||||
# Potentially skip this check
|
||||
if common.commit_message_has_string("[ci:skip-vercheck]"):
|
||||
print("WARNING: not checking for changed package versions"
|
||||
" ([ci:skip-vercheck])!")
|
||||
exit(0)
|
||||
|
||||
# Initialize args (so we can use pmbootstrap's APKBUILD parsing)
|
||||
sys.argv = ["pmbootstrap.py", "chroot"]
|
||||
args = pmb.parse.arguments()
|
||||
pmb.helpers.logging.init(args)
|
||||
|
||||
# Verify package versions
|
||||
print("checking changed package versions...")
|
||||
check_versions(args, packages)
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
# Copyright 2018 Oliver Smith
|
||||
# Copyright 2019 Oliver Smith
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
import argparse
|
||||
@@ -92,8 +92,7 @@ def main():
|
||||
print("Now it's time to add some documentation:")
|
||||
print("1) Create a device specific wiki page as described here:")
|
||||
print(" <https://wiki.postmarketos.org/wiki/Help:Device_Page>")
|
||||
print("2) Add your device to the overview matrix:")
|
||||
print(" <https://wiki.postmarketos.org/wiki/Devices>")
|
||||
print("2) Set 'booting = yes' in the infobox of your device page.")
|
||||
print("3) Run these tests again with an empty commit in your MR:")
|
||||
print(" $ git commit --allow-empty -m 'run tests again'")
|
||||
print("")
|
||||
@@ -101,7 +100,7 @@ def main():
|
||||
print("precious porting efforts visible for others, and allow them")
|
||||
print("not only to use what you have created, but also to build upon")
|
||||
print("it more easily. Many times one person did a port with basic")
|
||||
print("functionallity, and then someone else jumped in and")
|
||||
print("functionality, and then someone else jumped in and")
|
||||
print("contributed major new features.")
|
||||
return 1
|
||||
else:
|
||||
|
||||
Executable
+156
@@ -0,0 +1,156 @@
|
||||
#!/usr/bin/env python3
|
||||
# Copyright 2019 Oliver Smith
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
import argparse
|
||||
import json
|
||||
import os
|
||||
import sys
|
||||
import urllib.parse
|
||||
import urllib.request
|
||||
|
||||
|
||||
def check_environment_variables():
|
||||
""" Make sure that all environment variables from GitLab CI are present,
|
||||
and exit right here when a variable is missing. """
|
||||
keys = ["CI_MERGE_REQUEST_IID",
|
||||
"CI_MERGE_REQUEST_PROJECT_PATH",
|
||||
"CI_MERGE_REQUEST_SOURCE_PROJECT_URL"]
|
||||
for key in keys:
|
||||
if key in os.environ:
|
||||
continue
|
||||
print("ERROR: missing environment variable: " + key)
|
||||
print("Reference: https://docs.gitlab.com/ee/ci/variables/")
|
||||
exit(1)
|
||||
|
||||
|
||||
def get_url_api():
|
||||
""" :returns: single merge request API URL, as documented here:
|
||||
https://docs.gitlab.com/ee/api/merge_requests.html#get-single-mr """
|
||||
project_path = os.environ["CI_MERGE_REQUEST_PROJECT_PATH"]
|
||||
project_path = urllib.parse.quote_plus(project_path)
|
||||
mr_id = os.environ["CI_MERGE_REQUEST_IID"]
|
||||
|
||||
url = "https://gitlab.com/api/v4/projects/{}/merge_requests/{}"
|
||||
return url.format(project_path, mr_id)
|
||||
|
||||
|
||||
def get_url_mr_edit():
|
||||
""" :returns: the link where the user can edit their own MR """
|
||||
url = "https://gitlab.com/{}/merge_requests/{}/edit"
|
||||
return url.format(os.environ["CI_MERGE_REQUEST_PROJECT_PATH"],
|
||||
os.environ["CI_MERGE_REQUEST_IID"])
|
||||
|
||||
|
||||
def get_url_repo_settings():
|
||||
""" :returns: link to the user's forked pmaports project's settings """
|
||||
prefix = os.environ["CI_MERGE_REQUEST_SOURCE_PROJECT_URL"]
|
||||
return prefix + "/settings/repository"
|
||||
|
||||
|
||||
def get_mr_settings(path):
|
||||
""" Get the merge request API data and parse it as JSON. Print the whole
|
||||
thing on failure.
|
||||
|
||||
:param path: to a local file with the saved API data (will download a
|
||||
fresh copy when set to None)
|
||||
:returns: dict of settings data (see GitLab API reference) """
|
||||
content = ""
|
||||
if path:
|
||||
# Read file
|
||||
with open(path, encoding="utf-8") as handle:
|
||||
content = handle.read()
|
||||
else:
|
||||
# Download from GitLab API
|
||||
url = get_url_api()
|
||||
print("Download " + url)
|
||||
content = urllib.request.urlopen(url).read().decode("utf-8")
|
||||
|
||||
# Parse JSON
|
||||
try:
|
||||
return json.loads(content)
|
||||
except:
|
||||
print("ERROR: failed to decode JSON. Here's the whole content for"
|
||||
" debugging:")
|
||||
print("---")
|
||||
print(content)
|
||||
exit(1)
|
||||
|
||||
|
||||
def settings_read(settings, key):
|
||||
if key not in settings:
|
||||
print("ERROR: missing '" + key + "' key in settings!")
|
||||
print("Here are the whole settings for debugging:")
|
||||
print("---")
|
||||
print(settings)
|
||||
exit(1)
|
||||
return settings[key]
|
||||
|
||||
|
||||
def check_allow_push(settings):
|
||||
""" :returns: True when maintainers are allowed to push to the branch
|
||||
(what we want!), False otherwise """
|
||||
|
||||
# Check if source branch is in same repository
|
||||
source = settings_read(settings, "source_project_id")
|
||||
target = settings_read(settings, "target_project_id")
|
||||
if source == target:
|
||||
return True
|
||||
|
||||
return settings_read(settings, "allow_maintainer_to_push")
|
||||
|
||||
|
||||
def main():
|
||||
# Parse arguments
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("--path", help="use a local file instead of querying"
|
||||
" the GitLab API", default=None)
|
||||
args = parser.parse_args()
|
||||
|
||||
# Check the merge request
|
||||
check_environment_variables()
|
||||
settings = get_mr_settings(args.path)
|
||||
|
||||
# Make sure that squashing is disabled
|
||||
if settings_read(settings, "squash"):
|
||||
print("*** MR settings check failed!")
|
||||
print('ERROR: Please turn off the "Squash commits when merge request'
|
||||
' is accepted." option in the merge request settings.')
|
||||
return 1
|
||||
if check_allow_push(settings):
|
||||
print("*** MR settings check successful!")
|
||||
else:
|
||||
print("*** MR settings check failed!")
|
||||
print()
|
||||
print("We need to be able to push changes to your merge request.")
|
||||
print("So we can rebase it on master right before merging, add the")
|
||||
print("MR-ID to the commit messages, etc.")
|
||||
print()
|
||||
print("How to fix it:")
|
||||
print("1) Open the 'edit' page of your merge request:")
|
||||
print(" " + get_url_mr_edit())
|
||||
print("2) Enable this option and save:")
|
||||
print(" 'Allow commits from members who can merge to the target"
|
||||
" branch'")
|
||||
print("3) Run these tests again with an empty commit in your MR:")
|
||||
print(" $ git commit --allow-empty -m 'run mr-settings test again'")
|
||||
print()
|
||||
print("If that setting is disabled, then you have created the MR from")
|
||||
print("a protected branch. When you had forked the repository from")
|
||||
print("postmarketOS, the protected branch settings were copied to")
|
||||
print("your fork.")
|
||||
print()
|
||||
print("Resolve this with:")
|
||||
print("1) Open your repository settings:")
|
||||
print(" " + get_url_repo_settings())
|
||||
print("2) Scroll down to 'Protected Branches' and expand it")
|
||||
print("3) Click 'unprotect' next to the branch from your MR")
|
||||
print("4) Follow steps 1-3 from the first list again, the option")
|
||||
print(" should not be disabled anymore.")
|
||||
print()
|
||||
print("Thank you and sorry for the inconvenience.")
|
||||
return 1
|
||||
return 0
|
||||
|
||||
|
||||
sys.exit(main())
|
||||
Executable
+136
@@ -0,0 +1,136 @@
|
||||
#!/usr/bin/env python3
|
||||
# Copyright 2019 Oliver Smith
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
# Various functions used in CI scripts
|
||||
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
|
||||
def get_pmaports_dir():
|
||||
return os.path.realpath(os.path.join(os.path.dirname(__file__) + "/.."))
|
||||
|
||||
|
||||
def run_git(parameters, check=True, stderr=None):
|
||||
""" Run git in the pmaports dir and return the output """
|
||||
cmd = ["git", "-C", get_pmaports_dir()] + parameters
|
||||
try:
|
||||
return subprocess.check_output(cmd, stderr=stderr).decode()
|
||||
except subprocess.CalledProcessError:
|
||||
if check:
|
||||
raise
|
||||
return None
|
||||
|
||||
|
||||
def add_upstream_git_remote():
|
||||
""" Add a remote pointing to postmarketOS/pmaports. """
|
||||
run_git(["remote", "add", "upstream",
|
||||
"https://gitlab.com/postmarketOS/pmaports.git"], False)
|
||||
run_git(["fetch", "-q", "upstream"])
|
||||
|
||||
|
||||
def commit_message_has_string(needle):
|
||||
return needle in run_git(["show", "-s", "--format=full", "HEAD"])
|
||||
|
||||
|
||||
def run_pmbootstrap(parameters):
|
||||
""" Run pmbootstrap with the pmaports dir as --aports """
|
||||
cmd = ["pmbootstrap", "--aports", get_pmaports_dir()] + parameters
|
||||
process = subprocess.Popen(cmd)
|
||||
process.communicate()
|
||||
if process.returncode != 0:
|
||||
print("** Test failed")
|
||||
exit(1)
|
||||
|
||||
|
||||
def get_changed_files():
|
||||
""" Get all changed files and print them, as well as the branch and the
|
||||
commit that was used for the diff.
|
||||
:returns: list of changed files
|
||||
"""
|
||||
commit_head = run_git(["rev-parse", "HEAD"])[:-1]
|
||||
commit_upstream_master = run_git(["rev-parse", "upstream/master"])[:-1]
|
||||
print("commit HEAD: " + commit_head)
|
||||
print("commit upstream/master: " + commit_upstream_master)
|
||||
|
||||
# Check if we are latest upstream/master
|
||||
if commit_head == commit_upstream_master:
|
||||
# then compare with previous commit
|
||||
commit = "HEAD~1"
|
||||
else:
|
||||
# otherwise compare with latest common ancestor
|
||||
commit = run_git(["merge-base", "upstream/master", "HEAD"])[:-1]
|
||||
print("comparing HEAD with: " + commit)
|
||||
|
||||
# Changed files
|
||||
ret = run_git(["diff", "--name-only", commit, "HEAD"]).splitlines()
|
||||
print("changed file(s):")
|
||||
for file in ret:
|
||||
message = " " + file
|
||||
if not os.path.exists(file):
|
||||
message += " (deleted)"
|
||||
print(message)
|
||||
return ret
|
||||
|
||||
|
||||
def get_changed_packages_sanity_check(count):
|
||||
for mark in ["[ci:ignore-count]", "[ci:skip-build]"]:
|
||||
if commit_message_has_string(mark):
|
||||
print("NOTE: package count sanity check skipped (" + mark + ").")
|
||||
return
|
||||
if count <= 10:
|
||||
return
|
||||
|
||||
print()
|
||||
print("ERROR: Too many packages have changed!")
|
||||
print()
|
||||
print("This is a sanity check, so we don't end up building packages that")
|
||||
print("have not been modified. CI won't run for more than one hour")
|
||||
print("anyway.")
|
||||
print()
|
||||
print("Your options:")
|
||||
print("a) If you *did not* modify everything listed above, then rebase")
|
||||
print(" your branch on the official postmarketOS/pmaports.git master")
|
||||
print(" branch. Feel free to ask in the chat for help if you need any.")
|
||||
print("b) If you *did* modify all these packages, and you assume that")
|
||||
print(" they will build within one hour: skip this sanity check by")
|
||||
print(" adding '[ci:ignore-count]' to the commit message (then force")
|
||||
print(" push).")
|
||||
print("c) If you *did* modify all these packages, and you are sure that")
|
||||
print(" they won't build in time, please add '[ci:skip-build]' to the")
|
||||
print(" commit message (then force push). Make sure that all packages")
|
||||
print(" build with 'pmbootstrap build --strict'!")
|
||||
print()
|
||||
print("Thank you and sorry for the inconvenience.")
|
||||
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
def get_changed_packages():
|
||||
files = get_changed_files()
|
||||
ret = set()
|
||||
for file in files:
|
||||
# Skip files:
|
||||
# * in the root dir of pmaports (e.g. README.md)
|
||||
# * path beginning with a dot (e.g. .gitlab-ci/)
|
||||
# * non-existing files (deleted packages)
|
||||
if "/" not in file or file.startswith(".") or not os.path.exists(file):
|
||||
continue
|
||||
|
||||
# Add to the ret set (removes duplicated automatically)
|
||||
ret.add(file.split("/")[1])
|
||||
return ret
|
||||
|
||||
|
||||
def check_build(packages, verify_only=False):
|
||||
# Initialize build environment with less logging
|
||||
run_pmbootstrap(["build_init"])
|
||||
|
||||
if verify_only:
|
||||
run_pmbootstrap(["--details-to-stdout", "checksum", "--verify"] +
|
||||
list(packages))
|
||||
else:
|
||||
run_pmbootstrap(["--details-to-stdout", "build", "--strict",
|
||||
"--force"] + list(packages))
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/bin/sh -e
|
||||
# Copyright 2018 Oliver Smith
|
||||
# Copyright 2019 Oliver Smith
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# usage: install_pmbootstrap.sh [ADDITIONAL_PACKAGE, ...]
|
||||
|
||||
@@ -32,5 +32,18 @@ mv pmbootstrap-* pmbootstrap
|
||||
# Install to $PATH and init
|
||||
ln -s /tmp/pmbootstrap/pmbootstrap.py /usr/local/bin/pmbootstrap
|
||||
echo "Initializing pmbootstrap"
|
||||
su pmos -c "yes '' | pmbootstrap -q --aports '$pmaports' init"
|
||||
if ! su pmos -c "yes '' | pmbootstrap -q --aports '$pmaports' init"; then
|
||||
echo "ERROR: pmbootstrap init failed!"
|
||||
echo
|
||||
echo "Most likely, this means that pmbootstrap requires a newer"
|
||||
echo "pmaports version. Please rebase on the official pmaports.git"
|
||||
echo "master branch and try again."
|
||||
echo
|
||||
echo "Let us know in the chat or issues if you have trouble with that"
|
||||
echo "and we will be happy to help. Sorry for the inconvenience."
|
||||
echo
|
||||
echo "(If that does not help, click on 'Browse' in the 'Job artifacts'"
|
||||
echo "next to this log output, and have a look at log.txt.)"
|
||||
exit 1
|
||||
fi
|
||||
echo ""
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/bin/sh -e
|
||||
# Copyright 2018 Oliver Smith
|
||||
# Copyright 2019 Oliver Smith
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
if [ -z "$1" ]; then
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/bin/sh -e
|
||||
# Copyright 2018 Oliver Smith
|
||||
# Copyright 2019 Oliver Smith
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
# Require pmbootstrap
|
||||
|
||||
Executable
+22
@@ -0,0 +1,22 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
|
||||
clang-format -i $(find . -name "*.c")
|
||||
|
||||
git diff > differences.patch
|
||||
|
||||
if [ -s differences.patch ]; then
|
||||
echo "C-Code formatting check failed!"
|
||||
echo "Please make sure, the code is formatted properly!"
|
||||
echo "Run:"
|
||||
echo ' clang-format -i $(find . -name "*.c")'
|
||||
echo
|
||||
cat differences.patch
|
||||
echo
|
||||
rm differences.patch
|
||||
exit 1
|
||||
else
|
||||
echo "C-Code formatting check is sucessful!"
|
||||
exit 0
|
||||
fi
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/bin/sh -e
|
||||
# Copyright 2018 Oliver Smith
|
||||
# Copyright 2019 Oliver Smith
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
set -e
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
#!/usr/bin/env python3
|
||||
# Copyright 2018 Oliver Smith
|
||||
# Copyright 2019 Oliver Smith
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
import shutil
|
||||
import sys
|
||||
import os
|
||||
from distutils.sysconfig import get_python_lib
|
||||
|
||||
|
||||
def path_pmbootstrap():
|
||||
@@ -23,6 +24,10 @@ def path_pmbootstrap():
|
||||
if os.path.exists(dir + "/pmb/__init__.py"):
|
||||
return dir
|
||||
|
||||
dir = get_python_lib()
|
||||
if os.path.exists(dir + "/pmb/__init__.py"):
|
||||
return dir
|
||||
|
||||
# Symlink not set up properly
|
||||
print("ERROR: 'pmbootstrap' is not a symlink to pmbootstrap.py")
|
||||
sys.exit(1)
|
||||
|
||||
@@ -1,90 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
# Copyright 2018 Oliver Smith
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
import filecmp
|
||||
import pytest
|
||||
import sys
|
||||
import os
|
||||
|
||||
import add_pmbootstrap_to_import_path
|
||||
import pmb.aportgen
|
||||
import pmb.config
|
||||
import pmb.helpers.logging
|
||||
import pmb.parse
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def args(request):
|
||||
# Initialize args
|
||||
sys.argv = ["pmbootstrap",
|
||||
"--aports", os.path.dirname(__file__) + "/../..",
|
||||
"--log", "$WORK/log_testsuite_pmaports.txt"
|
||||
"chroot"]
|
||||
args = pmb.parse.arguments()
|
||||
|
||||
# Initialize logging
|
||||
pmb.helpers.logging.init(args)
|
||||
request.addfinalizer(args.logfd.close)
|
||||
return args
|
||||
|
||||
|
||||
def test_aportgen(args, tmpdir):
|
||||
# Fake aports folder in tmpdir
|
||||
aports_real = args.aports
|
||||
args.aports = str(tmpdir)
|
||||
pmb.helpers.run.user(args, ["mkdir", "-p", str(tmpdir) + "/cross"])
|
||||
|
||||
# Create aportgen folder -> code path where it still exists
|
||||
pmb.helpers.run.user(args, ["mkdir", "-p", args.work + "/aportgen"])
|
||||
|
||||
# Generate all valid packages (gcc twice -> different code path)
|
||||
pkgnames = ["binutils-armhf", "musl-armhf", "busybox-static-armhf",
|
||||
"gcc-armhf", "gcc-armhf"]
|
||||
for pkgname in pkgnames:
|
||||
pmb.aportgen.generate(args, pkgname)
|
||||
path_new = args.aports + "/cross/" + pkgname + "/APKBUILD"
|
||||
path_old = aports_real + "/cross/" + pkgname + "/APKBUILD"
|
||||
assert os.path.exists(path_new)
|
||||
assert filecmp.cmp(path_new, path_old, False)
|
||||
|
||||
|
||||
def test_aportgen_invalid_generator(args):
|
||||
with pytest.raises(ValueError) as e:
|
||||
pmb.aportgen.generate(args, "pkgname-with-no-generator")
|
||||
assert "No generator available" in str(e.value)
|
||||
|
||||
|
||||
def test_aportgen_get_upstream_aport(args, monkeypatch):
|
||||
|
||||
# Fake pmb.parse.apkbuild()
|
||||
def fake_apkbuild(*args, **kwargs):
|
||||
return apkbuild
|
||||
monkeypatch.setattr(pmb.parse, "apkbuild", fake_apkbuild)
|
||||
|
||||
# Fake pmb.parse.apkindex.package()
|
||||
def fake_package(*args, **kwargs):
|
||||
return package
|
||||
monkeypatch.setattr(pmb.parse.apkindex, "package", fake_package)
|
||||
|
||||
# Equal version
|
||||
func = pmb.aportgen.core.get_upstream_aport
|
||||
upstream = "main/gcc"
|
||||
upstream_full = args.work + "/cache_git/aports_upstream/" + upstream
|
||||
apkbuild = {"pkgver": "2.0", "pkgrel": "0"}
|
||||
package = {"version": "2.0-r0"}
|
||||
assert func(args, upstream) == upstream_full
|
||||
|
||||
# APKBUILD < binary
|
||||
apkbuild = {"pkgver": "1.0", "pkgrel": "0"}
|
||||
package = {"version": "2.0-r0"}
|
||||
with pytest.raises(RuntimeError) as e:
|
||||
func(args, upstream)
|
||||
assert str(e.value).startswith("You can update your local checkout with")
|
||||
|
||||
# APKBUILD > binary
|
||||
apkbuild = {"pkgver": "3.0", "pkgrel": "0"}
|
||||
package = {"version": "2.0-r0"}
|
||||
with pytest.raises(RuntimeError) as e:
|
||||
func(args, upstream)
|
||||
assert str(e.value).startswith("You can force an update of your binary")
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
# Copyright 2018 Oliver Smith
|
||||
# Copyright 2019 Oliver Smith
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
import glob
|
||||
@@ -27,6 +27,19 @@ def args(request):
|
||||
return args
|
||||
|
||||
|
||||
def deviceinfo_obsolete(info):
|
||||
"""
|
||||
Test for obsolete options used in the deviceinfo file. They must still be
|
||||
defined in pmbootstrap's config/__init__.py.
|
||||
"""
|
||||
obsolete_options = ["weston_pixman_type"]
|
||||
for option in obsolete_options:
|
||||
if info[option]:
|
||||
raise RuntimeError("option '" + option + "' is obsolete, please"
|
||||
" remove it (reasons for removal are at"
|
||||
" <https://postmarketos.org/deviceinfo>)")
|
||||
|
||||
|
||||
def test_deviceinfo(args):
|
||||
"""
|
||||
Parse all deviceinfo files successfully and run checks on the parsed data.
|
||||
@@ -38,8 +51,9 @@ def test_deviceinfo(args):
|
||||
device = folder[len(args.aports):].split("-", 1)[1]
|
||||
|
||||
try:
|
||||
# Check for successful deviceinfo parsing
|
||||
# Successful deviceinfo parsing / obsolete options
|
||||
info = pmb.parse.deviceinfo(args, device)
|
||||
deviceinfo_obsolete(info)
|
||||
|
||||
# deviceinfo_name must start with manufacturer
|
||||
name = info["name"]
|
||||
@@ -83,6 +97,15 @@ def test_aports_device(args):
|
||||
" subpackages now, see"
|
||||
" <https://postmarketos.org/devicepkg>.")
|
||||
|
||||
# Architecture
|
||||
device = apkbuild["pkgname"][len("device-"):]
|
||||
deviceinfo = pmb.parse.deviceinfo(args, device)
|
||||
if "".join(apkbuild["arch"]) != deviceinfo["arch"]:
|
||||
raise RuntimeError("wrong architecture, please change to arch=\"" +
|
||||
deviceinfo["arch"] + "\": " + path)
|
||||
if "!archcheck" not in apkbuild["options"]:
|
||||
raise RuntimeError("!archcheck missing in options= line: " + path)
|
||||
|
||||
|
||||
def test_aports_device_kernel(args):
|
||||
"""
|
||||
@@ -92,7 +115,7 @@ def test_aports_device_kernel(args):
|
||||
* Validate kernel subpackage names
|
||||
"""
|
||||
# Generate list of valid subpackages
|
||||
valid_subpackages = ["downstream", "rpi", "rpi2"]
|
||||
valid_subpackages = ["downstream", "rpi", "rpi2", "longts", "shortts"]
|
||||
for path in glob.glob(args.aports + "/main/linux-postmarketos-*"):
|
||||
suffix = os.path.basename(path)[len("linux-postmarketos-"):]
|
||||
valid_subpackages.append(suffix)
|
||||
|
||||
+34
-18
@@ -1,7 +1,11 @@
|
||||
#!/usr/bin/env python3
|
||||
# Copyright 2018 Oliver Smith
|
||||
# Copyright 2019 Oliver Smith
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
""" Make sure that components of frameworks (Qt, KDE, ...) have the same
|
||||
version in all packages. We scan all packages, categorize them by URL
|
||||
and then compare the versions of all packages in each category. """
|
||||
|
||||
import glob
|
||||
import logging
|
||||
import os
|
||||
@@ -28,22 +32,25 @@ def args(request):
|
||||
return args
|
||||
|
||||
|
||||
def get_categorized_kde_packages(args):
|
||||
def get_categorized_packages(args):
|
||||
"""
|
||||
Parse all aports in the kde folder, and categorize them.
|
||||
Parse all aports and categorize them.
|
||||
|
||||
:returns: {"plasma": {"kwin": "5.13.3", ...},
|
||||
"kde": {"kcrash": "5.48.0", ...},
|
||||
"qt": {"qt5-qtbase": "5.12.0", ...},
|
||||
"other": {"konsole": "1234", ...}}
|
||||
"""
|
||||
ret = {"plasma": {}, "kde": {}, "other": {}}
|
||||
ret = {}
|
||||
|
||||
for path in glob.glob(args.aports + "/kde/*/APKBUILD"):
|
||||
for path in glob.glob(args.aports + "/*/*/APKBUILD"):
|
||||
# Parse APKBUILD
|
||||
apkbuild = pmb.parse.apkbuild(args, path)
|
||||
url = apkbuild["url"]
|
||||
pkgname = apkbuild["pkgname"]
|
||||
pkgver = apkbuild["pkgver"]
|
||||
if pkgver == "9999":
|
||||
pkgver = apkbuild["_pkgver"]
|
||||
|
||||
# Categorize by URL
|
||||
category = "other"
|
||||
@@ -51,18 +58,24 @@ def get_categorized_kde_packages(args):
|
||||
category = "plasma"
|
||||
elif "https://community.kde.org/Frameworks" in url:
|
||||
category = "kde"
|
||||
elif url in ["http://qt-project.org/",
|
||||
"https://www.qt.io/developers/"]:
|
||||
category = "qt"
|
||||
|
||||
# Save result
|
||||
if category not in ret:
|
||||
ret[category] = {}
|
||||
ret[category][pkgname] = pkgver
|
||||
return ret
|
||||
|
||||
|
||||
def check_categories(categories):
|
||||
"""
|
||||
Make sure that all packages in one framework (kde, plasma) have the same
|
||||
package version (and that there is at least one package in each category).
|
||||
Make sure that all packages in one framework (kde, plasma, ...) have the
|
||||
same package version (and that there is at least one package in each
|
||||
category).
|
||||
|
||||
:param categories: see return of get_categorized_kde_packages()
|
||||
:param categories: see return of get_categorized_packages()
|
||||
:returns: True when the check passed, False otherwise
|
||||
"""
|
||||
ret = True
|
||||
@@ -73,17 +86,20 @@ def check_categories(categories):
|
||||
# Use the first package as reference and print a summary
|
||||
if not reference:
|
||||
logging.info("---")
|
||||
logging.info("KDE package category: " + category)
|
||||
logging.info("Packages (" + str(len(packages)) + "): " +
|
||||
", ".join(sorted(packages.keys())))
|
||||
reference = {"pkgname": pkgname, "pkgver": pkgver}
|
||||
logging.info("Package category: " + category)
|
||||
logging.info("Packages count: " + str(len(packages)))
|
||||
|
||||
# Category "other": done after printing the summary, no need to
|
||||
# compare the package versions
|
||||
# Category "other": done after printing the basic summary, no
|
||||
# need to print each package or compare the package versions
|
||||
if category == "other":
|
||||
reference = True
|
||||
break
|
||||
|
||||
# Print all packages
|
||||
logging.info("Packages: " + ", ".join(sorted(packages.keys())))
|
||||
|
||||
# Print the reference and skip checking it against itself
|
||||
reference = {"pkgname": pkgname, "pkgver": pkgver}
|
||||
logging.info("Reference pkgver: " + pkgver + " (from '" +
|
||||
pkgname + "')")
|
||||
continue
|
||||
@@ -101,10 +117,10 @@ def check_categories(categories):
|
||||
return ret
|
||||
|
||||
|
||||
def test_kde_versions(args):
|
||||
def test_framework_versions(args):
|
||||
"""
|
||||
Make sure that KDE packages of the same framework have the same version.
|
||||
Make sure that packages of the same framework have the same version.
|
||||
"""
|
||||
categories = get_categorized_kde_packages(args)
|
||||
categories = get_categorized_packages(args)
|
||||
if not check_categories(categories):
|
||||
raise RuntimeError("KDE version check failed!")
|
||||
raise RuntimeError("Framework version check failed!")
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
# Copyright 2018 Oliver Smith
|
||||
# Copyright 2019 Oliver Smith
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
"""
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
# Copyright 2018 Oliver Smith
|
||||
# Copyright 2019 Oliver Smith
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
import os
|
||||
@@ -53,6 +53,11 @@ def test_qt_versions(args):
|
||||
if pkgver == "9999":
|
||||
pkgver = apkbuild["_pkgver"]
|
||||
|
||||
# We had to add a few qt5 git packages for unity8 (!27), obviously we
|
||||
# can't compare the version there.
|
||||
if "_git" in pkgver:
|
||||
continue
|
||||
|
||||
# Compare
|
||||
if pkgver == pkgver_upstream:
|
||||
continue
|
||||
@@ -73,9 +78,10 @@ def test_aportgen_versions(args):
|
||||
index = pmb.helpers.repo.alpine_apkindex_path(args, "main", "x86_64")
|
||||
|
||||
# Alpine packages and patterns for our derivatives
|
||||
map = {"binutils": "binutils-*",
|
||||
"busybox": "busybox-static-*",
|
||||
# binutils: frozen at 2.31 for now, until #295 is resolved!
|
||||
map = {"busybox": "busybox-static-*",
|
||||
"gcc": "gcc-*",
|
||||
"grub": "grub-efi-*",
|
||||
"musl": "musl-*"}
|
||||
|
||||
# Iterate over Alpine packages
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
From a7bfe0a2832e66f3d732e4210b5d53c81cc7a85f Mon Sep 17 00:00:00 2001
|
||||
From: Linus Torvalds <torvalds@linux-foundation.org>
|
||||
Date: Thu, 27 Sep 2018 19:16:56 -0400
|
||||
Subject: [PATCH] give up on gcc ilog2() constant optimizations
|
||||
|
||||
commit 474c90156c8dcc2fa815e6716cc9394d7930cb9c upstream.
|
||||
|
||||
gcc-7 has an "optimization" pass that completely screws up, and
|
||||
generates the code expansion for the (impossible) case of calling
|
||||
ilog2() with a zero constant, even when the code gcc compiles does not
|
||||
actually have a zero constant.
|
||||
|
||||
And we try to generate a compile-time error for anybody doing ilog2() on
|
||||
a constant where that doesn't make sense (be it zero or negative). So
|
||||
now gcc7 will fail the build due to our sanity checking, because it
|
||||
created that constant-zero case that didn't actually exist in the source
|
||||
code.
|
||||
|
||||
There's a whole long discussion on the kernel mailing about how to work
|
||||
around this gcc bug. The gcc people themselevs have discussed their
|
||||
"feature" in
|
||||
|
||||
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72785
|
||||
|
||||
but it's all water under the bridge, because while it looked at one
|
||||
point like it would be solved by the time gcc7 was released, that was
|
||||
not to be.
|
||||
|
||||
So now we have to deal with this compiler braindamage.
|
||||
|
||||
And the only simple approach seems to be to just delete the code that
|
||||
tries to warn about bad uses of ilog2().
|
||||
|
||||
So now "ilog2()" will just return 0 not just for the value 1, but for
|
||||
any non-positive value too.
|
||||
|
||||
It's not like I can recall anybody having ever actually tried to use
|
||||
this function on any invalid value, but maybe the sanity check just
|
||||
meant that such code never made it out in public.
|
||||
|
||||
[js] no tools/include/linux/log2.h copy of that yet
|
||||
|
||||
Reported-by: Laura Abbott <labbott@redhat.com>
|
||||
Cc: John Stultz <john.stultz@linaro.org>,
|
||||
Cc: Thomas Gleixner <tglx@linutronix.de>
|
||||
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
|
||||
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
|
||||
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
|
||||
---
|
||||
include/linux/log2.h | 13 ++-----------
|
||||
1 file changed, 2 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/include/linux/log2.h b/include/linux/log2.h
|
||||
index fd7ff3d91..f38fae23b 100644
|
||||
--- a/include/linux/log2.h
|
||||
+++ b/include/linux/log2.h
|
||||
@@ -15,12 +15,6 @@
|
||||
#include <linux/types.h>
|
||||
#include <linux/bitops.h>
|
||||
|
||||
-/*
|
||||
- * deal with unrepresentable constant logarithms
|
||||
- */
|
||||
-extern __attribute__((const, noreturn))
|
||||
-int ____ilog2_NaN(void);
|
||||
-
|
||||
/*
|
||||
* non-constant log of base 2 calculators
|
||||
* - the arch may override these in asm/bitops.h if they can be implemented
|
||||
@@ -85,7 +79,7 @@ unsigned long __rounddown_pow_of_two(unsigned long n)
|
||||
#define ilog2(n) \
|
||||
( \
|
||||
__builtin_constant_p(n) ? ( \
|
||||
- (n) < 1 ? ____ilog2_NaN() : \
|
||||
+ (n) < 2 ? 0 : \
|
||||
(n) & (1ULL << 63) ? 63 : \
|
||||
(n) & (1ULL << 62) ? 62 : \
|
||||
(n) & (1ULL << 61) ? 61 : \
|
||||
@@ -148,10 +142,7 @@ unsigned long __rounddown_pow_of_two(unsigned long n)
|
||||
(n) & (1ULL << 4) ? 4 : \
|
||||
(n) & (1ULL << 3) ? 3 : \
|
||||
(n) & (1ULL << 2) ? 2 : \
|
||||
- (n) & (1ULL << 1) ? 1 : \
|
||||
- (n) & (1ULL << 0) ? 0 : \
|
||||
- ____ilog2_NaN() \
|
||||
- ) : \
|
||||
+ 1 ) : \
|
||||
(sizeof(n) <= 4) ? \
|
||||
__ilog2_u32(n) : \
|
||||
__ilog2_u64(n) \
|
||||
@@ -0,0 +1,39 @@
|
||||
From 8c8187d41b99acd4f2078d0fff6807e0eeb47407 Mon Sep 17 00:00:00 2001
|
||||
From: Arnd Bergmann <arnd@arndb.de>
|
||||
Date: Thu, 26 Jul 2018 10:13:23 +0200
|
||||
Subject: [PATCH] ARM: fix put_user() for gcc-8
|
||||
|
||||
Building kernels before linux-4.7 with gcc-8 results in many build failures
|
||||
when gcc triggers a check that was meant to catch broken compilers:
|
||||
|
||||
/tmp/ccCGMQmS.s:648: Error: .err encountered
|
||||
|
||||
According to the discussion in the gcc bugzilla, a local "register
|
||||
asm()" variable is still supposed to be the correct way to force an
|
||||
inline assembly to use a particular register, but marking it 'const'
|
||||
lets the compiler do optimizations that break that, i.e the compiler is
|
||||
free to treat the variable as either 'const' or 'register' in that case.
|
||||
|
||||
Upstream commit 9f73bd8bb445 ("ARM: uaccess: remove put_user() code
|
||||
duplication") fixed this problem in linux-4.8 as part of a larger change,
|
||||
but seems a little too big to be backported to 4.4.
|
||||
|
||||
Let's take the simplest fix and change only the one broken line in the
|
||||
same way as newer kernels.
|
||||
|
||||
Suggested-by: Bernd Edlinger <bernd.edlinger@hotmail.de>
|
||||
Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85745
|
||||
Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86673
|
||||
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
arch/arm/include/asm/uaccess.h | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/arch/arm/include/asm/uaccess.h b/arch/arm/include/asm/uaccess.h
|
||||
index b04850fdeb5..f8ad54b24ac 100644
|
||||
--- a/arch/arm/include/asm/uaccess.h
|
||||
+++ b/arch/arm/include/asm/uaccess.h
|
||||
@@ -162 +162 @@ extern int __put_user_8(void *, unsigned long long);
|
||||
- register const typeof(*(p)) __r2 asm("r2") = (x); \
|
||||
+ register typeof(*(p)) __r2 asm("r2") = (x); \
|
||||
@@ -0,0 +1,67 @@
|
||||
From 51b97e354ba9fce1890cf38ecc754aa49677fc89 Mon Sep 17 00:00:00 2001
|
||||
From: "Kirill A. Shutemov" <kirill@shutemov.name>
|
||||
Date: Mon, 20 Oct 2014 12:23:12 +0300
|
||||
Subject: kernel: use the gnu89 standard explicitly
|
||||
|
||||
From: "Kirill A. Shutemov" <kirill@shutemov.name>
|
||||
|
||||
commit 51b97e354ba9fce1890cf38ecc754aa49677fc89 upstream.
|
||||
|
||||
Sasha Levin reports:
|
||||
"gcc5 changes the default standard to c11, which makes kernel build
|
||||
unhappy
|
||||
|
||||
Explicitly define the kernel standard to be gnu89 which should keep
|
||||
everything working exactly like it was before gcc5"
|
||||
|
||||
There are multiple small issues with the new default, but the biggest
|
||||
issue seems to be that the old - and very useful - GNU extension to
|
||||
allow a cast in front of an initializer has gone away.
|
||||
|
||||
Patch updated by Kirill:
|
||||
"I'm pretty sure all gcc versions you can build kernel with supports
|
||||
-std=gnu89. cc-option is redunrant.
|
||||
|
||||
We also need to adjust HOSTCFLAGS otherwise allmodconfig fails for me"
|
||||
|
||||
Note by Andrew Pinski:
|
||||
"Yes it was reported and both problems relating to this extension has
|
||||
been added to gnu99 and gnu11. Though there are other issues with the
|
||||
kernel dealing with extern inline have different semantics between
|
||||
gnu89 and gnu99/11"
|
||||
|
||||
End result: we may be able to move up to a newer stdc model eventually,
|
||||
but right now the newer models have some annoying deficiencies, so the
|
||||
traditional "gnu89" model ends up being the preferred one.
|
||||
|
||||
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
|
||||
Singed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
|
||||
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
---
|
||||
Makefile | 6 ++++--
|
||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -241,7 +241,7 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH"
|
||||
|
||||
HOSTCC = gcc
|
||||
HOSTCXX = g++
|
||||
-HOSTCFLAGS = -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer
|
||||
+HOSTCFLAGS = -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -std=gnu89
|
||||
HOSTCXXFLAGS = -O2
|
||||
|
||||
# Decide whether to build built-in, modular, or both.
|
||||
@@ -373,7 +373,9 @@ KBUILD_CFLAGS := -Wall -Wundef -Wstric
|
||||
-fno-strict-aliasing -fno-common \
|
||||
-Werror-implicit-function-declaration \
|
||||
-Wno-format-security \
|
||||
- -fno-delete-null-pointer-checks
|
||||
+ -fno-delete-null-pointer-checks \
|
||||
+ -std=gnu89
|
||||
+
|
||||
KBUILD_AFLAGS_KERNEL :=
|
||||
KBUILD_CFLAGS_KERNEL :=
|
||||
KBUILD_AFLAGS := -D__ASSEMBLY__
|
||||
Executable
+31
@@ -0,0 +1,31 @@
|
||||
#!/bin/sh -e
|
||||
# Copyright 2019 Oliver Smith
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
# Config: pmbootstrap tag (or branch)
|
||||
|
||||
if [ "$1" != "" ]; then
|
||||
tag="$1"
|
||||
else
|
||||
tag="master"
|
||||
fi
|
||||
|
||||
# Get download URL and pmaports path
|
||||
url="https://gitlab.com/postmarketOS/pmbootstrap/-/archive/$tag/pmbootstrap-$tag.tar.bz2"
|
||||
pmaports="$(cd $(dirname $0)/..; pwd -P)"
|
||||
|
||||
# Set up binfmt_misc
|
||||
echo "Setting-up binfmt_misc"
|
||||
sudo mount -t binfmt_misc none /proc/sys/fs/binfmt_misc
|
||||
|
||||
# Download pmbootstrap (to /tmp/pmbootstrap)
|
||||
echo "Downloading pmbootstrap ($tag): $url"
|
||||
cd /tmp
|
||||
wget -q -O "pmb.tar.bz2" "$url"
|
||||
tar -xf "pmb.tar.bz2"
|
||||
mv pmbootstrap-* pmbootstrap
|
||||
|
||||
# Install to $PATH and init
|
||||
sudo ln -s /tmp/pmbootstrap/pmbootstrap.py /usr/bin/pmbootstrap
|
||||
echo "Initializing pmbootstrap with aports at '$pmaports'"
|
||||
yes '' | pmbootstrap -q --aports "$pmaports" init
|
||||
Executable
+74
@@ -0,0 +1,74 @@
|
||||
#!/usr/bin/env python3
|
||||
import os
|
||||
import argparse
|
||||
import json
|
||||
|
||||
import requests
|
||||
|
||||
commit_default = os.environ['COMMIT'] if 'COMMIT' in os.environ else None
|
||||
|
||||
parser = argparse.ArgumentParser(description='tool to send data to build.postmarketos.org')
|
||||
parser.add_argument('--token', default='~/.pmos_token', help='secret token to authenticate to build.postmarketos.org')
|
||||
parser.add_argument('--host', default='https://build.postmarketos.org', help='base url for the submit request')
|
||||
parser.add_argument('--commit', default=commit_default, help='value for the X-Commit header')
|
||||
parser.add_argument('--arch', default='x86_64', help='value for the X-Arch header')
|
||||
parser.add_argument('--id', help='id of the job in the queue, value for the X-Id header')
|
||||
parser.add_argument('--json', action='store_true', help='datafile is a json file, do extra sanity checks')
|
||||
parser.add_argument('--verbose', '-v', action='store_true', help='show more debug info')
|
||||
parser.add_argument('endpoint', help='endpoint name on the API')
|
||||
parser.add_argument('datafile', help='file containing the data to be submitted', nargs='+')
|
||||
args = parser.parse_args()
|
||||
|
||||
if args.commit is None:
|
||||
print('You need to either add COMMIT to the environment or specify --commit')
|
||||
exit(1)
|
||||
|
||||
if args.verbose:
|
||||
print('Environment:')
|
||||
print(os.environ)
|
||||
|
||||
with open(os.path.expanduser(args.token), encoding="utf-8") as handle:
|
||||
secret = handle.read().strip()
|
||||
|
||||
url = '{}/api/{}'.format(args.host, args.endpoint)
|
||||
|
||||
if args.json:
|
||||
if len(args.datafile) > 1:
|
||||
print("json mode doesn't support multiple input files")
|
||||
exit(1)
|
||||
|
||||
# Send contents of file as HTTP POST with json payload
|
||||
with open(args.datafile[0], encoding="utf-8") as handle:
|
||||
data = handle.read()
|
||||
data = json.loads(data)
|
||||
|
||||
print('Sending json data to {}'.format(url))
|
||||
response = requests.post(url, json=data, headers={
|
||||
'X-Secret': secret,
|
||||
'X-Commit': args.commit,
|
||||
'X-Arch': args.arch
|
||||
})
|
||||
else:
|
||||
files = []
|
||||
|
||||
for file in args.datafile:
|
||||
filename = os.path.basename(file)
|
||||
# Send contents of file as HTTP POST with multipart/formdata payload
|
||||
files.append(('file[]', (filename, open(file, 'rb'), 'application/octet-stream')))
|
||||
|
||||
print('Uploading {} to {}'.format(filename, url))
|
||||
|
||||
response = requests.post(url, files=files, headers={
|
||||
'X-Secret': secret,
|
||||
'X-Commit': args.commit,
|
||||
'X-Arch': args.arch,
|
||||
'X-Id': args.id
|
||||
})
|
||||
|
||||
if response.status_code > 399:
|
||||
print('Error occurred:')
|
||||
print(response.content.decode())
|
||||
exit(1)
|
||||
|
||||
else:
|
||||
print(response.content.decode())
|
||||
@@ -1,39 +0,0 @@
|
||||
pkgname=android-libcutils
|
||||
pkgver=7.0.0_r34
|
||||
pkgrel=0
|
||||
pkgdesc="Android low-level utility library"
|
||||
url="https://github.com/android/platform_system_core"
|
||||
arch="all"
|
||||
license="APACHE2"
|
||||
depends=""
|
||||
makedepends="bsd-compat-headers android-liblog android-liblog-dev"
|
||||
options="!check"
|
||||
source="
|
||||
android_platform_system_core-$pkgver.tar.gz::https://github.com/android/platform_system_core/archive/android-${pkgver}.tar.gz
|
||||
Makefile"
|
||||
_lib="cutils"
|
||||
subpackages="$pkgname-dev"
|
||||
builddir="$srcdir"/platform_system_core-android-$pkgver/lib${_lib}
|
||||
|
||||
prepare() {
|
||||
cp "$srcdir"/Makefile "$builddir"
|
||||
}
|
||||
|
||||
build() {
|
||||
cd "$builddir"
|
||||
make
|
||||
}
|
||||
|
||||
package() {
|
||||
# Library
|
||||
install -Dm644 "${builddir}/lib${_lib}.so" \
|
||||
"${pkgdir}/usr/lib/android/lib${_lib}.so"
|
||||
|
||||
# Header files
|
||||
mkdir -p "${pkgdir}/usr/include/android/"
|
||||
cp -r "${srcdir}/platform_system_core-android-${pkgver}/include/${_lib}" \
|
||||
"${pkgdir}/usr/include/android/"
|
||||
}
|
||||
|
||||
sha512sums="f84d31db61f86c73b8aecbaf788d43b0a2cc984121fd7244a2f7ca2a2a751437b8708acdd27cb86a260162e866c40f6015f14d52beb3a85e9ae2efd6f44b73f3 android_platform_system_core-7.0.0_r34.tar.gz
|
||||
2aeab8d7267508a7c570a57f771796a9ed8cd7747d3dd33a84535c66331a7f6cf147919e8859f74de27a13d760af7de9f7e69aa688515451a21320603c4c4f4b Makefile"
|
||||
@@ -1,62 +0,0 @@
|
||||
LD := gcc
|
||||
LDFLAGS := -L/usr/lib/android/ -shared
|
||||
LIBS := -l:liblog.so
|
||||
CXX := g++
|
||||
CXXFLAGS := -std=c++14 -Wall -I../include -fPIC
|
||||
CC := gcc
|
||||
|
||||
# char16_t workaround: https://stackoverflow.com/a/22369822
|
||||
CFLAGS := -Wall -I../include -Dchar16_t=uint16_t -fPIC
|
||||
|
||||
# From Android.mk: libcutils_common_sources, libcutils_nonwindows_sources
|
||||
SRC_C := \
|
||||
atomic.c \
|
||||
config_utils.c \
|
||||
fs_config.c \
|
||||
canned_fs_config.c \
|
||||
hashmap.c \
|
||||
iosched_policy.c \
|
||||
load_file.c \
|
||||
native_handle.c \
|
||||
open_memstream.c \
|
||||
process_name.c \
|
||||
record_stream.c \
|
||||
sched_policy.c \
|
||||
strdup16to8.c \
|
||||
strdup8to16.c \
|
||||
strlcpy.c \
|
||||
threads.c \
|
||||
fs.c \
|
||||
multiuser.c \
|
||||
socket_inaddr_any_server_unix.c \
|
||||
socket_local_client_unix.c \
|
||||
socket_local_server_unix.c \
|
||||
socket_loopback_client_unix.c \
|
||||
socket_loopback_server_unix.c \
|
||||
socket_network_client_unix.c \
|
||||
str_parms.c
|
||||
|
||||
SRC_CPP := \
|
||||
sockets_unix.cpp \
|
||||
sockets.cpp
|
||||
|
||||
OBJECTS := $(SRC_C:%.c=%.c.o) $(SRC_CPP:%.cpp=%.cpp.o)
|
||||
|
||||
all: libcutils.so
|
||||
|
||||
%.c.o: %.c
|
||||
$(info CC $<)
|
||||
@$(CC) -c -o $@ $< $(CFLAGS)
|
||||
|
||||
%.cpp.o: %.cpp
|
||||
$(info CC $<)
|
||||
@$(CXX) -c -o $@ $< $(CXXFLAGS)
|
||||
|
||||
libcutils.so: $(OBJECTS)
|
||||
$(info LD $@)
|
||||
@$(LD) -o $@ $^ $(LDFLAGS) $(LIBS)
|
||||
|
||||
.PHONY: clean
|
||||
|
||||
clean:
|
||||
rm -v libcutils.so *.o
|
||||
@@ -1,39 +0,0 @@
|
||||
pkgname=android-liblog
|
||||
pkgver=7.0.0_r34
|
||||
pkgrel=0
|
||||
pkgdesc="Android low-level logging library"
|
||||
url="https://github.com/android/platform_system_core"
|
||||
arch="all"
|
||||
license="APACHE2"
|
||||
depends=""
|
||||
makedepends="bsd-compat-headers"
|
||||
options="!check"
|
||||
source="
|
||||
android_platform_system_core-$pkgver.tar.gz::https://github.com/android/platform_system_core/archive/android-${pkgver}.tar.gz
|
||||
Makefile"
|
||||
_lib="log"
|
||||
subpackages="$pkgname-dev"
|
||||
builddir="$srcdir"/platform_system_core-android-$pkgver/lib${_lib}
|
||||
|
||||
prepare() {
|
||||
cp "$srcdir"/Makefile "$builddir"
|
||||
}
|
||||
|
||||
build() {
|
||||
cd "$builddir"
|
||||
make
|
||||
}
|
||||
|
||||
package() {
|
||||
# Library
|
||||
install -Dm644 "${builddir}/lib${_lib}.so" \
|
||||
"${pkgdir}/usr/lib/android/lib${_lib}.so"
|
||||
|
||||
# Header files
|
||||
mkdir -p "${pkgdir}/usr/include/android/"
|
||||
cp -r "${srcdir}/platform_system_core-android-${pkgver}/include/${_lib}" \
|
||||
"${pkgdir}/usr/include/android/"
|
||||
}
|
||||
|
||||
sha512sums="f84d31db61f86c73b8aecbaf788d43b0a2cc984121fd7244a2f7ca2a2a751437b8708acdd27cb86a260162e866c40f6015f14d52beb3a85e9ae2efd6f44b73f3 android_platform_system_core-7.0.0_r34.tar.gz
|
||||
967055ff34e1aa66cb76de0374be24810fab8a11b56a11c33fac0a7914def39884b1b6428b4deda5aa13a9f323d556479f25fa351220f2909c9fbfd72ca31a4b Makefile"
|
||||
@@ -1,31 +0,0 @@
|
||||
# From Android.mk: liblog_sources, liblog_host_sources, LOCAL_SRC_FILES_linux
|
||||
SRC_C := \
|
||||
config_write.c \
|
||||
event_tag_map.c \
|
||||
fake_log_device.c \
|
||||
fake_writer.c \
|
||||
log_event_list.c \
|
||||
log_event_write.c \
|
||||
logger_lock.c \
|
||||
logger_name.c \
|
||||
logger_write.c
|
||||
OBJECTS := $(SRC_C:%.c=%.o)
|
||||
CC := gcc
|
||||
LD := gcc
|
||||
LDFLAGS := -shared
|
||||
CFLAGS := -Wall -I../include -fPIC
|
||||
|
||||
all: liblog.so
|
||||
|
||||
%.o: %.c
|
||||
$(info CC $<)
|
||||
@$(CC) -c -o $@ $< $(CFLAGS)
|
||||
|
||||
liblog.so: $(OBJECTS)
|
||||
$(info LD $@)
|
||||
@$(LD) -o $@ $^ $(LDFLAGS)
|
||||
|
||||
.PHONY: clean
|
||||
|
||||
clean:
|
||||
rm -v *.o liblog.so
|
||||
@@ -1,24 +0,0 @@
|
||||
diff --git a/include/hardware_legacy/power.h b/include/hardware_legacy/power.h
|
||||
new file mode 100644
|
||||
index 0000000..5aeb933
|
||||
--- /dev/null
|
||||
+++ b/include/hardware_legacy/power.h
|
||||
@@ -0,0 +1,18 @@
|
||||
+#pragma once
|
||||
+// This is a stub for wake locks, so we don't need to compile
|
||||
+// android_hardware_libhardware_legacy for now.
|
||||
+
|
||||
+#include <stdint.h>
|
||||
+
|
||||
+enum {
|
||||
+ PARTIAL_WAKE_LOCK = 1,
|
||||
+ FULL_WAKE_LOCK = 2
|
||||
+};
|
||||
+
|
||||
+int acquire_wake_lock(int lock, const char* id) {
|
||||
+ // STUB
|
||||
+};
|
||||
+
|
||||
+int release_wake_lock(const char* id) {
|
||||
+ // STUB
|
||||
+};
|
||||
@@ -1,54 +0,0 @@
|
||||
# NOTE: 8.x has a more complicated build process:
|
||||
# https://source.android.com/devices/architecture/hidl-cpp
|
||||
|
||||
pkgname=android-ril
|
||||
pkgver=7.0.0_r34
|
||||
pkgrel=0
|
||||
pkgdesc="Radio Interface Layer Daemon"
|
||||
url="https://github.com/android/platform_hardware_ril"
|
||||
arch="all"
|
||||
license="APACHE2"
|
||||
depends=""
|
||||
makedepends="nanopb nanopb-dev android-libcutils-dev"
|
||||
options="!check"
|
||||
# subpackages="librilutils libril"
|
||||
source="
|
||||
$pkgname-$pkgver.tar.gz::https://github.com/android/platform_hardware_ril/archive/android-${pkgver}.tar.gz
|
||||
rild.initd
|
||||
Makefile.libril
|
||||
Makefile.librilutils
|
||||
Makefile.rild
|
||||
01_wake_lock_stub.patch
|
||||
"
|
||||
builddir="$srcdir"/platform_hardware_ril-android-$pkgver
|
||||
|
||||
prepare() {
|
||||
default_prepare
|
||||
for i in librilutils libril rild; do
|
||||
cp "$srcdir"/Makefile.$i "$builddir"/$i/Makefile
|
||||
done
|
||||
}
|
||||
|
||||
build() {
|
||||
for i in librilutils libril rild; do
|
||||
msg "Building $i"
|
||||
cd "$builddir/$i"
|
||||
make
|
||||
done
|
||||
}
|
||||
|
||||
package() {
|
||||
cd "$builddir"
|
||||
|
||||
# OpenRC service
|
||||
install -Dm755 "$srcdir/rild.initd" "$pkgdir/etc/init.d/rild"
|
||||
}
|
||||
|
||||
|
||||
|
||||
sha512sums="7685958bbe628c761f568e0bd85f50ec6f7524945142c870aa1ad9ee5afc7e9db526b6aaa41fad71b584a7a048e1947c73ee8d61d588b0e5da5c8b56a30cc961 android-ril-7.0.0_r34.tar.gz
|
||||
f6b01eaf37412bfb5748a184f84b619a254d4a0bffc51613f74aef058fcea3f55d2e504ddacdf22463e2fca0ce71edc89be4e7de42fcc3761e2de8fc3a7316d5 rild.initd
|
||||
e85d424293b2bedc7b144cb29e8a0131b6ee385ec1c688a80b40d6836a93c4886b184c46880d74266f9c0b554be2b3da6c3836f3a6d05703f34c356ef284e970 Makefile.libril
|
||||
7a8b8da2aec6d91459c1641cf75f7a710b661814a4d447c58a361d67832d5237bbc6945be9a375a286b3137ef6bcd942689c1e0cc8c270b9fff91c2ca0ad1da7 Makefile.librilutils
|
||||
cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e Makefile.rild
|
||||
5d0d7e79fc0454bf627917a8c9acd801760145c320a082933619f3eeb3f30bd832db7cab7d68f86e3b4217373ee6919365449af78675aea5005c53bb80594c6a 01_wake_lock_stub.patch"
|
||||
@@ -1,21 +0,0 @@
|
||||
CXX := g++
|
||||
CXXFLAGS := -std=c++14 -Wall -g -I../include -I/usr/include/android
|
||||
LIBS :=
|
||||
|
||||
SOURCES := ${wildcard *.cpp}
|
||||
OBJECTS := $(SOURCES:%.cpp=%.o)
|
||||
|
||||
all: libril.so
|
||||
|
||||
%.o: %.cpp
|
||||
@echo CC $<
|
||||
@$(CXX) -c -o $@ $< $(CXXFLAGS)
|
||||
|
||||
libril.so: $(OBJECTS)
|
||||
@echo LD $@
|
||||
@$(CXX) -o $@ $^ $(CXXFLAGS) $(LIBS)
|
||||
|
||||
.PHONY: clean
|
||||
|
||||
clean:
|
||||
-rm -fv *.o libril.so
|
||||
@@ -1,26 +0,0 @@
|
||||
CC := gcc
|
||||
CFLAGS := -Wall -I../include/ -I. -fPIC
|
||||
|
||||
PBSRC := ${wildcard proto/*.proto}
|
||||
SRC := ${wildcard *.c} $(PBSRC:%.proto=%.pb-c.c)
|
||||
OBJ := $(SRC:%.c=%.o)
|
||||
|
||||
all: librilutils.so.1
|
||||
|
||||
%.pb-c.c: %.proto
|
||||
$(info PROTO $<)
|
||||
@protoc --nanopb_out=. $<
|
||||
|
||||
%.o: %.c
|
||||
$(info CC $<)
|
||||
@$(CC) -c -o $@ $< $(CFLAGS)
|
||||
|
||||
librilutils.so.1: $(OBJ) $(PBOBJ)
|
||||
$(info LD $@)
|
||||
@$(CC) -shared -Wl,-soname,$@.so.1 -o $@.so.1 $^ $(CFLAGS)
|
||||
|
||||
.PHONY: clean
|
||||
|
||||
clean:
|
||||
-rm -v *.o *.so proto/*.pb-c.*
|
||||
|
||||
Whitespace-only changes.
@@ -1,18 +0,0 @@
|
||||
#!/sbin/openrc-run
|
||||
# Copyright 1999-2009 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Purpose License v2
|
||||
|
||||
depend() {
|
||||
}
|
||||
|
||||
start() {
|
||||
ebegin "Starting Radio Interface Layer"
|
||||
start-stop-daemon --start --quiet --exec /usr/sbin/rild
|
||||
eend $?
|
||||
}
|
||||
|
||||
stop() {
|
||||
ebegin "Stopping Radio Interface Layer"
|
||||
start-stop-daemon --stop --quiet --exec /usr/sbin/rild
|
||||
eend $?
|
||||
}
|
||||
@@ -1,46 +0,0 @@
|
||||
pkgname=nanopb
|
||||
pkgver=0.3.9
|
||||
pkgrel=1
|
||||
pkgdesc="Protocol Buffers with small code size"
|
||||
url="https://jpa.kapsi.fi/nanopb"
|
||||
arch="all"
|
||||
license="MIT"
|
||||
depends="py2-protobuf"
|
||||
makedepends="cmake python2 protobuf"
|
||||
subpackages="$pkgname-dev"
|
||||
source="$pkgname-$pkgver.tar.gz::https://github.com/nanopb/nanopb/archive/${pkgver}.tar.gz"
|
||||
options="!check"
|
||||
|
||||
builddir="$srcdir"/$pkgname-$pkgver
|
||||
build() {
|
||||
cd "$builddir"
|
||||
cmake -DCMAKE_BUILD_TYPE=Release
|
||||
make
|
||||
}
|
||||
|
||||
package() {
|
||||
cd "$builddir"
|
||||
|
||||
# Statically linked library
|
||||
install -Dm644 libprotobuf-nanopb.a "$pkgdir"/usr/lib/libprotobuf-nanopb.a
|
||||
|
||||
# Header files
|
||||
for i in *.h; do
|
||||
install -Dm644 "$i" "$pkgdir/usr/include/$i"
|
||||
done
|
||||
|
||||
# Protobuf plugin
|
||||
for i in nanopb_generator.py protoc-gen-nanopb; do
|
||||
install -Dm755 "generator/$i" "$pkgdir/usr/bin/$i"
|
||||
done
|
||||
|
||||
# Protocol definitions for generator
|
||||
make -C generator/proto
|
||||
for i in __init__.py nanopb_pb2.py plugin_pb2.py; do
|
||||
echo "installing $i"
|
||||
install -Dm755 "generator/proto/$i" "$pkgdir/usr/lib/python2.7/proto/$i"
|
||||
done
|
||||
|
||||
}
|
||||
|
||||
sha512sums="1fa18d69ebfba2a58214beebd31fbbdd1edd71a19978754288adc09be6d5782feeb7bab2916448add2ab5bf7072d377101c7441b3e74619339dc545df3a73275 nanopb-0.3.9.tar.gz"
|
||||
@@ -6,7 +6,7 @@
|
||||
# that).
|
||||
|
||||
pkgname=arch-bin-masquerade
|
||||
pkgver=1
|
||||
pkgver=2
|
||||
pkgrel=0
|
||||
pkgdesc="Wrappers for ccache + distcc (native and foreign chroots)"
|
||||
url="https://postmarketOS.org"
|
||||
@@ -16,7 +16,7 @@ options="!check !tracedeps"
|
||||
|
||||
package() {
|
||||
# Architectures and binaries
|
||||
_archs="x86_64 armhf aarch64"
|
||||
_archs="x86_64 armhf armv7 aarch64"
|
||||
_bins="c++ cc cpp g++ gcc"
|
||||
|
||||
# Iterate over architectures
|
||||
|
||||
@@ -5,17 +5,20 @@
|
||||
|
||||
pkgname="binutils-aarch64"
|
||||
pkgver=2.31.1
|
||||
pkgrel=0
|
||||
pkgrel=2
|
||||
pkgdesc="Tools necessary to build programs for aarch64 targets"
|
||||
url="https://www.gnu.org/software/binutils/"
|
||||
depends=""
|
||||
makedepends_build=""
|
||||
makedepends_host=""
|
||||
makedepends="gettext libtool autoconf automake bison"
|
||||
arch="armhf x86_64 x86"
|
||||
arch="armhf armv7 x86_64 x86"
|
||||
license="GPL-2.0 GPL-3.0-or-later LGPL-2.0 BSD"
|
||||
subpackages=""
|
||||
source="http://ftp.gnu.org/gnu/binutils/binutils-$pkgver.tar.bz2
|
||||
source="https://ftp.gnu.org/gnu/binutils/binutils-$pkgver.tar.bz2
|
||||
x86-Add-a-GNU_PROPERTY_X86_ISA_1_USED-note-if-needed.patch
|
||||
x86-Properly-merge-GNU_PROPERTY_X86_ISA_1_USED.patch
|
||||
x86-Properly-add-X86_ISA_1_NEEDED-property.patch
|
||||
binutils-ld-fix-static-linking.patch
|
||||
gold-mips.patch
|
||||
"
|
||||
@@ -32,34 +35,37 @@ fi
|
||||
# - CVE-2017-7614
|
||||
|
||||
build() {
|
||||
_target="$(arch_to_hostspec aarch64)"
|
||||
cd "$builddir"
|
||||
"$builddir"/configure \
|
||||
--build="$CBUILD" \
|
||||
--target=$_target \
|
||||
--with-lib-path=/usr/lib \
|
||||
--prefix=/usr \
|
||||
--with-sysroot=/usr/$_target \
|
||||
--enable-ld=default \
|
||||
--enable-gold=yes \
|
||||
--enable-plugins \
|
||||
--enable-deterministic-archives \
|
||||
--disable-multilib \
|
||||
--disable-werror \
|
||||
--disable-nls
|
||||
make
|
||||
_target="$(arch_to_hostspec aarch64)"
|
||||
cd "$builddir"
|
||||
"$builddir"/configure \
|
||||
--build="$CBUILD" \
|
||||
--target=$_target \
|
||||
--with-lib-path=/usr/lib \
|
||||
--prefix=/usr \
|
||||
--with-sysroot=/usr/$_target \
|
||||
--enable-ld=default \
|
||||
--enable-gold=yes \
|
||||
--enable-plugins \
|
||||
--enable-deterministic-archives \
|
||||
--disable-multilib \
|
||||
--disable-werror \
|
||||
--disable-nls
|
||||
make
|
||||
}
|
||||
|
||||
package() {
|
||||
cd "$builddir"
|
||||
make install DESTDIR="$pkgdir"
|
||||
cd "$builddir"
|
||||
make install DESTDIR="$pkgdir"
|
||||
|
||||
# remove man, info folders
|
||||
rm -rf "$pkgdir"/usr/share
|
||||
# remove man, info folders
|
||||
rm -rf "$pkgdir"/usr/share
|
||||
}
|
||||
|
||||
|
||||
|
||||
sha512sums="b42954e6f49a0adcd2676bdd77dfb59bfc25cec8184b007521d1e2b1d5d0593b58639e3d9448d5a40fe024c3cea386a37743627d6bb16d502f52a4a32b9573bd binutils-2.31.1.tar.bz2
|
||||
d95fd77e1c2c4670a2a11979d6811b358ba0f067b917b33d241eca20cfe66553f6a6fccc5ec26d8d29045e487cb74389fbf86426f80cf81df95608835a566cfc x86-Add-a-GNU_PROPERTY_X86_ISA_1_USED-note-if-needed.patch
|
||||
ce5d3c935057d624c1ce75722e7b5e4583812d46797edce8c381a94b2643f44f7bd0165e7e9b8e358955f4d979074ee487598efbf24389a4013681f99ff7c595 x86-Properly-merge-GNU_PROPERTY_X86_ISA_1_USED.patch
|
||||
1878bed194529afb2430af21ba9712d6819c5fdfdc5c8db652175bf86d0a0c710ac2bd3ec728bf874887301bd187d91bf60a374c47850c7bd2eafbf6653d74d8 x86-Properly-add-X86_ISA_1_NEEDED-property.patch
|
||||
ecee33b0e435aa704af1c334e560f201638ff79e199aa11ed78a72f7c9b46f85fbb227af5748e735fd681d1965fcc42ac81b0c8824e540430ce0c706c81e8b49 binutils-ld-fix-static-linking.patch
|
||||
f55cf2e0bf82f97583a1abe10710e4013ecf7d64f1da2ef8659a44a06d0dd8beaf58dab98a183488ea137f03e32d62efc878d95f018f836f8cec870bc448556f gold-mips.patch"
|
||||
@@ -1,93 +0,0 @@
|
||||
From d66deb71f1537e2e30dccdfda22eed5d46ec47eb Mon Sep 17 00:00:00 2001
|
||||
From: Alan Modra <amodra@gmail.com>
|
||||
Date: Wed, 14 Mar 2018 22:09:33 +1030
|
||||
Subject: [PATCH] PowerPC64 debian bug 886264, out-of-line save/restore
|
||||
functions
|
||||
|
||||
This calculation in relocate_section
|
||||
|
||||
if (stub_entry->stub_type == ppc_stub_save_res)
|
||||
relocation += (stub_sec->output_offset
|
||||
+ stub_sec->output_section->vma
|
||||
+ stub_sec->size - htab->sfpr->size
|
||||
- htab->sfpr->output_offset
|
||||
- htab->sfpr->output_section->vma);
|
||||
|
||||
to adjust from the original out-of-line save/restore function address
|
||||
in sfpr to a copy at the end of stub_sec goes wrong when stub_sec is
|
||||
padded, because the copy is no longer at the end of stub_sec. The
|
||||
solution is to pad before copying sfpr, so the copy is always at the
|
||||
end of stub_sec.
|
||||
|
||||
* elf64-ppc.c (sfpr_define): Adjust for stub_sec size having
|
||||
sfpr size added before defining alias symbols.
|
||||
(ppc64_elf_build_stubs): Add stub section padding before
|
||||
copying sfpr contents and defining save/restore alias symbols.
|
||||
|
||||
(cherry picked from commit 7dda8d3cf3b089bb7e03c4cdbec827fc6a188c88)
|
||||
---
|
||||
bfd/ChangeLog | 9 +++++++++
|
||||
bfd/elf64-ppc.c | 33 ++++++++++++++++++---------------
|
||||
2 files changed, 27 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c
|
||||
index 6fcdff0..039294f 100644
|
||||
--- a/bfd/elf64-ppc.c
|
||||
+++ b/bfd/elf64-ppc.c
|
||||
@@ -6645,7 +6645,7 @@ sfpr_define (struct bfd_link_info *info,
|
||||
{
|
||||
s->root.type = bfd_link_hash_defined;
|
||||
s->root.u.def.section = stub_sec;
|
||||
- s->root.u.def.value = (stub_sec->size
|
||||
+ s->root.u.def.value = (stub_sec->size - htab->sfpr->size
|
||||
+ h->elf.root.u.def.value);
|
||||
s->ref_regular = 1;
|
||||
s->def_regular = 1;
|
||||
@@ -13232,20 +13232,7 @@ ppc64_elf_build_stubs (struct bfd_link_info *info,
|
||||
|
||||
for (group = htab->group; group != NULL; group = group->next)
|
||||
if (group->needs_save_res)
|
||||
- {
|
||||
- stub_sec = group->stub_sec;
|
||||
- memcpy (stub_sec->contents + stub_sec->size, htab->sfpr->contents,
|
||||
- htab->sfpr->size);
|
||||
- if (htab->params->emit_stub_syms)
|
||||
- {
|
||||
- unsigned int i;
|
||||
-
|
||||
- for (i = 0; i < ARRAY_SIZE (save_res_funcs); i++)
|
||||
- if (!sfpr_define (info, &save_res_funcs[i], stub_sec))
|
||||
- return FALSE;
|
||||
- }
|
||||
- stub_sec->size += htab->sfpr->size;
|
||||
- }
|
||||
+ group->stub_sec->size += htab->sfpr->size;
|
||||
|
||||
if (htab->relbrlt != NULL)
|
||||
htab->relbrlt->reloc_count = 0;
|
||||
@@ -13259,6 +13246,22 @@ ppc64_elf_build_stubs (struct bfd_link_info *info,
|
||||
}
|
||||
|
||||
for (group = htab->group; group != NULL; group = group->next)
|
||||
+ if (group->needs_save_res)
|
||||
+ {
|
||||
+ stub_sec = group->stub_sec;
|
||||
+ memcpy (stub_sec->contents + stub_sec->size - htab->sfpr->size,
|
||||
+ htab->sfpr->contents, htab->sfpr->size);
|
||||
+ if (htab->params->emit_stub_syms)
|
||||
+ {
|
||||
+ unsigned int i;
|
||||
+
|
||||
+ for (i = 0; i < ARRAY_SIZE (save_res_funcs); i++)
|
||||
+ if (!sfpr_define (info, &save_res_funcs[i], stub_sec))
|
||||
+ return FALSE;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ for (group = htab->group; group != NULL; group = group->next)
|
||||
if ((stub_sec = group->stub_sec) != NULL)
|
||||
{
|
||||
stub_sec_count += 1;
|
||||
--
|
||||
2.9.3
|
||||
|
||||
@@ -0,0 +1,567 @@
|
||||
From 6737a6b34f4823deb7142f27b4074831a37ac1e1 Mon Sep 17 00:00:00 2001
|
||||
From: "H.J. Lu" <hjl.tools@gmail.com>
|
||||
Date: Fri, 20 Jul 2018 09:18:47 -0700
|
||||
Subject: [PATCH] x86: Add a GNU_PROPERTY_X86_ISA_1_USED note if needed
|
||||
|
||||
When -z separate-code, which is enabled by default for Linux/x86, is
|
||||
used to create executable, ld won't place any data in the code-only
|
||||
PT_LOAD segment. If there are no data sections placed before the
|
||||
code-only PT_LOAD segment, the program headers won't be mapped into
|
||||
any PT_LOAD segment. When the executable tries to access it (based
|
||||
on the program header address passed in AT_PHDR), it will lead to
|
||||
segfault. This patch inserts a GNU_PROPERTY_X86_ISA_1_USED note if
|
||||
there may be no data sections before the text section so that the
|
||||
first PT_LOAD segment won't be code-only and will contain the program
|
||||
header.
|
||||
|
||||
Testcases are adjusted to either pass "-z noseparate-code" to ld or
|
||||
discard the .note.gnu.property section. A Linux/x86 run-time test is
|
||||
added.
|
||||
|
||||
bfd/
|
||||
|
||||
PR ld/23428
|
||||
* elfxx-x86.c (_bfd_x86_elf_link_setup_gnu_properties): If the
|
||||
separate code program header is needed, make sure that the first
|
||||
read-only PT_LOAD segment has no code by adding a
|
||||
GNU_PROPERTY_X86_ISA_1_USED note.
|
||||
|
||||
ld/
|
||||
|
||||
PR ld/23428
|
||||
* testsuite/ld-elf/linux-x86.S: New file.
|
||||
* testsuite/ld-elf/linux-x86.exp: Likewise.
|
||||
* testsuite/ld-elf/pr23428.c: Likewise.
|
||||
* testsuite/ld-elf/sec64k.exp: Pass "-z noseparate-code" to ld
|
||||
for Linux/x86 targets.
|
||||
* testsuite/ld-i386/abs-iamcu.d: Likewise.
|
||||
* testsuite/ld-i386/abs.d: Likewise.
|
||||
* testsuite/ld-i386/pr12718.d: Likewise.
|
||||
* testsuite/ld-i386/pr12921.d: Likewise.
|
||||
* testsuite/ld-x86-64/abs-k1om.d: Likewise.
|
||||
* testsuite/ld-x86-64/abs-l1om.d: Likewise.
|
||||
* testsuite/ld-x86-64/abs.d: Likewise.
|
||||
* testsuite/ld-x86-64/pr12718.d: Likewise.
|
||||
* testsuite/ld-x86-64/pr12921.d: Likewise.
|
||||
* testsuite/ld-linkonce/zeroeh.ld: Discard .note.gnu.property
|
||||
section.
|
||||
* testsuite/ld-scripts/print-memory-usage.t: Likewise.
|
||||
* testsuite/ld-scripts/size-2.t: Likewise.
|
||||
* testsuite/lib/ld-lib.exp (run_ld_link_exec_tests): Use ld
|
||||
to create executable if language is "asm".
|
||||
|
||||
(cherry picked from commit 241e64e3b42cd9eba514b8e0ad2ef39a337f10a5)
|
||||
---
|
||||
bfd/ChangeLog | 8 ++++
|
||||
bfd/elfxx-x86.c | 60 +++++++++++++++++++-------
|
||||
ld/ChangeLog | 24 +++++++++++
|
||||
ld/testsuite/ld-elf/linux-x86.S | 63 ++++++++++++++++++++++++++++
|
||||
ld/testsuite/ld-elf/linux-x86.exp | 46 ++++++++++++++++++++
|
||||
ld/testsuite/ld-elf/pr23428.c | 43 +++++++++++++++++++
|
||||
ld/testsuite/ld-elf/sec64k.exp | 2 +
|
||||
ld/testsuite/ld-i386/abs-iamcu.d | 2 +-
|
||||
ld/testsuite/ld-i386/abs.d | 2 +-
|
||||
ld/testsuite/ld-i386/pr12718.d | 2 +-
|
||||
ld/testsuite/ld-i386/pr12921.d | 2 +-
|
||||
ld/testsuite/ld-linkonce/zeroeh.ld | 1 +
|
||||
ld/testsuite/ld-scripts/print-memory-usage.t | 2 +
|
||||
ld/testsuite/ld-scripts/size-2.t | 1 +
|
||||
ld/testsuite/ld-x86-64/abs-k1om.d | 2 +-
|
||||
ld/testsuite/ld-x86-64/abs-l1om.d | 2 +-
|
||||
ld/testsuite/ld-x86-64/abs.d | 2 +-
|
||||
ld/testsuite/ld-x86-64/pr12718.d | 2 +-
|
||||
ld/testsuite/ld-x86-64/pr12921.d | 2 +-
|
||||
ld/testsuite/lib/ld-lib.exp | 5 ++-
|
||||
20 files changed, 248 insertions(+), 25 deletions(-)
|
||||
create mode 100644 ld/testsuite/ld-elf/linux-x86.S
|
||||
create mode 100644 ld/testsuite/ld-elf/linux-x86.exp
|
||||
create mode 100644 ld/testsuite/ld-elf/pr23428.c
|
||||
|
||||
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
|
||||
index 1c1174a..d3831b7 100644
|
||||
--- a/bfd/ChangeLog
|
||||
+++ b/bfd/ChangeLog
|
||||
@@ -1,3 +1,11 @@
|
||||
+2018-07-23 H.J. Lu <hongjiu.lu@intel.com>
|
||||
+
|
||||
+ PR ld/23428
|
||||
+ * elfxx-x86.c (_bfd_x86_elf_link_setup_gnu_properties): If the
|
||||
+ separate code program header is needed, make sure that the first
|
||||
+ read-only PT_LOAD segment has no code by adding a
|
||||
+ GNU_PROPERTY_X86_ISA_1_USED note.
|
||||
+
|
||||
2018-07-18 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* development.sh: Set to true.
|
||||
diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c
|
||||
index a2497aa..2e4ff88 100644
|
||||
--- a/bfd/elfxx-x86.c
|
||||
+++ b/bfd/elfxx-x86.c
|
||||
@@ -2524,6 +2524,7 @@ _bfd_x86_elf_link_setup_gnu_properties
|
||||
const struct elf_backend_data *bed;
|
||||
unsigned int class_align = ABI_64_P (info->output_bfd) ? 3 : 2;
|
||||
unsigned int got_align;
|
||||
+ bfd_boolean has_text = FALSE;
|
||||
|
||||
features = 0;
|
||||
if (info->ibt)
|
||||
@@ -2538,24 +2539,59 @@ _bfd_x86_elf_link_setup_gnu_properties
|
||||
if (bfd_get_flavour (pbfd) == bfd_target_elf_flavour
|
||||
&& bfd_count_sections (pbfd) != 0)
|
||||
{
|
||||
+ if (!has_text)
|
||||
+ {
|
||||
+ /* Check if there is no non-empty text section. */
|
||||
+ sec = bfd_get_section_by_name (pbfd, ".text");
|
||||
+ if (sec != NULL && sec->size != 0)
|
||||
+ has_text = TRUE;
|
||||
+ }
|
||||
+
|
||||
ebfd = pbfd;
|
||||
|
||||
if (elf_properties (pbfd) != NULL)
|
||||
break;
|
||||
}
|
||||
|
||||
- if (ebfd != NULL && features)
|
||||
+ bed = get_elf_backend_data (info->output_bfd);
|
||||
+
|
||||
+ htab = elf_x86_hash_table (info, bed->target_id);
|
||||
+ if (htab == NULL)
|
||||
+ return pbfd;
|
||||
+
|
||||
+ if (ebfd != NULL)
|
||||
{
|
||||
- /* If features is set, add GNU_PROPERTY_X86_FEATURE_1_IBT and
|
||||
- GNU_PROPERTY_X86_FEATURE_1_SHSTK. */
|
||||
- prop = _bfd_elf_get_property (ebfd,
|
||||
- GNU_PROPERTY_X86_FEATURE_1_AND,
|
||||
- 4);
|
||||
- prop->u.number |= features;
|
||||
- prop->pr_kind = property_number;
|
||||
+ prop = NULL;
|
||||
+ if (features)
|
||||
+ {
|
||||
+ /* If features is set, add GNU_PROPERTY_X86_FEATURE_1_IBT and
|
||||
+ GNU_PROPERTY_X86_FEATURE_1_SHSTK. */
|
||||
+ prop = _bfd_elf_get_property (ebfd,
|
||||
+ GNU_PROPERTY_X86_FEATURE_1_AND,
|
||||
+ 4);
|
||||
+ prop->u.number |= features;
|
||||
+ prop->pr_kind = property_number;
|
||||
+ }
|
||||
+ else if (has_text
|
||||
+ && elf_properties (ebfd) == NULL
|
||||
+ && elf_tdata (info->output_bfd)->o->build_id.sec == NULL
|
||||
+ && !htab->elf.dynamic_sections_created
|
||||
+ && !info->traditional_format
|
||||
+ && (info->output_bfd->flags & D_PAGED) != 0
|
||||
+ && info->separate_code)
|
||||
+ {
|
||||
+ /* If the separate code program header is needed, make sure
|
||||
+ that the first read-only PT_LOAD segment has no code by
|
||||
+ adding a GNU_PROPERTY_X86_ISA_1_USED note. */
|
||||
+ prop = _bfd_elf_get_property (ebfd,
|
||||
+ GNU_PROPERTY_X86_ISA_1_USED,
|
||||
+ 4);
|
||||
+ prop->u.number = GNU_PROPERTY_X86_ISA_1_486;
|
||||
+ prop->pr_kind = property_number;
|
||||
+ }
|
||||
|
||||
/* Create the GNU property note section if needed. */
|
||||
- if (pbfd == NULL)
|
||||
+ if (prop != NULL && pbfd == NULL)
|
||||
{
|
||||
sec = bfd_make_section_with_flags (ebfd,
|
||||
NOTE_GNU_PROPERTY_SECTION_NAME,
|
||||
@@ -2581,12 +2617,6 @@ error_alignment:
|
||||
|
||||
pbfd = _bfd_elf_link_setup_gnu_properties (info);
|
||||
|
||||
- bed = get_elf_backend_data (info->output_bfd);
|
||||
-
|
||||
- htab = elf_x86_hash_table (info, bed->target_id);
|
||||
- if (htab == NULL)
|
||||
- return pbfd;
|
||||
-
|
||||
htab->r_info = init_table->r_info;
|
||||
htab->r_sym = init_table->r_sym;
|
||||
|
||||
diff --git a/ld/ChangeLog b/ld/ChangeLog
|
||||
index c07e442..cfadbd4 100644
|
||||
--- a/ld/ChangeLog
|
||||
+++ b/ld/ChangeLog
|
||||
@@ -1,3 +1,27 @@
|
||||
+2018-07-23 H.J. Lu <hongjiu.lu@intel.com>
|
||||
+
|
||||
+ PR ld/23428
|
||||
+ * testsuite/ld-elf/linux-x86.S: New file.
|
||||
+ * testsuite/ld-elf/linux-x86.exp: Likewise.
|
||||
+ * testsuite/ld-elf/pr23428.c: Likewise.
|
||||
+ * testsuite/ld-elf/sec64k.exp: Pass "-z noseparate-code" to ld
|
||||
+ for Linux/x86 targets.
|
||||
+ * testsuite/ld-i386/abs-iamcu.d: Likewise.
|
||||
+ * testsuite/ld-i386/abs.d: Likewise.
|
||||
+ * testsuite/ld-i386/pr12718.d: Likewise.
|
||||
+ * testsuite/ld-i386/pr12921.d: Likewise.
|
||||
+ * testsuite/ld-x86-64/abs-k1om.d: Likewise.
|
||||
+ * testsuite/ld-x86-64/abs-l1om.d: Likewise.
|
||||
+ * testsuite/ld-x86-64/abs.d: Likewise.
|
||||
+ * testsuite/ld-x86-64/pr12718.d: Likewise.
|
||||
+ * testsuite/ld-x86-64/pr12921.d: Likewise.
|
||||
+ * testsuite/ld-linkonce/zeroeh.ld: Discard .note.gnu.property
|
||||
+ section.
|
||||
+ * testsuite/ld-scripts/print-memory-usage.t: Likewise.
|
||||
+ * testsuite/ld-scripts/size-2.t: Likewise.
|
||||
+ * testsuite/lib/ld-lib.exp (run_ld_link_exec_tests): Use ld to
|
||||
+ create executable if language is "asm".
|
||||
+
|
||||
2018-07-18 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
2.31.1 Release point.
|
||||
diff --git a/ld/testsuite/ld-elf/linux-x86.S b/ld/testsuite/ld-elf/linux-x86.S
|
||||
new file mode 100644
|
||||
index 0000000..bdf40c6
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-elf/linux-x86.S
|
||||
@@ -0,0 +1,63 @@
|
||||
+ .text
|
||||
+ .globl _start
|
||||
+ .type _start,@function
|
||||
+ .p2align 4
|
||||
+_start:
|
||||
+ xorl %ebp, %ebp
|
||||
+#ifdef __LP64__
|
||||
+ popq %rdi
|
||||
+ movq %rsp, %rsi
|
||||
+ andq $~15, %rsp
|
||||
+#elif defined __x86_64__
|
||||
+ mov (%rsp),%edi
|
||||
+ addl $4,%esp
|
||||
+ movl %esp, %esi
|
||||
+ andl $~15, %esp
|
||||
+#else
|
||||
+ popl %esi
|
||||
+ movl %esp, %ecx
|
||||
+ andl $~15, %esp
|
||||
+
|
||||
+ subl $8,%esp
|
||||
+ pushl %ecx
|
||||
+ pushl %esi
|
||||
+#endif
|
||||
+
|
||||
+ call main
|
||||
+
|
||||
+ hlt
|
||||
+
|
||||
+ .type syscall, @function
|
||||
+ .globl syscall
|
||||
+ .p2align 4
|
||||
+syscall:
|
||||
+#ifdef __x86_64__
|
||||
+ movq %rdi, %rax /* Syscall number -> rax. */
|
||||
+ movq %rsi, %rdi /* shift arg1 - arg5. */
|
||||
+ movq %rdx, %rsi
|
||||
+ movq %rcx, %rdx
|
||||
+ movq %r8, %r10
|
||||
+ movq %r9, %r8
|
||||
+ movq 8(%rsp),%r9 /* arg6 is on the stack. */
|
||||
+ syscall /* Do the system call. */
|
||||
+#else
|
||||
+ push %ebp
|
||||
+ push %edi
|
||||
+ push %esi
|
||||
+ push %ebx
|
||||
+ mov 0x2c(%esp),%ebp
|
||||
+ mov 0x28(%esp),%edi
|
||||
+ mov 0x24(%esp),%esi
|
||||
+ mov 0x20(%esp),%edx
|
||||
+ mov 0x1c(%esp),%ecx
|
||||
+ mov 0x18(%esp),%ebx
|
||||
+ mov 0x14(%esp),%eax
|
||||
+ int $0x80
|
||||
+ pop %ebx
|
||||
+ pop %esi
|
||||
+ pop %edi
|
||||
+ pop %ebp
|
||||
+#endif
|
||||
+ ret /* Return to caller. */
|
||||
+ .size syscall, .-syscall
|
||||
+ .section .note.GNU-stack,"",@progbits
|
||||
diff --git a/ld/testsuite/ld-elf/linux-x86.exp b/ld/testsuite/ld-elf/linux-x86.exp
|
||||
new file mode 100644
|
||||
index 0000000..36217c6
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-elf/linux-x86.exp
|
||||
@@ -0,0 +1,46 @@
|
||||
+# Expect script for simple native Linux/x86 tests.
|
||||
+# Copyright (C) 2018 Free Software Foundation, Inc.
|
||||
+#
|
||||
+# This file is part of the GNU Binutils.
|
||||
+#
|
||||
+# This program is free software; you can redistribute it and/or modify
|
||||
+# it under the terms of the GNU General Public License as published by
|
||||
+# the Free Software Foundation; either version 3 of the License, or
|
||||
+# (at your option) any later version.
|
||||
+#
|
||||
+# This program is distributed in the hope that it will be useful,
|
||||
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+# GNU General Public License for more details.
|
||||
+#
|
||||
+# You should have received a copy of the GNU General Public License
|
||||
+# along with this program; if not, write to the Free Software
|
||||
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
+# MA 02110-1301, USA.
|
||||
+#
|
||||
+
|
||||
+# Test very simple native Linux/x86 programs with linux-x86.S.
|
||||
+if { ![isnative] || [which $CC] == 0 \
|
||||
+ || (![istarget "i?86-*-linux*"] \
|
||||
+ && ![istarget "x86_64-*-linux*"] \
|
||||
+ && ![istarget "amd64-*-linux*"]) } {
|
||||
+ return
|
||||
+}
|
||||
+
|
||||
+# Add $PLT_CFLAGS if PLT is expected.
|
||||
+global PLT_CFLAGS
|
||||
+# Add $NOPIE_CFLAGS and $NOPIE_LDFLAGS if non-PIE is required.
|
||||
+global NOPIE_CFLAGS NOPIE_LDFLAGS
|
||||
+
|
||||
+run_ld_link_exec_tests [list \
|
||||
+ [list \
|
||||
+ "Run PR ld/23428 test" \
|
||||
+ "--no-dynamic-linker -z separate-code" \
|
||||
+ "" \
|
||||
+ { linux-x86.S pr23428.c } \
|
||||
+ "pr23428" \
|
||||
+ "pass.out" \
|
||||
+ "$NOPIE_CFLAGS -fno-asynchronous-unwind-tables" \
|
||||
+ "asm" \
|
||||
+ ] \
|
||||
+]
|
||||
diff --git a/ld/testsuite/ld-elf/pr23428.c b/ld/testsuite/ld-elf/pr23428.c
|
||||
new file mode 100644
|
||||
index 0000000..3631ed7
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-elf/pr23428.c
|
||||
@@ -0,0 +1,43 @@
|
||||
+#include <unistd.h>
|
||||
+#include <link.h>
|
||||
+#include <syscall.h>
|
||||
+
|
||||
+#define STRING_COMMA_LEN(STR) (STR), (sizeof (STR) - 1)
|
||||
+
|
||||
+int
|
||||
+main (int argc, char **argv)
|
||||
+{
|
||||
+ char **ev = &argv[argc + 1];
|
||||
+ char **evp = ev;
|
||||
+ ElfW(auxv_t) *av;
|
||||
+ const ElfW(Phdr) *phdr = NULL;
|
||||
+ size_t phnum = 0;
|
||||
+ size_t loadnum = 0;
|
||||
+ int fd = STDOUT_FILENO;
|
||||
+ size_t i;
|
||||
+
|
||||
+ while (*evp++ != NULL)
|
||||
+ ;
|
||||
+
|
||||
+ av = (ElfW(auxv_t) *) evp;
|
||||
+
|
||||
+ for (; av->a_type != AT_NULL; ++av)
|
||||
+ switch (av->a_type)
|
||||
+ {
|
||||
+ case AT_PHDR:
|
||||
+ phdr = (const void *) av->a_un.a_val;
|
||||
+ break;
|
||||
+ case AT_PHNUM:
|
||||
+ phnum = av->a_un.a_val;
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ for (i = 0; i < phnum; i++, phdr++)
|
||||
+ if (phdr->p_type == PT_LOAD)
|
||||
+ loadnum++;
|
||||
+
|
||||
+ syscall (SYS_write, fd, STRING_COMMA_LEN ("PASS\n"));
|
||||
+
|
||||
+ syscall (SYS_exit, !loadnum);
|
||||
+ return 0;
|
||||
+}
|
||||
diff --git a/ld/testsuite/ld-elf/sec64k.exp b/ld/testsuite/ld-elf/sec64k.exp
|
||||
index b58139e..3909c0e 100644
|
||||
--- a/ld/testsuite/ld-elf/sec64k.exp
|
||||
+++ b/ld/testsuite/ld-elf/sec64k.exp
|
||||
@@ -177,6 +177,8 @@ if { ![istarget "d10v-*-*"]
|
||||
foreach sfile $sfiles { puts $ofd "#source: $sfile" }
|
||||
if { [istarget spu*-*-*] } {
|
||||
puts $ofd "#ld: --local-store 0:0"
|
||||
+ } elseif { [istarget "i?86-*-linux*"] || [istarget "x86_64-*-linux*"] } {
|
||||
+ puts $ofd "#ld: -z noseparate-code"
|
||||
} else {
|
||||
puts $ofd "#ld:"
|
||||
}
|
||||
diff --git a/ld/testsuite/ld-i386/abs-iamcu.d b/ld/testsuite/ld-i386/abs-iamcu.d
|
||||
index ac9beff..aba7d6b 100644
|
||||
--- a/ld/testsuite/ld-i386/abs-iamcu.d
|
||||
+++ b/ld/testsuite/ld-i386/abs-iamcu.d
|
||||
@@ -2,7 +2,7 @@
|
||||
#source: abs.s
|
||||
#source: zero.s
|
||||
#as: --32 -march=iamcu
|
||||
-#ld: -m elf_iamcu
|
||||
+#ld: -m elf_iamcu -z noseparate-code
|
||||
#objdump: -rs -j .text
|
||||
|
||||
.*: file format .*
|
||||
diff --git a/ld/testsuite/ld-i386/abs.d b/ld/testsuite/ld-i386/abs.d
|
||||
index e660aca..191ee44 100644
|
||||
--- a/ld/testsuite/ld-i386/abs.d
|
||||
+++ b/ld/testsuite/ld-i386/abs.d
|
||||
@@ -2,7 +2,7 @@
|
||||
#as: --32
|
||||
#source: abs.s
|
||||
#source: zero.s
|
||||
-#ld: -melf_i386
|
||||
+#ld: -melf_i386 -z noseparate-code
|
||||
#objdump: -rs
|
||||
|
||||
.*: file format .*
|
||||
diff --git a/ld/testsuite/ld-i386/pr12718.d b/ld/testsuite/ld-i386/pr12718.d
|
||||
index ec51540..7eba52d 100644
|
||||
--- a/ld/testsuite/ld-i386/pr12718.d
|
||||
+++ b/ld/testsuite/ld-i386/pr12718.d
|
||||
@@ -1,6 +1,6 @@
|
||||
#name: PR ld/12718
|
||||
#as: --32
|
||||
-#ld: -melf_i386
|
||||
+#ld: -melf_i386 -z noseparate-code
|
||||
#readelf: -S
|
||||
|
||||
There are 5 section headers, starting at offset 0x[0-9a-f]+:
|
||||
diff --git a/ld/testsuite/ld-i386/pr12921.d b/ld/testsuite/ld-i386/pr12921.d
|
||||
index e49079b..ea2da3e 100644
|
||||
--- a/ld/testsuite/ld-i386/pr12921.d
|
||||
+++ b/ld/testsuite/ld-i386/pr12921.d
|
||||
@@ -1,6 +1,6 @@
|
||||
#name: PR ld/12921
|
||||
#as: --32
|
||||
-#ld: -melf_i386
|
||||
+#ld: -melf_i386 -z noseparate-code
|
||||
#readelf: -S --wide
|
||||
|
||||
There are 7 section headers, starting at offset 0x[0-9a-f]+:
|
||||
diff --git a/ld/testsuite/ld-linkonce/zeroeh.ld b/ld/testsuite/ld-linkonce/zeroeh.ld
|
||||
index b22eaa1..f89855a 100644
|
||||
--- a/ld/testsuite/ld-linkonce/zeroeh.ld
|
||||
+++ b/ld/testsuite/ld-linkonce/zeroeh.ld
|
||||
@@ -2,4 +2,5 @@ SECTIONS {
|
||||
.text 0xa00 : { *(.text); *(.gnu.linkonce.t.*) }
|
||||
.gcc_except_table 0x2000 : { *(.gcc_except_table) }
|
||||
.eh_frame 0x4000 : { *(.eh_frame) }
|
||||
+ /DISCARD/ : { *(.note.gnu.property) }
|
||||
}
|
||||
diff --git a/ld/testsuite/ld-scripts/print-memory-usage.t b/ld/testsuite/ld-scripts/print-memory-usage.t
|
||||
index 5ff057a..6eda1d2 100644
|
||||
--- a/ld/testsuite/ld-scripts/print-memory-usage.t
|
||||
+++ b/ld/testsuite/ld-scripts/print-memory-usage.t
|
||||
@@ -11,4 +11,6 @@ SECTIONS
|
||||
*(.data)
|
||||
*(.rw)
|
||||
}
|
||||
+
|
||||
+ /DISCARD/ : { *(.note.gnu.property) }
|
||||
}
|
||||
diff --git a/ld/testsuite/ld-scripts/size-2.t b/ld/testsuite/ld-scripts/size-2.t
|
||||
index 7238639..c3c4edd 100644
|
||||
--- a/ld/testsuite/ld-scripts/size-2.t
|
||||
+++ b/ld/testsuite/ld-scripts/size-2.t
|
||||
@@ -18,4 +18,5 @@ SECTIONS
|
||||
LONG (SIZEOF (.tdata))
|
||||
LONG (SIZEOF (.tbss))
|
||||
} :image
|
||||
+ /DISCARD/ : { *(.note.gnu.property) }
|
||||
}
|
||||
diff --git a/ld/testsuite/ld-x86-64/abs-k1om.d b/ld/testsuite/ld-x86-64/abs-k1om.d
|
||||
index 2c26639..6b0fde0 100644
|
||||
--- a/ld/testsuite/ld-x86-64/abs-k1om.d
|
||||
+++ b/ld/testsuite/ld-x86-64/abs-k1om.d
|
||||
@@ -2,7 +2,7 @@
|
||||
#source: ../ld-i386/abs.s
|
||||
#source: ../ld-i386/zero.s
|
||||
#as: --64 -march=k1om
|
||||
-#ld: -m elf_k1om
|
||||
+#ld: -m elf_k1om -z noseparate-code
|
||||
#objdump: -rs -j .text
|
||||
|
||||
.*: file format .*
|
||||
diff --git a/ld/testsuite/ld-x86-64/abs-l1om.d b/ld/testsuite/ld-x86-64/abs-l1om.d
|
||||
index 1fb96d4..f87869f 100644
|
||||
--- a/ld/testsuite/ld-x86-64/abs-l1om.d
|
||||
+++ b/ld/testsuite/ld-x86-64/abs-l1om.d
|
||||
@@ -2,7 +2,7 @@
|
||||
#source: ../ld-i386/abs.s
|
||||
#source: ../ld-i386/zero.s
|
||||
#as: --64 -march=l1om
|
||||
-#ld: -m elf_l1om
|
||||
+#ld: -m elf_l1om -z noseparate-code
|
||||
#objdump: -rs -j .text
|
||||
#target: x86_64-*-linux*
|
||||
|
||||
diff --git a/ld/testsuite/ld-x86-64/abs.d b/ld/testsuite/ld-x86-64/abs.d
|
||||
index b24b018..d99ab46 100644
|
||||
--- a/ld/testsuite/ld-x86-64/abs.d
|
||||
+++ b/ld/testsuite/ld-x86-64/abs.d
|
||||
@@ -1,7 +1,7 @@
|
||||
#name: Absolute non-overflowing relocs
|
||||
#source: ../ld-i386/abs.s
|
||||
#source: ../ld-i386/zero.s
|
||||
-#ld:
|
||||
+#ld: -z noseparate-code
|
||||
#objdump: -rs
|
||||
|
||||
.*: file format .*
|
||||
diff --git a/ld/testsuite/ld-x86-64/pr12718.d b/ld/testsuite/ld-x86-64/pr12718.d
|
||||
index 07d1732..2c503ff 100644
|
||||
--- a/ld/testsuite/ld-x86-64/pr12718.d
|
||||
+++ b/ld/testsuite/ld-x86-64/pr12718.d
|
||||
@@ -1,6 +1,6 @@
|
||||
#name: PR ld/12718
|
||||
#as: --64
|
||||
-#ld: -melf_x86_64
|
||||
+#ld: -melf_x86_64 -z noseparate-code
|
||||
#readelf: -S --wide
|
||||
|
||||
There are 5 section headers, starting at offset 0x[0-9a-f]+:
|
||||
diff --git a/ld/testsuite/ld-x86-64/pr12921.d b/ld/testsuite/ld-x86-64/pr12921.d
|
||||
index 6fe6abe..1162d55 100644
|
||||
--- a/ld/testsuite/ld-x86-64/pr12921.d
|
||||
+++ b/ld/testsuite/ld-x86-64/pr12921.d
|
||||
@@ -1,6 +1,6 @@
|
||||
#name: PR ld/12921
|
||||
#as: --64
|
||||
-#ld: -melf_x86_64
|
||||
+#ld: -melf_x86_64 -z noseparate-code
|
||||
#readelf: -S --wide
|
||||
|
||||
There are 7 section headers, starting at offset 0x[0-9a-f]+:
|
||||
diff --git a/ld/testsuite/lib/ld-lib.exp b/ld/testsuite/lib/ld-lib.exp
|
||||
index cfbefe9..1095091 100644
|
||||
--- a/ld/testsuite/lib/ld-lib.exp
|
||||
+++ b/ld/testsuite/lib/ld-lib.exp
|
||||
@@ -1482,7 +1482,10 @@ proc run_ld_link_exec_tests { ldtests args } {
|
||||
continue
|
||||
}
|
||||
|
||||
- if { [ string match "c++" $lang ] } {
|
||||
+ if { [ string match "asm" $lang ] } {
|
||||
+ set link_proc ld_link
|
||||
+ set link_cmd $ld
|
||||
+ } elseif { [ string match "c++" $lang ] } {
|
||||
set link_proc ld_link
|
||||
set link_cmd $CXX
|
||||
} else {
|
||||
--
|
||||
2.9.3
|
||||
|
||||
@@ -0,0 +1,139 @@
|
||||
From 28a27bdbb9500797e6767f80c8128b09112aeed5 Mon Sep 17 00:00:00 2001
|
||||
From: "H.J. Lu" <hjl.tools@gmail.com>
|
||||
Date: Sat, 11 Aug 2018 06:41:33 -0700
|
||||
Subject: [PATCH] x86: Properly add X86_ISA_1_NEEDED property
|
||||
|
||||
Existing properties may be removed during property merging. We avoid
|
||||
adding X86_ISA_1_NEEDED property only if existing properties won't be
|
||||
removed.
|
||||
|
||||
bfd/
|
||||
|
||||
PR ld/23428
|
||||
* elfxx-x86.c (_bfd_x86_elf_link_setup_gnu_properties): Don't
|
||||
add X86_ISA_1_NEEDED property only if existing properties won't
|
||||
be removed.
|
||||
|
||||
ld/
|
||||
|
||||
PR ld/23428
|
||||
* testsuite/ld-elf/dummy.s: New file.
|
||||
* testsuite/ld-elf/linux-x86.S: Add X86_FEATURE_1_AND property.
|
||||
* testsuite/ld-elf/linux-x86.exp: Add dummy.s to pr23428.
|
||||
|
||||
(cherry picked from commit ab9e342807d132182892de1be1a92d6e91a5c1da)
|
||||
---
|
||||
bfd/ChangeLog | 7 +++++++
|
||||
bfd/elfxx-x86.c | 28 ++++++++++++++++++++++------
|
||||
ld/ChangeLog | 7 +++++++
|
||||
ld/testsuite/ld-elf/dummy.s | 1 +
|
||||
ld/testsuite/ld-elf/linux-x86.S | 28 ++++++++++++++++++++++++++++
|
||||
ld/testsuite/ld-elf/linux-x86.exp | 2 +-
|
||||
6 files changed, 66 insertions(+), 7 deletions(-)
|
||||
create mode 100644 ld/testsuite/ld-elf/dummy.s
|
||||
|
||||
diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c
|
||||
index 7ccfd25..2d8f7b6 100644
|
||||
--- a/bfd/elfxx-x86.c
|
||||
+++ b/bfd/elfxx-x86.c
|
||||
@@ -2588,7 +2588,6 @@ _bfd_x86_elf_link_setup_gnu_properties
|
||||
prop->pr_kind = property_number;
|
||||
}
|
||||
else if (has_text
|
||||
- && elf_properties (ebfd) == NULL
|
||||
&& elf_tdata (info->output_bfd)->o->build_id.sec == NULL
|
||||
&& !htab->elf.dynamic_sections_created
|
||||
&& !info->traditional_format
|
||||
@@ -2598,11 +2597,28 @@ _bfd_x86_elf_link_setup_gnu_properties
|
||||
/* If the separate code program header is needed, make sure
|
||||
that the first read-only PT_LOAD segment has no code by
|
||||
adding a GNU_PROPERTY_X86_ISA_1_NEEDED note. */
|
||||
- prop = _bfd_elf_get_property (ebfd,
|
||||
- GNU_PROPERTY_X86_ISA_1_NEEDED,
|
||||
- 4);
|
||||
- prop->u.number = GNU_PROPERTY_X86_ISA_1_486;
|
||||
- prop->pr_kind = property_number;
|
||||
+ elf_property_list *list;
|
||||
+ bfd_boolean need_property = TRUE;
|
||||
+
|
||||
+ for (list = elf_properties (ebfd); list; list = list->next)
|
||||
+ switch (list->property.pr_type)
|
||||
+ {
|
||||
+ case GNU_PROPERTY_STACK_SIZE:
|
||||
+ case GNU_PROPERTY_NO_COPY_ON_PROTECTED:
|
||||
+ case GNU_PROPERTY_X86_ISA_1_NEEDED:
|
||||
+ /* These properties won't be removed during merging. */
|
||||
+ need_property = FALSE;
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ if (need_property)
|
||||
+ {
|
||||
+ prop = _bfd_elf_get_property (ebfd,
|
||||
+ GNU_PROPERTY_X86_ISA_1_NEEDED,
|
||||
+ 4);
|
||||
+ prop->u.number = GNU_PROPERTY_X86_ISA_1_486;
|
||||
+ prop->pr_kind = property_number;
|
||||
+ }
|
||||
}
|
||||
|
||||
/* Create the GNU property note section if needed. */
|
||||
diff --git a/ld/testsuite/ld-elf/dummy.s b/ld/testsuite/ld-elf/dummy.s
|
||||
new file mode 100644
|
||||
index 0000000..403f980
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-elf/dummy.s
|
||||
@@ -0,0 +1 @@
|
||||
+# Dummy
|
||||
diff --git a/ld/testsuite/ld-elf/linux-x86.S b/ld/testsuite/ld-elf/linux-x86.S
|
||||
index bdf40c6..d94abc1 100644
|
||||
--- a/ld/testsuite/ld-elf/linux-x86.S
|
||||
+++ b/ld/testsuite/ld-elf/linux-x86.S
|
||||
@@ -61,3 +61,31 @@ syscall:
|
||||
ret /* Return to caller. */
|
||||
.size syscall, .-syscall
|
||||
.section .note.GNU-stack,"",@progbits
|
||||
+
|
||||
+ .section ".note.gnu.property", "a"
|
||||
+#ifdef __LP64__
|
||||
+ .p2align 3
|
||||
+#else
|
||||
+ .p2align 2
|
||||
+#endif
|
||||
+ .long 1f - 0f /* name length */
|
||||
+ .long 5f - 2f /* data length */
|
||||
+ .long 5 /* note type */
|
||||
+0: .asciz "GNU" /* vendor name */
|
||||
+1:
|
||||
+#ifdef __LP64__
|
||||
+ .p2align 3
|
||||
+#else
|
||||
+ .p2align 2
|
||||
+#endif
|
||||
+2: .long 0xc0000002 /* pr_type. */
|
||||
+ .long 4f - 3f /* pr_datasz. */
|
||||
+3:
|
||||
+ .long 0x2
|
||||
+4:
|
||||
+#ifdef __LP64__
|
||||
+ .p2align 3
|
||||
+#else
|
||||
+ .p2align 2
|
||||
+#endif
|
||||
+5:
|
||||
diff --git a/ld/testsuite/ld-elf/linux-x86.exp b/ld/testsuite/ld-elf/linux-x86.exp
|
||||
index 36217c6..f6f5a80 100644
|
||||
--- a/ld/testsuite/ld-elf/linux-x86.exp
|
||||
+++ b/ld/testsuite/ld-elf/linux-x86.exp
|
||||
@@ -37,7 +37,7 @@ run_ld_link_exec_tests [list \
|
||||
"Run PR ld/23428 test" \
|
||||
"--no-dynamic-linker -z separate-code" \
|
||||
"" \
|
||||
- { linux-x86.S pr23428.c } \
|
||||
+ { linux-x86.S pr23428.c dummy.s } \
|
||||
"pr23428" \
|
||||
"pass.out" \
|
||||
"$NOPIE_CFLAGS -fno-asynchronous-unwind-tables" \
|
||||
--
|
||||
2.9.3
|
||||
|
||||
@@ -0,0 +1,587 @@
|
||||
From d55c3e36094f06bb1fb02f5eac19fdccf1d91f7e Mon Sep 17 00:00:00 2001
|
||||
From: "H.J. Lu" <hjl.tools@gmail.com>
|
||||
Date: Wed, 8 Aug 2018 06:09:15 -0700
|
||||
Subject: [PATCH] x86: Properly merge GNU_PROPERTY_X86_ISA_1_USED
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=utf8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Without the GNU_PROPERTY_X86_ISA_1_USED property, all ISAs may be used.
|
||||
If a bit in the GNU_PROPERTY_X86_ISA_1_USED property is unset, the
|
||||
corresponding x86 instruction set isnât used. When merging properties
|
||||
from 2 input files and one input file doesn't have the
|
||||
GNU_PROPERTY_X86_ISA_1_USED property, the output file shouldn't have
|
||||
it neither. This patch removes the GNU_PROPERTY_X86_ISA_1_USED
|
||||
property if an input file doesn't have it.
|
||||
|
||||
This patch replaces the GNU_PROPERTY_X86_ISA_1_USED property with the
|
||||
GNU_PROPERTY_X86_ISA_1_NEEDED property which is the minimum ISA
|
||||
requirement.
|
||||
|
||||
bfd/
|
||||
|
||||
PR ld/23486
|
||||
* elfxx-x86.c (_bfd_x86_elf_merge_gnu_properties): Remove
|
||||
GNU_PROPERTY_X86_ISA_1_USED if an input file doesn't have it.
|
||||
(_bfd_x86_elf_link_setup_gnu_properties): Adding the
|
||||
GNU_PROPERTY_X86_ISA_1_NEEDED, instead of
|
||||
GNU_PROPERTY_X86_ISA_1_USED, property.
|
||||
|
||||
ld/
|
||||
|
||||
PR ld/23486
|
||||
* testsuite/ld-i386/i386.exp: Run PR ld/23486 tests.
|
||||
* testsuite/ld-x86-64/x86-64.exp: Likewise.
|
||||
* testsuite/ld-i386/pr23486a.d: New file.
|
||||
* testsuite/ld-i386/pr23486b.d: Likewise.
|
||||
* testsuite/ld-x86-64/pr23486a-x32.d: Likewise.
|
||||
* testsuite/ld-x86-64/pr23486a.d: Likewise.
|
||||
* testsuite/ld-x86-64/pr23486a.s: Likewise.
|
||||
* testsuite/ld-x86-64/pr23486b-x32.d: Likewise.
|
||||
* testsuite/ld-x86-64/pr23486b.d: Likewise.
|
||||
* testsuite/ld-x86-64/pr23486b.s: Likewise.
|
||||
* testsuite/ld-i386/property-3.r: Remove "x86 ISA used".
|
||||
* testsuite/ld-i386/property-4.r: Likewise.
|
||||
* testsuite/ld-i386/property-5.r: Likewise.
|
||||
* testsuite/ld-i386/property-x86-ibt3a.d: Likewise.
|
||||
* testsuite/ld-i386/property-x86-ibt3b.d: Likewise.
|
||||
* testsuite/ld-i386/property-x86-shstk3a.d: Likewise.
|
||||
* testsuite/ld-i386/property-x86-shstk3b.d: Likewise.
|
||||
* testsuite/ld-x86-64/property-3.r: Likewise.
|
||||
* testsuite/ld-x86-64/property-4.r: Likewise.
|
||||
* testsuite/ld-x86-64/property-5.r: Likewise.
|
||||
* testsuite/ld-x86-64/property-x86-ibt3a-x32.d: Likewise.
|
||||
* testsuite/ld-x86-64/property-x86-ibt3a.d: Likewise.
|
||||
* testsuite/ld-x86-64/property-x86-ibt3b-x32.d: Likewise.
|
||||
* testsuite/ld-x86-64/property-x86-ibt3b.d: Likewise.
|
||||
* testsuite/ld-x86-64/property-x86-shstk3a-x32.d: Likewise.
|
||||
* testsuite/ld-x86-64/property-x86-shstk3a.d: Likewise.
|
||||
* testsuite/ld-x86-64/property-x86-shstk3b-x32.d: Likewise.
|
||||
* testsuite/ld-x86-64/property-x86-shstk3b.d: Likewise.
|
||||
|
||||
(cherry picked from commit f7309df20c4e787041cedc4a6aced89c15259e54)
|
||||
---
|
||||
bfd/ChangeLog | 9 +++++++
|
||||
bfd/elfxx-x86.c | 25 ++++++++++++++----
|
||||
ld/ChangeLog | 32 +++++++++++++++++++++++
|
||||
ld/testsuite/ld-i386/i386.exp | 2 ++
|
||||
ld/testsuite/ld-i386/pr23486a.d | 10 +++++++
|
||||
ld/testsuite/ld-i386/pr23486b.d | 10 +++++++
|
||||
ld/testsuite/ld-i386/property-3.r | 1 -
|
||||
ld/testsuite/ld-i386/property-4.r | 1 -
|
||||
ld/testsuite/ld-i386/property-5.r | 1 -
|
||||
ld/testsuite/ld-i386/property-x86-ibt3a.d | 5 ++--
|
||||
ld/testsuite/ld-i386/property-x86-ibt3b.d | 5 ++--
|
||||
ld/testsuite/ld-i386/property-x86-shstk3a.d | 5 ++--
|
||||
ld/testsuite/ld-i386/property-x86-shstk3b.d | 5 ++--
|
||||
ld/testsuite/ld-x86-64/pr23486a-x32.d | 10 +++++++
|
||||
ld/testsuite/ld-x86-64/pr23486a.d | 10 +++++++
|
||||
ld/testsuite/ld-x86-64/pr23486a.s | 30 +++++++++++++++++++++
|
||||
ld/testsuite/ld-x86-64/pr23486b-x32.d | 10 +++++++
|
||||
ld/testsuite/ld-x86-64/pr23486b.d | 10 +++++++
|
||||
ld/testsuite/ld-x86-64/pr23486b.s | 30 +++++++++++++++++++++
|
||||
ld/testsuite/ld-x86-64/property-3.r | 1 -
|
||||
ld/testsuite/ld-x86-64/property-4.r | 1 -
|
||||
ld/testsuite/ld-x86-64/property-5.r | 1 -
|
||||
ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d | 5 ++--
|
||||
ld/testsuite/ld-x86-64/property-x86-ibt3a.d | 5 ++--
|
||||
ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d | 5 ++--
|
||||
ld/testsuite/ld-x86-64/property-x86-ibt3b.d | 5 ++--
|
||||
ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d | 5 ++--
|
||||
ld/testsuite/ld-x86-64/property-x86-shstk3a.d | 5 ++--
|
||||
ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d | 5 ++--
|
||||
ld/testsuite/ld-x86-64/property-x86-shstk3b.d | 5 ++--
|
||||
ld/testsuite/ld-x86-64/x86-64.exp | 4 +++
|
||||
31 files changed, 211 insertions(+), 47 deletions(-)
|
||||
create mode 100644 ld/testsuite/ld-i386/pr23486a.d
|
||||
create mode 100644 ld/testsuite/ld-i386/pr23486b.d
|
||||
create mode 100644 ld/testsuite/ld-x86-64/pr23486a-x32.d
|
||||
create mode 100644 ld/testsuite/ld-x86-64/pr23486a.d
|
||||
create mode 100644 ld/testsuite/ld-x86-64/pr23486a.s
|
||||
create mode 100644 ld/testsuite/ld-x86-64/pr23486b-x32.d
|
||||
create mode 100644 ld/testsuite/ld-x86-64/pr23486b.d
|
||||
create mode 100644 ld/testsuite/ld-x86-64/pr23486b.s
|
||||
|
||||
diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c
|
||||
index 2e4ff88..7ccfd25 100644
|
||||
--- a/bfd/elfxx-x86.c
|
||||
+++ b/bfd/elfxx-x86.c
|
||||
@@ -2407,12 +2407,27 @@ _bfd_x86_elf_merge_gnu_properties (struct bfd_link_info *info,
|
||||
switch (pr_type)
|
||||
{
|
||||
case GNU_PROPERTY_X86_ISA_1_USED:
|
||||
+ if (aprop == NULL || bprop == NULL)
|
||||
+ {
|
||||
+ /* Only one of APROP and BPROP can be NULL. */
|
||||
+ if (aprop != NULL)
|
||||
+ {
|
||||
+ /* Remove this property since the other input file doesn't
|
||||
+ have it. */
|
||||
+ aprop->pr_kind = property_remove;
|
||||
+ updated = TRUE;
|
||||
+ }
|
||||
+ break;
|
||||
+ }
|
||||
+ goto or_property;
|
||||
+
|
||||
case GNU_PROPERTY_X86_ISA_1_NEEDED:
|
||||
if (aprop != NULL && bprop != NULL)
|
||||
{
|
||||
+or_property:
|
||||
number = aprop->u.number;
|
||||
aprop->u.number = number | bprop->u.number;
|
||||
- /* Remove the property if ISA bits are empty. */
|
||||
+ /* Remove the property if all bits are empty. */
|
||||
if (aprop->u.number == 0)
|
||||
{
|
||||
aprop->pr_kind = property_remove;
|
||||
@@ -2428,14 +2443,14 @@ _bfd_x86_elf_merge_gnu_properties (struct bfd_link_info *info,
|
||||
{
|
||||
if (aprop->u.number == 0)
|
||||
{
|
||||
- /* Remove APROP if ISA bits are empty. */
|
||||
+ /* Remove APROP if all bits are empty. */
|
||||
aprop->pr_kind = property_remove;
|
||||
updated = TRUE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
- /* Return TRUE if APROP is NULL and ISA bits of BPROP
|
||||
+ /* Return TRUE if APROP is NULL and all bits of BPROP
|
||||
aren't empty to indicate that BPROP should be added
|
||||
to ABFD. */
|
||||
updated = bprop->u.number != 0;
|
||||
@@ -2582,9 +2597,9 @@ _bfd_x86_elf_link_setup_gnu_properties
|
||||
{
|
||||
/* If the separate code program header is needed, make sure
|
||||
that the first read-only PT_LOAD segment has no code by
|
||||
- adding a GNU_PROPERTY_X86_ISA_1_USED note. */
|
||||
+ adding a GNU_PROPERTY_X86_ISA_1_NEEDED note. */
|
||||
prop = _bfd_elf_get_property (ebfd,
|
||||
- GNU_PROPERTY_X86_ISA_1_USED,
|
||||
+ GNU_PROPERTY_X86_ISA_1_NEEDED,
|
||||
4);
|
||||
prop->u.number = GNU_PROPERTY_X86_ISA_1_486;
|
||||
prop->pr_kind = property_number;
|
||||
diff --git a/ld/testsuite/ld-i386/i386.exp b/ld/testsuite/ld-i386/i386.exp
|
||||
index 6d794fe..78dad02 100644
|
||||
--- a/ld/testsuite/ld-i386/i386.exp
|
||||
+++ b/ld/testsuite/ld-i386/i386.exp
|
||||
@@ -462,6 +462,8 @@ run_dump_test "pr23189"
|
||||
run_dump_test "pr23194"
|
||||
run_dump_test "pr23372a"
|
||||
run_dump_test "pr23372b"
|
||||
+run_dump_test "pr23486a"
|
||||
+run_dump_test "pr23486b"
|
||||
|
||||
if { !([istarget "i?86-*-linux*"]
|
||||
|| [istarget "i?86-*-gnu*"]
|
||||
diff --git a/ld/testsuite/ld-i386/pr23486a.d b/ld/testsuite/ld-i386/pr23486a.d
|
||||
new file mode 100644
|
||||
index 0000000..41a6dcf
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-i386/pr23486a.d
|
||||
@@ -0,0 +1,10 @@
|
||||
+#source: ../ld-x86-64/pr23486a.s
|
||||
+#source: ../ld-x86-64/pr23486b.s
|
||||
+#as: --32
|
||||
+#ld: -r -m elf_i386
|
||||
+#readelf: -n
|
||||
+
|
||||
+Displaying notes found in: .note.gnu.property
|
||||
+ Owner Data size Description
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586
|
||||
diff --git a/ld/testsuite/ld-i386/pr23486b.d b/ld/testsuite/ld-i386/pr23486b.d
|
||||
new file mode 100644
|
||||
index 0000000..08019b7
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-i386/pr23486b.d
|
||||
@@ -0,0 +1,10 @@
|
||||
+#source: ../ld-x86-64/pr23486b.s
|
||||
+#source: ../ld-x86-64/pr23486a.s
|
||||
+#as: --32
|
||||
+#ld: -r -m elf_i386
|
||||
+#readelf: -n
|
||||
+
|
||||
+Displaying notes found in: .note.gnu.property
|
||||
+ Owner Data size Description
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586
|
||||
diff --git a/ld/testsuite/ld-i386/property-3.r b/ld/testsuite/ld-i386/property-3.r
|
||||
index 0ed91f5..d03203c 100644
|
||||
--- a/ld/testsuite/ld-i386/property-3.r
|
||||
+++ b/ld/testsuite/ld-i386/property-3.r
|
||||
@@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: stack size: 0x800000
|
||||
- x86 ISA used: 586, SSE
|
||||
x86 ISA needed: i486, 586
|
||||
#pass
|
||||
diff --git a/ld/testsuite/ld-i386/property-4.r b/ld/testsuite/ld-i386/property-4.r
|
||||
index cb2bc15..da295eb 100644
|
||||
--- a/ld/testsuite/ld-i386/property-4.r
|
||||
+++ b/ld/testsuite/ld-i386/property-4.r
|
||||
@@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: stack size: 0x800000
|
||||
- x86 ISA used: i486, 586, SSE
|
||||
x86 ISA needed: i486, 586, SSE
|
||||
#pass
|
||||
diff --git a/ld/testsuite/ld-i386/property-5.r b/ld/testsuite/ld-i386/property-5.r
|
||||
index 5529650..e414159 100644
|
||||
--- a/ld/testsuite/ld-i386/property-5.r
|
||||
+++ b/ld/testsuite/ld-i386/property-5.r
|
||||
@@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: stack size: 0x900000
|
||||
- x86 ISA used: i486, 586, SSE
|
||||
x86 ISA needed: i486, 586, SSE
|
||||
#pass
|
||||
diff --git a/ld/testsuite/ld-i386/property-x86-ibt3a.d b/ld/testsuite/ld-i386/property-x86-ibt3a.d
|
||||
index 4bb35b0..0aedea1 100644
|
||||
--- a/ld/testsuite/ld-i386/property-x86-ibt3a.d
|
||||
+++ b/ld/testsuite/ld-i386/property-x86-ibt3a.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: i486, 586, SSE2, SSE3
|
||||
- x86 ISA needed: 586, SSE, SSE3, SSE4_1
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: 586, SSE, SSE3, SSE4_1
|
||||
diff --git a/ld/testsuite/ld-i386/property-x86-ibt3b.d b/ld/testsuite/ld-i386/property-x86-ibt3b.d
|
||||
index 418d58a..bd69ac6 100644
|
||||
--- a/ld/testsuite/ld-i386/property-x86-ibt3b.d
|
||||
+++ b/ld/testsuite/ld-i386/property-x86-ibt3b.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: i486, 586, SSE2, SSE3
|
||||
- x86 ISA needed: 586, SSE, SSE3, SSE4_1
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: 586, SSE, SSE3, SSE4_1
|
||||
diff --git a/ld/testsuite/ld-i386/property-x86-shstk3a.d b/ld/testsuite/ld-i386/property-x86-shstk3a.d
|
||||
index e261038..76d2a39 100644
|
||||
--- a/ld/testsuite/ld-i386/property-x86-shstk3a.d
|
||||
+++ b/ld/testsuite/ld-i386/property-x86-shstk3a.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: i486, 586, SSE2, SSE3
|
||||
- x86 ISA needed: 586, SSE, SSE3, SSE4_1
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: 586, SSE, SSE3, SSE4_1
|
||||
diff --git a/ld/testsuite/ld-i386/property-x86-shstk3b.d b/ld/testsuite/ld-i386/property-x86-shstk3b.d
|
||||
index 25f3d23..e770ecf 100644
|
||||
--- a/ld/testsuite/ld-i386/property-x86-shstk3b.d
|
||||
+++ b/ld/testsuite/ld-i386/property-x86-shstk3b.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: i486, 586, SSE2, SSE3
|
||||
- x86 ISA needed: 586, SSE, SSE3, SSE4_1
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: 586, SSE, SSE3, SSE4_1
|
||||
diff --git a/ld/testsuite/ld-x86-64/pr23486a-x32.d b/ld/testsuite/ld-x86-64/pr23486a-x32.d
|
||||
new file mode 100644
|
||||
index 0000000..6d9fa68
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-x86-64/pr23486a-x32.d
|
||||
@@ -0,0 +1,10 @@
|
||||
+#source: pr23486a.s
|
||||
+#source: pr23486b.s
|
||||
+#as: --x32
|
||||
+#ld: -r -m elf32_x86_64
|
||||
+#readelf: -n
|
||||
+
|
||||
+Displaying notes found in: .note.gnu.property
|
||||
+ Owner Data size Description
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586
|
||||
diff --git a/ld/testsuite/ld-x86-64/pr23486a.d b/ld/testsuite/ld-x86-64/pr23486a.d
|
||||
new file mode 100644
|
||||
index 0000000..dc2b7bf
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-x86-64/pr23486a.d
|
||||
@@ -0,0 +1,10 @@
|
||||
+#source: pr23486a.s
|
||||
+#source: pr23486b.s
|
||||
+#as: --64 -defsym __64_bit__=1
|
||||
+#ld: -r -m elf_x86_64
|
||||
+#readelf: -n
|
||||
+
|
||||
+Displaying notes found in: .note.gnu.property
|
||||
+ Owner Data size Description
|
||||
+ GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586
|
||||
diff --git a/ld/testsuite/ld-x86-64/pr23486a.s b/ld/testsuite/ld-x86-64/pr23486a.s
|
||||
new file mode 100644
|
||||
index 0000000..a07d0c7
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-x86-64/pr23486a.s
|
||||
@@ -0,0 +1,30 @@
|
||||
+ .section ".note.gnu.property", "a"
|
||||
+.ifdef __64_bit__
|
||||
+ .p2align 3
|
||||
+.else
|
||||
+ .p2align 2
|
||||
+.endif
|
||||
+ .long 1f - 0f /* name length. */
|
||||
+ .long 4f - 1f /* data length. */
|
||||
+ /* NT_GNU_PROPERTY_TYPE_0 */
|
||||
+ .long 5 /* note type. */
|
||||
+0:
|
||||
+ .asciz "GNU" /* vendor name. */
|
||||
+1:
|
||||
+.ifdef __64_bit__
|
||||
+ .p2align 3
|
||||
+.else
|
||||
+ .p2align 2
|
||||
+.endif
|
||||
+ /* GNU_PROPERTY_X86_ISA_1_USED */
|
||||
+ .long 0xc0000000 /* pr_type. */
|
||||
+ .long 3f - 2f /* pr_datasz. */
|
||||
+2:
|
||||
+ .long 0xa
|
||||
+3:
|
||||
+.ifdef __64_bit__
|
||||
+ .p2align 3
|
||||
+.else
|
||||
+ .p2align 2
|
||||
+.endif
|
||||
+4:
|
||||
diff --git a/ld/testsuite/ld-x86-64/pr23486b-x32.d b/ld/testsuite/ld-x86-64/pr23486b-x32.d
|
||||
new file mode 100644
|
||||
index 0000000..0445e69
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-x86-64/pr23486b-x32.d
|
||||
@@ -0,0 +1,10 @@
|
||||
+#source: pr23486b.s
|
||||
+#source: pr23486a.s
|
||||
+#as: --x32
|
||||
+#ld: -r -m elf32_x86_64
|
||||
+#readelf: -n
|
||||
+
|
||||
+Displaying notes found in: .note.gnu.property
|
||||
+ Owner Data size Description
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586
|
||||
diff --git a/ld/testsuite/ld-x86-64/pr23486b.d b/ld/testsuite/ld-x86-64/pr23486b.d
|
||||
new file mode 100644
|
||||
index 0000000..dc2b7bf
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-x86-64/pr23486b.d
|
||||
@@ -0,0 +1,10 @@
|
||||
+#source: pr23486a.s
|
||||
+#source: pr23486b.s
|
||||
+#as: --64 -defsym __64_bit__=1
|
||||
+#ld: -r -m elf_x86_64
|
||||
+#readelf: -n
|
||||
+
|
||||
+Displaying notes found in: .note.gnu.property
|
||||
+ Owner Data size Description
|
||||
+ GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586
|
||||
diff --git a/ld/testsuite/ld-x86-64/pr23486b.s b/ld/testsuite/ld-x86-64/pr23486b.s
|
||||
new file mode 100644
|
||||
index 0000000..c5167ee
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-x86-64/pr23486b.s
|
||||
@@ -0,0 +1,30 @@
|
||||
+ .section ".note.gnu.property", "a"
|
||||
+.ifdef __64_bit__
|
||||
+ .p2align 3
|
||||
+.else
|
||||
+ .p2align 2
|
||||
+.endif
|
||||
+ .long 1f - 0f /* name length. */
|
||||
+ .long 4f - 1f /* data length. */
|
||||
+ /* NT_GNU_PROPERTY_TYPE_0 */
|
||||
+ .long 5 /* note type. */
|
||||
+0:
|
||||
+ .asciz "GNU" /* vendor name. */
|
||||
+1:
|
||||
+.ifdef __64_bit__
|
||||
+ .p2align 3
|
||||
+.else
|
||||
+ .p2align 2
|
||||
+.endif
|
||||
+ /* GNU_PROPERTY_X86_ISA_1_NEEDED */
|
||||
+ .long 0xc0000001 /* pr_type. */
|
||||
+ .long 3f - 2f /* pr_datasz. */
|
||||
+2:
|
||||
+ .long 0x3
|
||||
+3:
|
||||
+.ifdef __64_bit__
|
||||
+ .p2align 3
|
||||
+.else
|
||||
+ .p2align 2
|
||||
+.endif
|
||||
+4:
|
||||
diff --git a/ld/testsuite/ld-x86-64/property-3.r b/ld/testsuite/ld-x86-64/property-3.r
|
||||
index 0ed91f5..d03203c 100644
|
||||
--- a/ld/testsuite/ld-x86-64/property-3.r
|
||||
+++ b/ld/testsuite/ld-x86-64/property-3.r
|
||||
@@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: stack size: 0x800000
|
||||
- x86 ISA used: 586, SSE
|
||||
x86 ISA needed: i486, 586
|
||||
#pass
|
||||
diff --git a/ld/testsuite/ld-x86-64/property-4.r b/ld/testsuite/ld-x86-64/property-4.r
|
||||
index cb2bc15..da295eb 100644
|
||||
--- a/ld/testsuite/ld-x86-64/property-4.r
|
||||
+++ b/ld/testsuite/ld-x86-64/property-4.r
|
||||
@@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: stack size: 0x800000
|
||||
- x86 ISA used: i486, 586, SSE
|
||||
x86 ISA needed: i486, 586, SSE
|
||||
#pass
|
||||
diff --git a/ld/testsuite/ld-x86-64/property-5.r b/ld/testsuite/ld-x86-64/property-5.r
|
||||
index 5529650..e414159 100644
|
||||
--- a/ld/testsuite/ld-x86-64/property-5.r
|
||||
+++ b/ld/testsuite/ld-x86-64/property-5.r
|
||||
@@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: stack size: 0x900000
|
||||
- x86 ISA used: i486, 586, SSE
|
||||
x86 ISA needed: i486, 586, SSE
|
||||
#pass
|
||||
diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d b/ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d
|
||||
index 011426f..4cec728 100644
|
||||
--- a/ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d
|
||||
+++ b/ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
|
||||
- x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt3a.d b/ld/testsuite/ld-x86-64/property-x86-ibt3a.d
|
||||
index 1b4229a..a8df49a 100644
|
||||
--- a/ld/testsuite/ld-x86-64/property-x86-ibt3a.d
|
||||
+++ b/ld/testsuite/ld-x86-64/property-x86-ibt3a.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
|
||||
- x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
+ GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d b/ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d
|
||||
index 290ed6a..c112626 100644
|
||||
--- a/ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d
|
||||
+++ b/ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
|
||||
- x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt3b.d b/ld/testsuite/ld-x86-64/property-x86-ibt3b.d
|
||||
index 1142e03..f10dffd 100644
|
||||
--- a/ld/testsuite/ld-x86-64/property-x86-ibt3b.d
|
||||
+++ b/ld/testsuite/ld-x86-64/property-x86-ibt3b.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
|
||||
- x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
+ GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d b/ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d
|
||||
index 819542d..0147a3c 100644
|
||||
--- a/ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d
|
||||
+++ b/ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
|
||||
- x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk3a.d b/ld/testsuite/ld-x86-64/property-x86-shstk3a.d
|
||||
index 4c5d0e0..1f8c2dc 100644
|
||||
--- a/ld/testsuite/ld-x86-64/property-x86-shstk3a.d
|
||||
+++ b/ld/testsuite/ld-x86-64/property-x86-shstk3a.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
|
||||
- x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
+ GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d b/ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d
|
||||
index ba181e0..7ca2539 100644
|
||||
--- a/ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d
|
||||
+++ b/ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
|
||||
- x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk3b.d b/ld/testsuite/ld-x86-64/property-x86-shstk3b.d
|
||||
index 5216f38..f66a40e 100644
|
||||
--- a/ld/testsuite/ld-x86-64/property-x86-shstk3b.d
|
||||
+++ b/ld/testsuite/ld-x86-64/property-x86-shstk3b.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
|
||||
- x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
+ GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
diff --git a/ld/testsuite/ld-x86-64/x86-64.exp b/ld/testsuite/ld-x86-64/x86-64.exp
|
||||
index 6edb9e8..ae21e55 100644
|
||||
--- a/ld/testsuite/ld-x86-64/x86-64.exp
|
||||
+++ b/ld/testsuite/ld-x86-64/x86-64.exp
|
||||
@@ -403,6 +403,10 @@ run_dump_test "pr23372a"
|
||||
run_dump_test "pr23372a-x32"
|
||||
run_dump_test "pr23372b"
|
||||
run_dump_test "pr23372b-x32"
|
||||
+run_dump_test "pr23486a"
|
||||
+run_dump_test "pr23486a-x32"
|
||||
+run_dump_test "pr23486b"
|
||||
+run_dump_test "pr23486b-x32"
|
||||
|
||||
if { ![istarget "x86_64-*-linux*"] && ![istarget "x86_64-*-nacl*"]} {
|
||||
return
|
||||
--
|
||||
2.9.3
|
||||
|
||||
@@ -5,17 +5,20 @@
|
||||
|
||||
pkgname="binutils-armhf"
|
||||
pkgver=2.31.1
|
||||
pkgrel=0
|
||||
pkgrel=2
|
||||
pkgdesc="Tools necessary to build programs for armhf targets"
|
||||
url="https://www.gnu.org/software/binutils/"
|
||||
depends=""
|
||||
makedepends_build=""
|
||||
makedepends_host=""
|
||||
makedepends="gettext libtool autoconf automake bison"
|
||||
arch="aarch64 x86_64 x86"
|
||||
arch="armv7 aarch64 x86_64 x86"
|
||||
license="GPL-2.0 GPL-3.0-or-later LGPL-2.0 BSD"
|
||||
subpackages=""
|
||||
source="http://ftp.gnu.org/gnu/binutils/binutils-$pkgver.tar.bz2
|
||||
source="https://ftp.gnu.org/gnu/binutils/binutils-$pkgver.tar.bz2
|
||||
x86-Add-a-GNU_PROPERTY_X86_ISA_1_USED-note-if-needed.patch
|
||||
x86-Properly-merge-GNU_PROPERTY_X86_ISA_1_USED.patch
|
||||
x86-Properly-add-X86_ISA_1_NEEDED-property.patch
|
||||
binutils-ld-fix-static-linking.patch
|
||||
gold-mips.patch
|
||||
"
|
||||
@@ -32,34 +35,37 @@ fi
|
||||
# - CVE-2017-7614
|
||||
|
||||
build() {
|
||||
_target="$(arch_to_hostspec armhf)"
|
||||
cd "$builddir"
|
||||
"$builddir"/configure \
|
||||
--build="$CBUILD" \
|
||||
--target=$_target \
|
||||
--with-lib-path=/usr/lib \
|
||||
--prefix=/usr \
|
||||
--with-sysroot=/usr/$_target \
|
||||
--enable-ld=default \
|
||||
--enable-gold=yes \
|
||||
--enable-plugins \
|
||||
--enable-deterministic-archives \
|
||||
--disable-multilib \
|
||||
--disable-werror \
|
||||
--disable-nls
|
||||
make
|
||||
_target="$(arch_to_hostspec armhf)"
|
||||
cd "$builddir"
|
||||
"$builddir"/configure \
|
||||
--build="$CBUILD" \
|
||||
--target=$_target \
|
||||
--with-lib-path=/usr/lib \
|
||||
--prefix=/usr \
|
||||
--with-sysroot=/usr/$_target \
|
||||
--enable-ld=default \
|
||||
--enable-gold=yes \
|
||||
--enable-plugins \
|
||||
--enable-deterministic-archives \
|
||||
--disable-multilib \
|
||||
--disable-werror \
|
||||
--disable-nls
|
||||
make
|
||||
}
|
||||
|
||||
package() {
|
||||
cd "$builddir"
|
||||
make install DESTDIR="$pkgdir"
|
||||
cd "$builddir"
|
||||
make install DESTDIR="$pkgdir"
|
||||
|
||||
# remove man, info folders
|
||||
rm -rf "$pkgdir"/usr/share
|
||||
# remove man, info folders
|
||||
rm -rf "$pkgdir"/usr/share
|
||||
}
|
||||
|
||||
|
||||
|
||||
sha512sums="b42954e6f49a0adcd2676bdd77dfb59bfc25cec8184b007521d1e2b1d5d0593b58639e3d9448d5a40fe024c3cea386a37743627d6bb16d502f52a4a32b9573bd binutils-2.31.1.tar.bz2
|
||||
d95fd77e1c2c4670a2a11979d6811b358ba0f067b917b33d241eca20cfe66553f6a6fccc5ec26d8d29045e487cb74389fbf86426f80cf81df95608835a566cfc x86-Add-a-GNU_PROPERTY_X86_ISA_1_USED-note-if-needed.patch
|
||||
ce5d3c935057d624c1ce75722e7b5e4583812d46797edce8c381a94b2643f44f7bd0165e7e9b8e358955f4d979074ee487598efbf24389a4013681f99ff7c595 x86-Properly-merge-GNU_PROPERTY_X86_ISA_1_USED.patch
|
||||
1878bed194529afb2430af21ba9712d6819c5fdfdc5c8db652175bf86d0a0c710ac2bd3ec728bf874887301bd187d91bf60a374c47850c7bd2eafbf6653d74d8 x86-Properly-add-X86_ISA_1_NEEDED-property.patch
|
||||
ecee33b0e435aa704af1c334e560f201638ff79e199aa11ed78a72f7c9b46f85fbb227af5748e735fd681d1965fcc42ac81b0c8824e540430ce0c706c81e8b49 binutils-ld-fix-static-linking.patch
|
||||
f55cf2e0bf82f97583a1abe10710e4013ecf7d64f1da2ef8659a44a06d0dd8beaf58dab98a183488ea137f03e32d62efc878d95f018f836f8cec870bc448556f gold-mips.patch"
|
||||
@@ -1,93 +0,0 @@
|
||||
From d66deb71f1537e2e30dccdfda22eed5d46ec47eb Mon Sep 17 00:00:00 2001
|
||||
From: Alan Modra <amodra@gmail.com>
|
||||
Date: Wed, 14 Mar 2018 22:09:33 +1030
|
||||
Subject: [PATCH] PowerPC64 debian bug 886264, out-of-line save/restore
|
||||
functions
|
||||
|
||||
This calculation in relocate_section
|
||||
|
||||
if (stub_entry->stub_type == ppc_stub_save_res)
|
||||
relocation += (stub_sec->output_offset
|
||||
+ stub_sec->output_section->vma
|
||||
+ stub_sec->size - htab->sfpr->size
|
||||
- htab->sfpr->output_offset
|
||||
- htab->sfpr->output_section->vma);
|
||||
|
||||
to adjust from the original out-of-line save/restore function address
|
||||
in sfpr to a copy at the end of stub_sec goes wrong when stub_sec is
|
||||
padded, because the copy is no longer at the end of stub_sec. The
|
||||
solution is to pad before copying sfpr, so the copy is always at the
|
||||
end of stub_sec.
|
||||
|
||||
* elf64-ppc.c (sfpr_define): Adjust for stub_sec size having
|
||||
sfpr size added before defining alias symbols.
|
||||
(ppc64_elf_build_stubs): Add stub section padding before
|
||||
copying sfpr contents and defining save/restore alias symbols.
|
||||
|
||||
(cherry picked from commit 7dda8d3cf3b089bb7e03c4cdbec827fc6a188c88)
|
||||
---
|
||||
bfd/ChangeLog | 9 +++++++++
|
||||
bfd/elf64-ppc.c | 33 ++++++++++++++++++---------------
|
||||
2 files changed, 27 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c
|
||||
index 6fcdff0..039294f 100644
|
||||
--- a/bfd/elf64-ppc.c
|
||||
+++ b/bfd/elf64-ppc.c
|
||||
@@ -6645,7 +6645,7 @@ sfpr_define (struct bfd_link_info *info,
|
||||
{
|
||||
s->root.type = bfd_link_hash_defined;
|
||||
s->root.u.def.section = stub_sec;
|
||||
- s->root.u.def.value = (stub_sec->size
|
||||
+ s->root.u.def.value = (stub_sec->size - htab->sfpr->size
|
||||
+ h->elf.root.u.def.value);
|
||||
s->ref_regular = 1;
|
||||
s->def_regular = 1;
|
||||
@@ -13232,20 +13232,7 @@ ppc64_elf_build_stubs (struct bfd_link_info *info,
|
||||
|
||||
for (group = htab->group; group != NULL; group = group->next)
|
||||
if (group->needs_save_res)
|
||||
- {
|
||||
- stub_sec = group->stub_sec;
|
||||
- memcpy (stub_sec->contents + stub_sec->size, htab->sfpr->contents,
|
||||
- htab->sfpr->size);
|
||||
- if (htab->params->emit_stub_syms)
|
||||
- {
|
||||
- unsigned int i;
|
||||
-
|
||||
- for (i = 0; i < ARRAY_SIZE (save_res_funcs); i++)
|
||||
- if (!sfpr_define (info, &save_res_funcs[i], stub_sec))
|
||||
- return FALSE;
|
||||
- }
|
||||
- stub_sec->size += htab->sfpr->size;
|
||||
- }
|
||||
+ group->stub_sec->size += htab->sfpr->size;
|
||||
|
||||
if (htab->relbrlt != NULL)
|
||||
htab->relbrlt->reloc_count = 0;
|
||||
@@ -13259,6 +13246,22 @@ ppc64_elf_build_stubs (struct bfd_link_info *info,
|
||||
}
|
||||
|
||||
for (group = htab->group; group != NULL; group = group->next)
|
||||
+ if (group->needs_save_res)
|
||||
+ {
|
||||
+ stub_sec = group->stub_sec;
|
||||
+ memcpy (stub_sec->contents + stub_sec->size - htab->sfpr->size,
|
||||
+ htab->sfpr->contents, htab->sfpr->size);
|
||||
+ if (htab->params->emit_stub_syms)
|
||||
+ {
|
||||
+ unsigned int i;
|
||||
+
|
||||
+ for (i = 0; i < ARRAY_SIZE (save_res_funcs); i++)
|
||||
+ if (!sfpr_define (info, &save_res_funcs[i], stub_sec))
|
||||
+ return FALSE;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ for (group = htab->group; group != NULL; group = group->next)
|
||||
if ((stub_sec = group->stub_sec) != NULL)
|
||||
{
|
||||
stub_sec_count += 1;
|
||||
--
|
||||
2.9.3
|
||||
|
||||
@@ -0,0 +1,567 @@
|
||||
From 6737a6b34f4823deb7142f27b4074831a37ac1e1 Mon Sep 17 00:00:00 2001
|
||||
From: "H.J. Lu" <hjl.tools@gmail.com>
|
||||
Date: Fri, 20 Jul 2018 09:18:47 -0700
|
||||
Subject: [PATCH] x86: Add a GNU_PROPERTY_X86_ISA_1_USED note if needed
|
||||
|
||||
When -z separate-code, which is enabled by default for Linux/x86, is
|
||||
used to create executable, ld won't place any data in the code-only
|
||||
PT_LOAD segment. If there are no data sections placed before the
|
||||
code-only PT_LOAD segment, the program headers won't be mapped into
|
||||
any PT_LOAD segment. When the executable tries to access it (based
|
||||
on the program header address passed in AT_PHDR), it will lead to
|
||||
segfault. This patch inserts a GNU_PROPERTY_X86_ISA_1_USED note if
|
||||
there may be no data sections before the text section so that the
|
||||
first PT_LOAD segment won't be code-only and will contain the program
|
||||
header.
|
||||
|
||||
Testcases are adjusted to either pass "-z noseparate-code" to ld or
|
||||
discard the .note.gnu.property section. A Linux/x86 run-time test is
|
||||
added.
|
||||
|
||||
bfd/
|
||||
|
||||
PR ld/23428
|
||||
* elfxx-x86.c (_bfd_x86_elf_link_setup_gnu_properties): If the
|
||||
separate code program header is needed, make sure that the first
|
||||
read-only PT_LOAD segment has no code by adding a
|
||||
GNU_PROPERTY_X86_ISA_1_USED note.
|
||||
|
||||
ld/
|
||||
|
||||
PR ld/23428
|
||||
* testsuite/ld-elf/linux-x86.S: New file.
|
||||
* testsuite/ld-elf/linux-x86.exp: Likewise.
|
||||
* testsuite/ld-elf/pr23428.c: Likewise.
|
||||
* testsuite/ld-elf/sec64k.exp: Pass "-z noseparate-code" to ld
|
||||
for Linux/x86 targets.
|
||||
* testsuite/ld-i386/abs-iamcu.d: Likewise.
|
||||
* testsuite/ld-i386/abs.d: Likewise.
|
||||
* testsuite/ld-i386/pr12718.d: Likewise.
|
||||
* testsuite/ld-i386/pr12921.d: Likewise.
|
||||
* testsuite/ld-x86-64/abs-k1om.d: Likewise.
|
||||
* testsuite/ld-x86-64/abs-l1om.d: Likewise.
|
||||
* testsuite/ld-x86-64/abs.d: Likewise.
|
||||
* testsuite/ld-x86-64/pr12718.d: Likewise.
|
||||
* testsuite/ld-x86-64/pr12921.d: Likewise.
|
||||
* testsuite/ld-linkonce/zeroeh.ld: Discard .note.gnu.property
|
||||
section.
|
||||
* testsuite/ld-scripts/print-memory-usage.t: Likewise.
|
||||
* testsuite/ld-scripts/size-2.t: Likewise.
|
||||
* testsuite/lib/ld-lib.exp (run_ld_link_exec_tests): Use ld
|
||||
to create executable if language is "asm".
|
||||
|
||||
(cherry picked from commit 241e64e3b42cd9eba514b8e0ad2ef39a337f10a5)
|
||||
---
|
||||
bfd/ChangeLog | 8 ++++
|
||||
bfd/elfxx-x86.c | 60 +++++++++++++++++++-------
|
||||
ld/ChangeLog | 24 +++++++++++
|
||||
ld/testsuite/ld-elf/linux-x86.S | 63 ++++++++++++++++++++++++++++
|
||||
ld/testsuite/ld-elf/linux-x86.exp | 46 ++++++++++++++++++++
|
||||
ld/testsuite/ld-elf/pr23428.c | 43 +++++++++++++++++++
|
||||
ld/testsuite/ld-elf/sec64k.exp | 2 +
|
||||
ld/testsuite/ld-i386/abs-iamcu.d | 2 +-
|
||||
ld/testsuite/ld-i386/abs.d | 2 +-
|
||||
ld/testsuite/ld-i386/pr12718.d | 2 +-
|
||||
ld/testsuite/ld-i386/pr12921.d | 2 +-
|
||||
ld/testsuite/ld-linkonce/zeroeh.ld | 1 +
|
||||
ld/testsuite/ld-scripts/print-memory-usage.t | 2 +
|
||||
ld/testsuite/ld-scripts/size-2.t | 1 +
|
||||
ld/testsuite/ld-x86-64/abs-k1om.d | 2 +-
|
||||
ld/testsuite/ld-x86-64/abs-l1om.d | 2 +-
|
||||
ld/testsuite/ld-x86-64/abs.d | 2 +-
|
||||
ld/testsuite/ld-x86-64/pr12718.d | 2 +-
|
||||
ld/testsuite/ld-x86-64/pr12921.d | 2 +-
|
||||
ld/testsuite/lib/ld-lib.exp | 5 ++-
|
||||
20 files changed, 248 insertions(+), 25 deletions(-)
|
||||
create mode 100644 ld/testsuite/ld-elf/linux-x86.S
|
||||
create mode 100644 ld/testsuite/ld-elf/linux-x86.exp
|
||||
create mode 100644 ld/testsuite/ld-elf/pr23428.c
|
||||
|
||||
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
|
||||
index 1c1174a..d3831b7 100644
|
||||
--- a/bfd/ChangeLog
|
||||
+++ b/bfd/ChangeLog
|
||||
@@ -1,3 +1,11 @@
|
||||
+2018-07-23 H.J. Lu <hongjiu.lu@intel.com>
|
||||
+
|
||||
+ PR ld/23428
|
||||
+ * elfxx-x86.c (_bfd_x86_elf_link_setup_gnu_properties): If the
|
||||
+ separate code program header is needed, make sure that the first
|
||||
+ read-only PT_LOAD segment has no code by adding a
|
||||
+ GNU_PROPERTY_X86_ISA_1_USED note.
|
||||
+
|
||||
2018-07-18 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* development.sh: Set to true.
|
||||
diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c
|
||||
index a2497aa..2e4ff88 100644
|
||||
--- a/bfd/elfxx-x86.c
|
||||
+++ b/bfd/elfxx-x86.c
|
||||
@@ -2524,6 +2524,7 @@ _bfd_x86_elf_link_setup_gnu_properties
|
||||
const struct elf_backend_data *bed;
|
||||
unsigned int class_align = ABI_64_P (info->output_bfd) ? 3 : 2;
|
||||
unsigned int got_align;
|
||||
+ bfd_boolean has_text = FALSE;
|
||||
|
||||
features = 0;
|
||||
if (info->ibt)
|
||||
@@ -2538,24 +2539,59 @@ _bfd_x86_elf_link_setup_gnu_properties
|
||||
if (bfd_get_flavour (pbfd) == bfd_target_elf_flavour
|
||||
&& bfd_count_sections (pbfd) != 0)
|
||||
{
|
||||
+ if (!has_text)
|
||||
+ {
|
||||
+ /* Check if there is no non-empty text section. */
|
||||
+ sec = bfd_get_section_by_name (pbfd, ".text");
|
||||
+ if (sec != NULL && sec->size != 0)
|
||||
+ has_text = TRUE;
|
||||
+ }
|
||||
+
|
||||
ebfd = pbfd;
|
||||
|
||||
if (elf_properties (pbfd) != NULL)
|
||||
break;
|
||||
}
|
||||
|
||||
- if (ebfd != NULL && features)
|
||||
+ bed = get_elf_backend_data (info->output_bfd);
|
||||
+
|
||||
+ htab = elf_x86_hash_table (info, bed->target_id);
|
||||
+ if (htab == NULL)
|
||||
+ return pbfd;
|
||||
+
|
||||
+ if (ebfd != NULL)
|
||||
{
|
||||
- /* If features is set, add GNU_PROPERTY_X86_FEATURE_1_IBT and
|
||||
- GNU_PROPERTY_X86_FEATURE_1_SHSTK. */
|
||||
- prop = _bfd_elf_get_property (ebfd,
|
||||
- GNU_PROPERTY_X86_FEATURE_1_AND,
|
||||
- 4);
|
||||
- prop->u.number |= features;
|
||||
- prop->pr_kind = property_number;
|
||||
+ prop = NULL;
|
||||
+ if (features)
|
||||
+ {
|
||||
+ /* If features is set, add GNU_PROPERTY_X86_FEATURE_1_IBT and
|
||||
+ GNU_PROPERTY_X86_FEATURE_1_SHSTK. */
|
||||
+ prop = _bfd_elf_get_property (ebfd,
|
||||
+ GNU_PROPERTY_X86_FEATURE_1_AND,
|
||||
+ 4);
|
||||
+ prop->u.number |= features;
|
||||
+ prop->pr_kind = property_number;
|
||||
+ }
|
||||
+ else if (has_text
|
||||
+ && elf_properties (ebfd) == NULL
|
||||
+ && elf_tdata (info->output_bfd)->o->build_id.sec == NULL
|
||||
+ && !htab->elf.dynamic_sections_created
|
||||
+ && !info->traditional_format
|
||||
+ && (info->output_bfd->flags & D_PAGED) != 0
|
||||
+ && info->separate_code)
|
||||
+ {
|
||||
+ /* If the separate code program header is needed, make sure
|
||||
+ that the first read-only PT_LOAD segment has no code by
|
||||
+ adding a GNU_PROPERTY_X86_ISA_1_USED note. */
|
||||
+ prop = _bfd_elf_get_property (ebfd,
|
||||
+ GNU_PROPERTY_X86_ISA_1_USED,
|
||||
+ 4);
|
||||
+ prop->u.number = GNU_PROPERTY_X86_ISA_1_486;
|
||||
+ prop->pr_kind = property_number;
|
||||
+ }
|
||||
|
||||
/* Create the GNU property note section if needed. */
|
||||
- if (pbfd == NULL)
|
||||
+ if (prop != NULL && pbfd == NULL)
|
||||
{
|
||||
sec = bfd_make_section_with_flags (ebfd,
|
||||
NOTE_GNU_PROPERTY_SECTION_NAME,
|
||||
@@ -2581,12 +2617,6 @@ error_alignment:
|
||||
|
||||
pbfd = _bfd_elf_link_setup_gnu_properties (info);
|
||||
|
||||
- bed = get_elf_backend_data (info->output_bfd);
|
||||
-
|
||||
- htab = elf_x86_hash_table (info, bed->target_id);
|
||||
- if (htab == NULL)
|
||||
- return pbfd;
|
||||
-
|
||||
htab->r_info = init_table->r_info;
|
||||
htab->r_sym = init_table->r_sym;
|
||||
|
||||
diff --git a/ld/ChangeLog b/ld/ChangeLog
|
||||
index c07e442..cfadbd4 100644
|
||||
--- a/ld/ChangeLog
|
||||
+++ b/ld/ChangeLog
|
||||
@@ -1,3 +1,27 @@
|
||||
+2018-07-23 H.J. Lu <hongjiu.lu@intel.com>
|
||||
+
|
||||
+ PR ld/23428
|
||||
+ * testsuite/ld-elf/linux-x86.S: New file.
|
||||
+ * testsuite/ld-elf/linux-x86.exp: Likewise.
|
||||
+ * testsuite/ld-elf/pr23428.c: Likewise.
|
||||
+ * testsuite/ld-elf/sec64k.exp: Pass "-z noseparate-code" to ld
|
||||
+ for Linux/x86 targets.
|
||||
+ * testsuite/ld-i386/abs-iamcu.d: Likewise.
|
||||
+ * testsuite/ld-i386/abs.d: Likewise.
|
||||
+ * testsuite/ld-i386/pr12718.d: Likewise.
|
||||
+ * testsuite/ld-i386/pr12921.d: Likewise.
|
||||
+ * testsuite/ld-x86-64/abs-k1om.d: Likewise.
|
||||
+ * testsuite/ld-x86-64/abs-l1om.d: Likewise.
|
||||
+ * testsuite/ld-x86-64/abs.d: Likewise.
|
||||
+ * testsuite/ld-x86-64/pr12718.d: Likewise.
|
||||
+ * testsuite/ld-x86-64/pr12921.d: Likewise.
|
||||
+ * testsuite/ld-linkonce/zeroeh.ld: Discard .note.gnu.property
|
||||
+ section.
|
||||
+ * testsuite/ld-scripts/print-memory-usage.t: Likewise.
|
||||
+ * testsuite/ld-scripts/size-2.t: Likewise.
|
||||
+ * testsuite/lib/ld-lib.exp (run_ld_link_exec_tests): Use ld to
|
||||
+ create executable if language is "asm".
|
||||
+
|
||||
2018-07-18 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
2.31.1 Release point.
|
||||
diff --git a/ld/testsuite/ld-elf/linux-x86.S b/ld/testsuite/ld-elf/linux-x86.S
|
||||
new file mode 100644
|
||||
index 0000000..bdf40c6
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-elf/linux-x86.S
|
||||
@@ -0,0 +1,63 @@
|
||||
+ .text
|
||||
+ .globl _start
|
||||
+ .type _start,@function
|
||||
+ .p2align 4
|
||||
+_start:
|
||||
+ xorl %ebp, %ebp
|
||||
+#ifdef __LP64__
|
||||
+ popq %rdi
|
||||
+ movq %rsp, %rsi
|
||||
+ andq $~15, %rsp
|
||||
+#elif defined __x86_64__
|
||||
+ mov (%rsp),%edi
|
||||
+ addl $4,%esp
|
||||
+ movl %esp, %esi
|
||||
+ andl $~15, %esp
|
||||
+#else
|
||||
+ popl %esi
|
||||
+ movl %esp, %ecx
|
||||
+ andl $~15, %esp
|
||||
+
|
||||
+ subl $8,%esp
|
||||
+ pushl %ecx
|
||||
+ pushl %esi
|
||||
+#endif
|
||||
+
|
||||
+ call main
|
||||
+
|
||||
+ hlt
|
||||
+
|
||||
+ .type syscall, @function
|
||||
+ .globl syscall
|
||||
+ .p2align 4
|
||||
+syscall:
|
||||
+#ifdef __x86_64__
|
||||
+ movq %rdi, %rax /* Syscall number -> rax. */
|
||||
+ movq %rsi, %rdi /* shift arg1 - arg5. */
|
||||
+ movq %rdx, %rsi
|
||||
+ movq %rcx, %rdx
|
||||
+ movq %r8, %r10
|
||||
+ movq %r9, %r8
|
||||
+ movq 8(%rsp),%r9 /* arg6 is on the stack. */
|
||||
+ syscall /* Do the system call. */
|
||||
+#else
|
||||
+ push %ebp
|
||||
+ push %edi
|
||||
+ push %esi
|
||||
+ push %ebx
|
||||
+ mov 0x2c(%esp),%ebp
|
||||
+ mov 0x28(%esp),%edi
|
||||
+ mov 0x24(%esp),%esi
|
||||
+ mov 0x20(%esp),%edx
|
||||
+ mov 0x1c(%esp),%ecx
|
||||
+ mov 0x18(%esp),%ebx
|
||||
+ mov 0x14(%esp),%eax
|
||||
+ int $0x80
|
||||
+ pop %ebx
|
||||
+ pop %esi
|
||||
+ pop %edi
|
||||
+ pop %ebp
|
||||
+#endif
|
||||
+ ret /* Return to caller. */
|
||||
+ .size syscall, .-syscall
|
||||
+ .section .note.GNU-stack,"",@progbits
|
||||
diff --git a/ld/testsuite/ld-elf/linux-x86.exp b/ld/testsuite/ld-elf/linux-x86.exp
|
||||
new file mode 100644
|
||||
index 0000000..36217c6
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-elf/linux-x86.exp
|
||||
@@ -0,0 +1,46 @@
|
||||
+# Expect script for simple native Linux/x86 tests.
|
||||
+# Copyright (C) 2018 Free Software Foundation, Inc.
|
||||
+#
|
||||
+# This file is part of the GNU Binutils.
|
||||
+#
|
||||
+# This program is free software; you can redistribute it and/or modify
|
||||
+# it under the terms of the GNU General Public License as published by
|
||||
+# the Free Software Foundation; either version 3 of the License, or
|
||||
+# (at your option) any later version.
|
||||
+#
|
||||
+# This program is distributed in the hope that it will be useful,
|
||||
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+# GNU General Public License for more details.
|
||||
+#
|
||||
+# You should have received a copy of the GNU General Public License
|
||||
+# along with this program; if not, write to the Free Software
|
||||
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
+# MA 02110-1301, USA.
|
||||
+#
|
||||
+
|
||||
+# Test very simple native Linux/x86 programs with linux-x86.S.
|
||||
+if { ![isnative] || [which $CC] == 0 \
|
||||
+ || (![istarget "i?86-*-linux*"] \
|
||||
+ && ![istarget "x86_64-*-linux*"] \
|
||||
+ && ![istarget "amd64-*-linux*"]) } {
|
||||
+ return
|
||||
+}
|
||||
+
|
||||
+# Add $PLT_CFLAGS if PLT is expected.
|
||||
+global PLT_CFLAGS
|
||||
+# Add $NOPIE_CFLAGS and $NOPIE_LDFLAGS if non-PIE is required.
|
||||
+global NOPIE_CFLAGS NOPIE_LDFLAGS
|
||||
+
|
||||
+run_ld_link_exec_tests [list \
|
||||
+ [list \
|
||||
+ "Run PR ld/23428 test" \
|
||||
+ "--no-dynamic-linker -z separate-code" \
|
||||
+ "" \
|
||||
+ { linux-x86.S pr23428.c } \
|
||||
+ "pr23428" \
|
||||
+ "pass.out" \
|
||||
+ "$NOPIE_CFLAGS -fno-asynchronous-unwind-tables" \
|
||||
+ "asm" \
|
||||
+ ] \
|
||||
+]
|
||||
diff --git a/ld/testsuite/ld-elf/pr23428.c b/ld/testsuite/ld-elf/pr23428.c
|
||||
new file mode 100644
|
||||
index 0000000..3631ed7
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-elf/pr23428.c
|
||||
@@ -0,0 +1,43 @@
|
||||
+#include <unistd.h>
|
||||
+#include <link.h>
|
||||
+#include <syscall.h>
|
||||
+
|
||||
+#define STRING_COMMA_LEN(STR) (STR), (sizeof (STR) - 1)
|
||||
+
|
||||
+int
|
||||
+main (int argc, char **argv)
|
||||
+{
|
||||
+ char **ev = &argv[argc + 1];
|
||||
+ char **evp = ev;
|
||||
+ ElfW(auxv_t) *av;
|
||||
+ const ElfW(Phdr) *phdr = NULL;
|
||||
+ size_t phnum = 0;
|
||||
+ size_t loadnum = 0;
|
||||
+ int fd = STDOUT_FILENO;
|
||||
+ size_t i;
|
||||
+
|
||||
+ while (*evp++ != NULL)
|
||||
+ ;
|
||||
+
|
||||
+ av = (ElfW(auxv_t) *) evp;
|
||||
+
|
||||
+ for (; av->a_type != AT_NULL; ++av)
|
||||
+ switch (av->a_type)
|
||||
+ {
|
||||
+ case AT_PHDR:
|
||||
+ phdr = (const void *) av->a_un.a_val;
|
||||
+ break;
|
||||
+ case AT_PHNUM:
|
||||
+ phnum = av->a_un.a_val;
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ for (i = 0; i < phnum; i++, phdr++)
|
||||
+ if (phdr->p_type == PT_LOAD)
|
||||
+ loadnum++;
|
||||
+
|
||||
+ syscall (SYS_write, fd, STRING_COMMA_LEN ("PASS\n"));
|
||||
+
|
||||
+ syscall (SYS_exit, !loadnum);
|
||||
+ return 0;
|
||||
+}
|
||||
diff --git a/ld/testsuite/ld-elf/sec64k.exp b/ld/testsuite/ld-elf/sec64k.exp
|
||||
index b58139e..3909c0e 100644
|
||||
--- a/ld/testsuite/ld-elf/sec64k.exp
|
||||
+++ b/ld/testsuite/ld-elf/sec64k.exp
|
||||
@@ -177,6 +177,8 @@ if { ![istarget "d10v-*-*"]
|
||||
foreach sfile $sfiles { puts $ofd "#source: $sfile" }
|
||||
if { [istarget spu*-*-*] } {
|
||||
puts $ofd "#ld: --local-store 0:0"
|
||||
+ } elseif { [istarget "i?86-*-linux*"] || [istarget "x86_64-*-linux*"] } {
|
||||
+ puts $ofd "#ld: -z noseparate-code"
|
||||
} else {
|
||||
puts $ofd "#ld:"
|
||||
}
|
||||
diff --git a/ld/testsuite/ld-i386/abs-iamcu.d b/ld/testsuite/ld-i386/abs-iamcu.d
|
||||
index ac9beff..aba7d6b 100644
|
||||
--- a/ld/testsuite/ld-i386/abs-iamcu.d
|
||||
+++ b/ld/testsuite/ld-i386/abs-iamcu.d
|
||||
@@ -2,7 +2,7 @@
|
||||
#source: abs.s
|
||||
#source: zero.s
|
||||
#as: --32 -march=iamcu
|
||||
-#ld: -m elf_iamcu
|
||||
+#ld: -m elf_iamcu -z noseparate-code
|
||||
#objdump: -rs -j .text
|
||||
|
||||
.*: file format .*
|
||||
diff --git a/ld/testsuite/ld-i386/abs.d b/ld/testsuite/ld-i386/abs.d
|
||||
index e660aca..191ee44 100644
|
||||
--- a/ld/testsuite/ld-i386/abs.d
|
||||
+++ b/ld/testsuite/ld-i386/abs.d
|
||||
@@ -2,7 +2,7 @@
|
||||
#as: --32
|
||||
#source: abs.s
|
||||
#source: zero.s
|
||||
-#ld: -melf_i386
|
||||
+#ld: -melf_i386 -z noseparate-code
|
||||
#objdump: -rs
|
||||
|
||||
.*: file format .*
|
||||
diff --git a/ld/testsuite/ld-i386/pr12718.d b/ld/testsuite/ld-i386/pr12718.d
|
||||
index ec51540..7eba52d 100644
|
||||
--- a/ld/testsuite/ld-i386/pr12718.d
|
||||
+++ b/ld/testsuite/ld-i386/pr12718.d
|
||||
@@ -1,6 +1,6 @@
|
||||
#name: PR ld/12718
|
||||
#as: --32
|
||||
-#ld: -melf_i386
|
||||
+#ld: -melf_i386 -z noseparate-code
|
||||
#readelf: -S
|
||||
|
||||
There are 5 section headers, starting at offset 0x[0-9a-f]+:
|
||||
diff --git a/ld/testsuite/ld-i386/pr12921.d b/ld/testsuite/ld-i386/pr12921.d
|
||||
index e49079b..ea2da3e 100644
|
||||
--- a/ld/testsuite/ld-i386/pr12921.d
|
||||
+++ b/ld/testsuite/ld-i386/pr12921.d
|
||||
@@ -1,6 +1,6 @@
|
||||
#name: PR ld/12921
|
||||
#as: --32
|
||||
-#ld: -melf_i386
|
||||
+#ld: -melf_i386 -z noseparate-code
|
||||
#readelf: -S --wide
|
||||
|
||||
There are 7 section headers, starting at offset 0x[0-9a-f]+:
|
||||
diff --git a/ld/testsuite/ld-linkonce/zeroeh.ld b/ld/testsuite/ld-linkonce/zeroeh.ld
|
||||
index b22eaa1..f89855a 100644
|
||||
--- a/ld/testsuite/ld-linkonce/zeroeh.ld
|
||||
+++ b/ld/testsuite/ld-linkonce/zeroeh.ld
|
||||
@@ -2,4 +2,5 @@ SECTIONS {
|
||||
.text 0xa00 : { *(.text); *(.gnu.linkonce.t.*) }
|
||||
.gcc_except_table 0x2000 : { *(.gcc_except_table) }
|
||||
.eh_frame 0x4000 : { *(.eh_frame) }
|
||||
+ /DISCARD/ : { *(.note.gnu.property) }
|
||||
}
|
||||
diff --git a/ld/testsuite/ld-scripts/print-memory-usage.t b/ld/testsuite/ld-scripts/print-memory-usage.t
|
||||
index 5ff057a..6eda1d2 100644
|
||||
--- a/ld/testsuite/ld-scripts/print-memory-usage.t
|
||||
+++ b/ld/testsuite/ld-scripts/print-memory-usage.t
|
||||
@@ -11,4 +11,6 @@ SECTIONS
|
||||
*(.data)
|
||||
*(.rw)
|
||||
}
|
||||
+
|
||||
+ /DISCARD/ : { *(.note.gnu.property) }
|
||||
}
|
||||
diff --git a/ld/testsuite/ld-scripts/size-2.t b/ld/testsuite/ld-scripts/size-2.t
|
||||
index 7238639..c3c4edd 100644
|
||||
--- a/ld/testsuite/ld-scripts/size-2.t
|
||||
+++ b/ld/testsuite/ld-scripts/size-2.t
|
||||
@@ -18,4 +18,5 @@ SECTIONS
|
||||
LONG (SIZEOF (.tdata))
|
||||
LONG (SIZEOF (.tbss))
|
||||
} :image
|
||||
+ /DISCARD/ : { *(.note.gnu.property) }
|
||||
}
|
||||
diff --git a/ld/testsuite/ld-x86-64/abs-k1om.d b/ld/testsuite/ld-x86-64/abs-k1om.d
|
||||
index 2c26639..6b0fde0 100644
|
||||
--- a/ld/testsuite/ld-x86-64/abs-k1om.d
|
||||
+++ b/ld/testsuite/ld-x86-64/abs-k1om.d
|
||||
@@ -2,7 +2,7 @@
|
||||
#source: ../ld-i386/abs.s
|
||||
#source: ../ld-i386/zero.s
|
||||
#as: --64 -march=k1om
|
||||
-#ld: -m elf_k1om
|
||||
+#ld: -m elf_k1om -z noseparate-code
|
||||
#objdump: -rs -j .text
|
||||
|
||||
.*: file format .*
|
||||
diff --git a/ld/testsuite/ld-x86-64/abs-l1om.d b/ld/testsuite/ld-x86-64/abs-l1om.d
|
||||
index 1fb96d4..f87869f 100644
|
||||
--- a/ld/testsuite/ld-x86-64/abs-l1om.d
|
||||
+++ b/ld/testsuite/ld-x86-64/abs-l1om.d
|
||||
@@ -2,7 +2,7 @@
|
||||
#source: ../ld-i386/abs.s
|
||||
#source: ../ld-i386/zero.s
|
||||
#as: --64 -march=l1om
|
||||
-#ld: -m elf_l1om
|
||||
+#ld: -m elf_l1om -z noseparate-code
|
||||
#objdump: -rs -j .text
|
||||
#target: x86_64-*-linux*
|
||||
|
||||
diff --git a/ld/testsuite/ld-x86-64/abs.d b/ld/testsuite/ld-x86-64/abs.d
|
||||
index b24b018..d99ab46 100644
|
||||
--- a/ld/testsuite/ld-x86-64/abs.d
|
||||
+++ b/ld/testsuite/ld-x86-64/abs.d
|
||||
@@ -1,7 +1,7 @@
|
||||
#name: Absolute non-overflowing relocs
|
||||
#source: ../ld-i386/abs.s
|
||||
#source: ../ld-i386/zero.s
|
||||
-#ld:
|
||||
+#ld: -z noseparate-code
|
||||
#objdump: -rs
|
||||
|
||||
.*: file format .*
|
||||
diff --git a/ld/testsuite/ld-x86-64/pr12718.d b/ld/testsuite/ld-x86-64/pr12718.d
|
||||
index 07d1732..2c503ff 100644
|
||||
--- a/ld/testsuite/ld-x86-64/pr12718.d
|
||||
+++ b/ld/testsuite/ld-x86-64/pr12718.d
|
||||
@@ -1,6 +1,6 @@
|
||||
#name: PR ld/12718
|
||||
#as: --64
|
||||
-#ld: -melf_x86_64
|
||||
+#ld: -melf_x86_64 -z noseparate-code
|
||||
#readelf: -S --wide
|
||||
|
||||
There are 5 section headers, starting at offset 0x[0-9a-f]+:
|
||||
diff --git a/ld/testsuite/ld-x86-64/pr12921.d b/ld/testsuite/ld-x86-64/pr12921.d
|
||||
index 6fe6abe..1162d55 100644
|
||||
--- a/ld/testsuite/ld-x86-64/pr12921.d
|
||||
+++ b/ld/testsuite/ld-x86-64/pr12921.d
|
||||
@@ -1,6 +1,6 @@
|
||||
#name: PR ld/12921
|
||||
#as: --64
|
||||
-#ld: -melf_x86_64
|
||||
+#ld: -melf_x86_64 -z noseparate-code
|
||||
#readelf: -S --wide
|
||||
|
||||
There are 7 section headers, starting at offset 0x[0-9a-f]+:
|
||||
diff --git a/ld/testsuite/lib/ld-lib.exp b/ld/testsuite/lib/ld-lib.exp
|
||||
index cfbefe9..1095091 100644
|
||||
--- a/ld/testsuite/lib/ld-lib.exp
|
||||
+++ b/ld/testsuite/lib/ld-lib.exp
|
||||
@@ -1482,7 +1482,10 @@ proc run_ld_link_exec_tests { ldtests args } {
|
||||
continue
|
||||
}
|
||||
|
||||
- if { [ string match "c++" $lang ] } {
|
||||
+ if { [ string match "asm" $lang ] } {
|
||||
+ set link_proc ld_link
|
||||
+ set link_cmd $ld
|
||||
+ } elseif { [ string match "c++" $lang ] } {
|
||||
set link_proc ld_link
|
||||
set link_cmd $CXX
|
||||
} else {
|
||||
--
|
||||
2.9.3
|
||||
|
||||
@@ -0,0 +1,139 @@
|
||||
From 28a27bdbb9500797e6767f80c8128b09112aeed5 Mon Sep 17 00:00:00 2001
|
||||
From: "H.J. Lu" <hjl.tools@gmail.com>
|
||||
Date: Sat, 11 Aug 2018 06:41:33 -0700
|
||||
Subject: [PATCH] x86: Properly add X86_ISA_1_NEEDED property
|
||||
|
||||
Existing properties may be removed during property merging. We avoid
|
||||
adding X86_ISA_1_NEEDED property only if existing properties won't be
|
||||
removed.
|
||||
|
||||
bfd/
|
||||
|
||||
PR ld/23428
|
||||
* elfxx-x86.c (_bfd_x86_elf_link_setup_gnu_properties): Don't
|
||||
add X86_ISA_1_NEEDED property only if existing properties won't
|
||||
be removed.
|
||||
|
||||
ld/
|
||||
|
||||
PR ld/23428
|
||||
* testsuite/ld-elf/dummy.s: New file.
|
||||
* testsuite/ld-elf/linux-x86.S: Add X86_FEATURE_1_AND property.
|
||||
* testsuite/ld-elf/linux-x86.exp: Add dummy.s to pr23428.
|
||||
|
||||
(cherry picked from commit ab9e342807d132182892de1be1a92d6e91a5c1da)
|
||||
---
|
||||
bfd/ChangeLog | 7 +++++++
|
||||
bfd/elfxx-x86.c | 28 ++++++++++++++++++++++------
|
||||
ld/ChangeLog | 7 +++++++
|
||||
ld/testsuite/ld-elf/dummy.s | 1 +
|
||||
ld/testsuite/ld-elf/linux-x86.S | 28 ++++++++++++++++++++++++++++
|
||||
ld/testsuite/ld-elf/linux-x86.exp | 2 +-
|
||||
6 files changed, 66 insertions(+), 7 deletions(-)
|
||||
create mode 100644 ld/testsuite/ld-elf/dummy.s
|
||||
|
||||
diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c
|
||||
index 7ccfd25..2d8f7b6 100644
|
||||
--- a/bfd/elfxx-x86.c
|
||||
+++ b/bfd/elfxx-x86.c
|
||||
@@ -2588,7 +2588,6 @@ _bfd_x86_elf_link_setup_gnu_properties
|
||||
prop->pr_kind = property_number;
|
||||
}
|
||||
else if (has_text
|
||||
- && elf_properties (ebfd) == NULL
|
||||
&& elf_tdata (info->output_bfd)->o->build_id.sec == NULL
|
||||
&& !htab->elf.dynamic_sections_created
|
||||
&& !info->traditional_format
|
||||
@@ -2598,11 +2597,28 @@ _bfd_x86_elf_link_setup_gnu_properties
|
||||
/* If the separate code program header is needed, make sure
|
||||
that the first read-only PT_LOAD segment has no code by
|
||||
adding a GNU_PROPERTY_X86_ISA_1_NEEDED note. */
|
||||
- prop = _bfd_elf_get_property (ebfd,
|
||||
- GNU_PROPERTY_X86_ISA_1_NEEDED,
|
||||
- 4);
|
||||
- prop->u.number = GNU_PROPERTY_X86_ISA_1_486;
|
||||
- prop->pr_kind = property_number;
|
||||
+ elf_property_list *list;
|
||||
+ bfd_boolean need_property = TRUE;
|
||||
+
|
||||
+ for (list = elf_properties (ebfd); list; list = list->next)
|
||||
+ switch (list->property.pr_type)
|
||||
+ {
|
||||
+ case GNU_PROPERTY_STACK_SIZE:
|
||||
+ case GNU_PROPERTY_NO_COPY_ON_PROTECTED:
|
||||
+ case GNU_PROPERTY_X86_ISA_1_NEEDED:
|
||||
+ /* These properties won't be removed during merging. */
|
||||
+ need_property = FALSE;
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ if (need_property)
|
||||
+ {
|
||||
+ prop = _bfd_elf_get_property (ebfd,
|
||||
+ GNU_PROPERTY_X86_ISA_1_NEEDED,
|
||||
+ 4);
|
||||
+ prop->u.number = GNU_PROPERTY_X86_ISA_1_486;
|
||||
+ prop->pr_kind = property_number;
|
||||
+ }
|
||||
}
|
||||
|
||||
/* Create the GNU property note section if needed. */
|
||||
diff --git a/ld/testsuite/ld-elf/dummy.s b/ld/testsuite/ld-elf/dummy.s
|
||||
new file mode 100644
|
||||
index 0000000..403f980
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-elf/dummy.s
|
||||
@@ -0,0 +1 @@
|
||||
+# Dummy
|
||||
diff --git a/ld/testsuite/ld-elf/linux-x86.S b/ld/testsuite/ld-elf/linux-x86.S
|
||||
index bdf40c6..d94abc1 100644
|
||||
--- a/ld/testsuite/ld-elf/linux-x86.S
|
||||
+++ b/ld/testsuite/ld-elf/linux-x86.S
|
||||
@@ -61,3 +61,31 @@ syscall:
|
||||
ret /* Return to caller. */
|
||||
.size syscall, .-syscall
|
||||
.section .note.GNU-stack,"",@progbits
|
||||
+
|
||||
+ .section ".note.gnu.property", "a"
|
||||
+#ifdef __LP64__
|
||||
+ .p2align 3
|
||||
+#else
|
||||
+ .p2align 2
|
||||
+#endif
|
||||
+ .long 1f - 0f /* name length */
|
||||
+ .long 5f - 2f /* data length */
|
||||
+ .long 5 /* note type */
|
||||
+0: .asciz "GNU" /* vendor name */
|
||||
+1:
|
||||
+#ifdef __LP64__
|
||||
+ .p2align 3
|
||||
+#else
|
||||
+ .p2align 2
|
||||
+#endif
|
||||
+2: .long 0xc0000002 /* pr_type. */
|
||||
+ .long 4f - 3f /* pr_datasz. */
|
||||
+3:
|
||||
+ .long 0x2
|
||||
+4:
|
||||
+#ifdef __LP64__
|
||||
+ .p2align 3
|
||||
+#else
|
||||
+ .p2align 2
|
||||
+#endif
|
||||
+5:
|
||||
diff --git a/ld/testsuite/ld-elf/linux-x86.exp b/ld/testsuite/ld-elf/linux-x86.exp
|
||||
index 36217c6..f6f5a80 100644
|
||||
--- a/ld/testsuite/ld-elf/linux-x86.exp
|
||||
+++ b/ld/testsuite/ld-elf/linux-x86.exp
|
||||
@@ -37,7 +37,7 @@ run_ld_link_exec_tests [list \
|
||||
"Run PR ld/23428 test" \
|
||||
"--no-dynamic-linker -z separate-code" \
|
||||
"" \
|
||||
- { linux-x86.S pr23428.c } \
|
||||
+ { linux-x86.S pr23428.c dummy.s } \
|
||||
"pr23428" \
|
||||
"pass.out" \
|
||||
"$NOPIE_CFLAGS -fno-asynchronous-unwind-tables" \
|
||||
--
|
||||
2.9.3
|
||||
|
||||
@@ -0,0 +1,587 @@
|
||||
From d55c3e36094f06bb1fb02f5eac19fdccf1d91f7e Mon Sep 17 00:00:00 2001
|
||||
From: "H.J. Lu" <hjl.tools@gmail.com>
|
||||
Date: Wed, 8 Aug 2018 06:09:15 -0700
|
||||
Subject: [PATCH] x86: Properly merge GNU_PROPERTY_X86_ISA_1_USED
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=utf8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Without the GNU_PROPERTY_X86_ISA_1_USED property, all ISAs may be used.
|
||||
If a bit in the GNU_PROPERTY_X86_ISA_1_USED property is unset, the
|
||||
corresponding x86 instruction set isnât used. When merging properties
|
||||
from 2 input files and one input file doesn't have the
|
||||
GNU_PROPERTY_X86_ISA_1_USED property, the output file shouldn't have
|
||||
it neither. This patch removes the GNU_PROPERTY_X86_ISA_1_USED
|
||||
property if an input file doesn't have it.
|
||||
|
||||
This patch replaces the GNU_PROPERTY_X86_ISA_1_USED property with the
|
||||
GNU_PROPERTY_X86_ISA_1_NEEDED property which is the minimum ISA
|
||||
requirement.
|
||||
|
||||
bfd/
|
||||
|
||||
PR ld/23486
|
||||
* elfxx-x86.c (_bfd_x86_elf_merge_gnu_properties): Remove
|
||||
GNU_PROPERTY_X86_ISA_1_USED if an input file doesn't have it.
|
||||
(_bfd_x86_elf_link_setup_gnu_properties): Adding the
|
||||
GNU_PROPERTY_X86_ISA_1_NEEDED, instead of
|
||||
GNU_PROPERTY_X86_ISA_1_USED, property.
|
||||
|
||||
ld/
|
||||
|
||||
PR ld/23486
|
||||
* testsuite/ld-i386/i386.exp: Run PR ld/23486 tests.
|
||||
* testsuite/ld-x86-64/x86-64.exp: Likewise.
|
||||
* testsuite/ld-i386/pr23486a.d: New file.
|
||||
* testsuite/ld-i386/pr23486b.d: Likewise.
|
||||
* testsuite/ld-x86-64/pr23486a-x32.d: Likewise.
|
||||
* testsuite/ld-x86-64/pr23486a.d: Likewise.
|
||||
* testsuite/ld-x86-64/pr23486a.s: Likewise.
|
||||
* testsuite/ld-x86-64/pr23486b-x32.d: Likewise.
|
||||
* testsuite/ld-x86-64/pr23486b.d: Likewise.
|
||||
* testsuite/ld-x86-64/pr23486b.s: Likewise.
|
||||
* testsuite/ld-i386/property-3.r: Remove "x86 ISA used".
|
||||
* testsuite/ld-i386/property-4.r: Likewise.
|
||||
* testsuite/ld-i386/property-5.r: Likewise.
|
||||
* testsuite/ld-i386/property-x86-ibt3a.d: Likewise.
|
||||
* testsuite/ld-i386/property-x86-ibt3b.d: Likewise.
|
||||
* testsuite/ld-i386/property-x86-shstk3a.d: Likewise.
|
||||
* testsuite/ld-i386/property-x86-shstk3b.d: Likewise.
|
||||
* testsuite/ld-x86-64/property-3.r: Likewise.
|
||||
* testsuite/ld-x86-64/property-4.r: Likewise.
|
||||
* testsuite/ld-x86-64/property-5.r: Likewise.
|
||||
* testsuite/ld-x86-64/property-x86-ibt3a-x32.d: Likewise.
|
||||
* testsuite/ld-x86-64/property-x86-ibt3a.d: Likewise.
|
||||
* testsuite/ld-x86-64/property-x86-ibt3b-x32.d: Likewise.
|
||||
* testsuite/ld-x86-64/property-x86-ibt3b.d: Likewise.
|
||||
* testsuite/ld-x86-64/property-x86-shstk3a-x32.d: Likewise.
|
||||
* testsuite/ld-x86-64/property-x86-shstk3a.d: Likewise.
|
||||
* testsuite/ld-x86-64/property-x86-shstk3b-x32.d: Likewise.
|
||||
* testsuite/ld-x86-64/property-x86-shstk3b.d: Likewise.
|
||||
|
||||
(cherry picked from commit f7309df20c4e787041cedc4a6aced89c15259e54)
|
||||
---
|
||||
bfd/ChangeLog | 9 +++++++
|
||||
bfd/elfxx-x86.c | 25 ++++++++++++++----
|
||||
ld/ChangeLog | 32 +++++++++++++++++++++++
|
||||
ld/testsuite/ld-i386/i386.exp | 2 ++
|
||||
ld/testsuite/ld-i386/pr23486a.d | 10 +++++++
|
||||
ld/testsuite/ld-i386/pr23486b.d | 10 +++++++
|
||||
ld/testsuite/ld-i386/property-3.r | 1 -
|
||||
ld/testsuite/ld-i386/property-4.r | 1 -
|
||||
ld/testsuite/ld-i386/property-5.r | 1 -
|
||||
ld/testsuite/ld-i386/property-x86-ibt3a.d | 5 ++--
|
||||
ld/testsuite/ld-i386/property-x86-ibt3b.d | 5 ++--
|
||||
ld/testsuite/ld-i386/property-x86-shstk3a.d | 5 ++--
|
||||
ld/testsuite/ld-i386/property-x86-shstk3b.d | 5 ++--
|
||||
ld/testsuite/ld-x86-64/pr23486a-x32.d | 10 +++++++
|
||||
ld/testsuite/ld-x86-64/pr23486a.d | 10 +++++++
|
||||
ld/testsuite/ld-x86-64/pr23486a.s | 30 +++++++++++++++++++++
|
||||
ld/testsuite/ld-x86-64/pr23486b-x32.d | 10 +++++++
|
||||
ld/testsuite/ld-x86-64/pr23486b.d | 10 +++++++
|
||||
ld/testsuite/ld-x86-64/pr23486b.s | 30 +++++++++++++++++++++
|
||||
ld/testsuite/ld-x86-64/property-3.r | 1 -
|
||||
ld/testsuite/ld-x86-64/property-4.r | 1 -
|
||||
ld/testsuite/ld-x86-64/property-5.r | 1 -
|
||||
ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d | 5 ++--
|
||||
ld/testsuite/ld-x86-64/property-x86-ibt3a.d | 5 ++--
|
||||
ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d | 5 ++--
|
||||
ld/testsuite/ld-x86-64/property-x86-ibt3b.d | 5 ++--
|
||||
ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d | 5 ++--
|
||||
ld/testsuite/ld-x86-64/property-x86-shstk3a.d | 5 ++--
|
||||
ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d | 5 ++--
|
||||
ld/testsuite/ld-x86-64/property-x86-shstk3b.d | 5 ++--
|
||||
ld/testsuite/ld-x86-64/x86-64.exp | 4 +++
|
||||
31 files changed, 211 insertions(+), 47 deletions(-)
|
||||
create mode 100644 ld/testsuite/ld-i386/pr23486a.d
|
||||
create mode 100644 ld/testsuite/ld-i386/pr23486b.d
|
||||
create mode 100644 ld/testsuite/ld-x86-64/pr23486a-x32.d
|
||||
create mode 100644 ld/testsuite/ld-x86-64/pr23486a.d
|
||||
create mode 100644 ld/testsuite/ld-x86-64/pr23486a.s
|
||||
create mode 100644 ld/testsuite/ld-x86-64/pr23486b-x32.d
|
||||
create mode 100644 ld/testsuite/ld-x86-64/pr23486b.d
|
||||
create mode 100644 ld/testsuite/ld-x86-64/pr23486b.s
|
||||
|
||||
diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c
|
||||
index 2e4ff88..7ccfd25 100644
|
||||
--- a/bfd/elfxx-x86.c
|
||||
+++ b/bfd/elfxx-x86.c
|
||||
@@ -2407,12 +2407,27 @@ _bfd_x86_elf_merge_gnu_properties (struct bfd_link_info *info,
|
||||
switch (pr_type)
|
||||
{
|
||||
case GNU_PROPERTY_X86_ISA_1_USED:
|
||||
+ if (aprop == NULL || bprop == NULL)
|
||||
+ {
|
||||
+ /* Only one of APROP and BPROP can be NULL. */
|
||||
+ if (aprop != NULL)
|
||||
+ {
|
||||
+ /* Remove this property since the other input file doesn't
|
||||
+ have it. */
|
||||
+ aprop->pr_kind = property_remove;
|
||||
+ updated = TRUE;
|
||||
+ }
|
||||
+ break;
|
||||
+ }
|
||||
+ goto or_property;
|
||||
+
|
||||
case GNU_PROPERTY_X86_ISA_1_NEEDED:
|
||||
if (aprop != NULL && bprop != NULL)
|
||||
{
|
||||
+or_property:
|
||||
number = aprop->u.number;
|
||||
aprop->u.number = number | bprop->u.number;
|
||||
- /* Remove the property if ISA bits are empty. */
|
||||
+ /* Remove the property if all bits are empty. */
|
||||
if (aprop->u.number == 0)
|
||||
{
|
||||
aprop->pr_kind = property_remove;
|
||||
@@ -2428,14 +2443,14 @@ _bfd_x86_elf_merge_gnu_properties (struct bfd_link_info *info,
|
||||
{
|
||||
if (aprop->u.number == 0)
|
||||
{
|
||||
- /* Remove APROP if ISA bits are empty. */
|
||||
+ /* Remove APROP if all bits are empty. */
|
||||
aprop->pr_kind = property_remove;
|
||||
updated = TRUE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
- /* Return TRUE if APROP is NULL and ISA bits of BPROP
|
||||
+ /* Return TRUE if APROP is NULL and all bits of BPROP
|
||||
aren't empty to indicate that BPROP should be added
|
||||
to ABFD. */
|
||||
updated = bprop->u.number != 0;
|
||||
@@ -2582,9 +2597,9 @@ _bfd_x86_elf_link_setup_gnu_properties
|
||||
{
|
||||
/* If the separate code program header is needed, make sure
|
||||
that the first read-only PT_LOAD segment has no code by
|
||||
- adding a GNU_PROPERTY_X86_ISA_1_USED note. */
|
||||
+ adding a GNU_PROPERTY_X86_ISA_1_NEEDED note. */
|
||||
prop = _bfd_elf_get_property (ebfd,
|
||||
- GNU_PROPERTY_X86_ISA_1_USED,
|
||||
+ GNU_PROPERTY_X86_ISA_1_NEEDED,
|
||||
4);
|
||||
prop->u.number = GNU_PROPERTY_X86_ISA_1_486;
|
||||
prop->pr_kind = property_number;
|
||||
diff --git a/ld/testsuite/ld-i386/i386.exp b/ld/testsuite/ld-i386/i386.exp
|
||||
index 6d794fe..78dad02 100644
|
||||
--- a/ld/testsuite/ld-i386/i386.exp
|
||||
+++ b/ld/testsuite/ld-i386/i386.exp
|
||||
@@ -462,6 +462,8 @@ run_dump_test "pr23189"
|
||||
run_dump_test "pr23194"
|
||||
run_dump_test "pr23372a"
|
||||
run_dump_test "pr23372b"
|
||||
+run_dump_test "pr23486a"
|
||||
+run_dump_test "pr23486b"
|
||||
|
||||
if { !([istarget "i?86-*-linux*"]
|
||||
|| [istarget "i?86-*-gnu*"]
|
||||
diff --git a/ld/testsuite/ld-i386/pr23486a.d b/ld/testsuite/ld-i386/pr23486a.d
|
||||
new file mode 100644
|
||||
index 0000000..41a6dcf
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-i386/pr23486a.d
|
||||
@@ -0,0 +1,10 @@
|
||||
+#source: ../ld-x86-64/pr23486a.s
|
||||
+#source: ../ld-x86-64/pr23486b.s
|
||||
+#as: --32
|
||||
+#ld: -r -m elf_i386
|
||||
+#readelf: -n
|
||||
+
|
||||
+Displaying notes found in: .note.gnu.property
|
||||
+ Owner Data size Description
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586
|
||||
diff --git a/ld/testsuite/ld-i386/pr23486b.d b/ld/testsuite/ld-i386/pr23486b.d
|
||||
new file mode 100644
|
||||
index 0000000..08019b7
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-i386/pr23486b.d
|
||||
@@ -0,0 +1,10 @@
|
||||
+#source: ../ld-x86-64/pr23486b.s
|
||||
+#source: ../ld-x86-64/pr23486a.s
|
||||
+#as: --32
|
||||
+#ld: -r -m elf_i386
|
||||
+#readelf: -n
|
||||
+
|
||||
+Displaying notes found in: .note.gnu.property
|
||||
+ Owner Data size Description
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586
|
||||
diff --git a/ld/testsuite/ld-i386/property-3.r b/ld/testsuite/ld-i386/property-3.r
|
||||
index 0ed91f5..d03203c 100644
|
||||
--- a/ld/testsuite/ld-i386/property-3.r
|
||||
+++ b/ld/testsuite/ld-i386/property-3.r
|
||||
@@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: stack size: 0x800000
|
||||
- x86 ISA used: 586, SSE
|
||||
x86 ISA needed: i486, 586
|
||||
#pass
|
||||
diff --git a/ld/testsuite/ld-i386/property-4.r b/ld/testsuite/ld-i386/property-4.r
|
||||
index cb2bc15..da295eb 100644
|
||||
--- a/ld/testsuite/ld-i386/property-4.r
|
||||
+++ b/ld/testsuite/ld-i386/property-4.r
|
||||
@@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: stack size: 0x800000
|
||||
- x86 ISA used: i486, 586, SSE
|
||||
x86 ISA needed: i486, 586, SSE
|
||||
#pass
|
||||
diff --git a/ld/testsuite/ld-i386/property-5.r b/ld/testsuite/ld-i386/property-5.r
|
||||
index 5529650..e414159 100644
|
||||
--- a/ld/testsuite/ld-i386/property-5.r
|
||||
+++ b/ld/testsuite/ld-i386/property-5.r
|
||||
@@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: stack size: 0x900000
|
||||
- x86 ISA used: i486, 586, SSE
|
||||
x86 ISA needed: i486, 586, SSE
|
||||
#pass
|
||||
diff --git a/ld/testsuite/ld-i386/property-x86-ibt3a.d b/ld/testsuite/ld-i386/property-x86-ibt3a.d
|
||||
index 4bb35b0..0aedea1 100644
|
||||
--- a/ld/testsuite/ld-i386/property-x86-ibt3a.d
|
||||
+++ b/ld/testsuite/ld-i386/property-x86-ibt3a.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: i486, 586, SSE2, SSE3
|
||||
- x86 ISA needed: 586, SSE, SSE3, SSE4_1
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: 586, SSE, SSE3, SSE4_1
|
||||
diff --git a/ld/testsuite/ld-i386/property-x86-ibt3b.d b/ld/testsuite/ld-i386/property-x86-ibt3b.d
|
||||
index 418d58a..bd69ac6 100644
|
||||
--- a/ld/testsuite/ld-i386/property-x86-ibt3b.d
|
||||
+++ b/ld/testsuite/ld-i386/property-x86-ibt3b.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: i486, 586, SSE2, SSE3
|
||||
- x86 ISA needed: 586, SSE, SSE3, SSE4_1
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: 586, SSE, SSE3, SSE4_1
|
||||
diff --git a/ld/testsuite/ld-i386/property-x86-shstk3a.d b/ld/testsuite/ld-i386/property-x86-shstk3a.d
|
||||
index e261038..76d2a39 100644
|
||||
--- a/ld/testsuite/ld-i386/property-x86-shstk3a.d
|
||||
+++ b/ld/testsuite/ld-i386/property-x86-shstk3a.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: i486, 586, SSE2, SSE3
|
||||
- x86 ISA needed: 586, SSE, SSE3, SSE4_1
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: 586, SSE, SSE3, SSE4_1
|
||||
diff --git a/ld/testsuite/ld-i386/property-x86-shstk3b.d b/ld/testsuite/ld-i386/property-x86-shstk3b.d
|
||||
index 25f3d23..e770ecf 100644
|
||||
--- a/ld/testsuite/ld-i386/property-x86-shstk3b.d
|
||||
+++ b/ld/testsuite/ld-i386/property-x86-shstk3b.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: i486, 586, SSE2, SSE3
|
||||
- x86 ISA needed: 586, SSE, SSE3, SSE4_1
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: 586, SSE, SSE3, SSE4_1
|
||||
diff --git a/ld/testsuite/ld-x86-64/pr23486a-x32.d b/ld/testsuite/ld-x86-64/pr23486a-x32.d
|
||||
new file mode 100644
|
||||
index 0000000..6d9fa68
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-x86-64/pr23486a-x32.d
|
||||
@@ -0,0 +1,10 @@
|
||||
+#source: pr23486a.s
|
||||
+#source: pr23486b.s
|
||||
+#as: --x32
|
||||
+#ld: -r -m elf32_x86_64
|
||||
+#readelf: -n
|
||||
+
|
||||
+Displaying notes found in: .note.gnu.property
|
||||
+ Owner Data size Description
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586
|
||||
diff --git a/ld/testsuite/ld-x86-64/pr23486a.d b/ld/testsuite/ld-x86-64/pr23486a.d
|
||||
new file mode 100644
|
||||
index 0000000..dc2b7bf
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-x86-64/pr23486a.d
|
||||
@@ -0,0 +1,10 @@
|
||||
+#source: pr23486a.s
|
||||
+#source: pr23486b.s
|
||||
+#as: --64 -defsym __64_bit__=1
|
||||
+#ld: -r -m elf_x86_64
|
||||
+#readelf: -n
|
||||
+
|
||||
+Displaying notes found in: .note.gnu.property
|
||||
+ Owner Data size Description
|
||||
+ GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586
|
||||
diff --git a/ld/testsuite/ld-x86-64/pr23486a.s b/ld/testsuite/ld-x86-64/pr23486a.s
|
||||
new file mode 100644
|
||||
index 0000000..a07d0c7
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-x86-64/pr23486a.s
|
||||
@@ -0,0 +1,30 @@
|
||||
+ .section ".note.gnu.property", "a"
|
||||
+.ifdef __64_bit__
|
||||
+ .p2align 3
|
||||
+.else
|
||||
+ .p2align 2
|
||||
+.endif
|
||||
+ .long 1f - 0f /* name length. */
|
||||
+ .long 4f - 1f /* data length. */
|
||||
+ /* NT_GNU_PROPERTY_TYPE_0 */
|
||||
+ .long 5 /* note type. */
|
||||
+0:
|
||||
+ .asciz "GNU" /* vendor name. */
|
||||
+1:
|
||||
+.ifdef __64_bit__
|
||||
+ .p2align 3
|
||||
+.else
|
||||
+ .p2align 2
|
||||
+.endif
|
||||
+ /* GNU_PROPERTY_X86_ISA_1_USED */
|
||||
+ .long 0xc0000000 /* pr_type. */
|
||||
+ .long 3f - 2f /* pr_datasz. */
|
||||
+2:
|
||||
+ .long 0xa
|
||||
+3:
|
||||
+.ifdef __64_bit__
|
||||
+ .p2align 3
|
||||
+.else
|
||||
+ .p2align 2
|
||||
+.endif
|
||||
+4:
|
||||
diff --git a/ld/testsuite/ld-x86-64/pr23486b-x32.d b/ld/testsuite/ld-x86-64/pr23486b-x32.d
|
||||
new file mode 100644
|
||||
index 0000000..0445e69
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-x86-64/pr23486b-x32.d
|
||||
@@ -0,0 +1,10 @@
|
||||
+#source: pr23486b.s
|
||||
+#source: pr23486a.s
|
||||
+#as: --x32
|
||||
+#ld: -r -m elf32_x86_64
|
||||
+#readelf: -n
|
||||
+
|
||||
+Displaying notes found in: .note.gnu.property
|
||||
+ Owner Data size Description
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586
|
||||
diff --git a/ld/testsuite/ld-x86-64/pr23486b.d b/ld/testsuite/ld-x86-64/pr23486b.d
|
||||
new file mode 100644
|
||||
index 0000000..dc2b7bf
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-x86-64/pr23486b.d
|
||||
@@ -0,0 +1,10 @@
|
||||
+#source: pr23486a.s
|
||||
+#source: pr23486b.s
|
||||
+#as: --64 -defsym __64_bit__=1
|
||||
+#ld: -r -m elf_x86_64
|
||||
+#readelf: -n
|
||||
+
|
||||
+Displaying notes found in: .note.gnu.property
|
||||
+ Owner Data size Description
|
||||
+ GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586
|
||||
diff --git a/ld/testsuite/ld-x86-64/pr23486b.s b/ld/testsuite/ld-x86-64/pr23486b.s
|
||||
new file mode 100644
|
||||
index 0000000..c5167ee
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-x86-64/pr23486b.s
|
||||
@@ -0,0 +1,30 @@
|
||||
+ .section ".note.gnu.property", "a"
|
||||
+.ifdef __64_bit__
|
||||
+ .p2align 3
|
||||
+.else
|
||||
+ .p2align 2
|
||||
+.endif
|
||||
+ .long 1f - 0f /* name length. */
|
||||
+ .long 4f - 1f /* data length. */
|
||||
+ /* NT_GNU_PROPERTY_TYPE_0 */
|
||||
+ .long 5 /* note type. */
|
||||
+0:
|
||||
+ .asciz "GNU" /* vendor name. */
|
||||
+1:
|
||||
+.ifdef __64_bit__
|
||||
+ .p2align 3
|
||||
+.else
|
||||
+ .p2align 2
|
||||
+.endif
|
||||
+ /* GNU_PROPERTY_X86_ISA_1_NEEDED */
|
||||
+ .long 0xc0000001 /* pr_type. */
|
||||
+ .long 3f - 2f /* pr_datasz. */
|
||||
+2:
|
||||
+ .long 0x3
|
||||
+3:
|
||||
+.ifdef __64_bit__
|
||||
+ .p2align 3
|
||||
+.else
|
||||
+ .p2align 2
|
||||
+.endif
|
||||
+4:
|
||||
diff --git a/ld/testsuite/ld-x86-64/property-3.r b/ld/testsuite/ld-x86-64/property-3.r
|
||||
index 0ed91f5..d03203c 100644
|
||||
--- a/ld/testsuite/ld-x86-64/property-3.r
|
||||
+++ b/ld/testsuite/ld-x86-64/property-3.r
|
||||
@@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: stack size: 0x800000
|
||||
- x86 ISA used: 586, SSE
|
||||
x86 ISA needed: i486, 586
|
||||
#pass
|
||||
diff --git a/ld/testsuite/ld-x86-64/property-4.r b/ld/testsuite/ld-x86-64/property-4.r
|
||||
index cb2bc15..da295eb 100644
|
||||
--- a/ld/testsuite/ld-x86-64/property-4.r
|
||||
+++ b/ld/testsuite/ld-x86-64/property-4.r
|
||||
@@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: stack size: 0x800000
|
||||
- x86 ISA used: i486, 586, SSE
|
||||
x86 ISA needed: i486, 586, SSE
|
||||
#pass
|
||||
diff --git a/ld/testsuite/ld-x86-64/property-5.r b/ld/testsuite/ld-x86-64/property-5.r
|
||||
index 5529650..e414159 100644
|
||||
--- a/ld/testsuite/ld-x86-64/property-5.r
|
||||
+++ b/ld/testsuite/ld-x86-64/property-5.r
|
||||
@@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: stack size: 0x900000
|
||||
- x86 ISA used: i486, 586, SSE
|
||||
x86 ISA needed: i486, 586, SSE
|
||||
#pass
|
||||
diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d b/ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d
|
||||
index 011426f..4cec728 100644
|
||||
--- a/ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d
|
||||
+++ b/ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
|
||||
- x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt3a.d b/ld/testsuite/ld-x86-64/property-x86-ibt3a.d
|
||||
index 1b4229a..a8df49a 100644
|
||||
--- a/ld/testsuite/ld-x86-64/property-x86-ibt3a.d
|
||||
+++ b/ld/testsuite/ld-x86-64/property-x86-ibt3a.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
|
||||
- x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
+ GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d b/ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d
|
||||
index 290ed6a..c112626 100644
|
||||
--- a/ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d
|
||||
+++ b/ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
|
||||
- x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt3b.d b/ld/testsuite/ld-x86-64/property-x86-ibt3b.d
|
||||
index 1142e03..f10dffd 100644
|
||||
--- a/ld/testsuite/ld-x86-64/property-x86-ibt3b.d
|
||||
+++ b/ld/testsuite/ld-x86-64/property-x86-ibt3b.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
|
||||
- x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
+ GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d b/ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d
|
||||
index 819542d..0147a3c 100644
|
||||
--- a/ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d
|
||||
+++ b/ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
|
||||
- x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk3a.d b/ld/testsuite/ld-x86-64/property-x86-shstk3a.d
|
||||
index 4c5d0e0..1f8c2dc 100644
|
||||
--- a/ld/testsuite/ld-x86-64/property-x86-shstk3a.d
|
||||
+++ b/ld/testsuite/ld-x86-64/property-x86-shstk3a.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
|
||||
- x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
+ GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d b/ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d
|
||||
index ba181e0..7ca2539 100644
|
||||
--- a/ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d
|
||||
+++ b/ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
|
||||
- x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk3b.d b/ld/testsuite/ld-x86-64/property-x86-shstk3b.d
|
||||
index 5216f38..f66a40e 100644
|
||||
--- a/ld/testsuite/ld-x86-64/property-x86-shstk3b.d
|
||||
+++ b/ld/testsuite/ld-x86-64/property-x86-shstk3b.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
|
||||
- x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
+ GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
diff --git a/ld/testsuite/ld-x86-64/x86-64.exp b/ld/testsuite/ld-x86-64/x86-64.exp
|
||||
index 6edb9e8..ae21e55 100644
|
||||
--- a/ld/testsuite/ld-x86-64/x86-64.exp
|
||||
+++ b/ld/testsuite/ld-x86-64/x86-64.exp
|
||||
@@ -403,6 +403,10 @@ run_dump_test "pr23372a"
|
||||
run_dump_test "pr23372a-x32"
|
||||
run_dump_test "pr23372b"
|
||||
run_dump_test "pr23372b-x32"
|
||||
+run_dump_test "pr23486a"
|
||||
+run_dump_test "pr23486a-x32"
|
||||
+run_dump_test "pr23486b"
|
||||
+run_dump_test "pr23486b-x32"
|
||||
|
||||
if { ![istarget "x86_64-*-linux*"] && ![istarget "x86_64-*-nacl*"]} {
|
||||
return
|
||||
--
|
||||
2.9.3
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
# Automatically generated aport, do not edit!
|
||||
# Generator: pmbootstrap aportgen binutils-armv7
|
||||
# Based on: main/binutils
|
||||
|
||||
|
||||
pkgname="binutils-armv7"
|
||||
pkgver=2.31.1
|
||||
pkgrel=2
|
||||
pkgdesc="Tools necessary to build programs for armv7 targets"
|
||||
url="https://www.gnu.org/software/binutils/"
|
||||
depends=""
|
||||
makedepends_build=""
|
||||
makedepends_host=""
|
||||
makedepends="gettext libtool autoconf automake bison"
|
||||
arch="armhf aarch64 x86_64 x86"
|
||||
license="GPL-2.0 GPL-3.0-or-later LGPL-2.0 BSD"
|
||||
subpackages=""
|
||||
source="https://ftp.gnu.org/gnu/binutils/binutils-$pkgver.tar.bz2
|
||||
x86-Add-a-GNU_PROPERTY_X86_ISA_1_USED-note-if-needed.patch
|
||||
x86-Properly-merge-GNU_PROPERTY_X86_ISA_1_USED.patch
|
||||
x86-Properly-add-X86_ISA_1_NEEDED-property.patch
|
||||
binutils-ld-fix-static-linking.patch
|
||||
gold-mips.patch
|
||||
"
|
||||
builddir="$srcdir/binutils-$pkgver"
|
||||
|
||||
if [ "$CHOST" != "$CTARGET" ]; then
|
||||
pkgname="binutils-$CTARGET_ARCH"
|
||||
subpackages=""
|
||||
sonameprefix="binutils:"
|
||||
fi
|
||||
|
||||
# secfixes:
|
||||
# 2.28-r1:
|
||||
# - CVE-2017-7614
|
||||
|
||||
build() {
|
||||
_target="$(arch_to_hostspec armv7)"
|
||||
cd "$builddir"
|
||||
"$builddir"/configure \
|
||||
--build="$CBUILD" \
|
||||
--target=$_target \
|
||||
--with-lib-path=/usr/lib \
|
||||
--prefix=/usr \
|
||||
--with-sysroot=/usr/$_target \
|
||||
--enable-ld=default \
|
||||
--enable-gold=yes \
|
||||
--enable-plugins \
|
||||
--enable-deterministic-archives \
|
||||
--disable-multilib \
|
||||
--disable-werror \
|
||||
--disable-nls
|
||||
make
|
||||
}
|
||||
|
||||
package() {
|
||||
cd "$builddir"
|
||||
make install DESTDIR="$pkgdir"
|
||||
|
||||
# remove man, info folders
|
||||
rm -rf "$pkgdir"/usr/share
|
||||
}
|
||||
|
||||
|
||||
|
||||
sha512sums="b42954e6f49a0adcd2676bdd77dfb59bfc25cec8184b007521d1e2b1d5d0593b58639e3d9448d5a40fe024c3cea386a37743627d6bb16d502f52a4a32b9573bd binutils-2.31.1.tar.bz2
|
||||
d95fd77e1c2c4670a2a11979d6811b358ba0f067b917b33d241eca20cfe66553f6a6fccc5ec26d8d29045e487cb74389fbf86426f80cf81df95608835a566cfc x86-Add-a-GNU_PROPERTY_X86_ISA_1_USED-note-if-needed.patch
|
||||
ce5d3c935057d624c1ce75722e7b5e4583812d46797edce8c381a94b2643f44f7bd0165e7e9b8e358955f4d979074ee487598efbf24389a4013681f99ff7c595 x86-Properly-merge-GNU_PROPERTY_X86_ISA_1_USED.patch
|
||||
1878bed194529afb2430af21ba9712d6819c5fdfdc5c8db652175bf86d0a0c710ac2bd3ec728bf874887301bd187d91bf60a374c47850c7bd2eafbf6653d74d8 x86-Properly-add-X86_ISA_1_NEEDED-property.patch
|
||||
ecee33b0e435aa704af1c334e560f201638ff79e199aa11ed78a72f7c9b46f85fbb227af5748e735fd681d1965fcc42ac81b0c8824e540430ce0c706c81e8b49 binutils-ld-fix-static-linking.patch
|
||||
f55cf2e0bf82f97583a1abe10710e4013ecf7d64f1da2ef8659a44a06d0dd8beaf58dab98a183488ea137f03e32d62efc878d95f018f836f8cec870bc448556f gold-mips.patch"
|
||||
File renamed without changes.
File renamed without changes.
@@ -0,0 +1,567 @@
|
||||
From 6737a6b34f4823deb7142f27b4074831a37ac1e1 Mon Sep 17 00:00:00 2001
|
||||
From: "H.J. Lu" <hjl.tools@gmail.com>
|
||||
Date: Fri, 20 Jul 2018 09:18:47 -0700
|
||||
Subject: [PATCH] x86: Add a GNU_PROPERTY_X86_ISA_1_USED note if needed
|
||||
|
||||
When -z separate-code, which is enabled by default for Linux/x86, is
|
||||
used to create executable, ld won't place any data in the code-only
|
||||
PT_LOAD segment. If there are no data sections placed before the
|
||||
code-only PT_LOAD segment, the program headers won't be mapped into
|
||||
any PT_LOAD segment. When the executable tries to access it (based
|
||||
on the program header address passed in AT_PHDR), it will lead to
|
||||
segfault. This patch inserts a GNU_PROPERTY_X86_ISA_1_USED note if
|
||||
there may be no data sections before the text section so that the
|
||||
first PT_LOAD segment won't be code-only and will contain the program
|
||||
header.
|
||||
|
||||
Testcases are adjusted to either pass "-z noseparate-code" to ld or
|
||||
discard the .note.gnu.property section. A Linux/x86 run-time test is
|
||||
added.
|
||||
|
||||
bfd/
|
||||
|
||||
PR ld/23428
|
||||
* elfxx-x86.c (_bfd_x86_elf_link_setup_gnu_properties): If the
|
||||
separate code program header is needed, make sure that the first
|
||||
read-only PT_LOAD segment has no code by adding a
|
||||
GNU_PROPERTY_X86_ISA_1_USED note.
|
||||
|
||||
ld/
|
||||
|
||||
PR ld/23428
|
||||
* testsuite/ld-elf/linux-x86.S: New file.
|
||||
* testsuite/ld-elf/linux-x86.exp: Likewise.
|
||||
* testsuite/ld-elf/pr23428.c: Likewise.
|
||||
* testsuite/ld-elf/sec64k.exp: Pass "-z noseparate-code" to ld
|
||||
for Linux/x86 targets.
|
||||
* testsuite/ld-i386/abs-iamcu.d: Likewise.
|
||||
* testsuite/ld-i386/abs.d: Likewise.
|
||||
* testsuite/ld-i386/pr12718.d: Likewise.
|
||||
* testsuite/ld-i386/pr12921.d: Likewise.
|
||||
* testsuite/ld-x86-64/abs-k1om.d: Likewise.
|
||||
* testsuite/ld-x86-64/abs-l1om.d: Likewise.
|
||||
* testsuite/ld-x86-64/abs.d: Likewise.
|
||||
* testsuite/ld-x86-64/pr12718.d: Likewise.
|
||||
* testsuite/ld-x86-64/pr12921.d: Likewise.
|
||||
* testsuite/ld-linkonce/zeroeh.ld: Discard .note.gnu.property
|
||||
section.
|
||||
* testsuite/ld-scripts/print-memory-usage.t: Likewise.
|
||||
* testsuite/ld-scripts/size-2.t: Likewise.
|
||||
* testsuite/lib/ld-lib.exp (run_ld_link_exec_tests): Use ld
|
||||
to create executable if language is "asm".
|
||||
|
||||
(cherry picked from commit 241e64e3b42cd9eba514b8e0ad2ef39a337f10a5)
|
||||
---
|
||||
bfd/ChangeLog | 8 ++++
|
||||
bfd/elfxx-x86.c | 60 +++++++++++++++++++-------
|
||||
ld/ChangeLog | 24 +++++++++++
|
||||
ld/testsuite/ld-elf/linux-x86.S | 63 ++++++++++++++++++++++++++++
|
||||
ld/testsuite/ld-elf/linux-x86.exp | 46 ++++++++++++++++++++
|
||||
ld/testsuite/ld-elf/pr23428.c | 43 +++++++++++++++++++
|
||||
ld/testsuite/ld-elf/sec64k.exp | 2 +
|
||||
ld/testsuite/ld-i386/abs-iamcu.d | 2 +-
|
||||
ld/testsuite/ld-i386/abs.d | 2 +-
|
||||
ld/testsuite/ld-i386/pr12718.d | 2 +-
|
||||
ld/testsuite/ld-i386/pr12921.d | 2 +-
|
||||
ld/testsuite/ld-linkonce/zeroeh.ld | 1 +
|
||||
ld/testsuite/ld-scripts/print-memory-usage.t | 2 +
|
||||
ld/testsuite/ld-scripts/size-2.t | 1 +
|
||||
ld/testsuite/ld-x86-64/abs-k1om.d | 2 +-
|
||||
ld/testsuite/ld-x86-64/abs-l1om.d | 2 +-
|
||||
ld/testsuite/ld-x86-64/abs.d | 2 +-
|
||||
ld/testsuite/ld-x86-64/pr12718.d | 2 +-
|
||||
ld/testsuite/ld-x86-64/pr12921.d | 2 +-
|
||||
ld/testsuite/lib/ld-lib.exp | 5 ++-
|
||||
20 files changed, 248 insertions(+), 25 deletions(-)
|
||||
create mode 100644 ld/testsuite/ld-elf/linux-x86.S
|
||||
create mode 100644 ld/testsuite/ld-elf/linux-x86.exp
|
||||
create mode 100644 ld/testsuite/ld-elf/pr23428.c
|
||||
|
||||
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
|
||||
index 1c1174a..d3831b7 100644
|
||||
--- a/bfd/ChangeLog
|
||||
+++ b/bfd/ChangeLog
|
||||
@@ -1,3 +1,11 @@
|
||||
+2018-07-23 H.J. Lu <hongjiu.lu@intel.com>
|
||||
+
|
||||
+ PR ld/23428
|
||||
+ * elfxx-x86.c (_bfd_x86_elf_link_setup_gnu_properties): If the
|
||||
+ separate code program header is needed, make sure that the first
|
||||
+ read-only PT_LOAD segment has no code by adding a
|
||||
+ GNU_PROPERTY_X86_ISA_1_USED note.
|
||||
+
|
||||
2018-07-18 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* development.sh: Set to true.
|
||||
diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c
|
||||
index a2497aa..2e4ff88 100644
|
||||
--- a/bfd/elfxx-x86.c
|
||||
+++ b/bfd/elfxx-x86.c
|
||||
@@ -2524,6 +2524,7 @@ _bfd_x86_elf_link_setup_gnu_properties
|
||||
const struct elf_backend_data *bed;
|
||||
unsigned int class_align = ABI_64_P (info->output_bfd) ? 3 : 2;
|
||||
unsigned int got_align;
|
||||
+ bfd_boolean has_text = FALSE;
|
||||
|
||||
features = 0;
|
||||
if (info->ibt)
|
||||
@@ -2538,24 +2539,59 @@ _bfd_x86_elf_link_setup_gnu_properties
|
||||
if (bfd_get_flavour (pbfd) == bfd_target_elf_flavour
|
||||
&& bfd_count_sections (pbfd) != 0)
|
||||
{
|
||||
+ if (!has_text)
|
||||
+ {
|
||||
+ /* Check if there is no non-empty text section. */
|
||||
+ sec = bfd_get_section_by_name (pbfd, ".text");
|
||||
+ if (sec != NULL && sec->size != 0)
|
||||
+ has_text = TRUE;
|
||||
+ }
|
||||
+
|
||||
ebfd = pbfd;
|
||||
|
||||
if (elf_properties (pbfd) != NULL)
|
||||
break;
|
||||
}
|
||||
|
||||
- if (ebfd != NULL && features)
|
||||
+ bed = get_elf_backend_data (info->output_bfd);
|
||||
+
|
||||
+ htab = elf_x86_hash_table (info, bed->target_id);
|
||||
+ if (htab == NULL)
|
||||
+ return pbfd;
|
||||
+
|
||||
+ if (ebfd != NULL)
|
||||
{
|
||||
- /* If features is set, add GNU_PROPERTY_X86_FEATURE_1_IBT and
|
||||
- GNU_PROPERTY_X86_FEATURE_1_SHSTK. */
|
||||
- prop = _bfd_elf_get_property (ebfd,
|
||||
- GNU_PROPERTY_X86_FEATURE_1_AND,
|
||||
- 4);
|
||||
- prop->u.number |= features;
|
||||
- prop->pr_kind = property_number;
|
||||
+ prop = NULL;
|
||||
+ if (features)
|
||||
+ {
|
||||
+ /* If features is set, add GNU_PROPERTY_X86_FEATURE_1_IBT and
|
||||
+ GNU_PROPERTY_X86_FEATURE_1_SHSTK. */
|
||||
+ prop = _bfd_elf_get_property (ebfd,
|
||||
+ GNU_PROPERTY_X86_FEATURE_1_AND,
|
||||
+ 4);
|
||||
+ prop->u.number |= features;
|
||||
+ prop->pr_kind = property_number;
|
||||
+ }
|
||||
+ else if (has_text
|
||||
+ && elf_properties (ebfd) == NULL
|
||||
+ && elf_tdata (info->output_bfd)->o->build_id.sec == NULL
|
||||
+ && !htab->elf.dynamic_sections_created
|
||||
+ && !info->traditional_format
|
||||
+ && (info->output_bfd->flags & D_PAGED) != 0
|
||||
+ && info->separate_code)
|
||||
+ {
|
||||
+ /* If the separate code program header is needed, make sure
|
||||
+ that the first read-only PT_LOAD segment has no code by
|
||||
+ adding a GNU_PROPERTY_X86_ISA_1_USED note. */
|
||||
+ prop = _bfd_elf_get_property (ebfd,
|
||||
+ GNU_PROPERTY_X86_ISA_1_USED,
|
||||
+ 4);
|
||||
+ prop->u.number = GNU_PROPERTY_X86_ISA_1_486;
|
||||
+ prop->pr_kind = property_number;
|
||||
+ }
|
||||
|
||||
/* Create the GNU property note section if needed. */
|
||||
- if (pbfd == NULL)
|
||||
+ if (prop != NULL && pbfd == NULL)
|
||||
{
|
||||
sec = bfd_make_section_with_flags (ebfd,
|
||||
NOTE_GNU_PROPERTY_SECTION_NAME,
|
||||
@@ -2581,12 +2617,6 @@ error_alignment:
|
||||
|
||||
pbfd = _bfd_elf_link_setup_gnu_properties (info);
|
||||
|
||||
- bed = get_elf_backend_data (info->output_bfd);
|
||||
-
|
||||
- htab = elf_x86_hash_table (info, bed->target_id);
|
||||
- if (htab == NULL)
|
||||
- return pbfd;
|
||||
-
|
||||
htab->r_info = init_table->r_info;
|
||||
htab->r_sym = init_table->r_sym;
|
||||
|
||||
diff --git a/ld/ChangeLog b/ld/ChangeLog
|
||||
index c07e442..cfadbd4 100644
|
||||
--- a/ld/ChangeLog
|
||||
+++ b/ld/ChangeLog
|
||||
@@ -1,3 +1,27 @@
|
||||
+2018-07-23 H.J. Lu <hongjiu.lu@intel.com>
|
||||
+
|
||||
+ PR ld/23428
|
||||
+ * testsuite/ld-elf/linux-x86.S: New file.
|
||||
+ * testsuite/ld-elf/linux-x86.exp: Likewise.
|
||||
+ * testsuite/ld-elf/pr23428.c: Likewise.
|
||||
+ * testsuite/ld-elf/sec64k.exp: Pass "-z noseparate-code" to ld
|
||||
+ for Linux/x86 targets.
|
||||
+ * testsuite/ld-i386/abs-iamcu.d: Likewise.
|
||||
+ * testsuite/ld-i386/abs.d: Likewise.
|
||||
+ * testsuite/ld-i386/pr12718.d: Likewise.
|
||||
+ * testsuite/ld-i386/pr12921.d: Likewise.
|
||||
+ * testsuite/ld-x86-64/abs-k1om.d: Likewise.
|
||||
+ * testsuite/ld-x86-64/abs-l1om.d: Likewise.
|
||||
+ * testsuite/ld-x86-64/abs.d: Likewise.
|
||||
+ * testsuite/ld-x86-64/pr12718.d: Likewise.
|
||||
+ * testsuite/ld-x86-64/pr12921.d: Likewise.
|
||||
+ * testsuite/ld-linkonce/zeroeh.ld: Discard .note.gnu.property
|
||||
+ section.
|
||||
+ * testsuite/ld-scripts/print-memory-usage.t: Likewise.
|
||||
+ * testsuite/ld-scripts/size-2.t: Likewise.
|
||||
+ * testsuite/lib/ld-lib.exp (run_ld_link_exec_tests): Use ld to
|
||||
+ create executable if language is "asm".
|
||||
+
|
||||
2018-07-18 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
2.31.1 Release point.
|
||||
diff --git a/ld/testsuite/ld-elf/linux-x86.S b/ld/testsuite/ld-elf/linux-x86.S
|
||||
new file mode 100644
|
||||
index 0000000..bdf40c6
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-elf/linux-x86.S
|
||||
@@ -0,0 +1,63 @@
|
||||
+ .text
|
||||
+ .globl _start
|
||||
+ .type _start,@function
|
||||
+ .p2align 4
|
||||
+_start:
|
||||
+ xorl %ebp, %ebp
|
||||
+#ifdef __LP64__
|
||||
+ popq %rdi
|
||||
+ movq %rsp, %rsi
|
||||
+ andq $~15, %rsp
|
||||
+#elif defined __x86_64__
|
||||
+ mov (%rsp),%edi
|
||||
+ addl $4,%esp
|
||||
+ movl %esp, %esi
|
||||
+ andl $~15, %esp
|
||||
+#else
|
||||
+ popl %esi
|
||||
+ movl %esp, %ecx
|
||||
+ andl $~15, %esp
|
||||
+
|
||||
+ subl $8,%esp
|
||||
+ pushl %ecx
|
||||
+ pushl %esi
|
||||
+#endif
|
||||
+
|
||||
+ call main
|
||||
+
|
||||
+ hlt
|
||||
+
|
||||
+ .type syscall, @function
|
||||
+ .globl syscall
|
||||
+ .p2align 4
|
||||
+syscall:
|
||||
+#ifdef __x86_64__
|
||||
+ movq %rdi, %rax /* Syscall number -> rax. */
|
||||
+ movq %rsi, %rdi /* shift arg1 - arg5. */
|
||||
+ movq %rdx, %rsi
|
||||
+ movq %rcx, %rdx
|
||||
+ movq %r8, %r10
|
||||
+ movq %r9, %r8
|
||||
+ movq 8(%rsp),%r9 /* arg6 is on the stack. */
|
||||
+ syscall /* Do the system call. */
|
||||
+#else
|
||||
+ push %ebp
|
||||
+ push %edi
|
||||
+ push %esi
|
||||
+ push %ebx
|
||||
+ mov 0x2c(%esp),%ebp
|
||||
+ mov 0x28(%esp),%edi
|
||||
+ mov 0x24(%esp),%esi
|
||||
+ mov 0x20(%esp),%edx
|
||||
+ mov 0x1c(%esp),%ecx
|
||||
+ mov 0x18(%esp),%ebx
|
||||
+ mov 0x14(%esp),%eax
|
||||
+ int $0x80
|
||||
+ pop %ebx
|
||||
+ pop %esi
|
||||
+ pop %edi
|
||||
+ pop %ebp
|
||||
+#endif
|
||||
+ ret /* Return to caller. */
|
||||
+ .size syscall, .-syscall
|
||||
+ .section .note.GNU-stack,"",@progbits
|
||||
diff --git a/ld/testsuite/ld-elf/linux-x86.exp b/ld/testsuite/ld-elf/linux-x86.exp
|
||||
new file mode 100644
|
||||
index 0000000..36217c6
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-elf/linux-x86.exp
|
||||
@@ -0,0 +1,46 @@
|
||||
+# Expect script for simple native Linux/x86 tests.
|
||||
+# Copyright (C) 2018 Free Software Foundation, Inc.
|
||||
+#
|
||||
+# This file is part of the GNU Binutils.
|
||||
+#
|
||||
+# This program is free software; you can redistribute it and/or modify
|
||||
+# it under the terms of the GNU General Public License as published by
|
||||
+# the Free Software Foundation; either version 3 of the License, or
|
||||
+# (at your option) any later version.
|
||||
+#
|
||||
+# This program is distributed in the hope that it will be useful,
|
||||
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+# GNU General Public License for more details.
|
||||
+#
|
||||
+# You should have received a copy of the GNU General Public License
|
||||
+# along with this program; if not, write to the Free Software
|
||||
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
+# MA 02110-1301, USA.
|
||||
+#
|
||||
+
|
||||
+# Test very simple native Linux/x86 programs with linux-x86.S.
|
||||
+if { ![isnative] || [which $CC] == 0 \
|
||||
+ || (![istarget "i?86-*-linux*"] \
|
||||
+ && ![istarget "x86_64-*-linux*"] \
|
||||
+ && ![istarget "amd64-*-linux*"]) } {
|
||||
+ return
|
||||
+}
|
||||
+
|
||||
+# Add $PLT_CFLAGS if PLT is expected.
|
||||
+global PLT_CFLAGS
|
||||
+# Add $NOPIE_CFLAGS and $NOPIE_LDFLAGS if non-PIE is required.
|
||||
+global NOPIE_CFLAGS NOPIE_LDFLAGS
|
||||
+
|
||||
+run_ld_link_exec_tests [list \
|
||||
+ [list \
|
||||
+ "Run PR ld/23428 test" \
|
||||
+ "--no-dynamic-linker -z separate-code" \
|
||||
+ "" \
|
||||
+ { linux-x86.S pr23428.c } \
|
||||
+ "pr23428" \
|
||||
+ "pass.out" \
|
||||
+ "$NOPIE_CFLAGS -fno-asynchronous-unwind-tables" \
|
||||
+ "asm" \
|
||||
+ ] \
|
||||
+]
|
||||
diff --git a/ld/testsuite/ld-elf/pr23428.c b/ld/testsuite/ld-elf/pr23428.c
|
||||
new file mode 100644
|
||||
index 0000000..3631ed7
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-elf/pr23428.c
|
||||
@@ -0,0 +1,43 @@
|
||||
+#include <unistd.h>
|
||||
+#include <link.h>
|
||||
+#include <syscall.h>
|
||||
+
|
||||
+#define STRING_COMMA_LEN(STR) (STR), (sizeof (STR) - 1)
|
||||
+
|
||||
+int
|
||||
+main (int argc, char **argv)
|
||||
+{
|
||||
+ char **ev = &argv[argc + 1];
|
||||
+ char **evp = ev;
|
||||
+ ElfW(auxv_t) *av;
|
||||
+ const ElfW(Phdr) *phdr = NULL;
|
||||
+ size_t phnum = 0;
|
||||
+ size_t loadnum = 0;
|
||||
+ int fd = STDOUT_FILENO;
|
||||
+ size_t i;
|
||||
+
|
||||
+ while (*evp++ != NULL)
|
||||
+ ;
|
||||
+
|
||||
+ av = (ElfW(auxv_t) *) evp;
|
||||
+
|
||||
+ for (; av->a_type != AT_NULL; ++av)
|
||||
+ switch (av->a_type)
|
||||
+ {
|
||||
+ case AT_PHDR:
|
||||
+ phdr = (const void *) av->a_un.a_val;
|
||||
+ break;
|
||||
+ case AT_PHNUM:
|
||||
+ phnum = av->a_un.a_val;
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ for (i = 0; i < phnum; i++, phdr++)
|
||||
+ if (phdr->p_type == PT_LOAD)
|
||||
+ loadnum++;
|
||||
+
|
||||
+ syscall (SYS_write, fd, STRING_COMMA_LEN ("PASS\n"));
|
||||
+
|
||||
+ syscall (SYS_exit, !loadnum);
|
||||
+ return 0;
|
||||
+}
|
||||
diff --git a/ld/testsuite/ld-elf/sec64k.exp b/ld/testsuite/ld-elf/sec64k.exp
|
||||
index b58139e..3909c0e 100644
|
||||
--- a/ld/testsuite/ld-elf/sec64k.exp
|
||||
+++ b/ld/testsuite/ld-elf/sec64k.exp
|
||||
@@ -177,6 +177,8 @@ if { ![istarget "d10v-*-*"]
|
||||
foreach sfile $sfiles { puts $ofd "#source: $sfile" }
|
||||
if { [istarget spu*-*-*] } {
|
||||
puts $ofd "#ld: --local-store 0:0"
|
||||
+ } elseif { [istarget "i?86-*-linux*"] || [istarget "x86_64-*-linux*"] } {
|
||||
+ puts $ofd "#ld: -z noseparate-code"
|
||||
} else {
|
||||
puts $ofd "#ld:"
|
||||
}
|
||||
diff --git a/ld/testsuite/ld-i386/abs-iamcu.d b/ld/testsuite/ld-i386/abs-iamcu.d
|
||||
index ac9beff..aba7d6b 100644
|
||||
--- a/ld/testsuite/ld-i386/abs-iamcu.d
|
||||
+++ b/ld/testsuite/ld-i386/abs-iamcu.d
|
||||
@@ -2,7 +2,7 @@
|
||||
#source: abs.s
|
||||
#source: zero.s
|
||||
#as: --32 -march=iamcu
|
||||
-#ld: -m elf_iamcu
|
||||
+#ld: -m elf_iamcu -z noseparate-code
|
||||
#objdump: -rs -j .text
|
||||
|
||||
.*: file format .*
|
||||
diff --git a/ld/testsuite/ld-i386/abs.d b/ld/testsuite/ld-i386/abs.d
|
||||
index e660aca..191ee44 100644
|
||||
--- a/ld/testsuite/ld-i386/abs.d
|
||||
+++ b/ld/testsuite/ld-i386/abs.d
|
||||
@@ -2,7 +2,7 @@
|
||||
#as: --32
|
||||
#source: abs.s
|
||||
#source: zero.s
|
||||
-#ld: -melf_i386
|
||||
+#ld: -melf_i386 -z noseparate-code
|
||||
#objdump: -rs
|
||||
|
||||
.*: file format .*
|
||||
diff --git a/ld/testsuite/ld-i386/pr12718.d b/ld/testsuite/ld-i386/pr12718.d
|
||||
index ec51540..7eba52d 100644
|
||||
--- a/ld/testsuite/ld-i386/pr12718.d
|
||||
+++ b/ld/testsuite/ld-i386/pr12718.d
|
||||
@@ -1,6 +1,6 @@
|
||||
#name: PR ld/12718
|
||||
#as: --32
|
||||
-#ld: -melf_i386
|
||||
+#ld: -melf_i386 -z noseparate-code
|
||||
#readelf: -S
|
||||
|
||||
There are 5 section headers, starting at offset 0x[0-9a-f]+:
|
||||
diff --git a/ld/testsuite/ld-i386/pr12921.d b/ld/testsuite/ld-i386/pr12921.d
|
||||
index e49079b..ea2da3e 100644
|
||||
--- a/ld/testsuite/ld-i386/pr12921.d
|
||||
+++ b/ld/testsuite/ld-i386/pr12921.d
|
||||
@@ -1,6 +1,6 @@
|
||||
#name: PR ld/12921
|
||||
#as: --32
|
||||
-#ld: -melf_i386
|
||||
+#ld: -melf_i386 -z noseparate-code
|
||||
#readelf: -S --wide
|
||||
|
||||
There are 7 section headers, starting at offset 0x[0-9a-f]+:
|
||||
diff --git a/ld/testsuite/ld-linkonce/zeroeh.ld b/ld/testsuite/ld-linkonce/zeroeh.ld
|
||||
index b22eaa1..f89855a 100644
|
||||
--- a/ld/testsuite/ld-linkonce/zeroeh.ld
|
||||
+++ b/ld/testsuite/ld-linkonce/zeroeh.ld
|
||||
@@ -2,4 +2,5 @@ SECTIONS {
|
||||
.text 0xa00 : { *(.text); *(.gnu.linkonce.t.*) }
|
||||
.gcc_except_table 0x2000 : { *(.gcc_except_table) }
|
||||
.eh_frame 0x4000 : { *(.eh_frame) }
|
||||
+ /DISCARD/ : { *(.note.gnu.property) }
|
||||
}
|
||||
diff --git a/ld/testsuite/ld-scripts/print-memory-usage.t b/ld/testsuite/ld-scripts/print-memory-usage.t
|
||||
index 5ff057a..6eda1d2 100644
|
||||
--- a/ld/testsuite/ld-scripts/print-memory-usage.t
|
||||
+++ b/ld/testsuite/ld-scripts/print-memory-usage.t
|
||||
@@ -11,4 +11,6 @@ SECTIONS
|
||||
*(.data)
|
||||
*(.rw)
|
||||
}
|
||||
+
|
||||
+ /DISCARD/ : { *(.note.gnu.property) }
|
||||
}
|
||||
diff --git a/ld/testsuite/ld-scripts/size-2.t b/ld/testsuite/ld-scripts/size-2.t
|
||||
index 7238639..c3c4edd 100644
|
||||
--- a/ld/testsuite/ld-scripts/size-2.t
|
||||
+++ b/ld/testsuite/ld-scripts/size-2.t
|
||||
@@ -18,4 +18,5 @@ SECTIONS
|
||||
LONG (SIZEOF (.tdata))
|
||||
LONG (SIZEOF (.tbss))
|
||||
} :image
|
||||
+ /DISCARD/ : { *(.note.gnu.property) }
|
||||
}
|
||||
diff --git a/ld/testsuite/ld-x86-64/abs-k1om.d b/ld/testsuite/ld-x86-64/abs-k1om.d
|
||||
index 2c26639..6b0fde0 100644
|
||||
--- a/ld/testsuite/ld-x86-64/abs-k1om.d
|
||||
+++ b/ld/testsuite/ld-x86-64/abs-k1om.d
|
||||
@@ -2,7 +2,7 @@
|
||||
#source: ../ld-i386/abs.s
|
||||
#source: ../ld-i386/zero.s
|
||||
#as: --64 -march=k1om
|
||||
-#ld: -m elf_k1om
|
||||
+#ld: -m elf_k1om -z noseparate-code
|
||||
#objdump: -rs -j .text
|
||||
|
||||
.*: file format .*
|
||||
diff --git a/ld/testsuite/ld-x86-64/abs-l1om.d b/ld/testsuite/ld-x86-64/abs-l1om.d
|
||||
index 1fb96d4..f87869f 100644
|
||||
--- a/ld/testsuite/ld-x86-64/abs-l1om.d
|
||||
+++ b/ld/testsuite/ld-x86-64/abs-l1om.d
|
||||
@@ -2,7 +2,7 @@
|
||||
#source: ../ld-i386/abs.s
|
||||
#source: ../ld-i386/zero.s
|
||||
#as: --64 -march=l1om
|
||||
-#ld: -m elf_l1om
|
||||
+#ld: -m elf_l1om -z noseparate-code
|
||||
#objdump: -rs -j .text
|
||||
#target: x86_64-*-linux*
|
||||
|
||||
diff --git a/ld/testsuite/ld-x86-64/abs.d b/ld/testsuite/ld-x86-64/abs.d
|
||||
index b24b018..d99ab46 100644
|
||||
--- a/ld/testsuite/ld-x86-64/abs.d
|
||||
+++ b/ld/testsuite/ld-x86-64/abs.d
|
||||
@@ -1,7 +1,7 @@
|
||||
#name: Absolute non-overflowing relocs
|
||||
#source: ../ld-i386/abs.s
|
||||
#source: ../ld-i386/zero.s
|
||||
-#ld:
|
||||
+#ld: -z noseparate-code
|
||||
#objdump: -rs
|
||||
|
||||
.*: file format .*
|
||||
diff --git a/ld/testsuite/ld-x86-64/pr12718.d b/ld/testsuite/ld-x86-64/pr12718.d
|
||||
index 07d1732..2c503ff 100644
|
||||
--- a/ld/testsuite/ld-x86-64/pr12718.d
|
||||
+++ b/ld/testsuite/ld-x86-64/pr12718.d
|
||||
@@ -1,6 +1,6 @@
|
||||
#name: PR ld/12718
|
||||
#as: --64
|
||||
-#ld: -melf_x86_64
|
||||
+#ld: -melf_x86_64 -z noseparate-code
|
||||
#readelf: -S --wide
|
||||
|
||||
There are 5 section headers, starting at offset 0x[0-9a-f]+:
|
||||
diff --git a/ld/testsuite/ld-x86-64/pr12921.d b/ld/testsuite/ld-x86-64/pr12921.d
|
||||
index 6fe6abe..1162d55 100644
|
||||
--- a/ld/testsuite/ld-x86-64/pr12921.d
|
||||
+++ b/ld/testsuite/ld-x86-64/pr12921.d
|
||||
@@ -1,6 +1,6 @@
|
||||
#name: PR ld/12921
|
||||
#as: --64
|
||||
-#ld: -melf_x86_64
|
||||
+#ld: -melf_x86_64 -z noseparate-code
|
||||
#readelf: -S --wide
|
||||
|
||||
There are 7 section headers, starting at offset 0x[0-9a-f]+:
|
||||
diff --git a/ld/testsuite/lib/ld-lib.exp b/ld/testsuite/lib/ld-lib.exp
|
||||
index cfbefe9..1095091 100644
|
||||
--- a/ld/testsuite/lib/ld-lib.exp
|
||||
+++ b/ld/testsuite/lib/ld-lib.exp
|
||||
@@ -1482,7 +1482,10 @@ proc run_ld_link_exec_tests { ldtests args } {
|
||||
continue
|
||||
}
|
||||
|
||||
- if { [ string match "c++" $lang ] } {
|
||||
+ if { [ string match "asm" $lang ] } {
|
||||
+ set link_proc ld_link
|
||||
+ set link_cmd $ld
|
||||
+ } elseif { [ string match "c++" $lang ] } {
|
||||
set link_proc ld_link
|
||||
set link_cmd $CXX
|
||||
} else {
|
||||
--
|
||||
2.9.3
|
||||
|
||||
@@ -0,0 +1,139 @@
|
||||
From 28a27bdbb9500797e6767f80c8128b09112aeed5 Mon Sep 17 00:00:00 2001
|
||||
From: "H.J. Lu" <hjl.tools@gmail.com>
|
||||
Date: Sat, 11 Aug 2018 06:41:33 -0700
|
||||
Subject: [PATCH] x86: Properly add X86_ISA_1_NEEDED property
|
||||
|
||||
Existing properties may be removed during property merging. We avoid
|
||||
adding X86_ISA_1_NEEDED property only if existing properties won't be
|
||||
removed.
|
||||
|
||||
bfd/
|
||||
|
||||
PR ld/23428
|
||||
* elfxx-x86.c (_bfd_x86_elf_link_setup_gnu_properties): Don't
|
||||
add X86_ISA_1_NEEDED property only if existing properties won't
|
||||
be removed.
|
||||
|
||||
ld/
|
||||
|
||||
PR ld/23428
|
||||
* testsuite/ld-elf/dummy.s: New file.
|
||||
* testsuite/ld-elf/linux-x86.S: Add X86_FEATURE_1_AND property.
|
||||
* testsuite/ld-elf/linux-x86.exp: Add dummy.s to pr23428.
|
||||
|
||||
(cherry picked from commit ab9e342807d132182892de1be1a92d6e91a5c1da)
|
||||
---
|
||||
bfd/ChangeLog | 7 +++++++
|
||||
bfd/elfxx-x86.c | 28 ++++++++++++++++++++++------
|
||||
ld/ChangeLog | 7 +++++++
|
||||
ld/testsuite/ld-elf/dummy.s | 1 +
|
||||
ld/testsuite/ld-elf/linux-x86.S | 28 ++++++++++++++++++++++++++++
|
||||
ld/testsuite/ld-elf/linux-x86.exp | 2 +-
|
||||
6 files changed, 66 insertions(+), 7 deletions(-)
|
||||
create mode 100644 ld/testsuite/ld-elf/dummy.s
|
||||
|
||||
diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c
|
||||
index 7ccfd25..2d8f7b6 100644
|
||||
--- a/bfd/elfxx-x86.c
|
||||
+++ b/bfd/elfxx-x86.c
|
||||
@@ -2588,7 +2588,6 @@ _bfd_x86_elf_link_setup_gnu_properties
|
||||
prop->pr_kind = property_number;
|
||||
}
|
||||
else if (has_text
|
||||
- && elf_properties (ebfd) == NULL
|
||||
&& elf_tdata (info->output_bfd)->o->build_id.sec == NULL
|
||||
&& !htab->elf.dynamic_sections_created
|
||||
&& !info->traditional_format
|
||||
@@ -2598,11 +2597,28 @@ _bfd_x86_elf_link_setup_gnu_properties
|
||||
/* If the separate code program header is needed, make sure
|
||||
that the first read-only PT_LOAD segment has no code by
|
||||
adding a GNU_PROPERTY_X86_ISA_1_NEEDED note. */
|
||||
- prop = _bfd_elf_get_property (ebfd,
|
||||
- GNU_PROPERTY_X86_ISA_1_NEEDED,
|
||||
- 4);
|
||||
- prop->u.number = GNU_PROPERTY_X86_ISA_1_486;
|
||||
- prop->pr_kind = property_number;
|
||||
+ elf_property_list *list;
|
||||
+ bfd_boolean need_property = TRUE;
|
||||
+
|
||||
+ for (list = elf_properties (ebfd); list; list = list->next)
|
||||
+ switch (list->property.pr_type)
|
||||
+ {
|
||||
+ case GNU_PROPERTY_STACK_SIZE:
|
||||
+ case GNU_PROPERTY_NO_COPY_ON_PROTECTED:
|
||||
+ case GNU_PROPERTY_X86_ISA_1_NEEDED:
|
||||
+ /* These properties won't be removed during merging. */
|
||||
+ need_property = FALSE;
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ if (need_property)
|
||||
+ {
|
||||
+ prop = _bfd_elf_get_property (ebfd,
|
||||
+ GNU_PROPERTY_X86_ISA_1_NEEDED,
|
||||
+ 4);
|
||||
+ prop->u.number = GNU_PROPERTY_X86_ISA_1_486;
|
||||
+ prop->pr_kind = property_number;
|
||||
+ }
|
||||
}
|
||||
|
||||
/* Create the GNU property note section if needed. */
|
||||
diff --git a/ld/testsuite/ld-elf/dummy.s b/ld/testsuite/ld-elf/dummy.s
|
||||
new file mode 100644
|
||||
index 0000000..403f980
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-elf/dummy.s
|
||||
@@ -0,0 +1 @@
|
||||
+# Dummy
|
||||
diff --git a/ld/testsuite/ld-elf/linux-x86.S b/ld/testsuite/ld-elf/linux-x86.S
|
||||
index bdf40c6..d94abc1 100644
|
||||
--- a/ld/testsuite/ld-elf/linux-x86.S
|
||||
+++ b/ld/testsuite/ld-elf/linux-x86.S
|
||||
@@ -61,3 +61,31 @@ syscall:
|
||||
ret /* Return to caller. */
|
||||
.size syscall, .-syscall
|
||||
.section .note.GNU-stack,"",@progbits
|
||||
+
|
||||
+ .section ".note.gnu.property", "a"
|
||||
+#ifdef __LP64__
|
||||
+ .p2align 3
|
||||
+#else
|
||||
+ .p2align 2
|
||||
+#endif
|
||||
+ .long 1f - 0f /* name length */
|
||||
+ .long 5f - 2f /* data length */
|
||||
+ .long 5 /* note type */
|
||||
+0: .asciz "GNU" /* vendor name */
|
||||
+1:
|
||||
+#ifdef __LP64__
|
||||
+ .p2align 3
|
||||
+#else
|
||||
+ .p2align 2
|
||||
+#endif
|
||||
+2: .long 0xc0000002 /* pr_type. */
|
||||
+ .long 4f - 3f /* pr_datasz. */
|
||||
+3:
|
||||
+ .long 0x2
|
||||
+4:
|
||||
+#ifdef __LP64__
|
||||
+ .p2align 3
|
||||
+#else
|
||||
+ .p2align 2
|
||||
+#endif
|
||||
+5:
|
||||
diff --git a/ld/testsuite/ld-elf/linux-x86.exp b/ld/testsuite/ld-elf/linux-x86.exp
|
||||
index 36217c6..f6f5a80 100644
|
||||
--- a/ld/testsuite/ld-elf/linux-x86.exp
|
||||
+++ b/ld/testsuite/ld-elf/linux-x86.exp
|
||||
@@ -37,7 +37,7 @@ run_ld_link_exec_tests [list \
|
||||
"Run PR ld/23428 test" \
|
||||
"--no-dynamic-linker -z separate-code" \
|
||||
"" \
|
||||
- { linux-x86.S pr23428.c } \
|
||||
+ { linux-x86.S pr23428.c dummy.s } \
|
||||
"pr23428" \
|
||||
"pass.out" \
|
||||
"$NOPIE_CFLAGS -fno-asynchronous-unwind-tables" \
|
||||
--
|
||||
2.9.3
|
||||
|
||||
@@ -0,0 +1,587 @@
|
||||
From d55c3e36094f06bb1fb02f5eac19fdccf1d91f7e Mon Sep 17 00:00:00 2001
|
||||
From: "H.J. Lu" <hjl.tools@gmail.com>
|
||||
Date: Wed, 8 Aug 2018 06:09:15 -0700
|
||||
Subject: [PATCH] x86: Properly merge GNU_PROPERTY_X86_ISA_1_USED
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=utf8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Without the GNU_PROPERTY_X86_ISA_1_USED property, all ISAs may be used.
|
||||
If a bit in the GNU_PROPERTY_X86_ISA_1_USED property is unset, the
|
||||
corresponding x86 instruction set isnât used. When merging properties
|
||||
from 2 input files and one input file doesn't have the
|
||||
GNU_PROPERTY_X86_ISA_1_USED property, the output file shouldn't have
|
||||
it neither. This patch removes the GNU_PROPERTY_X86_ISA_1_USED
|
||||
property if an input file doesn't have it.
|
||||
|
||||
This patch replaces the GNU_PROPERTY_X86_ISA_1_USED property with the
|
||||
GNU_PROPERTY_X86_ISA_1_NEEDED property which is the minimum ISA
|
||||
requirement.
|
||||
|
||||
bfd/
|
||||
|
||||
PR ld/23486
|
||||
* elfxx-x86.c (_bfd_x86_elf_merge_gnu_properties): Remove
|
||||
GNU_PROPERTY_X86_ISA_1_USED if an input file doesn't have it.
|
||||
(_bfd_x86_elf_link_setup_gnu_properties): Adding the
|
||||
GNU_PROPERTY_X86_ISA_1_NEEDED, instead of
|
||||
GNU_PROPERTY_X86_ISA_1_USED, property.
|
||||
|
||||
ld/
|
||||
|
||||
PR ld/23486
|
||||
* testsuite/ld-i386/i386.exp: Run PR ld/23486 tests.
|
||||
* testsuite/ld-x86-64/x86-64.exp: Likewise.
|
||||
* testsuite/ld-i386/pr23486a.d: New file.
|
||||
* testsuite/ld-i386/pr23486b.d: Likewise.
|
||||
* testsuite/ld-x86-64/pr23486a-x32.d: Likewise.
|
||||
* testsuite/ld-x86-64/pr23486a.d: Likewise.
|
||||
* testsuite/ld-x86-64/pr23486a.s: Likewise.
|
||||
* testsuite/ld-x86-64/pr23486b-x32.d: Likewise.
|
||||
* testsuite/ld-x86-64/pr23486b.d: Likewise.
|
||||
* testsuite/ld-x86-64/pr23486b.s: Likewise.
|
||||
* testsuite/ld-i386/property-3.r: Remove "x86 ISA used".
|
||||
* testsuite/ld-i386/property-4.r: Likewise.
|
||||
* testsuite/ld-i386/property-5.r: Likewise.
|
||||
* testsuite/ld-i386/property-x86-ibt3a.d: Likewise.
|
||||
* testsuite/ld-i386/property-x86-ibt3b.d: Likewise.
|
||||
* testsuite/ld-i386/property-x86-shstk3a.d: Likewise.
|
||||
* testsuite/ld-i386/property-x86-shstk3b.d: Likewise.
|
||||
* testsuite/ld-x86-64/property-3.r: Likewise.
|
||||
* testsuite/ld-x86-64/property-4.r: Likewise.
|
||||
* testsuite/ld-x86-64/property-5.r: Likewise.
|
||||
* testsuite/ld-x86-64/property-x86-ibt3a-x32.d: Likewise.
|
||||
* testsuite/ld-x86-64/property-x86-ibt3a.d: Likewise.
|
||||
* testsuite/ld-x86-64/property-x86-ibt3b-x32.d: Likewise.
|
||||
* testsuite/ld-x86-64/property-x86-ibt3b.d: Likewise.
|
||||
* testsuite/ld-x86-64/property-x86-shstk3a-x32.d: Likewise.
|
||||
* testsuite/ld-x86-64/property-x86-shstk3a.d: Likewise.
|
||||
* testsuite/ld-x86-64/property-x86-shstk3b-x32.d: Likewise.
|
||||
* testsuite/ld-x86-64/property-x86-shstk3b.d: Likewise.
|
||||
|
||||
(cherry picked from commit f7309df20c4e787041cedc4a6aced89c15259e54)
|
||||
---
|
||||
bfd/ChangeLog | 9 +++++++
|
||||
bfd/elfxx-x86.c | 25 ++++++++++++++----
|
||||
ld/ChangeLog | 32 +++++++++++++++++++++++
|
||||
ld/testsuite/ld-i386/i386.exp | 2 ++
|
||||
ld/testsuite/ld-i386/pr23486a.d | 10 +++++++
|
||||
ld/testsuite/ld-i386/pr23486b.d | 10 +++++++
|
||||
ld/testsuite/ld-i386/property-3.r | 1 -
|
||||
ld/testsuite/ld-i386/property-4.r | 1 -
|
||||
ld/testsuite/ld-i386/property-5.r | 1 -
|
||||
ld/testsuite/ld-i386/property-x86-ibt3a.d | 5 ++--
|
||||
ld/testsuite/ld-i386/property-x86-ibt3b.d | 5 ++--
|
||||
ld/testsuite/ld-i386/property-x86-shstk3a.d | 5 ++--
|
||||
ld/testsuite/ld-i386/property-x86-shstk3b.d | 5 ++--
|
||||
ld/testsuite/ld-x86-64/pr23486a-x32.d | 10 +++++++
|
||||
ld/testsuite/ld-x86-64/pr23486a.d | 10 +++++++
|
||||
ld/testsuite/ld-x86-64/pr23486a.s | 30 +++++++++++++++++++++
|
||||
ld/testsuite/ld-x86-64/pr23486b-x32.d | 10 +++++++
|
||||
ld/testsuite/ld-x86-64/pr23486b.d | 10 +++++++
|
||||
ld/testsuite/ld-x86-64/pr23486b.s | 30 +++++++++++++++++++++
|
||||
ld/testsuite/ld-x86-64/property-3.r | 1 -
|
||||
ld/testsuite/ld-x86-64/property-4.r | 1 -
|
||||
ld/testsuite/ld-x86-64/property-5.r | 1 -
|
||||
ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d | 5 ++--
|
||||
ld/testsuite/ld-x86-64/property-x86-ibt3a.d | 5 ++--
|
||||
ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d | 5 ++--
|
||||
ld/testsuite/ld-x86-64/property-x86-ibt3b.d | 5 ++--
|
||||
ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d | 5 ++--
|
||||
ld/testsuite/ld-x86-64/property-x86-shstk3a.d | 5 ++--
|
||||
ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d | 5 ++--
|
||||
ld/testsuite/ld-x86-64/property-x86-shstk3b.d | 5 ++--
|
||||
ld/testsuite/ld-x86-64/x86-64.exp | 4 +++
|
||||
31 files changed, 211 insertions(+), 47 deletions(-)
|
||||
create mode 100644 ld/testsuite/ld-i386/pr23486a.d
|
||||
create mode 100644 ld/testsuite/ld-i386/pr23486b.d
|
||||
create mode 100644 ld/testsuite/ld-x86-64/pr23486a-x32.d
|
||||
create mode 100644 ld/testsuite/ld-x86-64/pr23486a.d
|
||||
create mode 100644 ld/testsuite/ld-x86-64/pr23486a.s
|
||||
create mode 100644 ld/testsuite/ld-x86-64/pr23486b-x32.d
|
||||
create mode 100644 ld/testsuite/ld-x86-64/pr23486b.d
|
||||
create mode 100644 ld/testsuite/ld-x86-64/pr23486b.s
|
||||
|
||||
diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c
|
||||
index 2e4ff88..7ccfd25 100644
|
||||
--- a/bfd/elfxx-x86.c
|
||||
+++ b/bfd/elfxx-x86.c
|
||||
@@ -2407,12 +2407,27 @@ _bfd_x86_elf_merge_gnu_properties (struct bfd_link_info *info,
|
||||
switch (pr_type)
|
||||
{
|
||||
case GNU_PROPERTY_X86_ISA_1_USED:
|
||||
+ if (aprop == NULL || bprop == NULL)
|
||||
+ {
|
||||
+ /* Only one of APROP and BPROP can be NULL. */
|
||||
+ if (aprop != NULL)
|
||||
+ {
|
||||
+ /* Remove this property since the other input file doesn't
|
||||
+ have it. */
|
||||
+ aprop->pr_kind = property_remove;
|
||||
+ updated = TRUE;
|
||||
+ }
|
||||
+ break;
|
||||
+ }
|
||||
+ goto or_property;
|
||||
+
|
||||
case GNU_PROPERTY_X86_ISA_1_NEEDED:
|
||||
if (aprop != NULL && bprop != NULL)
|
||||
{
|
||||
+or_property:
|
||||
number = aprop->u.number;
|
||||
aprop->u.number = number | bprop->u.number;
|
||||
- /* Remove the property if ISA bits are empty. */
|
||||
+ /* Remove the property if all bits are empty. */
|
||||
if (aprop->u.number == 0)
|
||||
{
|
||||
aprop->pr_kind = property_remove;
|
||||
@@ -2428,14 +2443,14 @@ _bfd_x86_elf_merge_gnu_properties (struct bfd_link_info *info,
|
||||
{
|
||||
if (aprop->u.number == 0)
|
||||
{
|
||||
- /* Remove APROP if ISA bits are empty. */
|
||||
+ /* Remove APROP if all bits are empty. */
|
||||
aprop->pr_kind = property_remove;
|
||||
updated = TRUE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
- /* Return TRUE if APROP is NULL and ISA bits of BPROP
|
||||
+ /* Return TRUE if APROP is NULL and all bits of BPROP
|
||||
aren't empty to indicate that BPROP should be added
|
||||
to ABFD. */
|
||||
updated = bprop->u.number != 0;
|
||||
@@ -2582,9 +2597,9 @@ _bfd_x86_elf_link_setup_gnu_properties
|
||||
{
|
||||
/* If the separate code program header is needed, make sure
|
||||
that the first read-only PT_LOAD segment has no code by
|
||||
- adding a GNU_PROPERTY_X86_ISA_1_USED note. */
|
||||
+ adding a GNU_PROPERTY_X86_ISA_1_NEEDED note. */
|
||||
prop = _bfd_elf_get_property (ebfd,
|
||||
- GNU_PROPERTY_X86_ISA_1_USED,
|
||||
+ GNU_PROPERTY_X86_ISA_1_NEEDED,
|
||||
4);
|
||||
prop->u.number = GNU_PROPERTY_X86_ISA_1_486;
|
||||
prop->pr_kind = property_number;
|
||||
diff --git a/ld/testsuite/ld-i386/i386.exp b/ld/testsuite/ld-i386/i386.exp
|
||||
index 6d794fe..78dad02 100644
|
||||
--- a/ld/testsuite/ld-i386/i386.exp
|
||||
+++ b/ld/testsuite/ld-i386/i386.exp
|
||||
@@ -462,6 +462,8 @@ run_dump_test "pr23189"
|
||||
run_dump_test "pr23194"
|
||||
run_dump_test "pr23372a"
|
||||
run_dump_test "pr23372b"
|
||||
+run_dump_test "pr23486a"
|
||||
+run_dump_test "pr23486b"
|
||||
|
||||
if { !([istarget "i?86-*-linux*"]
|
||||
|| [istarget "i?86-*-gnu*"]
|
||||
diff --git a/ld/testsuite/ld-i386/pr23486a.d b/ld/testsuite/ld-i386/pr23486a.d
|
||||
new file mode 100644
|
||||
index 0000000..41a6dcf
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-i386/pr23486a.d
|
||||
@@ -0,0 +1,10 @@
|
||||
+#source: ../ld-x86-64/pr23486a.s
|
||||
+#source: ../ld-x86-64/pr23486b.s
|
||||
+#as: --32
|
||||
+#ld: -r -m elf_i386
|
||||
+#readelf: -n
|
||||
+
|
||||
+Displaying notes found in: .note.gnu.property
|
||||
+ Owner Data size Description
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586
|
||||
diff --git a/ld/testsuite/ld-i386/pr23486b.d b/ld/testsuite/ld-i386/pr23486b.d
|
||||
new file mode 100644
|
||||
index 0000000..08019b7
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-i386/pr23486b.d
|
||||
@@ -0,0 +1,10 @@
|
||||
+#source: ../ld-x86-64/pr23486b.s
|
||||
+#source: ../ld-x86-64/pr23486a.s
|
||||
+#as: --32
|
||||
+#ld: -r -m elf_i386
|
||||
+#readelf: -n
|
||||
+
|
||||
+Displaying notes found in: .note.gnu.property
|
||||
+ Owner Data size Description
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586
|
||||
diff --git a/ld/testsuite/ld-i386/property-3.r b/ld/testsuite/ld-i386/property-3.r
|
||||
index 0ed91f5..d03203c 100644
|
||||
--- a/ld/testsuite/ld-i386/property-3.r
|
||||
+++ b/ld/testsuite/ld-i386/property-3.r
|
||||
@@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: stack size: 0x800000
|
||||
- x86 ISA used: 586, SSE
|
||||
x86 ISA needed: i486, 586
|
||||
#pass
|
||||
diff --git a/ld/testsuite/ld-i386/property-4.r b/ld/testsuite/ld-i386/property-4.r
|
||||
index cb2bc15..da295eb 100644
|
||||
--- a/ld/testsuite/ld-i386/property-4.r
|
||||
+++ b/ld/testsuite/ld-i386/property-4.r
|
||||
@@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: stack size: 0x800000
|
||||
- x86 ISA used: i486, 586, SSE
|
||||
x86 ISA needed: i486, 586, SSE
|
||||
#pass
|
||||
diff --git a/ld/testsuite/ld-i386/property-5.r b/ld/testsuite/ld-i386/property-5.r
|
||||
index 5529650..e414159 100644
|
||||
--- a/ld/testsuite/ld-i386/property-5.r
|
||||
+++ b/ld/testsuite/ld-i386/property-5.r
|
||||
@@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: stack size: 0x900000
|
||||
- x86 ISA used: i486, 586, SSE
|
||||
x86 ISA needed: i486, 586, SSE
|
||||
#pass
|
||||
diff --git a/ld/testsuite/ld-i386/property-x86-ibt3a.d b/ld/testsuite/ld-i386/property-x86-ibt3a.d
|
||||
index 4bb35b0..0aedea1 100644
|
||||
--- a/ld/testsuite/ld-i386/property-x86-ibt3a.d
|
||||
+++ b/ld/testsuite/ld-i386/property-x86-ibt3a.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: i486, 586, SSE2, SSE3
|
||||
- x86 ISA needed: 586, SSE, SSE3, SSE4_1
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: 586, SSE, SSE3, SSE4_1
|
||||
diff --git a/ld/testsuite/ld-i386/property-x86-ibt3b.d b/ld/testsuite/ld-i386/property-x86-ibt3b.d
|
||||
index 418d58a..bd69ac6 100644
|
||||
--- a/ld/testsuite/ld-i386/property-x86-ibt3b.d
|
||||
+++ b/ld/testsuite/ld-i386/property-x86-ibt3b.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: i486, 586, SSE2, SSE3
|
||||
- x86 ISA needed: 586, SSE, SSE3, SSE4_1
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: 586, SSE, SSE3, SSE4_1
|
||||
diff --git a/ld/testsuite/ld-i386/property-x86-shstk3a.d b/ld/testsuite/ld-i386/property-x86-shstk3a.d
|
||||
index e261038..76d2a39 100644
|
||||
--- a/ld/testsuite/ld-i386/property-x86-shstk3a.d
|
||||
+++ b/ld/testsuite/ld-i386/property-x86-shstk3a.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: i486, 586, SSE2, SSE3
|
||||
- x86 ISA needed: 586, SSE, SSE3, SSE4_1
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: 586, SSE, SSE3, SSE4_1
|
||||
diff --git a/ld/testsuite/ld-i386/property-x86-shstk3b.d b/ld/testsuite/ld-i386/property-x86-shstk3b.d
|
||||
index 25f3d23..e770ecf 100644
|
||||
--- a/ld/testsuite/ld-i386/property-x86-shstk3b.d
|
||||
+++ b/ld/testsuite/ld-i386/property-x86-shstk3b.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: i486, 586, SSE2, SSE3
|
||||
- x86 ISA needed: 586, SSE, SSE3, SSE4_1
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: 586, SSE, SSE3, SSE4_1
|
||||
diff --git a/ld/testsuite/ld-x86-64/pr23486a-x32.d b/ld/testsuite/ld-x86-64/pr23486a-x32.d
|
||||
new file mode 100644
|
||||
index 0000000..6d9fa68
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-x86-64/pr23486a-x32.d
|
||||
@@ -0,0 +1,10 @@
|
||||
+#source: pr23486a.s
|
||||
+#source: pr23486b.s
|
||||
+#as: --x32
|
||||
+#ld: -r -m elf32_x86_64
|
||||
+#readelf: -n
|
||||
+
|
||||
+Displaying notes found in: .note.gnu.property
|
||||
+ Owner Data size Description
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586
|
||||
diff --git a/ld/testsuite/ld-x86-64/pr23486a.d b/ld/testsuite/ld-x86-64/pr23486a.d
|
||||
new file mode 100644
|
||||
index 0000000..dc2b7bf
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-x86-64/pr23486a.d
|
||||
@@ -0,0 +1,10 @@
|
||||
+#source: pr23486a.s
|
||||
+#source: pr23486b.s
|
||||
+#as: --64 -defsym __64_bit__=1
|
||||
+#ld: -r -m elf_x86_64
|
||||
+#readelf: -n
|
||||
+
|
||||
+Displaying notes found in: .note.gnu.property
|
||||
+ Owner Data size Description
|
||||
+ GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586
|
||||
diff --git a/ld/testsuite/ld-x86-64/pr23486a.s b/ld/testsuite/ld-x86-64/pr23486a.s
|
||||
new file mode 100644
|
||||
index 0000000..a07d0c7
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-x86-64/pr23486a.s
|
||||
@@ -0,0 +1,30 @@
|
||||
+ .section ".note.gnu.property", "a"
|
||||
+.ifdef __64_bit__
|
||||
+ .p2align 3
|
||||
+.else
|
||||
+ .p2align 2
|
||||
+.endif
|
||||
+ .long 1f - 0f /* name length. */
|
||||
+ .long 4f - 1f /* data length. */
|
||||
+ /* NT_GNU_PROPERTY_TYPE_0 */
|
||||
+ .long 5 /* note type. */
|
||||
+0:
|
||||
+ .asciz "GNU" /* vendor name. */
|
||||
+1:
|
||||
+.ifdef __64_bit__
|
||||
+ .p2align 3
|
||||
+.else
|
||||
+ .p2align 2
|
||||
+.endif
|
||||
+ /* GNU_PROPERTY_X86_ISA_1_USED */
|
||||
+ .long 0xc0000000 /* pr_type. */
|
||||
+ .long 3f - 2f /* pr_datasz. */
|
||||
+2:
|
||||
+ .long 0xa
|
||||
+3:
|
||||
+.ifdef __64_bit__
|
||||
+ .p2align 3
|
||||
+.else
|
||||
+ .p2align 2
|
||||
+.endif
|
||||
+4:
|
||||
diff --git a/ld/testsuite/ld-x86-64/pr23486b-x32.d b/ld/testsuite/ld-x86-64/pr23486b-x32.d
|
||||
new file mode 100644
|
||||
index 0000000..0445e69
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-x86-64/pr23486b-x32.d
|
||||
@@ -0,0 +1,10 @@
|
||||
+#source: pr23486b.s
|
||||
+#source: pr23486a.s
|
||||
+#as: --x32
|
||||
+#ld: -r -m elf32_x86_64
|
||||
+#readelf: -n
|
||||
+
|
||||
+Displaying notes found in: .note.gnu.property
|
||||
+ Owner Data size Description
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586
|
||||
diff --git a/ld/testsuite/ld-x86-64/pr23486b.d b/ld/testsuite/ld-x86-64/pr23486b.d
|
||||
new file mode 100644
|
||||
index 0000000..dc2b7bf
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-x86-64/pr23486b.d
|
||||
@@ -0,0 +1,10 @@
|
||||
+#source: pr23486a.s
|
||||
+#source: pr23486b.s
|
||||
+#as: --64 -defsym __64_bit__=1
|
||||
+#ld: -r -m elf_x86_64
|
||||
+#readelf: -n
|
||||
+
|
||||
+Displaying notes found in: .note.gnu.property
|
||||
+ Owner Data size Description
|
||||
+ GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586
|
||||
diff --git a/ld/testsuite/ld-x86-64/pr23486b.s b/ld/testsuite/ld-x86-64/pr23486b.s
|
||||
new file mode 100644
|
||||
index 0000000..c5167ee
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-x86-64/pr23486b.s
|
||||
@@ -0,0 +1,30 @@
|
||||
+ .section ".note.gnu.property", "a"
|
||||
+.ifdef __64_bit__
|
||||
+ .p2align 3
|
||||
+.else
|
||||
+ .p2align 2
|
||||
+.endif
|
||||
+ .long 1f - 0f /* name length. */
|
||||
+ .long 4f - 1f /* data length. */
|
||||
+ /* NT_GNU_PROPERTY_TYPE_0 */
|
||||
+ .long 5 /* note type. */
|
||||
+0:
|
||||
+ .asciz "GNU" /* vendor name. */
|
||||
+1:
|
||||
+.ifdef __64_bit__
|
||||
+ .p2align 3
|
||||
+.else
|
||||
+ .p2align 2
|
||||
+.endif
|
||||
+ /* GNU_PROPERTY_X86_ISA_1_NEEDED */
|
||||
+ .long 0xc0000001 /* pr_type. */
|
||||
+ .long 3f - 2f /* pr_datasz. */
|
||||
+2:
|
||||
+ .long 0x3
|
||||
+3:
|
||||
+.ifdef __64_bit__
|
||||
+ .p2align 3
|
||||
+.else
|
||||
+ .p2align 2
|
||||
+.endif
|
||||
+4:
|
||||
diff --git a/ld/testsuite/ld-x86-64/property-3.r b/ld/testsuite/ld-x86-64/property-3.r
|
||||
index 0ed91f5..d03203c 100644
|
||||
--- a/ld/testsuite/ld-x86-64/property-3.r
|
||||
+++ b/ld/testsuite/ld-x86-64/property-3.r
|
||||
@@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: stack size: 0x800000
|
||||
- x86 ISA used: 586, SSE
|
||||
x86 ISA needed: i486, 586
|
||||
#pass
|
||||
diff --git a/ld/testsuite/ld-x86-64/property-4.r b/ld/testsuite/ld-x86-64/property-4.r
|
||||
index cb2bc15..da295eb 100644
|
||||
--- a/ld/testsuite/ld-x86-64/property-4.r
|
||||
+++ b/ld/testsuite/ld-x86-64/property-4.r
|
||||
@@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: stack size: 0x800000
|
||||
- x86 ISA used: i486, 586, SSE
|
||||
x86 ISA needed: i486, 586, SSE
|
||||
#pass
|
||||
diff --git a/ld/testsuite/ld-x86-64/property-5.r b/ld/testsuite/ld-x86-64/property-5.r
|
||||
index 5529650..e414159 100644
|
||||
--- a/ld/testsuite/ld-x86-64/property-5.r
|
||||
+++ b/ld/testsuite/ld-x86-64/property-5.r
|
||||
@@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: stack size: 0x900000
|
||||
- x86 ISA used: i486, 586, SSE
|
||||
x86 ISA needed: i486, 586, SSE
|
||||
#pass
|
||||
diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d b/ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d
|
||||
index 011426f..4cec728 100644
|
||||
--- a/ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d
|
||||
+++ b/ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
|
||||
- x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt3a.d b/ld/testsuite/ld-x86-64/property-x86-ibt3a.d
|
||||
index 1b4229a..a8df49a 100644
|
||||
--- a/ld/testsuite/ld-x86-64/property-x86-ibt3a.d
|
||||
+++ b/ld/testsuite/ld-x86-64/property-x86-ibt3a.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
|
||||
- x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
+ GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d b/ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d
|
||||
index 290ed6a..c112626 100644
|
||||
--- a/ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d
|
||||
+++ b/ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
|
||||
- x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt3b.d b/ld/testsuite/ld-x86-64/property-x86-ibt3b.d
|
||||
index 1142e03..f10dffd 100644
|
||||
--- a/ld/testsuite/ld-x86-64/property-x86-ibt3b.d
|
||||
+++ b/ld/testsuite/ld-x86-64/property-x86-ibt3b.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
|
||||
- x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
+ GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d b/ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d
|
||||
index 819542d..0147a3c 100644
|
||||
--- a/ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d
|
||||
+++ b/ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
|
||||
- x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk3a.d b/ld/testsuite/ld-x86-64/property-x86-shstk3a.d
|
||||
index 4c5d0e0..1f8c2dc 100644
|
||||
--- a/ld/testsuite/ld-x86-64/property-x86-shstk3a.d
|
||||
+++ b/ld/testsuite/ld-x86-64/property-x86-shstk3a.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
|
||||
- x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
+ GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d b/ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d
|
||||
index ba181e0..7ca2539 100644
|
||||
--- a/ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d
|
||||
+++ b/ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
|
||||
- x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk3b.d b/ld/testsuite/ld-x86-64/property-x86-shstk3b.d
|
||||
index 5216f38..f66a40e 100644
|
||||
--- a/ld/testsuite/ld-x86-64/property-x86-shstk3b.d
|
||||
+++ b/ld/testsuite/ld-x86-64/property-x86-shstk3b.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
|
||||
- x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
+ GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
diff --git a/ld/testsuite/ld-x86-64/x86-64.exp b/ld/testsuite/ld-x86-64/x86-64.exp
|
||||
index 6edb9e8..ae21e55 100644
|
||||
--- a/ld/testsuite/ld-x86-64/x86-64.exp
|
||||
+++ b/ld/testsuite/ld-x86-64/x86-64.exp
|
||||
@@ -403,6 +403,10 @@ run_dump_test "pr23372a"
|
||||
run_dump_test "pr23372a-x32"
|
||||
run_dump_test "pr23372b"
|
||||
run_dump_test "pr23372b-x32"
|
||||
+run_dump_test "pr23486a"
|
||||
+run_dump_test "pr23486a-x32"
|
||||
+run_dump_test "pr23486b"
|
||||
+run_dump_test "pr23486b-x32"
|
||||
|
||||
if { ![istarget "x86_64-*-linux*"] && ![istarget "x86_64-*-nacl*"]} {
|
||||
return
|
||||
--
|
||||
2.9.3
|
||||
|
||||
@@ -1,65 +0,0 @@
|
||||
# Automatically generated aport, do not edit!
|
||||
# Generator: pmbootstrap aportgen binutils-x86_64
|
||||
# Based on: main/binutils
|
||||
|
||||
|
||||
pkgname="binutils-x86_64"
|
||||
pkgver=2.31.1
|
||||
pkgrel=0
|
||||
pkgdesc="Tools necessary to build programs for x86_64 targets"
|
||||
url="https://www.gnu.org/software/binutils/"
|
||||
depends=""
|
||||
makedepends_build=""
|
||||
makedepends_host=""
|
||||
makedepends="gettext libtool autoconf automake bison"
|
||||
arch="armhf aarch64 x86"
|
||||
license="GPL-2.0 GPL-3.0-or-later LGPL-2.0 BSD"
|
||||
subpackages=""
|
||||
source="http://ftp.gnu.org/gnu/binutils/binutils-$pkgver.tar.bz2
|
||||
binutils-ld-fix-static-linking.patch
|
||||
gold-mips.patch
|
||||
"
|
||||
builddir="$srcdir/binutils-$pkgver"
|
||||
|
||||
if [ "$CHOST" != "$CTARGET" ]; then
|
||||
pkgname="binutils-$CTARGET_ARCH"
|
||||
subpackages=""
|
||||
sonameprefix="binutils:"
|
||||
fi
|
||||
|
||||
# secfixes:
|
||||
# 2.28-r1:
|
||||
# - CVE-2017-7614
|
||||
|
||||
build() {
|
||||
_target="$(arch_to_hostspec x86_64)"
|
||||
cd "$builddir"
|
||||
"$builddir"/configure \
|
||||
--build="$CBUILD" \
|
||||
--target=$_target \
|
||||
--with-lib-path=/usr/lib \
|
||||
--prefix=/usr \
|
||||
--with-sysroot=/usr/$_target \
|
||||
--enable-ld=default \
|
||||
--enable-gold=yes \
|
||||
--enable-plugins \
|
||||
--enable-deterministic-archives \
|
||||
--disable-multilib \
|
||||
--disable-werror \
|
||||
--disable-nls
|
||||
make
|
||||
}
|
||||
|
||||
package() {
|
||||
cd "$builddir"
|
||||
make install DESTDIR="$pkgdir"
|
||||
|
||||
# remove man, info folders
|
||||
rm -rf "$pkgdir"/usr/share
|
||||
}
|
||||
|
||||
|
||||
|
||||
sha512sums="b42954e6f49a0adcd2676bdd77dfb59bfc25cec8184b007521d1e2b1d5d0593b58639e3d9448d5a40fe024c3cea386a37743627d6bb16d502f52a4a32b9573bd binutils-2.31.1.tar.bz2
|
||||
ecee33b0e435aa704af1c334e560f201638ff79e199aa11ed78a72f7c9b46f85fbb227af5748e735fd681d1965fcc42ac81b0c8824e540430ce0c706c81e8b49 binutils-ld-fix-static-linking.patch
|
||||
f55cf2e0bf82f97583a1abe10710e4013ecf7d64f1da2ef8659a44a06d0dd8beaf58dab98a183488ea137f03e32d62efc878d95f018f836f8cec870bc448556f gold-mips.patch"
|
||||
@@ -1,93 +0,0 @@
|
||||
From d66deb71f1537e2e30dccdfda22eed5d46ec47eb Mon Sep 17 00:00:00 2001
|
||||
From: Alan Modra <amodra@gmail.com>
|
||||
Date: Wed, 14 Mar 2018 22:09:33 +1030
|
||||
Subject: [PATCH] PowerPC64 debian bug 886264, out-of-line save/restore
|
||||
functions
|
||||
|
||||
This calculation in relocate_section
|
||||
|
||||
if (stub_entry->stub_type == ppc_stub_save_res)
|
||||
relocation += (stub_sec->output_offset
|
||||
+ stub_sec->output_section->vma
|
||||
+ stub_sec->size - htab->sfpr->size
|
||||
- htab->sfpr->output_offset
|
||||
- htab->sfpr->output_section->vma);
|
||||
|
||||
to adjust from the original out-of-line save/restore function address
|
||||
in sfpr to a copy at the end of stub_sec goes wrong when stub_sec is
|
||||
padded, because the copy is no longer at the end of stub_sec. The
|
||||
solution is to pad before copying sfpr, so the copy is always at the
|
||||
end of stub_sec.
|
||||
|
||||
* elf64-ppc.c (sfpr_define): Adjust for stub_sec size having
|
||||
sfpr size added before defining alias symbols.
|
||||
(ppc64_elf_build_stubs): Add stub section padding before
|
||||
copying sfpr contents and defining save/restore alias symbols.
|
||||
|
||||
(cherry picked from commit 7dda8d3cf3b089bb7e03c4cdbec827fc6a188c88)
|
||||
---
|
||||
bfd/ChangeLog | 9 +++++++++
|
||||
bfd/elf64-ppc.c | 33 ++++++++++++++++++---------------
|
||||
2 files changed, 27 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c
|
||||
index 6fcdff0..039294f 100644
|
||||
--- a/bfd/elf64-ppc.c
|
||||
+++ b/bfd/elf64-ppc.c
|
||||
@@ -6645,7 +6645,7 @@ sfpr_define (struct bfd_link_info *info,
|
||||
{
|
||||
s->root.type = bfd_link_hash_defined;
|
||||
s->root.u.def.section = stub_sec;
|
||||
- s->root.u.def.value = (stub_sec->size
|
||||
+ s->root.u.def.value = (stub_sec->size - htab->sfpr->size
|
||||
+ h->elf.root.u.def.value);
|
||||
s->ref_regular = 1;
|
||||
s->def_regular = 1;
|
||||
@@ -13232,20 +13232,7 @@ ppc64_elf_build_stubs (struct bfd_link_info *info,
|
||||
|
||||
for (group = htab->group; group != NULL; group = group->next)
|
||||
if (group->needs_save_res)
|
||||
- {
|
||||
- stub_sec = group->stub_sec;
|
||||
- memcpy (stub_sec->contents + stub_sec->size, htab->sfpr->contents,
|
||||
- htab->sfpr->size);
|
||||
- if (htab->params->emit_stub_syms)
|
||||
- {
|
||||
- unsigned int i;
|
||||
-
|
||||
- for (i = 0; i < ARRAY_SIZE (save_res_funcs); i++)
|
||||
- if (!sfpr_define (info, &save_res_funcs[i], stub_sec))
|
||||
- return FALSE;
|
||||
- }
|
||||
- stub_sec->size += htab->sfpr->size;
|
||||
- }
|
||||
+ group->stub_sec->size += htab->sfpr->size;
|
||||
|
||||
if (htab->relbrlt != NULL)
|
||||
htab->relbrlt->reloc_count = 0;
|
||||
@@ -13259,6 +13246,22 @@ ppc64_elf_build_stubs (struct bfd_link_info *info,
|
||||
}
|
||||
|
||||
for (group = htab->group; group != NULL; group = group->next)
|
||||
+ if (group->needs_save_res)
|
||||
+ {
|
||||
+ stub_sec = group->stub_sec;
|
||||
+ memcpy (stub_sec->contents + stub_sec->size - htab->sfpr->size,
|
||||
+ htab->sfpr->contents, htab->sfpr->size);
|
||||
+ if (htab->params->emit_stub_syms)
|
||||
+ {
|
||||
+ unsigned int i;
|
||||
+
|
||||
+ for (i = 0; i < ARRAY_SIZE (save_res_funcs); i++)
|
||||
+ if (!sfpr_define (info, &save_res_funcs[i], stub_sec))
|
||||
+ return FALSE;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ for (group = htab->group; group != NULL; group = group->next)
|
||||
if ((stub_sec = group->stub_sec) != NULL)
|
||||
{
|
||||
stub_sec_count += 1;
|
||||
--
|
||||
2.9.3
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Generator: pmbootstrap aportgen busybox-static-aarch64
|
||||
|
||||
pkgname=busybox-static-aarch64
|
||||
pkgver=1.28.4
|
||||
pkgrel=2
|
||||
pkgver=1.31.0
|
||||
pkgrel=0
|
||||
|
||||
_arch="aarch64"
|
||||
_mirror="http://dl-cdn.alpinelinux.org/alpine/"
|
||||
@@ -26,4 +26,4 @@ package() {
|
||||
rm .PKGINFO .SIGN.*
|
||||
}
|
||||
|
||||
sha512sums="363f13a3041a65ee96c984f75e46e3b0af985de3ca312b109ee2fbcfea957a69fe75655d3138ca922f8e196fa97c56c7c8a387440962150874a2cc619f07e8b6 busybox-static-1.28.4-r2-aarch64.apk"
|
||||
sha512sums="1b189b920f6a6163ef20128215c25f90f04169d0992ab25f6d1eaa26ae2bf435e0cf553db90bfcf681acbc31eb99d1c9df7ce61738e39355e4ff2c4e8f09e286 busybox-static-1.31.0-r0-aarch64.apk"
|
||||
@@ -2,8 +2,8 @@
|
||||
# Generator: pmbootstrap aportgen busybox-static-armhf
|
||||
|
||||
pkgname=busybox-static-armhf
|
||||
pkgver=1.28.4
|
||||
pkgrel=2
|
||||
pkgver=1.31.0
|
||||
pkgrel=0
|
||||
|
||||
_arch="armhf"
|
||||
_mirror="http://dl-cdn.alpinelinux.org/alpine/"
|
||||
@@ -26,4 +26,4 @@ package() {
|
||||
rm .PKGINFO .SIGN.*
|
||||
}
|
||||
|
||||
sha512sums="e10a339969fee47103d567d4a24237371a13a8519c40c550e64c3129018ff0fbd3bea785391c921087631bf0857e4a2ac46862fd699052f6a0752fb6e5771024 busybox-static-1.28.4-r2-armhf.apk"
|
||||
sha512sums="05645d2ffc8e3af2c17ebd7881c777e392e1bbaeaef2da0bbbb73d0045a218b00da54df99ac64570c4a3f1c6e1a43dfe5657b8b3d2ed69f52683d12c88d8d932 busybox-static-1.31.0-r0-armhf.apk"
|
||||
@@ -0,0 +1,29 @@
|
||||
# Automatically generated aport, do not edit!
|
||||
# Generator: pmbootstrap aportgen busybox-static-armv7
|
||||
|
||||
pkgname=busybox-static-armv7
|
||||
pkgver=1.31.0
|
||||
pkgrel=0
|
||||
|
||||
_arch="armv7"
|
||||
_mirror="http://dl-cdn.alpinelinux.org/alpine/"
|
||||
|
||||
url="http://busybox.net"
|
||||
license="GPL2"
|
||||
arch="all"
|
||||
options="!check !strip"
|
||||
pkgdesc="Statically linked Busybox for $_arch"
|
||||
_target="$(arch_to_hostspec $_arch)"
|
||||
|
||||
source="
|
||||
busybox-static-$pkgver-r$pkgrel-$_arch.apk::$_mirror/edge/main/$_arch/busybox-static-$pkgver-r$pkgrel.apk
|
||||
"
|
||||
|
||||
package() {
|
||||
mkdir -p "$pkgdir/usr/$_target"
|
||||
cd "$pkgdir/usr/$_target"
|
||||
tar -xf $srcdir/busybox-static-$pkgver-r$pkgrel-$_arch.apk
|
||||
rm .PKGINFO .SIGN.*
|
||||
}
|
||||
|
||||
sha512sums="f2f11245bb9fb6056341c57c51185045309470c3de3a32150e716b6e28c12d87fe72faf69edcaffb73297d15af4928a07f8d2b29dd373dd86c9af7ba53165b30 busybox-static-1.31.0-r0-armv7.apk"
|
||||
@@ -4,8 +4,8 @@
|
||||
# ccache, which can then cache the results.
|
||||
|
||||
pkgname=ccache-cross-symlinks
|
||||
pkgver=1
|
||||
pkgrel=4
|
||||
pkgver=2
|
||||
pkgrel=0
|
||||
pkgdesc="Enable ccache for cross-compilers with symlinks"
|
||||
url="https://ccache.samba.org/"
|
||||
arch="noarch"
|
||||
@@ -14,14 +14,21 @@ depends="ccache"
|
||||
options="!check"
|
||||
|
||||
package() {
|
||||
local _archs="armhf aarch64"
|
||||
local _bins="c++ cc cpp g++ gcc"
|
||||
# Keep in sync with pmb.config.build_device_architectures
|
||||
local _archs="armhf armv7 aarch64 x86_64 x86"
|
||||
|
||||
local _bins="c++ cc cpp g++ gcc clang clang++"
|
||||
mkdir -p "$pkgdir/usr/lib/ccache/bin"
|
||||
cd "$pkgdir/usr/lib/ccache/bin"
|
||||
for _arch in $_archs; do
|
||||
if [ "$_arch" = "$CARCH" ]; then
|
||||
continue
|
||||
fi
|
||||
_hostspec="$(arch_to_hostspec $_arch)"
|
||||
for _bin in $_bins; do
|
||||
ln -v -s /usr/bin/ccache ${_hostspec}-${_bin}
|
||||
# Relative symlink, so it works with crossdirect (pointing to
|
||||
# /native/usr/bin/ccache)
|
||||
ln -v -s ../../../bin/ccache ${_hostspec}-${_bin}
|
||||
done
|
||||
done
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
# Wrapper for the "crossdirect" compilation method.
|
||||
# pmbootstrap mounts the native chroot in the foreign arch (e.g. armhf) chroot
|
||||
# as /native. This package gets installed into the native chroot, and creates
|
||||
# wrappers like:
|
||||
#
|
||||
# /native/usr/lib/crossdirect/armhf/gcc
|
||||
# -> /native/usr/bin/armv6-alpine-linux-muslgnueabihf-gcc
|
||||
#
|
||||
# When building packages in the armhf chroot, PATH will get prepended with
|
||||
# "/native/usr/lib/crossdirect/armhf". The end game is of course invoking the
|
||||
# cross compiler from the native chroot, running at native speed, whenever
|
||||
# calling the compiler from the foreign arch chroot. See crossdirect.c for
|
||||
# implementation details (llvm, fakeroot, rpath).
|
||||
|
||||
pkgname=crossdirect
|
||||
pkgver=3
|
||||
pkgrel=0
|
||||
pkgdesc="Wrappers to launch native cross compilers in foreign chroots"
|
||||
url="https://postmarketOS.org"
|
||||
arch="all"
|
||||
license="MIT"
|
||||
options=""
|
||||
source="crossdirect.c"
|
||||
|
||||
build() {
|
||||
cd "$srcdir"
|
||||
# Architectures and binaries
|
||||
_archs="x86_64 armhf armv7 aarch64"
|
||||
for _arch in $_archs; do
|
||||
[ "$_arch" == "$CARCH" ] && continue
|
||||
_hostspec="$(arch_to_hostspec $_arch)"
|
||||
|
||||
# Build with -Werror, because we maintain this short program. (If
|
||||
# upstream is elsewhere, having -Werror is usually not desired.)
|
||||
$CC -o "crossdirect-$_arch" \
|
||||
-static \
|
||||
-Werror \
|
||||
-DHOSTSPEC="\"$_hostspec\"" \
|
||||
crossdirect.c
|
||||
done
|
||||
}
|
||||
|
||||
package() {
|
||||
# Architectures and binaries
|
||||
_archs="x86_64 armhf armv7 aarch64"
|
||||
_bins="c++ cc cpp g++ gcc clang clang++"
|
||||
|
||||
# Iterate over architectures
|
||||
for _arch in $_archs; do
|
||||
[ "$_arch" == "$CARCH" ] && continue
|
||||
|
||||
# Put arch-specific crossdirect wrapper in arch-specific bin folder
|
||||
_bindir="$pkgdir/usr/lib/crossdirect/$_arch"
|
||||
_hostspec="$(arch_to_hostspec $_arch)"
|
||||
mkdir -p "$_bindir"
|
||||
cd "$_bindir"
|
||||
cp "$srcdir/crossdirect-$_arch" "./"
|
||||
|
||||
# Create compiler symlinks
|
||||
for _bin in $_bins; do
|
||||
ln -s "crossdirect-$_arch" "$_bin"
|
||||
ln -s "crossdirect-$_arch" "$_hostspec-$_bin"
|
||||
done
|
||||
done
|
||||
}
|
||||
sha512sums="20b963322820de038257304c1eefa85767b78e242eda7459f06d70a1cfae5540a445aa7d5587024bf4d88a4bee28120ef9f5c2d24a648e71b542b9618318deb2 crossdirect.c"
|
||||
@@ -0,0 +1,94 @@
|
||||
// HOSTSPEC is defined at compile time, see APKBUILD
|
||||
|
||||
#include <errno.h>
|
||||
#include <libgen.h>
|
||||
#include <limits.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#define NATIVE_BIN_DIR "/native/usr/lib/ccache/bin"
|
||||
|
||||
void exit_userfriendly()
|
||||
{
|
||||
fprintf(stderr, "Please report this at: https://gitlab.com/postmarketOS/pmaports/issues\n");
|
||||
fprintf(stderr, "As a workaround, you can compile without crossdirect.\n");
|
||||
fprintf(stderr, "See 'pmbootstrap -h' for related options.\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
bool argv_has_arg(int argc, char **argv, const char *arg)
|
||||
{
|
||||
size_t arg_len = strlen(arg);
|
||||
|
||||
for (int i = 1; i < argc; i++) {
|
||||
if (strlen(argv[i]) < arg_len)
|
||||
continue;
|
||||
|
||||
if (!memcmp(argv[i], arg, arg_len))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
// we have a max of four extra args ("-target", "HOSTSPEC", "--sysroot=/", "-Wl,-rpath-link=/lib:/usr/lib"), plus one ending null
|
||||
char *newargv[argc + 5];
|
||||
char *executableName = basename(argv[0]);
|
||||
char newExecutable[PATH_MAX];
|
||||
bool isClang = (strcmp(executableName, "clang") == 0 || strcmp(executableName, "clang++") == 0);
|
||||
bool startsWithHostSpec = (strncmp(HOSTSPEC, executableName, sizeof(HOSTSPEC) - 1) == 0);
|
||||
|
||||
// linker is involved: just use qemu binary (to avoid broken cross-ld, pmaports#227)
|
||||
if (!argv_has_arg(argc, argv, "-c")) {
|
||||
snprintf(newExecutable, sizeof(newExecutable), "/usr/bin/%s", executableName);
|
||||
if (execv(newExecutable, argv) == -1) {
|
||||
fprintf(stderr, "ERROR: crossdirect: failed to execute %s: %s\n", newExecutable, strerror(errno));
|
||||
fprintf(stderr, "NOTE: this is a foreign arch binary that would run with qemu (linker is involved).\n");
|
||||
exit_userfriendly();
|
||||
}
|
||||
}
|
||||
|
||||
if (isClang || startsWithHostSpec) {
|
||||
snprintf(newExecutable, sizeof(newExecutable), NATIVE_BIN_DIR "/%s", executableName);
|
||||
} else {
|
||||
snprintf(newExecutable, sizeof(newExecutable), NATIVE_BIN_DIR "/" HOSTSPEC "-%s", executableName);
|
||||
}
|
||||
|
||||
char **newArgsPtr = newargv;
|
||||
*newArgsPtr++ = newExecutable;
|
||||
if (isClang) {
|
||||
*newArgsPtr++ = "-target";
|
||||
*newArgsPtr++ = HOSTSPEC;
|
||||
}
|
||||
*newArgsPtr++ = "--sysroot=/";
|
||||
|
||||
memcpy(newArgsPtr, argv + 1, sizeof(char *) * (argc - 1));
|
||||
newArgsPtr += (argc - 1);
|
||||
*newArgsPtr = NULL;
|
||||
|
||||
// new arguments prepared; now setup environmental vars
|
||||
char *env[] = { "LD_PRELOAD=",
|
||||
"LD_LIBRARY_PATH=/native/lib:/native/usr/lib",
|
||||
"CCACHE_PATH=/native/usr/bin",
|
||||
NULL };
|
||||
char *ldPreload = getenv("LD_PRELOAD");
|
||||
if (ldPreload) {
|
||||
if (strcmp(ldPreload, "/usr/lib/libfakeroot.so") == 0) {
|
||||
env[0] = "LD_PRELOAD=/native/usr/lib/libfakeroot.so";
|
||||
} else {
|
||||
fprintf(stderr, "ERROR: crossdirect: can't handle LD_PRELOAD: %s\n", ldPreload);
|
||||
exit_userfriendly();
|
||||
}
|
||||
}
|
||||
|
||||
if (execve(newExecutable, newargv, env) == -1) {
|
||||
fprintf(stderr, "ERROR: crossdirect: failed to execute %s: %s\n", newExecutable, strerror(errno));
|
||||
fprintf(stderr, "Maybe the target arch is missing in the ccache-cross-symlinks package?\n");
|
||||
exit_userfriendly();
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
From 65eb86f3e110998d30489df009d44b4bc1043adc Mon Sep 17 00:00:00 2001
|
||||
From: Szabolcs Nagy <nsz@port70.net>
|
||||
Date: Fri, 26 Jan 2018 20:32:50 +0000
|
||||
Subject: [PATCH 02/12] posix_memalign
|
||||
|
||||
---
|
||||
gcc/config/i386/pmm_malloc.h | 9 +++++----
|
||||
1 file changed, 5 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/gcc/config/i386/pmm_malloc.h b/gcc/config/i386/pmm_malloc.h
|
||||
index ffbb7f82cf5..b0b890d2403 100644
|
||||
--- a/gcc/config/i386/pmm_malloc.h
|
||||
+++ b/gcc/config/i386/pmm_malloc.h
|
||||
@@ -27,12 +27,13 @@
|
||||
#include <stdlib.h>
|
||||
|
||||
/* We can't depend on <stdlib.h> since the prototype of posix_memalign
|
||||
- may not be visible. */
|
||||
+ may not be visible and we can't pollute the namespace either. */
|
||||
#ifndef __cplusplus
|
||||
-extern int posix_memalign (void **, size_t, size_t);
|
||||
+extern int _mm_posix_memalign (void **, size_t, size_t)
|
||||
#else
|
||||
-extern "C" int posix_memalign (void **, size_t, size_t) throw ();
|
||||
+extern "C" int _mm_posix_memalign (void **, size_t, size_t) throw ()
|
||||
#endif
|
||||
+__asm__("posix_memalign");
|
||||
|
||||
static __inline void *
|
||||
_mm_malloc (size_t __size, size_t __alignment)
|
||||
@@ -42,7 +43,7 @@ _mm_malloc (size_t __size, size_t __alignment)
|
||||
return malloc (__size);
|
||||
if (__alignment == 2 || (sizeof (void *) == 8 && __alignment == 4))
|
||||
__alignment = sizeof (void *);
|
||||
- if (posix_memalign (&__ptr, __alignment, __size) == 0)
|
||||
+ if (_mm_posix_memalign (&__ptr, __alignment, __size) == 0)
|
||||
return __ptr;
|
||||
else
|
||||
return NULL;
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -0,0 +1,194 @@
|
||||
From 48c670d2678e0323d88eb72205e039f393cabe05 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 29 Mar 2013 08:59:00 +0400
|
||||
Subject: [PATCH 03/39] gcc: poison-system-directories
|
||||
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
|
||||
Upstream-Status: Inappropriate [distribution: codesourcery]
|
||||
---
|
||||
gcc/common.opt | 4 ++++
|
||||
gcc/config.in | 6 ++++++
|
||||
gcc/configure | 16 ++++++++++++++++
|
||||
gcc/configure.ac | 10 ++++++++++
|
||||
gcc/doc/invoke.texi | 9 +++++++++
|
||||
gcc/gcc.c | 2 ++
|
||||
gcc/incpath.c | 19 +++++++++++++++++++
|
||||
7 files changed, 66 insertions(+)
|
||||
|
||||
diff --git a/gcc/common.opt b/gcc/common.opt
|
||||
index d6ef85928f3..7b29efe3882 100644
|
||||
--- a/gcc/common.opt
|
||||
+++ b/gcc/common.opt
|
||||
@@ -679,6 +679,10 @@ Wreturn-local-addr
|
||||
Common Var(warn_return_local_addr) Init(1) Warning
|
||||
Warn about returning a pointer/reference to a local or temporary variable.
|
||||
|
||||
+Wpoison-system-directories
|
||||
+Common Var(flag_poison_system_directories) Init(1) Warning
|
||||
+Warn for -I and -L options using system directories if cross compiling
|
||||
+
|
||||
Wshadow
|
||||
Common Var(warn_shadow) Warning
|
||||
Warn when one variable shadows another. Same as -Wshadow=global.
|
||||
diff --git a/gcc/config.in b/gcc/config.in
|
||||
index 5bccb408016..1c784a8276b 100644
|
||||
--- a/gcc/config.in
|
||||
+++ b/gcc/config.in
|
||||
@@ -194,6 +194,12 @@
|
||||
#endif
|
||||
|
||||
|
||||
+/* Define to warn for use of native system header directories */
|
||||
+#ifndef USED_FOR_TARGET
|
||||
+#undef ENABLE_POISON_SYSTEM_DIRECTORIES
|
||||
+#endif
|
||||
+
|
||||
+
|
||||
/* Define if you want all operations on RTL (the basic data structure of the
|
||||
optimizer and back end) to be checked for dynamic type safety at runtime.
|
||||
This is quite expensive. */
|
||||
diff --git a/gcc/configure b/gcc/configure
|
||||
index 5c345ce0fd7..cafd05fd150 100755
|
||||
--- a/gcc/configure
|
||||
+++ b/gcc/configure
|
||||
@@ -953,6 +953,7 @@ with_system_zlib
|
||||
enable_maintainer_mode
|
||||
enable_link_mutex
|
||||
enable_version_specific_runtime_libs
|
||||
+enable_poison_system_directories
|
||||
enable_plugin
|
||||
enable_host_shared
|
||||
enable_libquadmath_support
|
||||
@@ -1696,6 +1697,8 @@ Optional Features:
|
||||
--enable-version-specific-runtime-libs
|
||||
specify that runtime libraries should be installed
|
||||
in a compiler-specific directory
|
||||
+ --enable-poison-system-directories
|
||||
+ warn for use of native system header directories
|
||||
--enable-plugin enable plugin support
|
||||
--enable-host-shared build host code as shared libraries
|
||||
--disable-libquadmath-support
|
||||
@@ -29715,6 +29718,19 @@ if test "${enable_version_specific_runtime_libs+set}" = set; then :
|
||||
fi
|
||||
|
||||
|
||||
+# Check whether --enable-poison-system-directories was given.
|
||||
+if test "${enable_poison_system_directories+set}" = set; then :
|
||||
+ enableval=$enable_poison_system_directories;
|
||||
+else
|
||||
+ enable_poison_system_directories=no
|
||||
+fi
|
||||
+
|
||||
+if test "x${enable_poison_system_directories}" = "xyes"; then
|
||||
+
|
||||
+$as_echo "#define ENABLE_POISON_SYSTEM_DIRECTORIES 1" >>confdefs.h
|
||||
+
|
||||
+fi
|
||||
+
|
||||
# Substitute configuration variables
|
||||
|
||||
|
||||
diff --git a/gcc/configure.ac b/gcc/configure.ac
|
||||
index 65dbf1f2f80..dd5b38195ce 100644
|
||||
--- a/gcc/configure.ac
|
||||
+++ b/gcc/configure.ac
|
||||
@@ -6341,6 +6341,16 @@ AC_ARG_ENABLE(version-specific-runtime-libs,
|
||||
[specify that runtime libraries should be
|
||||
installed in a compiler-specific directory])])
|
||||
|
||||
+AC_ARG_ENABLE([poison-system-directories],
|
||||
+ AS_HELP_STRING([--enable-poison-system-directories],
|
||||
+ [warn for use of native system header directories]),,
|
||||
+ [enable_poison_system_directories=no])
|
||||
+if test "x${enable_poison_system_directories}" = "xyes"; then
|
||||
+ AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES],
|
||||
+ [1],
|
||||
+ [Define to warn for use of native system header directories])
|
||||
+fi
|
||||
+
|
||||
# Substitute configuration variables
|
||||
AC_SUBST(subdirs)
|
||||
AC_SUBST(srcdir)
|
||||
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
|
||||
index 255149fcfb8..cb71b60fe3c 100644
|
||||
--- a/gcc/doc/invoke.texi
|
||||
+++ b/gcc/doc/invoke.texi
|
||||
@@ -303,6 +303,7 @@ Objective-C and Objective-C++ Dialects}.
|
||||
-Wpacked -Wpacked-bitfield-compat -Wpacked-not-aligned -Wpadded @gol
|
||||
-Wparentheses -Wno-pedantic-ms-format @gol
|
||||
-Wplacement-new -Wplacement-new=@var{n} @gol
|
||||
+-Wno-poison-system-directories @gol
|
||||
-Wpointer-arith -Wpointer-compare -Wno-pointer-to-int-cast @gol
|
||||
-Wno-pragmas -Wredundant-decls -Wrestrict -Wno-return-local-addr @gol
|
||||
-Wreturn-type -Wsequence-point -Wshadow -Wno-shadow-ivar @gol
|
||||
@@ -5712,6 +5713,14 @@ made up of data only and thus requires no special treatment. But, for
|
||||
most targets, it is made up of code and thus requires the stack to be
|
||||
made executable in order for the program to work properly.
|
||||
|
||||
+@item -Wno-poison-system-directories
|
||||
+@opindex Wno-poison-system-directories
|
||||
+Do not warn for @option{-I} or @option{-L} options using system
|
||||
+directories such as @file{/usr/include} when cross compiling. This
|
||||
+option is intended for use in chroot environments when such
|
||||
+directories contain the correct headers and libraries for the target
|
||||
+system rather than the host.
|
||||
+
|
||||
@item -Wfloat-equal
|
||||
@opindex Wfloat-equal
|
||||
@opindex Wno-float-equal
|
||||
diff --git a/gcc/gcc.c b/gcc/gcc.c
|
||||
index a716f708259..02b3cd39fc2 100644
|
||||
--- a/gcc/gcc.c
|
||||
+++ b/gcc/gcc.c
|
||||
@@ -1037,6 +1037,8 @@ proper position among the other output files. */
|
||||
"%{fuse-ld=*:-fuse-ld=%*} " LINK_COMPRESS_DEBUG_SPEC \
|
||||
"%X %{o*} %{e*} %{N} %{n} %{r}\
|
||||
%{s} %{t} %{u*} %{z} %{Z} %{!nostdlib:%{!nostartfiles:%S}} \
|
||||
+ %{Wno-poison-system-directories:--no-poison-system-directories} \
|
||||
+ %{Werror=poison-system-directories:--error-poison-system-directories} \
|
||||
%{static|no-pie|static-pie:} %{L*} %(mfwrap) %(link_libgcc) " \
|
||||
VTABLE_VERIFICATION_SPEC " " SANITIZER_EARLY_SPEC " %o " CHKP_SPEC " \
|
||||
%{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*:%*} 1):\
|
||||
diff --git a/gcc/incpath.c b/gcc/incpath.c
|
||||
index b11c6a57939..e3b7a21966f 100644
|
||||
--- a/gcc/incpath.c
|
||||
+++ b/gcc/incpath.c
|
||||
@@ -26,6 +26,7 @@
|
||||
#include "intl.h"
|
||||
#include "incpath.h"
|
||||
#include "cppdefault.h"
|
||||
+#include "diagnostic-core.h"
|
||||
|
||||
/* Microsoft Windows does not natively support inodes.
|
||||
VMS has non-numeric inodes. */
|
||||
@@ -393,6 +394,26 @@ merge_include_chains (const char *sysroot, cpp_reader *pfile, int verbose)
|
||||
}
|
||||
fprintf (stderr, _("End of search list.\n"));
|
||||
}
|
||||
+
|
||||
+#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES
|
||||
+ if (flag_poison_system_directories)
|
||||
+ {
|
||||
+ struct cpp_dir *p;
|
||||
+
|
||||
+ for (p = heads[INC_QUOTE]; p; p = p->next)
|
||||
+ {
|
||||
+ if ((!strncmp (p->name, "/usr/include", 12))
|
||||
+ || (!strncmp (p->name, "/usr/local/include", 18))
|
||||
+ || (!strncmp (p->name, "/usr/X11R6/include", 18))
|
||||
+ || (!strncmp (p->name, "/sw/include", 11))
|
||||
+ || (!strncmp (p->name, "/opt/include", 12)))
|
||||
+ warning (OPT_Wpoison_system_directories,
|
||||
+ "include location \"%s\" is unsafe for "
|
||||
+ "cross-compilation",
|
||||
+ p->name);
|
||||
+ }
|
||||
+ }
|
||||
+#endif
|
||||
}
|
||||
|
||||
/* Use given -I paths for #include "..." but not #include <...>, and
|
||||
--
|
||||
2.17.0
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
From b693804c8dba92fea7beee98f0aa520853a0532b Mon Sep 17 00:00:00 2001
|
||||
From: Szabolcs Nagy <nsz@port70.net>
|
||||
Date: Thu, 22 Dec 2016 11:22:28 +0000
|
||||
Subject: [PATCH 08/12] s390x muslldso
|
||||
|
||||
---
|
||||
gcc/config/s390/linux.h | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/gcc/config/s390/linux.h b/gcc/config/s390/linux.h
|
||||
index 525c17c2c9f..2d4f4a0654e 100644
|
||||
--- a/gcc/config/s390/linux.h
|
||||
+++ b/gcc/config/s390/linux.h
|
||||
@@ -76,6 +76,9 @@ along with GCC; see the file COPYING3. If not see
|
||||
#define GLIBC_DYNAMIC_LINKER32 "/lib/ld.so.1"
|
||||
#define GLIBC_DYNAMIC_LINKER64 "/lib/ld64.so.1"
|
||||
|
||||
+#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-s390.so.1"
|
||||
+#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-s390x.so.1"
|
||||
+
|
||||
#undef LINK_SPEC
|
||||
#define LINK_SPEC \
|
||||
"%{m31:-m elf_s390}%{m64:-m elf64_s390} \
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -0,0 +1,76 @@
|
||||
From 47467f3ab0fb2f2fcede81060fe8bb339d0909eb Mon Sep 17 00:00:00 2001
|
||||
From: Szabolcs Nagy <nsz@port70.net>
|
||||
Date: Wed, 28 Feb 2018 00:54:05 +0000
|
||||
Subject: [PATCH 10/12] ldbl128 config
|
||||
|
||||
---
|
||||
gcc/configure | 13 +++++++++++++
|
||||
gcc/configure.ac | 16 ++++++++++++++--
|
||||
2 files changed, 27 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/gcc/configure b/gcc/configure
|
||||
index 6121e163259..07ff8597d48 100755
|
||||
--- a/gcc/configure
|
||||
+++ b/gcc/configure
|
||||
@@ -29309,6 +29309,15 @@ if test "${with_long_double_128+set}" = set; then :
|
||||
withval=$with_long_double_128; gcc_cv_target_ldbl128="$with_long_double_128"
|
||||
else
|
||||
|
||||
+ case "$target" in
|
||||
+ s390*-*-linux-musl*)
|
||||
+ gcc_cv_target_ldbl128=yes
|
||||
+ ;;
|
||||
+ powerpc*-*-linux-musl*)
|
||||
+ gcc_cv_target_ldbl128=no
|
||||
+ ;;
|
||||
+ *)
|
||||
+
|
||||
if test $glibc_version_major -gt 2 \
|
||||
|| ( test $glibc_version_major -eq 2 && test $glibc_version_minor -ge 4 ); then :
|
||||
gcc_cv_target_ldbl128=yes
|
||||
@@ -29320,6 +29329,10 @@ else
|
||||
&& gcc_cv_target_ldbl128=yes
|
||||
|
||||
fi
|
||||
+
|
||||
+ ;;
|
||||
+ esac
|
||||
+
|
||||
fi
|
||||
|
||||
;;
|
||||
diff --git a/gcc/configure.ac b/gcc/configure.ac
|
||||
index b066cc609e1..6c15ed898c0 100644
|
||||
--- a/gcc/configure.ac
|
||||
+++ b/gcc/configure.ac
|
||||
@@ -5971,13 +5971,25 @@ case "$target" in
|
||||
AC_ARG_WITH(long-double-128,
|
||||
[AS_HELP_STRING([--with-long-double-128],
|
||||
[use 128-bit long double by default])],
|
||||
- gcc_cv_target_ldbl128="$with_long_double_128",
|
||||
+ gcc_cv_target_ldbl128="$with_long_double_128", [
|
||||
+ case "$target" in
|
||||
+ s390*-*-linux-musl*)
|
||||
+ gcc_cv_target_ldbl128=yes
|
||||
+ ;;
|
||||
+ powerpc*-*-linux-musl*)
|
||||
+ gcc_cv_target_ldbl128=no
|
||||
+ ;;
|
||||
+ *)]
|
||||
[GCC_GLIBC_VERSION_GTE_IFELSE([2], [4], [gcc_cv_target_ldbl128=yes], [
|
||||
[gcc_cv_target_ldbl128=no
|
||||
grep '^[ ]*#[ ]*define[ ][ ]*__LONG_DOUBLE_MATH_OPTIONAL' \
|
||||
$target_header_dir/bits/wordsize.h > /dev/null 2>&1 \
|
||||
&& gcc_cv_target_ldbl128=yes
|
||||
- ]])])
|
||||
+ ]])]
|
||||
+ [
|
||||
+ ;;
|
||||
+ esac
|
||||
+ ])
|
||||
;;
|
||||
esac
|
||||
if test x$gcc_cv_target_ldbl128 = xyes; then
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -0,0 +1,138 @@
|
||||
From a4aa319f7c19e564dced3daeb7222c9315af936c Mon Sep 17 00:00:00 2001
|
||||
From: Szabolcs Nagy <nsz@port70.net>
|
||||
Date: Sat, 18 Aug 2018 23:58:45 +0000
|
||||
Subject: [PATCH 12/12] static-pie
|
||||
|
||||
in gcc-8 -static means static non-pie, even if -pie or -static-pie
|
||||
are specified, -static-pie can be used to build static pie.
|
||||
|
||||
in musl toolchains -static -pie always meant static pie, so this
|
||||
patch fixes the link specs accordingly, the new -static-pie is just
|
||||
an alias to -static -pie.
|
||||
---
|
||||
gcc/common.opt | 4 ++--
|
||||
gcc/config/gnu-user.h | 12 +++++-------
|
||||
gcc/config/rs6000/sysv4.h | 11 +++++------
|
||||
gcc/gcc.c | 6 +++---
|
||||
4 files changed, 15 insertions(+), 18 deletions(-)
|
||||
|
||||
diff --git a/gcc/common.opt b/gcc/common.opt
|
||||
index b52ef0b38c8..0ce5857e01d 100644
|
||||
--- a/gcc/common.opt
|
||||
+++ b/gcc/common.opt
|
||||
@@ -3197,11 +3197,11 @@ Driver
|
||||
|
||||
no-pie
|
||||
Driver RejectNegative Negative(shared)
|
||||
-Don't create a dynamically linked position independent executable.
|
||||
+Don't create a position independent executable.
|
||||
|
||||
pie
|
||||
Driver RejectNegative Negative(no-pie)
|
||||
-Create a dynamically linked position independent executable.
|
||||
+Create a position independent executable.
|
||||
|
||||
static-pie
|
||||
Driver RejectNegative Negative(pie)
|
||||
diff --git a/gcc/config/gnu-user.h b/gcc/config/gnu-user.h
|
||||
index 8620de3e42d..235328a2642 100644
|
||||
--- a/gcc/config/gnu-user.h
|
||||
+++ b/gcc/config/gnu-user.h
|
||||
@@ -52,13 +52,12 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
#define GNU_USER_TARGET_STARTFILE_SPEC \
|
||||
"%{shared:; \
|
||||
pg|p|profile:%{static-pie:grcrt1.o%s;:gcrt1.o%s}; \
|
||||
- static:crt1.o%s; \
|
||||
- static-pie:rcrt1.o%s; \
|
||||
+ static|static-pie:%{" PIE_SPEC ":rcrt1.o%s;:crt1.o%s}; \
|
||||
" PIE_SPEC ":Scrt1.o%s; \
|
||||
:crt1.o%s} \
|
||||
crti.o%s \
|
||||
- %{static:crtbeginT.o%s; \
|
||||
- shared|static-pie|" PIE_SPEC ":crtbeginS.o%s; \
|
||||
+ %{shared|" PIE_SPEC ":crtbeginS.o%s; \
|
||||
+ static:crtbeginT.o%s; \
|
||||
:crtbegin.o%s} \
|
||||
%{fvtable-verify=none:%s; \
|
||||
fvtable-verify=preinit:vtv_start_preinit.o%s; \
|
||||
@@ -92,8 +91,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
"%{fvtable-verify=none:%s; \
|
||||
fvtable-verify=preinit:vtv_end_preinit.o%s; \
|
||||
fvtable-verify=std:vtv_end.o%s} \
|
||||
- %{static:crtend.o%s; \
|
||||
- shared|static-pie|" PIE_SPEC ":crtendS.o%s; \
|
||||
+ %{shared|" PIE_SPEC ":crtendS.o%s; \
|
||||
:crtend.o%s} \
|
||||
crtn.o%s \
|
||||
" CRTOFFLOADEND
|
||||
@@ -133,7 +131,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
#define LIB_SPEC GNU_USER_TARGET_LIB_SPEC
|
||||
|
||||
#if defined(HAVE_LD_EH_FRAME_HDR)
|
||||
-#define LINK_EH_SPEC "%{!static|static-pie:--eh-frame-hdr} "
|
||||
+#define LINK_EH_SPEC "%{!static|" PIE_SPEC ":--eh-frame-hdr} "
|
||||
#endif
|
||||
|
||||
#undef LINK_GCC_C_SEQUENCE_SPEC
|
||||
diff --git a/gcc/config/rs6000/sysv4.h b/gcc/config/rs6000/sysv4.h
|
||||
index bb19d0dcd41..bb2a2324eb0 100644
|
||||
--- a/gcc/config/rs6000/sysv4.h
|
||||
+++ b/gcc/config/rs6000/sysv4.h
|
||||
@@ -763,12 +763,12 @@ ENDIAN_SELECT(" -mbig", " -mlittle", DEFAULT_ASM_ENDIAN)
|
||||
#define STARTFILE_LINUX_SPEC \
|
||||
"%{shared:; \
|
||||
pg|p|profile:gcrt1.o%s; \
|
||||
- static:crt1.o%s; \
|
||||
- static-pie|" PIE_SPEC ":Scrt1.o%s; \
|
||||
+ static|static-pie:%{" PIE_SPEC ":rcrt1.o%s;:crt1.o%s}; \
|
||||
+ " PIE_SPEC ":Scrt1.o%s; \
|
||||
:crt1.o%s} \
|
||||
%{mnewlib:ecrti.o%s;:crti.o%s} \
|
||||
- %{static:crtbeginT.o%s; \
|
||||
- shared|static-pie|" PIE_SPEC ":crtbeginS.o%s; \
|
||||
+ %{shared|" PIE_SPEC ":crtbeginS.o%s; \
|
||||
+ static:crtbeginT.o%s; \
|
||||
:crtbegin.o%s} \
|
||||
%{fvtable-verify=none:%s; \
|
||||
fvtable-verify=preinit:vtv_start_preinit.o%s; \
|
||||
@@ -781,8 +781,7 @@ ENDIAN_SELECT(" -mbig", " -mlittle", DEFAULT_ASM_ENDIAN)
|
||||
"%{fvtable-verify=none:%s; \
|
||||
fvtable-verify=preinit:vtv_end_preinit.o%s; \
|
||||
fvtable-verify=std:vtv_end.o%s} \
|
||||
- %{static:crtend.o%s; \
|
||||
- shared|static-pie|" PIE_SPEC ":crtendS.o%s; \
|
||||
+ %{shared|" PIE_SPEC ":crtendS.o%s; \
|
||||
:crtend.o%s} \
|
||||
%{mnewlib:ecrtn.o%s;:crtn.o%s} \
|
||||
" CRTOFFLOADEND
|
||||
diff --git a/gcc/gcc.c b/gcc/gcc.c
|
||||
index eb1610ba8b0..87560afb03c 100644
|
||||
--- a/gcc/gcc.c
|
||||
+++ b/gcc/gcc.c
|
||||
@@ -900,7 +900,7 @@ proper position among the other output files. */
|
||||
#define NO_FPIE_AND_FPIC_SPEC NO_FPIE_SPEC "|" NO_FPIC_SPEC
|
||||
#define FPIE_OR_FPIC_SPEC NO_FPIE_AND_FPIC_SPEC ":;"
|
||||
#else
|
||||
-#define PIE_SPEC "pie"
|
||||
+#define PIE_SPEC "pie|static-pie"
|
||||
#define FPIE1_SPEC "fpie"
|
||||
#define NO_FPIE1_SPEC FPIE1_SPEC ":;"
|
||||
#define FPIE2_SPEC "fPIE"
|
||||
@@ -924,12 +924,12 @@ proper position among the other output files. */
|
||||
#ifndef LINK_PIE_SPEC
|
||||
#ifdef HAVE_LD_PIE
|
||||
#ifndef LD_PIE_SPEC
|
||||
-#define LD_PIE_SPEC "-pie"
|
||||
+#define LD_PIE_SPEC "-pie %{static|static-pie:--no-dynamic-linker -z text -Bsymbolic}"
|
||||
#endif
|
||||
#else
|
||||
#define LD_PIE_SPEC ""
|
||||
#endif
|
||||
-#define LINK_PIE_SPEC "%{static|shared|r:;" PIE_SPEC ":" LD_PIE_SPEC "} "
|
||||
+#define LINK_PIE_SPEC "%{shared|r:;" PIE_SPEC ":" LD_PIE_SPEC "} "
|
||||
#endif
|
||||
|
||||
#ifndef LINK_BUILDID_SPEC
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
--- ./libgomp/configure.tgt.orig 2018-09-25 13:44:16.654561098 -0400
|
||||
+++ ./libgomp/configure.tgt 2018-09-25 13:44:50.452688100 -0400
|
||||
@@ -10,23 +10,6 @@
|
||||
# XCFLAGS Add extra compile flags to use.
|
||||
# XLDFLAGS Add extra link flags to use.
|
||||
|
||||
-# Optimize TLS usage by avoiding the overhead of dynamic allocation.
|
||||
-if test $gcc_cv_have_tls = yes ; then
|
||||
- case "${target}" in
|
||||
-
|
||||
- *-*-k*bsd*-gnu*)
|
||||
- ;;
|
||||
-
|
||||
- *-*-linux* | *-*-gnu*)
|
||||
- XCFLAGS="${XCFLAGS} -ftls-model=initial-exec"
|
||||
- ;;
|
||||
-
|
||||
- *-*-rtems*)
|
||||
- XCFLAGS="${XCFLAGS} -ftls-model=local-exec"
|
||||
- ;;
|
||||
- esac
|
||||
-fi
|
||||
-
|
||||
# Since we require POSIX threads, assume a POSIX system by default.
|
||||
config_path="posix"
|
||||
@@ -1,9 +1,25 @@
|
||||
# DP: On linux targets pass --as-needed by default to the linker, but always
|
||||
# DP: link the sanitizer libraries with --no-as-needed.
|
||||
|
||||
Index: b/gcc/gcc.c
|
||||
===================================================================
|
||||
--- a/gcc/gcc.c
|
||||
+++ b/gcc/gcc.c
|
||||
@@ -568,8 +568,11 @@ proper position among the other output f
|
||||
@@ -692,8 +692,11 @@ proper position among the other output f
|
||||
#ifdef LIBASAN_EARLY_SPEC
|
||||
#define LIBASAN_SPEC STATIC_LIBASAN_LIBS
|
||||
#elif defined(HAVE_LD_STATIC_DYNAMIC)
|
||||
-#define LIBASAN_SPEC "%{static-libasan:" LD_STATIC_OPTION \
|
||||
- "} -lasan %{static-libasan:" LD_DYNAMIC_OPTION "}" \
|
||||
+#define LIBASAN_SPEC "%{static-libasan:" LD_STATIC_OPTION "}" \
|
||||
+ " %{!static-libasan:%{!fuse-ld=gold:--push-state }--no-as-needed}" \
|
||||
+ " -lasan " \
|
||||
+ " %{static-libasan:" LD_DYNAMIC_OPTION "}" \
|
||||
+ " %{!static-libasan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \
|
||||
STATIC_LIBASAN_LIBS
|
||||
#else
|
||||
#define LIBASAN_SPEC "-lasan" STATIC_LIBASAN_LIBS
|
||||
@@ -710,8 +713,11 @@ proper position among the other output f
|
||||
#ifdef LIBTSAN_EARLY_SPEC
|
||||
#define LIBTSAN_SPEC STATIC_LIBTSAN_LIBS
|
||||
#elif defined(HAVE_LD_STATIC_DYNAMIC)
|
||||
@@ -17,21 +33,53 @@
|
||||
STATIC_LIBTSAN_LIBS
|
||||
#else
|
||||
#define LIBTSAN_SPEC "-ltsan" STATIC_LIBTSAN_LIBS
|
||||
@@ -728,8 +734,11 @@ proper position among the other output f
|
||||
#ifdef LIBLSAN_EARLY_SPEC
|
||||
#define LIBLSAN_SPEC STATIC_LIBLSAN_LIBS
|
||||
#elif defined(HAVE_LD_STATIC_DYNAMIC)
|
||||
-#define LIBLSAN_SPEC "%{static-liblsan:" LD_STATIC_OPTION \
|
||||
- "} -llsan %{static-liblsan:" LD_DYNAMIC_OPTION "}" \
|
||||
+#define LIBLSAN_SPEC "%{static-liblsan:" LD_STATIC_OPTION "}" \
|
||||
+ " %{!static-liblsan:%{!fuse-ld=gold:--push-state }--no-as-needed}" \
|
||||
+ " -llsan " \
|
||||
+ " %{static-liblsan:" LD_DYNAMIC_OPTION "}" \
|
||||
+ " %{!static-liblsan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \
|
||||
STATIC_LIBLSAN_LIBS
|
||||
#else
|
||||
#define LIBLSAN_SPEC "-llsan" STATIC_LIBLSAN_LIBS
|
||||
@@ -744,8 +753,11 @@ proper position among the other output f
|
||||
#define STATIC_LIBUBSAN_LIBS \
|
||||
" %{static-libubsan|static:%:include(libsanitizer.spec)%(link_libubsan)}"
|
||||
#ifdef HAVE_LD_STATIC_DYNAMIC
|
||||
-#define LIBUBSAN_SPEC "%{static-libubsan:" LD_STATIC_OPTION \
|
||||
- "} -lubsan %{static-libubsan:" LD_DYNAMIC_OPTION "}" \
|
||||
+#define LIBUBSAN_SPEC "%{static-libubsan:" LD_STATIC_OPTION "}" \
|
||||
+ " %{!static-libubsan:%{!fuse-ld=gold:--push-state }--no-as-needed}" \
|
||||
+ " -lubsan " \
|
||||
+ " %{static-libubsan:" LD_DYNAMIC_OPTION "}" \
|
||||
+ " %{!static-libubsan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \
|
||||
STATIC_LIBUBSAN_LIBS
|
||||
#else
|
||||
#define LIBUBSAN_SPEC "-lubsan" STATIC_LIBUBSAN_LIBS
|
||||
Index: b/gcc/config/gnu-user.h
|
||||
===================================================================
|
||||
--- a/gcc/config/gnu-user.h
|
||||
+++ b/gcc/config/gnu-user.h
|
||||
@@ -124,13 +124,13 @@
|
||||
@@ -161,15 +161,15 @@ see the files COPYING3 and COPYING.RUNTI
|
||||
#define LIBASAN_EARLY_SPEC "%{!shared:libasan_preinit%O%s} " \
|
||||
"%{static-libasan:%{!shared:" \
|
||||
LD_STATIC_OPTION " --whole-archive -lasan --no-whole-archive " \
|
||||
- LD_DYNAMIC_OPTION "}}%{!static-libasan:-lasan}"
|
||||
+ LD_DYNAMIC_OPTION "}}%{!static-libasan:%{!fuse-ld=gold:--push-state} --no-as-needed -lasan %{fuse-ld=gold:--as-needed;:--pop-state}}"
|
||||
#undef LIBTSAN_EARLY_SPEC
|
||||
#define LIBTSAN_EARLY_SPEC "%{static-libtsan:%{!shared:" \
|
||||
#define LIBTSAN_EARLY_SPEC "%{!shared:libtsan_preinit%O%s} " \
|
||||
"%{static-libtsan:%{!shared:" \
|
||||
LD_STATIC_OPTION " --whole-archive -ltsan --no-whole-archive " \
|
||||
- LD_DYNAMIC_OPTION "}}%{!static-libtsan:-ltsan}"
|
||||
+ LD_DYNAMIC_OPTION "}}%{!static-libtsan:%{!fuse-ld=gold:--push-state} --no-as-needed -ltsan %{fuse-ld=gold:--as-needed;:--pop-state}}"
|
||||
#undef LIBLSAN_EARLY_SPEC
|
||||
#define LIBLSAN_EARLY_SPEC "%{static-liblsan:%{!shared:" \
|
||||
#define LIBLSAN_EARLY_SPEC "%{!shared:liblsan_preinit%O%s} " \
|
||||
"%{static-liblsan:%{!shared:" \
|
||||
LD_STATIC_OPTION " --whole-archive -llsan --no-whole-archive " \
|
||||
- LD_DYNAMIC_OPTION "}}%{!static-liblsan:-llsan}"
|
||||
+ LD_DYNAMIC_OPTION "}}%{!static-liblsan:%{!fuse-ld=gold:--push-state} --no-as-needed -llsan %{fuse-ld=gold:--as-needed;:--pop-state}}"
|
||||
@@ -40,7 +88,8 @@ Index: b/gcc/config/aarch64/aarch64-linux.h
|
||||
===================================================================
|
||||
--- a/gcc/config/aarch64/aarch64-linux.h
|
||||
+++ b/gcc/config/aarch64/aarch64-linux.h
|
||||
@@ -36,5 +36,6 @@
|
||||
@@ -35,6 +35,7 @@
|
||||
#define CPP_SPEC "%{pthread:-D_REENTRANT}"
|
||||
|
||||
#define LINUX_TARGET_LINK_SPEC "%{h*} \
|
||||
+ --as-needed \
|
||||
@@ -77,7 +126,7 @@ Index: b/gcc/config/s390/linux.h
|
||||
===================================================================
|
||||
--- a/gcc/config/s390/linux.h
|
||||
+++ b/gcc/config/s390/linux.h
|
||||
@@ -65,7 +65,7 @@ along with GCC; see the file COPYING3.
|
||||
@@ -78,7 +78,7 @@ along with GCC; see the file COPYING3.
|
||||
|
||||
#undef LINK_SPEC
|
||||
#define LINK_SPEC \
|
||||
@@ -90,26 +139,27 @@ Index: b/gcc/config/rs6000/linux64.h
|
||||
===================================================================
|
||||
--- a/gcc/config/rs6000/linux64.h
|
||||
+++ b/gcc/config/rs6000/linux64.h
|
||||
@@ -466,12 +466,12 @@ extern int dot_symbols;
|
||||
@@ -490,13 +490,13 @@ extern int dot_symbols;
|
||||
" -m elf64ppc")
|
||||
#endif
|
||||
|
||||
-#define LINK_OS_LINUX_SPEC32 LINK_OS_LINUX_EMUL32 " %{!shared: %{!static: \
|
||||
+#define LINK_OS_LINUX_SPEC32 LINK_OS_LINUX_EMUL32 " --as-needed %{!shared: %{!static: \
|
||||
%{rdynamic:-export-dynamic} \
|
||||
-dynamic-linker " GNU_USER_DYNAMIC_LINKER32 "}} \
|
||||
%{!static-pie: \
|
||||
%{rdynamic:-export-dynamic} \
|
||||
-dynamic-linker " GNU_USER_DYNAMIC_LINKER32 "}}} \
|
||||
%(link_os_extra_spec32)"
|
||||
|
||||
-#define LINK_OS_LINUX_SPEC64 LINK_OS_LINUX_EMUL64 " %{!shared: %{!static: \
|
||||
+#define LINK_OS_LINUX_SPEC64 LINK_OS_LINUX_EMUL64 " --as-needed %{!shared: %{!static: \
|
||||
%{rdynamic:-export-dynamic} \
|
||||
-dynamic-linker " GNU_USER_DYNAMIC_LINKER64 "}} \
|
||||
%(link_os_extra_spec64)"
|
||||
%{!static-pie: \
|
||||
%{rdynamic:-export-dynamic} \
|
||||
-dynamic-linker " GNU_USER_DYNAMIC_LINKER64 "}}} \
|
||||
Index: b/gcc/config/rs6000/sysv4.h
|
||||
===================================================================
|
||||
--- a/gcc/config/rs6000/sysv4.h
|
||||
+++ b/gcc/config/rs6000/sysv4.h
|
||||
@@ -784,7 +784,7 @@ ENDIAN_SELECT(" -mbig", " -mlittle", DEF
|
||||
@@ -811,7 +811,7 @@ ENDIAN_SELECT(" -mbig", " -mlittle", DEF
|
||||
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, \
|
||||
MUSL_DYNAMIC_LINKER)
|
||||
|
||||
@@ -122,7 +172,8 @@ Index: b/gcc/config/i386/gnu-user64.h
|
||||
===================================================================
|
||||
--- a/gcc/config/i386/gnu-user64.h
|
||||
+++ b/gcc/config/i386/gnu-user64.h
|
||||
@@ -57,5 +57,6 @@ see the files COPYING3 and COPYING.RUNTI
|
||||
@@ -56,6 +56,7 @@
|
||||
"%{" SPEC_64 ":-m " GNU_USER_LINK_EMULATION64 "} \
|
||||
%{" SPEC_32 ":-m " GNU_USER_LINK_EMULATION32 "} \
|
||||
%{" SPEC_X32 ":-m " GNU_USER_LINK_EMULATIONX32 "} \
|
||||
+ --as-needed \
|
||||
@@ -141,7 +192,7 @@ Index: b/gcc/config/i386/gnu-user.h
|
||||
+#define GNU_USER_TARGET_LINK_SPEC "-m %(link_emulation) --as-needed %{shared:-shared} \
|
||||
%{!shared: \
|
||||
%{!static: \
|
||||
%{rdynamic:-export-dynamic} \
|
||||
%{!static-pie: \
|
||||
Index: b/gcc/config/alpha/linux-elf.h
|
||||
===================================================================
|
||||
--- a/gcc/config/alpha/linux-elf.h
|
||||
@@ -151,7 +202,7 @@ Index: b/gcc/config/alpha/linux-elf.h
|
||||
#define ELF_DYNAMIC_LINKER GNU_USER_DYNAMIC_LINKER
|
||||
|
||||
-#define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax} \
|
||||
+#define LINK_SPEC "-m elf64alpha --as-needed %{G*} %{relax:-relax} \
|
||||
+#define LINK_SPEC "-m elf64alpha --as-needed %{G*} %{relax:-relax} \
|
||||
%{O*:-O3} %{!O*:-O1} \
|
||||
%{shared:-shared} \
|
||||
%{!shared: \
|
||||
@@ -159,7 +210,8 @@ Index: b/gcc/config/arm/linux-elf.h
|
||||
===================================================================
|
||||
--- a/gcc/config/arm/linux-elf.h
|
||||
+++ b/gcc/config/arm/linux-elf.h
|
||||
@@ -73,5 +73,6 @@
|
||||
@@ -70,6 +70,7 @@
|
||||
%{rdynamic:-export-dynamic} \
|
||||
%{!shared:-dynamic-linker " GNU_USER_DYNAMIC_LINKER "}} \
|
||||
-X \
|
||||
+ --as-needed \
|
||||
@@ -178,64 +230,15 @@ Index: b/gcc/config/mips/gnu-user.h
|
||||
%{!shared: \
|
||||
%{!static: \
|
||||
%{rdynamic:-export-dynamic} \
|
||||
Index: b/libjava/Makefile.am
|
||||
Index: b/gcc/config/riscv/linux.h
|
||||
===================================================================
|
||||
--- a/libjava/Makefile.am
|
||||
+++ b/libjava/Makefile.am
|
||||
@@ -627,14 +631,14 @@
|
||||
rm .libs/libgcj_bc.so; \
|
||||
mv .libs/libgcj_bc.so.1.0.0 .libs/libgcj_bc.so; \
|
||||
$(libgcj_bc_dummy_LINK) -xc /dev/null -Wl,-soname,libgcj_bc.so.1 \
|
||||
- -o .libs/libgcj_bc.so.1.0.0 -lgcj || exit; \
|
||||
+ -o .libs/libgcj_bc.so.1.0.0 -Wl,--no-as-needed -lgcj || exit; \
|
||||
rm .libs/libgcj_bc.so.1; \
|
||||
$(LN_S) libgcj_bc.so.1.0.0 .libs/libgcj_bc.so.1
|
||||
--- a/gcc/config/riscv/linux.h
|
||||
+++ b/gcc/config/riscv/linux.h
|
||||
@@ -50,6 +50,7 @@
|
||||
#define CPP_SPEC "%{pthread:-D_REENTRANT}"
|
||||
|
||||
## This rule creates the libgcj_bc library that is actually installed.
|
||||
install/libgcj_bc.la: $(libgcj_bc_la_OBJECTS) $(libgcj_bc_la_DEPENDENCIES) install/$(am__dirstamp)
|
||||
$(libgcj_bc_la_LINK) $(am_libgcj_bc_la_rpath) $(libgcj_bc_la_LDFLAGS) \
|
||||
- $(libgcj_bc_la_OBJECTS) $(libgcj_bc_la_LIBADD) $(LIBS)
|
||||
+ $(libgcj_bc_la_OBJECTS) $(libgcj_bc_la_LIBADD) $(LIBS) -Wl,--no-as-needed -lgcj
|
||||
|
||||
## Note that property_files is defined in sources.am.
|
||||
propertyo_files = $(patsubst classpath/resource/%,%,$(addsuffix .lo,$(property_files)))
|
||||
@@ -762,7 +766,7 @@
|
||||
rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
|
||||
mv $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0 $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
|
||||
$(libgcj_bc_dummy_LINK) -xc /dev/null -Wl,-soname,libgcj_bc.so.1 \
|
||||
- -o $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0 -lgcj || exit; \
|
||||
+ -o $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0 -Wl,--no-as-needed -lgcj || exit; \
|
||||
rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1; \
|
||||
$(LN_S) libgcj_bc.so.1.0.0 $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1; \
|
||||
rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.la;
|
||||
|
||||
Index: b/libjava/Makefile.in
|
||||
===================================================================
|
||||
--- a/libjava/Makefile.in
|
||||
+++ b/libjava/Makefile.in
|
||||
@@ -10644,13 +10648,13 @@
|
||||
rm .libs/libgcj_bc.so; \
|
||||
mv .libs/libgcj_bc.so.1.0.0 .libs/libgcj_bc.so; \
|
||||
$(libgcj_bc_dummy_LINK) -xc /dev/null -Wl,-soname,libgcj_bc.so.1 \
|
||||
- -o .libs/libgcj_bc.so.1.0.0 -lgcj || exit; \
|
||||
+ -o .libs/libgcj_bc.so.1.0.0 -Wl,--no-as-needed -lgcj || exit; \
|
||||
rm .libs/libgcj_bc.so.1; \
|
||||
$(LN_S) libgcj_bc.so.1.0.0 .libs/libgcj_bc.so.1
|
||||
|
||||
install/libgcj_bc.la: $(libgcj_bc_la_OBJECTS) $(libgcj_bc_la_DEPENDENCIES) install/$(am__dirstamp)
|
||||
$(libgcj_bc_la_LINK) $(am_libgcj_bc_la_rpath) $(libgcj_bc_la_LDFLAGS) \
|
||||
- $(libgcj_bc_la_OBJECTS) $(libgcj_bc_la_LIBADD) $(LIBS)
|
||||
+ $(libgcj_bc_la_OBJECTS) $(libgcj_bc_la_LIBADD) $(LIBS) -Wl,--no-as-needed -lgcj
|
||||
|
||||
$(propertyo_files): %.lo: classpath/resource/%
|
||||
$(mkinstalldirs) `dirname $@`; \
|
||||
@@ -12494,7 +12498,7 @@
|
||||
@USE_LIBGCJ_BC_TRUE@ rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
|
||||
@USE_LIBGCJ_BC_TRUE@ mv $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0 $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
|
||||
@USE_LIBGCJ_BC_TRUE@ $(libgcj_bc_dummy_LINK) -xc /dev/null -Wl,-soname,libgcj_bc.so.1 \
|
||||
-@USE_LIBGCJ_BC_TRUE@ -o $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0 -lgcj || exit; \
|
||||
+@USE_LIBGCJ_BC_TRUE@ -o $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0 -Wl,--no-as-needed -lgcj || exit; \
|
||||
@USE_LIBGCJ_BC_TRUE@ rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1; \
|
||||
@USE_LIBGCJ_BC_TRUE@ $(LN_S) libgcj_bc.so.1.0.0 $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1; \
|
||||
@USE_LIBGCJ_BC_TRUE@ rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.la;
|
||||
|
||||
#define LINK_SPEC "\
|
||||
+-as-needed \
|
||||
-melf" XLEN_SPEC "lriscv \
|
||||
%{mno-relax:--no-relax} \
|
||||
%{shared} \
|
||||
@@ -1,43 +1,22 @@
|
||||
Enable -Wformat and -Wformat-security by default.
|
||||
|
||||
|
||||
--- a/gcc/c-family/c.opt
|
||||
+++ b/gcc/c-family/c.opt
|
||||
@@ -412,7 +412,7 @@ C ObjC C++ ObjC++ Var(warn_format_nonliteral) Warning LangEnabledBy(C ObjC C++ O
|
||||
Warn about format strings that are not literals
|
||||
--- a/gcc/c-family/c.opt 2016-03-23 18:51:56.000000000 +0100
|
||||
+++ b/gcc/c-family/c.opt 2016-04-28 23:45:54.063351272 +0200
|
||||
@@ -459,7 +459,7 @@ C ObjC C++ ObjC++ Var(warn_format_nonlit
|
||||
Warn about format strings that are not literals.
|
||||
|
||||
Wformat-security
|
||||
-C ObjC C++ ObjC++ Var(warn_format_security) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 2, 0)
|
||||
+C ObjC C++ ObjC++ Var(warn_format_security) Init(1) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 2, 0)
|
||||
Warn about possible security problems with format functions
|
||||
Warn about possible security problems with format functions.
|
||||
|
||||
Wformat-y2k
|
||||
@@ -424,7 +424,7 @@ C ObjC C++ ObjC++ Var(warn_format_zero_length) Warning LangEnabledBy(C ObjC C++
|
||||
Warn about zero-length formats
|
||||
Wformat-signedness
|
||||
@@ -475,7 +475,7 @@ C ObjC C++ ObjC++ Var(warn_format_zero_l
|
||||
Warn about zero-length formats.
|
||||
|
||||
Wformat=
|
||||
-C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_format) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0)
|
||||
+C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_format) Init(1) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0)
|
||||
Warn about printf/scanf/strftime/strfmon format string anomalies
|
||||
-C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_format) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0) IntegerRange(0, 2)
|
||||
+C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_format) Init(1) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0) IntegerRange(0, 2)
|
||||
Warn about printf/scanf/strftime/strfmon format string anomalies.
|
||||
|
||||
Wignored-qualifiers
|
||||
--- a/gcc/doc/gcc.info
|
||||
+++ b/gcc/doc/gcc.info
|
||||
@@ -3451,6 +3451,8 @@ compiler warns that an unrecognized option is present.
|
||||
'-Wno-format-contains-nul', '-Wno-format-extra-args', and
|
||||
'-Wno-format-zero-length'. '-Wformat' is enabled by '-Wall'.
|
||||
|
||||
+ This option is enabled by default in Alpine Linux.
|
||||
+
|
||||
'-Wno-format-contains-nul'
|
||||
If '-Wformat' is specified, do not warn about format strings
|
||||
that contain NUL bytes.
|
||||
@@ -3496,6 +3498,8 @@ compiler warns that an unrecognized option is present.
|
||||
future warnings may be added to '-Wformat-security' that are
|
||||
not included in '-Wformat-nonliteral'.)
|
||||
|
||||
+ This option is enabled by default in Alpine Linux.
|
||||
+
|
||||
'-Wformat-y2k'
|
||||
If '-Wformat' is specified, also warn about 'strftime' formats
|
||||
that may yield only a two-digit year.
|
||||
@@ -1,25 +1,13 @@
|
||||
Enable -Wtrampolines by default.
|
||||
|
||||
|
||||
--- a/gcc/common.opt
|
||||
+++ b/gcc/common.opt
|
||||
@@ -648,7 +648,7 @@ Common Var(warn_system_headers) Warning
|
||||
Do not suppress warnings from system headers
|
||||
@@ -712,7 +712,7 @@ Common Var(warn_system_headers) Warning
|
||||
Do not suppress warnings from system headers.
|
||||
|
||||
Wtrampolines
|
||||
-Common Var(warn_trampolines) Warning
|
||||
+Common Var(warn_trampolines) Init(1) Warning
|
||||
Warn whenever a trampoline is generated
|
||||
Warn whenever a trampoline is generated.
|
||||
|
||||
Wtype-limits
|
||||
--- a/gcc/doc/gcc.info
|
||||
+++ b/gcc/doc/gcc.info
|
||||
@@ -4021,6 +4021,8 @@ compiler warns that an unrecognized option is present.
|
||||
and thus requires the stack to be made executable in order for the
|
||||
program to work properly.
|
||||
|
||||
+ This warning is enabled by default in Gentoo.
|
||||
+
|
||||
'-Wfloat-equal'
|
||||
Warn if floating-point values are used in equality comparisons.
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
Disable ssp on -nostdlib, -nodefaultlibs and -ffreestanding
|
||||
Change the buffer size.
|
||||
|
||||
--- a/gcc/gcc.c 2017-07-04 09:15:57.740793000 +0200
|
||||
+++ b/gcc/gcc.c 2018-03-02 13:58:44.387741114 +0100
|
||||
@@ -857,6 +857,12 @@ proper position among the other output f
|
||||
#define LINK_GCC_C_SEQUENCE_SPEC "%G %L %G"
|
||||
#endif
|
||||
|
||||
+#ifdef ENABLE_DEFAULT_SSP
|
||||
+#define NO_SSP_SPEC "%{nostdlib|nodefaultlibs|ffreestanding:-fno-stack-protector} "
|
||||
+#else
|
||||
+#define NO_SSP_SPEC ""
|
||||
+#endif
|
||||
+
|
||||
#ifndef LINK_SSP_SPEC
|
||||
#ifdef TARGET_LIBC_PROVIDES_SSP
|
||||
#define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \
|
||||
@@ -1131,7 +1148,7 @@ static const char *cc1_options =
|
||||
%{-version:--version}\
|
||||
%{-help=*:--help=%*}\
|
||||
%{!fsyntax-only:%{S:%W{o*}%{!o*:-o %b.s}}}\
|
||||
- %{fsyntax-only:-o %j} %{-param*}\
|
||||
+ %{fsyntax-only:-o %j} %{-param*} " NO_SSP_SPEC "\
|
||||
%{coverage:-fprofile-arcs -ftest-coverage}\
|
||||
%{fprofile-arcs|fprofile-generate*|coverage:\
|
||||
%{!fprofile-update=singel:\
|
||||
--- a/gcc/params.def 2016-03-30 09:47:40.000000000 +0200
|
||||
+++ b/gcc/params.def 2016-09-19 12:56:58.443179039 +0200
|
||||
@@ -673,7 +673,7 @@ DEFPARAM (PARAM_INTEGER_SHARE_LIMIT,
|
||||
DEFPARAM (PARAM_SSP_BUFFER_SIZE,
|
||||
"ssp-buffer-size",
|
||||
"The lower bound for a buffer to be considered for stack smashing protection.",
|
||||
- 8, 1, 0)
|
||||
+ 4, 1, 0)
|
||||
|
||||
DEFPARAM (PARAM_MIN_SIZE_FOR_STACK_SHARING,
|
||||
"min-size-for-stack-sharing",
|
||||
@@ -45,12 +45,13 @@ diff --git a/libgcc/config/i386/t-linux b/libgcc/config/i386/t-linux
|
||||
index 11bb46e..4f47f7b 100644
|
||||
--- a/libgcc/config/i386/t-linux
|
||||
+++ b/libgcc/config/i386/t-linux
|
||||
@@ -3,4 +3,4 @@
|
||||
@@ -3,5 +3,5 @@
|
||||
# t-slibgcc-elf-ver and t-linux
|
||||
SHLIB_MAPFILES = libgcc-std.ver $(srcdir)/config/i386/libgcc-glibc.ver
|
||||
|
||||
-HOST_LIBGCC2_CFLAGS += -mlong-double-80 -DUSE_ELF_SYMVER
|
||||
+HOST_LIBGCC2_CFLAGS += -mlong-double-80
|
||||
-HOST_LIBGCC2_CFLAGS += -mlong-double-80 -DUSE_ELF_SYMVER $(CET_FLAGS)
|
||||
+HOST_LIBGCC2_CFLAGS += -mlong-double-80 $(CET_FLAGS)
|
||||
CRTSTUFF_T_CFLAGS += $(CET_FLAGS)
|
||||
--
|
||||
2.8.1
|
||||
|
||||
+39
-149
@@ -1,6 +1,6 @@
|
||||
# Automatically generated aport, do not edit!
|
||||
# Generator: pmbootstrap aportgen gcc-aarch64
|
||||
# Based on: main/gcc
|
||||
# Based on: main/gcc (from Alpine)
|
||||
|
||||
CTARGET_ARCH=aarch64
|
||||
CTARGET="$(arch_to_hostspec ${CTARGET_ARCH})"
|
||||
@@ -23,19 +23,19 @@ CBUILDROOT="/"
|
||||
_cross_configure="--disable-bootstrap --with-sysroot=/usr/$CTARGET"
|
||||
|
||||
pkgname="gcc-aarch64"
|
||||
pkgver=6.4.0
|
||||
pkgver=8.3.0
|
||||
[ "$BOOTSTRAP" = "nolibc" ] && pkgname="gcc-pass2"
|
||||
[ "$CBUILD" != "$CHOST" ] && _cross="-$CARCH" || _cross=""
|
||||
[ "$CHOST" != "$CTARGET" ] && _target="-$CTARGET_ARCH" || _target=""
|
||||
|
||||
pkgname="gcc-aarch64"
|
||||
pkgrel=8
|
||||
pkgrel=0
|
||||
pkgdesc="Stage2 cross-compiler for aarch64"
|
||||
url="http://gcc.gnu.org"
|
||||
arch="armhf x86_64 x86"
|
||||
arch="x86_64"
|
||||
license="GPL LGPL"
|
||||
_gccrel=$pkgver-r$pkgrel
|
||||
depends="isl binutils-aarch64"
|
||||
depends="isl binutils-aarch64 mpc1"
|
||||
makedepends_build="gcc g++ paxmark bison flex texinfo gawk zip gmp-dev mpfr-dev mpc1-dev zlib-dev"
|
||||
makedepends_host="linux-headers gmp-dev mpfr-dev mpc1-dev isl-dev zlib-dev musl-dev-aarch64 binutils-aarch64"
|
||||
subpackages="g++-aarch64:gpp"
|
||||
@@ -44,7 +44,6 @@ replaces="libstdc++ binutils"
|
||||
|
||||
: ${LANG_CXX:=true}
|
||||
: ${LANG_OBJC:=true}
|
||||
: ${LANG_JAVA:=true}
|
||||
: ${LANG_GO:=true}
|
||||
: ${LANG_FORTRAN:=true}
|
||||
: ${LANG_ADA:=true}
|
||||
@@ -64,7 +63,6 @@ if [ "$CHOST" != "$CTARGET" ]; then
|
||||
_builddir="$srcdir/build-cross-final"
|
||||
fi
|
||||
LANG_OBJC=false
|
||||
LANG_JAVA=false
|
||||
LANG_GO=false
|
||||
LANG_FORTRAN=false
|
||||
LIBGOMP=false
|
||||
@@ -101,7 +99,6 @@ elif [ "$CBUILD" != "$CHOST" ]; then
|
||||
|
||||
# Languages that do not need bootstrapping
|
||||
LANG_OBJC=false
|
||||
LANG_JAVA=false
|
||||
LANG_GO=false
|
||||
LANG_FORTRAN=false
|
||||
|
||||
@@ -146,10 +143,6 @@ if $LANG_OBJC; then
|
||||
subpackages="$subpackages libobjc::$CTARGET_ARCH gcc-objc$_target:objc"
|
||||
_languages="$_languages,objc"
|
||||
fi
|
||||
if $LANG_JAVA; then
|
||||
subpackages="$subpackages libgcj::$CTARGET_ARCH gcc-java$_target:java"
|
||||
_languages="$_languages,java"
|
||||
fi
|
||||
if $LANG_GO; then
|
||||
subpackages="$subpackages libgo::$CTARGET_ARCH gcc-go$_target:go"
|
||||
_languages="$_languages,go"
|
||||
@@ -165,68 +158,47 @@ if $LANG_ADA; then
|
||||
fi
|
||||
makedepends="$makedepends_build $makedepends_host"
|
||||
|
||||
source="http://gcc.gnu.org/pub/gcc/releases/gcc-${_pkgbase:-$pkgver}/gcc-${_pkgbase:-$pkgver}.tar.xz
|
||||
http://sourceware.org/pub/java/ecj-4.9.jar
|
||||
|
||||
001_all_default-ssp-strong.patch
|
||||
source="https://gcc.gnu.org/pub/gcc/releases/gcc-${_pkgbase:-$pkgver}/gcc-${_pkgbase:-$pkgver}.tar.xz
|
||||
002_all_default-relro.patch
|
||||
003_all_default-fortify-source.patch
|
||||
005_all_default-as-needed.patch
|
||||
gcc-as-needed-gold.patch
|
||||
gcc-as-needed-push-pop.patch
|
||||
011_all_default-warn-format-security.patch
|
||||
012_all_default-warn-trampolines.patch
|
||||
013_all_default-ssp-fix.patch
|
||||
020_all_msgfmt-libstdc++-link.patch
|
||||
050_all_libiberty-asprintf.patch
|
||||
051_all_libiberty-pic.patch
|
||||
053_all_libitm-no-fortify-source.patch
|
||||
067_all_gcc-poison-system-directories.patch
|
||||
090_all_pr55930-dependency-tracking.patch
|
||||
0003-gcc-poison-system-directories.patch
|
||||
|
||||
201-cilkrts.patch
|
||||
203-libgcc_s.patch
|
||||
204-linux_libc_has_function.patch
|
||||
205-nopie.patch
|
||||
207-static-pie.patch
|
||||
0002-posix_memalign.patch
|
||||
0008-s390x-muslldso.patch
|
||||
0010-ldbl128-config.patch
|
||||
0012-static-pie.patch
|
||||
|
||||
libgcc-always-build-gcceh.a.patch
|
||||
gcc-4.9-musl-fortify.patch
|
||||
gcc-6.1-musl-libssp.patch
|
||||
boehm-gc-musl.patch
|
||||
gcc-pure64.patch
|
||||
fix-gcj-stdgnu14-link.patch
|
||||
fix-gcj-musl.patch
|
||||
fix-gcj-iconv-musl.patch
|
||||
|
||||
gcc-4.8-build-args.patch
|
||||
fix-cxxflags-passing.patch
|
||||
ada-fixes.patch
|
||||
ada-shared.patch
|
||||
ada-musl.patch
|
||||
ada-aarch64-multiarch.patch
|
||||
libgnarl-musl.patch
|
||||
|
||||
300-main-gcc-add-musl-s390x-dynamic-linker.patch
|
||||
310-build-gcj-s390x.patch
|
||||
320-libffi-gnulinux.patch
|
||||
|
||||
fix-rs6000-pie.patch
|
||||
fix-linux-header-use-in-libgcc.patch
|
||||
gcc-pure64-mips.patch
|
||||
ada-mips64.patch
|
||||
|
||||
0001-i386-Move-struct-ix86_frame-to-machine_function.patch
|
||||
0002-i386-Use-reference-of-struct-ix86_frame-to-avoid-cop.patch
|
||||
0003-i386-Use-const-reference-of-struct-ix86_frame-to-avo.patch
|
||||
0004-x86-Add-mindirect-branch.patch
|
||||
0005-x86-Add-mfunction-return.patch
|
||||
0006-x86-Add-mindirect-branch-register.patch
|
||||
0007-x86-Add-V-register-operand-modifier.patch
|
||||
0008-x86-Disallow-mindirect-branch-mfunction-return-with-.patch
|
||||
0009-Use-INVALID_REGNUM-in-indirect-thunk-processing.patch
|
||||
0010-i386-Pass-INVALID_REGNUM-as-invalid-register-number.patch
|
||||
0011-i386-Update-mfunction-return-for-return-with-pop.patch
|
||||
0012-i386-Add-TARGET_INDIRECT_BRANCH_REGISTER.patch
|
||||
0013-i386-Don-t-generate-alias-for-function-return-thunk.patch
|
||||
0016-invalid_tls_model.patch
|
||||
"
|
||||
|
||||
# gcc-4.8-build-args.patch
|
||||
|
||||
# we build out-of-tree
|
||||
_gccdir="$srcdir"/gcc-${_pkgbase:-$pkgver}
|
||||
_gcclibdir=/usr/lib/gcc/${CTARGET}/$pkgver
|
||||
@@ -240,7 +212,7 @@ prepare() {
|
||||
case "$i" in
|
||||
*.patch)
|
||||
msg "Applying $i"
|
||||
patch -p1 -F3 -i "$srcdir"/$i || _err="$_err $i"
|
||||
patch -p1 -i "$srcdir"/$i || _err="$_err $i"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
@@ -253,9 +225,6 @@ prepare() {
|
||||
return 1
|
||||
fi
|
||||
|
||||
# see http://gcc.gnu.org/ml/java/2008-04/msg00027.html
|
||||
mv "$srcdir"/ecj-*.jar ecj.jar
|
||||
|
||||
echo ${pkgver} > gcc/BASE-VER
|
||||
}
|
||||
|
||||
@@ -343,6 +312,7 @@ build() {
|
||||
$_symvers \
|
||||
--enable-__cxa_atexit \
|
||||
--enable-default-pie \
|
||||
--enable-default-ssp \
|
||||
--enable-cloog-backend \
|
||||
--enable-languages=$_languages \
|
||||
$_arch_configure \
|
||||
@@ -362,10 +332,9 @@ package() {
|
||||
|
||||
# we dont support gcj -static
|
||||
# and saving 35MB is not bad.
|
||||
find "$pkgdir" -name libgcj.a -o -name libgtkpeer.a \
|
||||
-o -name libgjsmalsa.a -o -name libgcj-tools.a \
|
||||
-o -name libjvm.a -o -name libgij.a -o -name libgcj_bc.a \
|
||||
-o -name libjavamath.a \
|
||||
find "$pkgdir" -name libgtkpeer.a \
|
||||
-o -name libgjsmalsa.a -o \
|
||||
-o -name libgij.a -o \
|
||||
| xargs rm -f
|
||||
|
||||
# strip debug info from some static libs
|
||||
@@ -376,11 +345,6 @@ package() {
|
||||
-o -name libatomic.a -o -name libasan.a -o -name libtsan.a \) \
|
||||
-a -type f`
|
||||
|
||||
if $LANG_JAVA; then
|
||||
sed -i -e 's/lib: /&%{static:%eJava programs cannot be linked statically}/' \
|
||||
"$pkgdir"/usr/lib/libgcj.spec
|
||||
fi
|
||||
|
||||
if $LIBGOMP; then
|
||||
mv "$pkgdir"/usr/lib/libgomp.spec "$pkgdir"/$_gcclibdir
|
||||
fi
|
||||
@@ -524,59 +488,6 @@ libgomp() {
|
||||
mv "$pkgdir"/usr/${_target:+$CTARGET/}lib/libgomp.so.* "$subpkgdir"/usr/lib/
|
||||
}
|
||||
|
||||
java() {
|
||||
pkgdesc="Java support for GCC"
|
||||
depends="zlib-dev gcc=$_gccrel libgcj=$_gccrel"
|
||||
|
||||
paxmark -pm "$pkgdir"/$_gcclibexec/ecj1
|
||||
mkdir -p "$subpkgdir"/usr/bin "$subpkgdir"/usr/lib "$subpkgdir"/$_gcclibdir/
|
||||
cd "$pkgdir"/usr/bin
|
||||
mv gcj gcj-dbtool gjavah gcjh jcf-dump "$subpkgdir"/usr/bin/
|
||||
cd "$pkgdir"
|
||||
for i in $(find usr/ -name ecj1 -o -name jc1 -o -name jvgenmain); do
|
||||
mkdir -p "$subpkgdir"/${i%/*}
|
||||
mv "$pkgdir"/$i "$subpkgdir"/$i
|
||||
done
|
||||
for i in "$pkgdir"/usr/lib/libgcj*.so; do
|
||||
if [ -L "$i" ]; then
|
||||
mv "$i" "$subpkgdir"/usr/lib/
|
||||
fi
|
||||
done
|
||||
mv "$pkgdir"/usr/lib/libgij.so "$subpkgdir"/usr/lib/
|
||||
mv "$pkgdir"/usr/lib/libgcj.spec "$subpkgdir"/$_gcclibdir/
|
||||
}
|
||||
|
||||
libgcj() {
|
||||
pkgdesc="Java runtime library for gcc"
|
||||
# libgcj_bc.so moved from gcc-java to libgcj
|
||||
replaces="gcc-java"
|
||||
depends=
|
||||
|
||||
mkdir -p "$subpkgdir"/usr/bin
|
||||
cd "$pkgdir"/usr/bin
|
||||
paxmark -pmse "$pkgdir"/usr/bin/gij
|
||||
mv aot-compile gappletviewer gc-analyze gij gjar gjarsigner gkeytool\
|
||||
gnative2ascii gorbd grmic grmid grmiregistry gserialver \
|
||||
gtnameserv jv-convert rebuild-gcj-db \
|
||||
"$subpkgdir"/usr/bin/
|
||||
cd "$pkgdir"
|
||||
for i in $(find usr/lib -name jc1 -o -name jvgenmain); do
|
||||
mkdir -p "$subpkgdir"/${i%/*}
|
||||
mv "$pkgdir"/$i "$subpkgdir"/$i
|
||||
done
|
||||
mkdir -p "$subpkgdir"/usr/lib
|
||||
mv "$pkgdir"/usr/lib/gcj-* \
|
||||
"$pkgdir"/usr/lib/libgcj_bc.so \
|
||||
"$pkgdir"/usr/lib/libgcj*.so.* \
|
||||
"$pkgdir"/usr/lib/libgij.so.* \
|
||||
"$pkgdir"/usr/lib/logging.properties \
|
||||
"$pkgdir"/usr/lib/security \
|
||||
"$subpkgdir"/usr/lib/
|
||||
|
||||
mkdir -p "$subpkgdir"/usr/share/
|
||||
mv "$pkgdir"/usr/share/java "$subpkgdir"/usr/share/
|
||||
}
|
||||
|
||||
libgo() {
|
||||
pkgdesc="Go runtime library for GCC"
|
||||
depends=
|
||||
@@ -662,56 +573,35 @@ gnat() {
|
||||
mv "$pkgdir"/usr/bin/*gnat* "$subpkgdir"/usr/bin/
|
||||
}
|
||||
|
||||
sha512sums="02c60e54527c7adf584798d5251f8a0b80c93d5deafce82501b2c28e6692e0bd783927bbfc4bc527a863c0cccc025150a34740a9e29badb02d4b48e56a8aba90 gcc-6.4.0.tar.xz
|
||||
28f8c6fdbcb19e950b1d0bafb3bcc7a8cba87bc673aa6027cece116599cdee80f0cf5e95a1440544890239f5c754e8a93ab46d9daedd937faef445d7ea33b226 ecj-4.9.jar
|
||||
a1335adc2fbee98e36c4437ff2587771b98ed4180726779020f65039498235626a411cdb0100dbd20cd19d12f0d94f9a21af179ff624676c28cead9d60598b5d 001_all_default-ssp-strong.patch
|
||||
sha512sums="1811337ae3add9680cec64968a2509d085b6dc5b6783fc1e8c295e3e47416196fd1a3ad8dfe7e10be2276b4f62c357659ce2902f239f60a8648548231b4b5802 gcc-8.3.0.tar.xz
|
||||
e36e95b81489163abd6fe9d58f7867bdca43e61143afacbfb17f4698c0b16ec5fd0061d8fab7b2ae615540bebd721c2e2227f80401b4e7fc253da9da62e6b513 002_all_default-relro.patch
|
||||
f86466c62b8291fac46f9c250c7ad8fa5ab7b1cce2504442fd07ddc4543665b317ae28951f244e39aba29aeaf3fff252ec4f6a147aa16adb2b7aed747dd89188 003_all_default-fortify-source.patch
|
||||
51282fea54c7e616367bbeb2479ba13fec6f24eb47bd04e2071907b3b36273b2ff24676f46ef8d22f241c8ab4857307861eee076eab66797c3a50a8ecaa1809a 005_all_default-as-needed.patch
|
||||
3398386dd1e079d6545dd9799adc799c6b80e3984fac6899d0e1a7ee21b66d0c7e53cddf17a65d590c883db750f9f79aaedd857355a8b9f7fb9476c906237919 011_all_default-warn-format-security.patch
|
||||
9adb0d2b9b67dd957df6c609b8714c7c078efb52cd88770905c37c67827be8fc83d1125037b9c29d77db21ce78756aa2bb0bacdb0b98d869ac126da76a298e21 012_all_default-warn-trampolines.patch
|
||||
02b725b220e540077efef741e9d457f9e004fe53ae642a138e214875d076a60f7c2f27de0ed9a4225db2030fc9c3d2c5b0414c895b9eec0f5f48fad70e2fb029 005_all_default-as-needed.patch
|
||||
6c9a5068f6eea8a85d297a3555b1d2333ffd4b9ddbfb7560a3e643f8577603871ca123373ef7f96e894225291d88f7bf575c7f8386bcfdd1dabcd7ba12598b65 gcc-as-needed-gold.patch
|
||||
ab0df1862f1b645634e79b8101326ce53215eba39861a455cd145b81b5267a6a61bc6e76b32d53887a0a48873f7efc23e2c52cc04400c6afd89822f245cdbc77 gcc-as-needed-push-pop.patch
|
||||
e026bf9f73ee254528423c6cabdfd7794960c567161581b7d4b7c61c45027e12a6efef79662d4288b9cbaecb4798f01af6a5b4a13b766c2d501444ac1846fd43 011_all_default-warn-format-security.patch
|
||||
37de4cc9061bfe1963e6e6570e1a6bbfd58204bf90e0eef819882599a9a80ea28f3eb815c20c1f173dc25d4bd9971b7c7f7f9512d6f8f91f04de1e1175114d4d 012_all_default-warn-trampolines.patch
|
||||
38a0fedeac3eebe4a6a957792ba520225cf42663c96a171cd168fdb6c91ffa9a56b80351f8238c5d03b78d3ae2a6539a54481fe4848b4a395e2c87f2ff7adc08 013_all_default-ssp-fix.patch
|
||||
d35a3ac7e13a4446921a90e1ff3eec1079840c845f9d523c868e24ae21f94cf69ba041de5341ebef96432a6f57598e223381d4286e8fb8baaa25906707f29fbd 020_all_msgfmt-libstdc++-link.patch
|
||||
840070a3c423e6206aaa6e63e1d9a0fcd6efd53626cd1240a193f0b60aa5d84216acc4a2a4fa8bce74549b07e6a316b01d638f20cea13dc62473491a302fb3d6 050_all_libiberty-asprintf.patch
|
||||
0a0bc72b9366158f5d23fff1928e756fdd212433bac6ab1f00d632f241382820db8db5d475ddf11ea020eaf7e2e71b12fb9b1c3c870cf84adf6c2b16f15aabca 051_all_libiberty-pic.patch
|
||||
e7a2eb1b1870e199d6fd753d065781575656fa12baa264f96c5d179689d88c31b8a3f92a5dae96088c05e96aa2bda138364ad7dbcc79e1819a102f192cbb7bab 053_all_libitm-no-fortify-source.patch
|
||||
e87da18aa7ab92b02b06168658c63b42a6c73a08fad2a30f81ef6296100fdbe3c3a91548fd0cb24eaf591e862bb08e4b67249bc4b977b07da33523aee0c686bc 067_all_gcc-poison-system-directories.patch
|
||||
4a328d1e1a56c20166307edcfa322068915784d9c08025b7f81cf69714da48fc266b6d34f77b9135c2f10da830d9df408276a1b78d1fd218637c2823506593c2 090_all_pr55930-dependency-tracking.patch
|
||||
ef052d0c3c9642fcb5ed570069c5a49c8ef523c47ac8ce3f201a801766f72ae4ff7c3725a70ee66e52c0fb559621e35fe0cf5b88b901d71ceadd381f49653a08 201-cilkrts.patch
|
||||
808e206f5e107084156fba333d4e091dcbd62f5d7756142bc292d4b0a52619f8c2aaca3617defc2f5b6552ba0439aebd33f4141329d88eab6ddf2dd637d92c08 203-libgcc_s.patch
|
||||
fc0de05b36613b732a0222ea005c90653c6a40d6761b6894af2419272f4e74875f37e26af33a9b9940669ef89269c44c46d17ca5bcd54b5cd1176e5eaf2992c1 204-linux_libc_has_function.patch
|
||||
3842bd2be3e53db34e59bfb2bd438b244fc3712055058b9e232e33345f0fab216256b79e364fbac335972dc599a1d74393704f0cd595f3f076dcc10883c85b28 0003-gcc-poison-system-directories.patch
|
||||
d1c2d7ff7f673375dc7cd84ae9d8515853b5af6390c70bb763412c012101344e4ee1ce155151ce3fb6ba2b80af7ed42d697dbe1bf6fd6e7b2b9087a378c47c37 203-libgcc_s.patch
|
||||
98473bcaa77903a223ca9b0d2087c0921b287a2816d308cc32c8fe009e6cbf5dd1ae7fba27794ab8d9c09e117fe534413d91a464d1218474fc123ce0adfdc2c1 205-nopie.patch
|
||||
3287d5b443bea8ec64132bcabe869c738ae98ea8f1a86df1c5d18c927f8816edbfcefeefc47792dbbb2bcacf50319af00e01b3735d34525913b64350770ad453 207-static-pie.patch
|
||||
6d84354e6df96d5ea244eb3bb5f044781796b88040b11c78fb6ee509e5aac19d46e0e92ca836e98e6495d9751f52439833b748efc419e4f5d5301fb549c4dcc9 0002-posix_memalign.patch
|
||||
7f434a7350c9b06d0ae7cc18a569d813238483afa34b0801d112844a0dfe6164ae36b0416955fd4da7a8caa54672247f319a8ec7ce4b6a97a5f4e17ec083112a 0008-s390x-muslldso.patch
|
||||
66085c5555e6b91b6874d1782d5a1dc0ab1792889f9400f48cde9483f82b51b9e3a5de1efbba21a19fc5e664334f2188d0c2bc988d42335efa26118b3c85cc7f 0010-ldbl128-config.patch
|
||||
45d5bc11a89e5af77503ca06eec52d6d84e6fea0be021aaee1bcc39f8dd3c7b4baa4200cfa2b0688faa0f207d005db89c029eff32f362207aa3d2365b2f2363e 0012-static-pie.patch
|
||||
d08d7ead2de0429e5c9055d5b029ec2be9a8c821d22cecaf9b51f633652c493333f98963d9267fa2fa63850c50ae5eefd5f59e5910ec10d20044dac082182a8b libgcc-always-build-gcceh.a.patch
|
||||
600fe5098dc54edaa9808fd5717af9dec058953f9ad37d49cfba1db4f7e9a7a8f02019342f75157fc575946fa693259422184de27b7ecc8386d9f3ecc0f7cc5d gcc-4.9-musl-fortify.patch
|
||||
dbe0ee917fc7668571722364ab7c806731e3a31e8bfa30b4941b28b16b877d2a32b4a3897ef533399a28f82d43cac9b28e92de0493f0e779046db56584e07fa4 gcc-6.1-musl-libssp.patch
|
||||
bda845a6aa1854d2c883910b115f79ccfa93dfc2b5eac69a3a236d83eb34cadc140731d616ffc24698c7abc8878dd15f231bcc5119f1860e575a120b311706c7 boehm-gc-musl.patch
|
||||
fa62556719449caec6b2b434355bfbcaa5ae55ffe017b3e1f827f66a2aae21b79c571ee7a4ce723ea69169bc3a6447e73650991a200cc372adf2f102677518d7 gcc-pure64.patch
|
||||
2253941f3d19b6d08801d3782f5f5ed56c3b73fbc9d3561a8f01c702963ac4fab91599c686076e7081eb6a80c37ccd33591ae978996d6eee1dc0ce0f1c50259a fix-gcj-stdgnu14-link.patch
|
||||
f89ddeb21bc8f97e6a850a6b70b4501a8f3e49a4bc8cc82897488decda5d98ad01cb7f6c8b392d452e9579924a523bc75da6e0648c1c976d42e40af48b10343b fix-gcj-musl.patch
|
||||
54d67cc008b735e47771314171930c5d8b8f5f5dc97fcf4214824c105c808f3e75d22d5a4fdf5068ed0457fa0d46c60cfb442e276259a4a5e9b8722a027d18e6 fix-gcj-iconv-musl.patch
|
||||
abe9aaf9aa956058d0386a4396a511d176a46bb3906b90e952383646cdc158cbeb0a5dc616a1ccb1ca7d49fd0b5e351532aa15a3b13362abbf1ca4266f54a687 gcc-4.8-build-args.patch
|
||||
35d6d59f0b7b968f282f56767c9e0823a7bdc5aa0d450aca50fbd802649a7ca608b47671244a3faa208a9b0d6832cabb5a22724157dc817b2c0ad63d09f93282 fix-cxxflags-passing.patch
|
||||
9016b257abd8fa981de44a49512e35db814d1cbb47c1a87cd31c12d4ae20b13e9e149fe41691a7ec3c95bbcfde8a79194a8d2eaf547ceade3a246fad67c47dd8 ada-fixes.patch
|
||||
3f5bc334d9f73d06f5f7c876738d02356acdd08958bea0e4d2095ebf15c2c2ec4e411abdae0297505ae9a1699ca01b17338e853184e84663203b192b0d35fc19 ada-shared.patch
|
||||
631d4bdef6d8bde34df7978bb53ec28c3c909cf1f87139e5f148138d0f09adc58b41ecf0148bbf50fb4bc916c411e9bf8a2b6c046c75c0e77d754d8c35bcd4d7 ada-musl.patch
|
||||
fa44c8158111627aa0e91c43e7cc3aa38642c2041c96532dd4f0932dae4d6f92ea2850b683abcf10e7e120299d42ea6b69adc00002a514c76be8e39e99fa052b ada-aarch64-multiarch.patch
|
||||
4b4a0ff306a8ef34ff6e3284fbfca869012164a47ba7cb099085c1dd03e6ca0cdd462f82710e08c9a02895adc7484e4c5eef17b5aa264cf5d978fe8ad78eea93 300-main-gcc-add-musl-s390x-dynamic-linker.patch
|
||||
385bc2fa50204f678964e5148c6170f572701dab920fbec8301f505bda34d182cde0adb7da042fee71719e12fb59f59181897f9b1bb4f4716ff59aad46ca1998 310-build-gcj-s390x.patch
|
||||
50537add461714f44dc6a778e0c6d0e15d6a782591c8aff38d1fb559191ddac2b5ee14a43a3005b389fdf98d2e7468ff4e64c88ba024cf94f9fe0d9854b9e9c8 ada-musl.patch
|
||||
a1f7750bc7b8b7d916a5dee34fcc736bd4fb249c96538b547d495794e6cfd49356aa3974506a15074b4cb58edd5d7e2868607c902dd003e8c464d5066fd4a575 libgnarl-musl.patch
|
||||
f4ef08454e28c8732db69115e4998ec153399e8d229dd27f923dbdcf57b68128a65640d026cc7f45b58ba8764ab1eb575d4eb6d6dfc550a87a183f8b94e76181 320-libffi-gnulinux.patch
|
||||
01c71cd5881fc07ea3b9b980697e89b3ca0fe98502958ceafc3fca18b2604c844e2f457feab711baf8e03f00a5383b0e38aac7eb954034e306f43d4a37f165ed fix-rs6000-pie.patch
|
||||
34a818d5be67eb1f34e44a80b83c28a9b9c17d37fc9fac639f490d6bb5b53ebe3318140d09c236a17d7c98f5a7792ae3d6cefccda8067a5e942d6305b9d1f87c fix-linux-header-use-in-libgcc.patch
|
||||
86be3338cc9c33089608bc4c5e3b7918c4e500a345c338f361b18c342119a6ed69af5495d72950de7106d760f003528b46ad14795e805f8a3331e206dcb234e3 gcc-pure64-mips.patch
|
||||
508f3bca214d88531d739d761d07affc953689b1540905c73420b34c246e1e6b72588cf89f0e1462752633f8ddc88da8c0238be2a1b6e1c213829cecee7924cf ada-mips64.patch
|
||||
7912964bf3a985e9f870250d6e068f715582a4fb04270849d697a50e6aad0cf50df3d483ff80a0eb777d9940fd85526dd8d0b85da9bc71a5f2fbc07616263866 0001-i386-Move-struct-ix86_frame-to-machine_function.patch
|
||||
baa27a4b912d8e27cd65a556b09cf45289a0e00e86dae3925f2923d1f3752080e80d80e159c996ef4156c4df1dfc3069114810a846672170ef3ae461ae0ab7e1 0002-i386-Use-reference-of-struct-ix86_frame-to-avoid-cop.patch
|
||||
6701d15000bdd7c4c98a8fece8c814f5e4e73603eecf84fe4dc5ac10f79b3074afba7c2cc9e51d08b2abade1c34cb0c944c08ead7a85db94e97158c752fd1aac 0003-i386-Use-const-reference-of-struct-ix86_frame-to-avo.patch
|
||||
4e7e71ae57e232b29a6455ec977f60b47df1356eca0e85976ae2b4567c4c39541be9f10c30fe0085d69be5acdb61dff51d3e9d7af587c95d9cd2cb9ee307bd13 0004-x86-Add-mindirect-branch.patch
|
||||
07f7fdbd9b4876f36ed7715a35a369dbaf1016f46c42a8935930cfcc9ea250de2dbe8113f077373ccce3c39cd728f957b6c4c7c6a7da299f160a4109f0bbe88d 0005-x86-Add-mfunction-return.patch
|
||||
76ea947591e5241f8e6216ce337baaf1b5dfe3f02d8251f77a4acd70e2a5e7798e2867d70f452027f51a2e3baf1b5c94c3bffe9ef8e0a5ce24dc5d509adaf414 0006-x86-Add-mindirect-branch-register.patch
|
||||
1c33c5cd34efb44d4fa0ace56e3d27ec802a66e03b08a29ab6122cbc70edbbe22313a34114437a41e09e0a6869af3cea3fb18f5bcb49db2f8e3f155026fe15f0 0007-x86-Add-V-register-operand-modifier.patch
|
||||
5366e2cff0629304394bf35e9417c7faea6b6f3fc565d0410a17fdafcb2b30c9a218f8ca098274c09ca4c982ff5b178ad6df5bf464ec541aa086966915c7fe11 0008-x86-Disallow-mindirect-branch-mfunction-return-with-.patch
|
||||
67c738b1f6afb09b6f0469c9cb282ab4d51fc8dd8e39df1cfdff8831788c1022081fccd446a482623f649898733aeaaa205cba0aa41162cdbdc74e57de9bb6eb 0009-Use-INVALID_REGNUM-in-indirect-thunk-processing.patch
|
||||
b7b59f3203bf53168de2170b91738cd456f6ae205b3fe5bf8aacbaa8cc5624dd09c941ad8f1071d1ab8ab4fb5f69068a4bc792c0486fdec1ee2eb9c83688bb78 0010-i386-Pass-INVALID_REGNUM-as-invalid-register-number.patch
|
||||
c53d4c5968865abb709ee8a9af9d57917d43ea3ba31ee8312f9e8f338e9b1b44babf5aa3414848da7267e5cf13a9261815eb9185dc153cbd41ee7ce5ea23d2d0 0011-i386-Update-mfunction-return-for-return-with-pop.patch
|
||||
955080ba3e42cfe2f604e5dcef46aa6fca7c899c7808398947af655ff3b7954e30807ef85246986a5cc7db36dbc870db151e9fa8d8bc967b89ea56efdf64614c 0012-i386-Add-TARGET_INDIRECT_BRANCH_REGISTER.patch
|
||||
3aae3a9cef8e8afe5a5433db8d9f410e1a2882481af01bb1d33232f987dbb74d7780c32be70b868bb391b3601b65ed3a16d777afea946f5eeaff72aa1e7fa3a9 0013-i386-Don-t-generate-alias-for-function-return-thunk.patch"
|
||||
8039d4081b77332694bc10f898d5e4da0ece4ce7b0e219fedb2aab965126b6b0537d03ba8652341c9c35af07eef33e96b42cc02388f36d8027b9475d44f6b420 0016-invalid_tls_model.patch"
|
||||
@@ -1,7 +1,8 @@
|
||||
diff -rup gcc-5.1.0/gcc.orig/ada/adaint.c gcc-5.1.0/gcc/ada/adaint.c
|
||||
--- gcc-5.1.0/gcc.orig/ada/adaint.c 2015-02-20 11:48:57.000000000 +0000
|
||||
+++ gcc-5.1.0/gcc/ada/adaint.c 2015-06-02 10:47:51.672767476 +0000
|
||||
@@ -70,6 +70,11 @@
|
||||
diff --git a/gcc/ada/adaint.c b/gcc/ada/adaint.c
|
||||
index 3b0aea9..ee0bb69 100644
|
||||
--- a/gcc/ada/adaint.c
|
||||
+++ b/gcc/ada/adaint.c
|
||||
@@ -76,6 +76,11 @@
|
||||
#include <sys/param.h>
|
||||
#include <sys/pstat.h>
|
||||
#endif
|
||||
@@ -13,16 +14,15 @@ diff -rup gcc-5.1.0/gcc.orig/ada/adaint.c gcc-5.1.0/gcc/ada/adaint.c
|
||||
|
||||
#ifdef __PikeOS__
|
||||
#define __BSD_VISIBLE 1
|
||||
@@ -3057,8 +3062,6 @@ __gnat_lwp_self (void)
|
||||
return (void *) syscall (__NR_gettid);
|
||||
}
|
||||
@@ -3255,7 +3260,6 @@ __gnat_lwp_self (void)
|
||||
#endif
|
||||
|
||||
#if defined (__linux__)
|
||||
-#include <sched.h>
|
||||
-
|
||||
|
||||
/* glibc versions earlier than 2.7 do not define the routines to handle
|
||||
dynamically allocated CPU sets. For these targets, we use the static
|
||||
versions. */
|
||||
@@ -3067,7 +3070,7 @@ __gnat_lwp_self (void)
|
||||
@@ -3265,7 +3269,7 @@ __gnat_lwp_self (void)
|
||||
|
||||
/* Dynamic cpu sets */
|
||||
|
||||
@@ -31,7 +31,7 @@ diff -rup gcc-5.1.0/gcc.orig/ada/adaint.c gcc-5.1.0/gcc/ada/adaint.c
|
||||
__gnat_cpu_alloc (size_t count)
|
||||
{
|
||||
return CPU_ALLOC (count);
|
||||
@@ -3080,33 +3083,33 @@ __gnat_cpu_alloc_size (size_t count)
|
||||
@@ -3278,33 +3282,33 @@ __gnat_cpu_alloc_size (size_t count)
|
||||
}
|
||||
|
||||
void
|
||||
@@ -73,7 +73,7 @@ diff -rup gcc-5.1.0/gcc.orig/ada/adaint.c gcc-5.1.0/gcc/ada/adaint.c
|
||||
}
|
||||
|
||||
size_t
|
||||
@@ -3116,23 +3119,23 @@ __gnat_cpu_alloc_size (size_t count ATTR
|
||||
@@ -3314,23 +3318,23 @@ __gnat_cpu_alloc_size (size_t count ATTRIBUTE_UNUSED)
|
||||
}
|
||||
|
||||
void
|
||||
@@ -101,11 +101,12 @@ diff -rup gcc-5.1.0/gcc.orig/ada/adaint.c gcc-5.1.0/gcc/ada/adaint.c
|
||||
+ CPU_SET (cpu - 1, (cpu_set_t *) set);
|
||||
}
|
||||
#endif /* !CPU_ALLOC */
|
||||
#endif /* linux */
|
||||
diff -rup gcc-5.1.0/gcc.orig/ada/adaint.h gcc-5.1.0/gcc/ada/adaint.h
|
||||
--- gcc-5.1.0/gcc.orig/ada/adaint.h 2015-01-27 17:20:27.000000000 +0000
|
||||
+++ gcc-5.1.0/gcc/ada/adaint.h 2015-06-02 10:47:23.188910894 +0000
|
||||
@@ -287,13 +287,11 @@ extern void *__gnat_lwp_self (voi
|
||||
#endif /* __linux__ */
|
||||
diff --git a/gcc/ada/adaint.h b/gcc/ada/adaint.h
|
||||
index 0d12f7e..a063b47 100644
|
||||
--- a/gcc/ada/adaint.h
|
||||
+++ b/gcc/ada/adaint.h
|
||||
@@ -316,13 +316,11 @@ extern void *__gnat_lwp_self (void);
|
||||
|
||||
/* Routines for interface to required CPU set primitives */
|
||||
|
||||
@@ -123,15 +124,94 @@ diff -rup gcc-5.1.0/gcc.orig/ada/adaint.h gcc-5.1.0/gcc/ada/adaint.h
|
||||
#endif
|
||||
|
||||
#if defined (_WIN32)
|
||||
diff -rup gcc-5.1.0/gcc.orig/ada/gcc-interface/Makefile.in gcc-5.1.0/gcc/ada/gcc-interface/Makefile.in
|
||||
--- gcc-5.1.0/gcc.orig/ada/gcc-interface/Makefile.in 2015-04-09 20:29:28.000000000 +0000
|
||||
+++ gcc-5.1.0/gcc/ada/gcc-interface/Makefile.in 2015-06-02 10:47:23.188910894 +0000
|
||||
@@ -1910,7 +1910,7 @@ ifeq ($(strip $(filter-out powerpc% linu
|
||||
diff --git a/gcc/ada/terminals.c b/gcc/ada/terminals.c
|
||||
index 7025f57..207b50d 100644
|
||||
--- a/gcc/ada/terminals.c
|
||||
+++ b/gcc/ada/terminals.c
|
||||
@@ -1108,13 +1108,6 @@ __gnat_setup_winsize (void *desc, int rows, int columns)
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
-/* On some system termio is either absent or including it will disable termios
|
||||
- (HP-UX) */
|
||||
-#if !defined (__hpux__) && !defined (BSD) && !defined (__APPLE__) \
|
||||
- && !defined (__rtems__) && !defined (__QNXNTO__)
|
||||
-# include <termio.h>
|
||||
-#endif
|
||||
-
|
||||
#include <sys/ioctl.h>
|
||||
#include <termios.h>
|
||||
#include <fcntl.h>
|
||||
diff --git a/gcc/ada/gcc-interface/Makefile.in b/gcc/ada/gcc-interface/Makefile.in
|
||||
index ebb955e..08cfbee 100644
|
||||
--- a/gcc/ada/gcc-interface/Makefile.in
|
||||
+++ b/gcc/ada/gcc-interface/Makefile.in
|
||||
@@ -1028,7 +1028,7 @@ ifeq ($(strip $(filter-out %86 linux%,$(target_cpu) $(target_os))),)
|
||||
s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
|
||||
$(TRASYM_DWARF_UNIX_PAIRS) \
|
||||
g-sercom.adb<libgnat/g-sercom__linux.adb \
|
||||
- s-tsmona.adb<libgnat/s-tsmona__linux.adb \
|
||||
+ s-tsmona.adb<libgnat/s-tsmona.adb \
|
||||
a-exetim.adb<libgnarl/a-exetim__posix.adb \
|
||||
a-exetim.ads<libgnarl/a-exetim__default.ads \
|
||||
s-linux.ads<libgnarl/s-linux.ads \
|
||||
@@ -1545,7 +1545,7 @@ ifeq ($(strip $(filter-out powerpc% linux%,$(target_cpu) $(target_os))),)
|
||||
s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
|
||||
g-sercom.adb<libgnat/g-sercom__linux.adb \
|
||||
$(TRASYM_DWARF_UNIX_PAIRS) \
|
||||
- s-tsmona.adb<libgnat/s-tsmona__linux.adb \
|
||||
+ s-tsmona.adb<libgnat/s-tsmona.adb \
|
||||
$(ATOMICS_TARGET_PAIRS) \
|
||||
$(ATOMICS_BUILTINS_TARGET_PAIRS) \
|
||||
system.ads<libgnat/system-linux-ppc.ads
|
||||
@@ -1574,7 +1574,7 @@ ifeq ($(strip $(filter-out powerpc% linux%,$(target_cpu) $(target_os))),)
|
||||
endif
|
||||
|
||||
# ARM linux, GNU eabi
|
||||
-ifeq ($(strip $(filter-out arm% linux-gnueabi%,$(target_cpu) $(target_os))),)
|
||||
+ifeq ($(strip $(filter-out arm% linux-gnueabi% linux-musleabi% linux-muslgnueabi%,$(target_cpu) $(target_os))),)
|
||||
LIBGNAT_TARGET_PAIRS = \
|
||||
a-intnam.ads<a-intnam-linux.ads \
|
||||
s-inmaop.adb<s-inmaop-posix.adb \
|
||||
a-intnam.ads<libgnarl/a-intnam__linux.ads \
|
||||
s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
|
||||
@@ -1774,7 +1774,7 @@ ifeq ($(strip $(filter-out %ia64 linux%,$(target_cpu) $(target_os))),)
|
||||
s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
|
||||
g-sercom.adb<libgnat/g-sercom__linux.adb \
|
||||
$(TRASYM_DWARF_UNIX_PAIRS) \
|
||||
- s-tsmona.adb<libgnat/s-tsmona__linux.adb \
|
||||
+ s-tsmona.adb<libgnat/s-tsmona.adb \
|
||||
$(ATOMICS_TARGET_PAIRS) \
|
||||
$(ATOMICS_BUILTINS_TARGET_PAIRS) \
|
||||
system.ads<libgnat/system-linux-ia64.ads
|
||||
@@ -1871,7 +1871,7 @@ ifeq ($(strip $(filter-out %x86_64 linux%,$(target_cpu) $(target_os))),)
|
||||
s-taspri.ads<libgnarl/s-taspri__posix.ads \
|
||||
g-sercom.adb<libgnat/g-sercom__linux.adb \
|
||||
$(TRASYM_DWARF_UNIX_PAIRS) \
|
||||
- s-tsmona.adb<libgnat/s-tsmona__linux.adb \
|
||||
+ s-tsmona.adb<libgnat/s-tsmona.adb \
|
||||
$(ATOMICS_TARGET_PAIRS) \
|
||||
$(X86_64_TARGET_PAIRS) \
|
||||
system.ads<libgnat/system-linux-x86.ads
|
||||
diff --git a/gcc/ada/terminals.c b/gcc/ada/terminals.c
|
||||
index 207b50d..bd3a02c 100644
|
||||
--- a/gcc/ada/terminals.c
|
||||
+++ b/gcc/ada/terminals.c
|
||||
@@ -1152,7 +1152,7 @@ __gnat_setup_winsize (void *desc, int rows, int columns)
|
||||
#if defined (__APPLE__) || defined (BSD)
|
||||
#define USE_OPENPTY
|
||||
#elif defined (__linux__)
|
||||
-#define USE_GETPT
|
||||
+#define USE_POSIX_OPENPT
|
||||
#elif defined (__sun__)
|
||||
#define USE_CLONE_DEVICE "/dev/ptmx"
|
||||
#elif defined (_AIX)
|
||||
@@ -1201,8 +1201,8 @@ allocate_pty_desc (pty_desc **desc) {
|
||||
int master_fd = -1;
|
||||
char *slave_name = NULL;
|
||||
|
||||
-#ifdef USE_GETPT
|
||||
- master_fd = getpt ();
|
||||
+#ifdef USE_POSIX_OPENPT
|
||||
+ master_fd = posix_openpt(O_RDWR | O_NOCTTY);
|
||||
#elif defined (USE_OPENPTY)
|
||||
status = openpty (&master_fd, &slave_fd, NULL, NULL, NULL);
|
||||
#elif defined (USE_CLONE_DEVICE)
|
||||
@@ -0,0 +1,58 @@
|
||||
# DP: Use --push-state/--pop-state for gold as well when linking libtsan.
|
||||
|
||||
Index: b/gcc/gcc.c
|
||||
===================================================================
|
||||
--- a/gcc/gcc.c
|
||||
+++ b/gcc/gcc.c
|
||||
@@ -693,10 +693,10 @@ proper position among the other output f
|
||||
#define LIBASAN_SPEC STATIC_LIBASAN_LIBS
|
||||
#elif defined(HAVE_LD_STATIC_DYNAMIC)
|
||||
#define LIBASAN_SPEC "%{static-libasan:" LD_STATIC_OPTION "}" \
|
||||
- " %{!static-libasan:%{!fuse-ld=gold:--push-state }--no-as-needed}" \
|
||||
+ " %{!static-libasan:--push-state --no-as-needed}" \
|
||||
" -lasan " \
|
||||
" %{static-libasan:" LD_DYNAMIC_OPTION "}" \
|
||||
- " %{!static-libasan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \
|
||||
+ " %{!static-libasan:--pop-state}" \
|
||||
STATIC_LIBASAN_LIBS
|
||||
#else
|
||||
#define LIBASAN_SPEC "-lasan" STATIC_LIBASAN_LIBS
|
||||
@@ -714,10 +714,10 @@ proper position among the other output f
|
||||
#define LIBTSAN_SPEC STATIC_LIBTSAN_LIBS
|
||||
#elif defined(HAVE_LD_STATIC_DYNAMIC)
|
||||
#define LIBTSAN_SPEC "%{static-libtsan:" LD_STATIC_OPTION "}" \
|
||||
- " %{!static-libtsan:%{!fuse-ld=gold:--push-state }--no-as-needed}" \
|
||||
+ " %{!static-libtsan:--push-state --no-as-needed}" \
|
||||
" -ltsan " \
|
||||
" %{static-libtsan:" LD_DYNAMIC_OPTION "}" \
|
||||
- " %{!static-libtsan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \
|
||||
+ " %{!static-libtsan:--pop-state}" \
|
||||
STATIC_LIBTSAN_LIBS
|
||||
#else
|
||||
#define LIBTSAN_SPEC "-ltsan" STATIC_LIBTSAN_LIBS
|
||||
@@ -735,10 +735,10 @@ proper position among the other output f
|
||||
#define LIBLSAN_SPEC STATIC_LIBLSAN_LIBS
|
||||
#elif defined(HAVE_LD_STATIC_DYNAMIC)
|
||||
#define LIBLSAN_SPEC "%{static-liblsan:" LD_STATIC_OPTION "}" \
|
||||
- " %{!static-liblsan:%{!fuse-ld=gold:--push-state }--no-as-needed}" \
|
||||
+ " %{!static-liblsan:--push-state --no-as-needed}" \
|
||||
" -llsan " \
|
||||
" %{static-liblsan:" LD_DYNAMIC_OPTION "}" \
|
||||
- " %{!static-liblsan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \
|
||||
+ " %{!static-liblsan:--pop-state}" \
|
||||
STATIC_LIBLSAN_LIBS
|
||||
#else
|
||||
#define LIBLSAN_SPEC "-llsan" STATIC_LIBLSAN_LIBS
|
||||
@@ -754,10 +754,10 @@ proper position among the other output f
|
||||
" %{static-libubsan|static:%:include(libsanitizer.spec)%(link_libubsan)}"
|
||||
#ifdef HAVE_LD_STATIC_DYNAMIC
|
||||
#define LIBUBSAN_SPEC "%{static-libubsan:" LD_STATIC_OPTION "}" \
|
||||
- " %{!static-libubsan:%{!fuse-ld=gold:--push-state }--no-as-needed}" \
|
||||
+ " %{!static-libubsan:--push-state --no-as-needed}" \
|
||||
" -lubsan " \
|
||||
" %{static-libubsan:" LD_DYNAMIC_OPTION "}" \
|
||||
- " %{!static-libubsan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \
|
||||
+ " %{!static-libubsan:--pop-state}" \
|
||||
STATIC_LIBUBSAN_LIBS
|
||||
#else
|
||||
#define LIBUBSAN_SPEC "-lubsan" STATIC_LIBUBSAN_LIBS
|
||||
@@ -0,0 +1,43 @@
|
||||
From: Jakub Jelinek <jakub@redhat.com>
|
||||
Subject: [PATCH] Use --push-state --as-needed and --pop-state instead of --as-needed and --no-as-needed for libgcc
|
||||
|
||||
As discussed, using --as-needed and --no-as-needed is dangerous, because
|
||||
it results in --no-as-needed even for libraries after -lgcc_s, even when the
|
||||
default is --as-needed or --as-needed has been specified earlier on the
|
||||
command line.
|
||||
|
||||
If the linker supports --push-state/--pop-state, we should IMHO use it.
|
||||
|
||||
2018-04-11 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* configure.ac (LD_AS_NEEDED_OPTION, LD_NO_AS_NEEDED_OPTION): Use
|
||||
--push-state --as-needed and --pop-state instead of --as-needed and
|
||||
--no-as-needed if ld supports it.
|
||||
* configure: Regenerated.
|
||||
|
||||
Index: b/gcc/configure.ac
|
||||
===================================================================
|
||||
--- a/gcc/configure.ac
|
||||
+++ b/gcc/configure.ac
|
||||
@@ -5518,11 +5518,21 @@ if test $in_tree_ld = yes ; then
|
||||
if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 16 -o "$gcc_cv_gld_major_version" -gt 2 \
|
||||
&& test $in_tree_ld_is_elf = yes; then
|
||||
gcc_cv_ld_as_needed=yes
|
||||
+ if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 28; then
|
||||
+ gcc_cv_ld_as_needed_option='--push-state --as-needed'
|
||||
+ gcc_cv_ld_no_as_needed_option='--pop-state'
|
||||
+ fi
|
||||
fi
|
||||
elif test x$gcc_cv_ld != x; then
|
||||
# Check if linker supports --as-needed and --no-as-needed options
|
||||
if $gcc_cv_ld --help 2>&1 | grep as-needed > /dev/null; then
|
||||
gcc_cv_ld_as_needed=yes
|
||||
+ if $gcc_cv_ld --help 2>&1 | grep push-state > /dev/null; then
|
||||
+ if $gcc_cv_ld --help 2>&1 | grep pop-state > /dev/null; then
|
||||
+ gcc_cv_ld_as_needed_option='--push-state --as-needed'
|
||||
+ gcc_cv_ld_no_as_needed_option='--pop-state'
|
||||
+ fi
|
||||
+ fi
|
||||
fi
|
||||
case "$target:$gnu_ld" in
|
||||
*-*-solaris2*:no)
|
||||
@@ -0,0 +1,120 @@
|
||||
diff -rup gcc-8.2.0/gcc/ada/libgnarl/s-osinte__linux.ads gcc-8.2.0-new/gcc/ada/libgnarl/s-osinte__linux.ads
|
||||
--- gcc-8.2.0/gcc/ada/libgnarl/s-osinte__linux.ads 2018-01-11 00:55:25.000000000 -0800
|
||||
+++ gcc-8.2.0-new/gcc/ada/libgnarl/s-osinte__linux.ads 2018-11-01 16:16:23.372452951 -0700
|
||||
@@ -394,12 +394,6 @@ package System.OS_Interface is
|
||||
PTHREAD_RWLOCK_PREFER_WRITER_NP : constant := 1;
|
||||
PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP : constant := 2;
|
||||
|
||||
- function pthread_rwlockattr_setkind_np
|
||||
- (attr : access pthread_rwlockattr_t;
|
||||
- pref : int) return int;
|
||||
- pragma Import
|
||||
- (C, pthread_rwlockattr_setkind_np, "pthread_rwlockattr_setkind_np");
|
||||
-
|
||||
function pthread_rwlock_init
|
||||
(mutex : access pthread_rwlock_t;
|
||||
attr : access pthread_rwlockattr_t) return int;
|
||||
@@ -464,11 +458,6 @@ package System.OS_Interface is
|
||||
protocol : int) return int;
|
||||
pragma Import (C, pthread_mutexattr_setprotocol);
|
||||
|
||||
- function pthread_mutexattr_setprioceiling
|
||||
- (attr : access pthread_mutexattr_t;
|
||||
- prioceiling : int) return int;
|
||||
- pragma Import (C, pthread_mutexattr_setprioceiling);
|
||||
-
|
||||
type struct_sched_param is record
|
||||
sched_priority : int; -- scheduling priority
|
||||
end record;
|
||||
diff -rup gcc-8.2.0/gcc/ada/libgnarl/s-taprop__linux.adb gcc-8.2.0-new/gcc/ada/libgnarl/s-taprop__linux.adb
|
||||
--- gcc-8.2.0/gcc/ada/libgnarl/s-taprop__linux.adb 2018-01-11 00:55:25.000000000 -0800
|
||||
+++ gcc-8.2.0-new/gcc/ada/libgnarl/s-taprop__linux.adb 2018-11-13 11:28:36.433964449 -0800
|
||||
@@ -202,9 +202,6 @@ package body System.Task_Primitives.Oper
|
||||
pragma Import
|
||||
(C, GNAT_pthread_condattr_setup, "__gnat_pthread_condattr_setup");
|
||||
|
||||
- function GNAT_has_cap_sys_nice return C.int;
|
||||
- pragma Import
|
||||
- (C, GNAT_has_cap_sys_nice, "__gnat_has_cap_sys_nice");
|
||||
-- We do not have pragma Linker_Options ("-lcap"); here, because this
|
||||
-- library is not present on many Linux systems. 'libcap' is the Linux
|
||||
-- "capabilities" library, called by __gnat_has_cap_sys_nice.
|
||||
@@ -214,38 +211,6 @@ package body System.Task_Primitives.Oper
|
||||
-- Convert Ada priority to Linux priority. Priorities are 1 .. 99 on
|
||||
-- GNU/Linux, so we map 0 .. 98 to 1 .. 99.
|
||||
|
||||
- function Get_Ceiling_Support return Boolean;
|
||||
- -- Get the value of the Ceiling_Support constant (see below).
|
||||
- -- Note well: If this function or related code is modified, it should be
|
||||
- -- tested by hand, because automated testing doesn't exercise it.
|
||||
-
|
||||
- -------------------------
|
||||
- -- Get_Ceiling_Support --
|
||||
- -------------------------
|
||||
-
|
||||
- function Get_Ceiling_Support return Boolean is
|
||||
- Ceiling_Support : Boolean := False;
|
||||
- begin
|
||||
- if Locking_Policy /= 'C' then
|
||||
- return False;
|
||||
- end if;
|
||||
-
|
||||
- declare
|
||||
- function geteuid return Integer;
|
||||
- pragma Import (C, geteuid, "geteuid");
|
||||
- Superuser : constant Boolean := geteuid = 0;
|
||||
- Has_Cap : constant C.int := GNAT_has_cap_sys_nice;
|
||||
- pragma Assert (Has_Cap in 0 | 1);
|
||||
- begin
|
||||
- Ceiling_Support := Superuser or else Has_Cap = 1;
|
||||
- end;
|
||||
-
|
||||
- return Ceiling_Support;
|
||||
- end Get_Ceiling_Support;
|
||||
-
|
||||
- pragma Warnings (Off, "non-static call not allowed in preelaborated unit");
|
||||
- Ceiling_Support : constant Boolean := Get_Ceiling_Support;
|
||||
- pragma Warnings (On, "non-static call not allowed in preelaborated unit");
|
||||
-- True if the locking policy is Ceiling_Locking, and the current process
|
||||
-- has permission to use this policy. The process has permission if it is
|
||||
-- running as 'root', or if the capability was set by the setcap command,
|
||||
@@ -348,7 +313,9 @@ package body System.Task_Primitives.Oper
|
||||
-- Init_Mutex --
|
||||
----------------
|
||||
|
||||
+ pragma Warnings (Off, "formal parameter * is not referenced");
|
||||
function Init_Mutex (L : RTS_Lock_Ptr; Prio : Any_Priority) return C.int is
|
||||
+ pragma Warnings (On, "formal parameter * is not referenced");
|
||||
Mutex_Attr : aliased pthread_mutexattr_t;
|
||||
Result, Result_2 : C.int;
|
||||
|
||||
@@ -360,16 +327,7 @@ package body System.Task_Primitives.Oper
|
||||
return Result;
|
||||
end if;
|
||||
|
||||
- if Ceiling_Support then
|
||||
- Result := pthread_mutexattr_setprotocol
|
||||
- (Mutex_Attr'Access, PTHREAD_PRIO_PROTECT);
|
||||
- pragma Assert (Result = 0);
|
||||
-
|
||||
- Result := pthread_mutexattr_setprioceiling
|
||||
- (Mutex_Attr'Access, Prio_To_Linux_Prio (Prio));
|
||||
- pragma Assert (Result = 0);
|
||||
-
|
||||
- elsif Locking_Policy = 'I' then
|
||||
+ if Locking_Policy = 'I' then
|
||||
Result := pthread_mutexattr_setprotocol
|
||||
(Mutex_Attr'Access, PTHREAD_PRIO_INHERIT);
|
||||
pragma Assert (Result = 0);
|
||||
@@ -409,11 +367,6 @@ package body System.Task_Primitives.Oper
|
||||
Result := pthread_rwlockattr_init (RWlock_Attr'Access);
|
||||
pragma Assert (Result = 0);
|
||||
|
||||
- Result := pthread_rwlockattr_setkind_np
|
||||
- (RWlock_Attr'Access,
|
||||
- PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP);
|
||||
- pragma Assert (Result = 0);
|
||||
-
|
||||
Result := pthread_rwlock_init (L.RW'Access, RWlock_Attr'Access);
|
||||
|
||||
pragma Assert (Result in 0 | ENOMEM);
|
||||
@@ -0,0 +1,42 @@
|
||||
From 65eb86f3e110998d30489df009d44b4bc1043adc Mon Sep 17 00:00:00 2001
|
||||
From: Szabolcs Nagy <nsz@port70.net>
|
||||
Date: Fri, 26 Jan 2018 20:32:50 +0000
|
||||
Subject: [PATCH 02/12] posix_memalign
|
||||
|
||||
---
|
||||
gcc/config/i386/pmm_malloc.h | 9 +++++----
|
||||
1 file changed, 5 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/gcc/config/i386/pmm_malloc.h b/gcc/config/i386/pmm_malloc.h
|
||||
index ffbb7f82cf5..b0b890d2403 100644
|
||||
--- a/gcc/config/i386/pmm_malloc.h
|
||||
+++ b/gcc/config/i386/pmm_malloc.h
|
||||
@@ -27,12 +27,13 @@
|
||||
#include <stdlib.h>
|
||||
|
||||
/* We can't depend on <stdlib.h> since the prototype of posix_memalign
|
||||
- may not be visible. */
|
||||
+ may not be visible and we can't pollute the namespace either. */
|
||||
#ifndef __cplusplus
|
||||
-extern int posix_memalign (void **, size_t, size_t);
|
||||
+extern int _mm_posix_memalign (void **, size_t, size_t)
|
||||
#else
|
||||
-extern "C" int posix_memalign (void **, size_t, size_t) throw ();
|
||||
+extern "C" int _mm_posix_memalign (void **, size_t, size_t) throw ()
|
||||
#endif
|
||||
+__asm__("posix_memalign");
|
||||
|
||||
static __inline void *
|
||||
_mm_malloc (size_t __size, size_t __alignment)
|
||||
@@ -42,7 +43,7 @@ _mm_malloc (size_t __size, size_t __alignment)
|
||||
return malloc (__size);
|
||||
if (__alignment == 2 || (sizeof (void *) == 8 && __alignment == 4))
|
||||
__alignment = sizeof (void *);
|
||||
- if (posix_memalign (&__ptr, __alignment, __size) == 0)
|
||||
+ if (_mm_posix_memalign (&__ptr, __alignment, __size) == 0)
|
||||
return __ptr;
|
||||
else
|
||||
return NULL;
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -0,0 +1,194 @@
|
||||
From 48c670d2678e0323d88eb72205e039f393cabe05 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 29 Mar 2013 08:59:00 +0400
|
||||
Subject: [PATCH 03/39] gcc: poison-system-directories
|
||||
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
|
||||
Upstream-Status: Inappropriate [distribution: codesourcery]
|
||||
---
|
||||
gcc/common.opt | 4 ++++
|
||||
gcc/config.in | 6 ++++++
|
||||
gcc/configure | 16 ++++++++++++++++
|
||||
gcc/configure.ac | 10 ++++++++++
|
||||
gcc/doc/invoke.texi | 9 +++++++++
|
||||
gcc/gcc.c | 2 ++
|
||||
gcc/incpath.c | 19 +++++++++++++++++++
|
||||
7 files changed, 66 insertions(+)
|
||||
|
||||
diff --git a/gcc/common.opt b/gcc/common.opt
|
||||
index d6ef85928f3..7b29efe3882 100644
|
||||
--- a/gcc/common.opt
|
||||
+++ b/gcc/common.opt
|
||||
@@ -679,6 +679,10 @@ Wreturn-local-addr
|
||||
Common Var(warn_return_local_addr) Init(1) Warning
|
||||
Warn about returning a pointer/reference to a local or temporary variable.
|
||||
|
||||
+Wpoison-system-directories
|
||||
+Common Var(flag_poison_system_directories) Init(1) Warning
|
||||
+Warn for -I and -L options using system directories if cross compiling
|
||||
+
|
||||
Wshadow
|
||||
Common Var(warn_shadow) Warning
|
||||
Warn when one variable shadows another. Same as -Wshadow=global.
|
||||
diff --git a/gcc/config.in b/gcc/config.in
|
||||
index 5bccb408016..1c784a8276b 100644
|
||||
--- a/gcc/config.in
|
||||
+++ b/gcc/config.in
|
||||
@@ -194,6 +194,12 @@
|
||||
#endif
|
||||
|
||||
|
||||
+/* Define to warn for use of native system header directories */
|
||||
+#ifndef USED_FOR_TARGET
|
||||
+#undef ENABLE_POISON_SYSTEM_DIRECTORIES
|
||||
+#endif
|
||||
+
|
||||
+
|
||||
/* Define if you want all operations on RTL (the basic data structure of the
|
||||
optimizer and back end) to be checked for dynamic type safety at runtime.
|
||||
This is quite expensive. */
|
||||
diff --git a/gcc/configure b/gcc/configure
|
||||
index 5c345ce0fd7..cafd05fd150 100755
|
||||
--- a/gcc/configure
|
||||
+++ b/gcc/configure
|
||||
@@ -953,6 +953,7 @@ with_system_zlib
|
||||
enable_maintainer_mode
|
||||
enable_link_mutex
|
||||
enable_version_specific_runtime_libs
|
||||
+enable_poison_system_directories
|
||||
enable_plugin
|
||||
enable_host_shared
|
||||
enable_libquadmath_support
|
||||
@@ -1696,6 +1697,8 @@ Optional Features:
|
||||
--enable-version-specific-runtime-libs
|
||||
specify that runtime libraries should be installed
|
||||
in a compiler-specific directory
|
||||
+ --enable-poison-system-directories
|
||||
+ warn for use of native system header directories
|
||||
--enable-plugin enable plugin support
|
||||
--enable-host-shared build host code as shared libraries
|
||||
--disable-libquadmath-support
|
||||
@@ -29715,6 +29718,19 @@ if test "${enable_version_specific_runtime_libs+set}" = set; then :
|
||||
fi
|
||||
|
||||
|
||||
+# Check whether --enable-poison-system-directories was given.
|
||||
+if test "${enable_poison_system_directories+set}" = set; then :
|
||||
+ enableval=$enable_poison_system_directories;
|
||||
+else
|
||||
+ enable_poison_system_directories=no
|
||||
+fi
|
||||
+
|
||||
+if test "x${enable_poison_system_directories}" = "xyes"; then
|
||||
+
|
||||
+$as_echo "#define ENABLE_POISON_SYSTEM_DIRECTORIES 1" >>confdefs.h
|
||||
+
|
||||
+fi
|
||||
+
|
||||
# Substitute configuration variables
|
||||
|
||||
|
||||
diff --git a/gcc/configure.ac b/gcc/configure.ac
|
||||
index 65dbf1f2f80..dd5b38195ce 100644
|
||||
--- a/gcc/configure.ac
|
||||
+++ b/gcc/configure.ac
|
||||
@@ -6341,6 +6341,16 @@ AC_ARG_ENABLE(version-specific-runtime-libs,
|
||||
[specify that runtime libraries should be
|
||||
installed in a compiler-specific directory])])
|
||||
|
||||
+AC_ARG_ENABLE([poison-system-directories],
|
||||
+ AS_HELP_STRING([--enable-poison-system-directories],
|
||||
+ [warn for use of native system header directories]),,
|
||||
+ [enable_poison_system_directories=no])
|
||||
+if test "x${enable_poison_system_directories}" = "xyes"; then
|
||||
+ AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES],
|
||||
+ [1],
|
||||
+ [Define to warn for use of native system header directories])
|
||||
+fi
|
||||
+
|
||||
# Substitute configuration variables
|
||||
AC_SUBST(subdirs)
|
||||
AC_SUBST(srcdir)
|
||||
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
|
||||
index 255149fcfb8..cb71b60fe3c 100644
|
||||
--- a/gcc/doc/invoke.texi
|
||||
+++ b/gcc/doc/invoke.texi
|
||||
@@ -303,6 +303,7 @@ Objective-C and Objective-C++ Dialects}.
|
||||
-Wpacked -Wpacked-bitfield-compat -Wpacked-not-aligned -Wpadded @gol
|
||||
-Wparentheses -Wno-pedantic-ms-format @gol
|
||||
-Wplacement-new -Wplacement-new=@var{n} @gol
|
||||
+-Wno-poison-system-directories @gol
|
||||
-Wpointer-arith -Wpointer-compare -Wno-pointer-to-int-cast @gol
|
||||
-Wno-pragmas -Wredundant-decls -Wrestrict -Wno-return-local-addr @gol
|
||||
-Wreturn-type -Wsequence-point -Wshadow -Wno-shadow-ivar @gol
|
||||
@@ -5712,6 +5713,14 @@ made up of data only and thus requires no special treatment. But, for
|
||||
most targets, it is made up of code and thus requires the stack to be
|
||||
made executable in order for the program to work properly.
|
||||
|
||||
+@item -Wno-poison-system-directories
|
||||
+@opindex Wno-poison-system-directories
|
||||
+Do not warn for @option{-I} or @option{-L} options using system
|
||||
+directories such as @file{/usr/include} when cross compiling. This
|
||||
+option is intended for use in chroot environments when such
|
||||
+directories contain the correct headers and libraries for the target
|
||||
+system rather than the host.
|
||||
+
|
||||
@item -Wfloat-equal
|
||||
@opindex Wfloat-equal
|
||||
@opindex Wno-float-equal
|
||||
diff --git a/gcc/gcc.c b/gcc/gcc.c
|
||||
index a716f708259..02b3cd39fc2 100644
|
||||
--- a/gcc/gcc.c
|
||||
+++ b/gcc/gcc.c
|
||||
@@ -1037,6 +1037,8 @@ proper position among the other output files. */
|
||||
"%{fuse-ld=*:-fuse-ld=%*} " LINK_COMPRESS_DEBUG_SPEC \
|
||||
"%X %{o*} %{e*} %{N} %{n} %{r}\
|
||||
%{s} %{t} %{u*} %{z} %{Z} %{!nostdlib:%{!nostartfiles:%S}} \
|
||||
+ %{Wno-poison-system-directories:--no-poison-system-directories} \
|
||||
+ %{Werror=poison-system-directories:--error-poison-system-directories} \
|
||||
%{static|no-pie|static-pie:} %{L*} %(mfwrap) %(link_libgcc) " \
|
||||
VTABLE_VERIFICATION_SPEC " " SANITIZER_EARLY_SPEC " %o " CHKP_SPEC " \
|
||||
%{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*:%*} 1):\
|
||||
diff --git a/gcc/incpath.c b/gcc/incpath.c
|
||||
index b11c6a57939..e3b7a21966f 100644
|
||||
--- a/gcc/incpath.c
|
||||
+++ b/gcc/incpath.c
|
||||
@@ -26,6 +26,7 @@
|
||||
#include "intl.h"
|
||||
#include "incpath.h"
|
||||
#include "cppdefault.h"
|
||||
+#include "diagnostic-core.h"
|
||||
|
||||
/* Microsoft Windows does not natively support inodes.
|
||||
VMS has non-numeric inodes. */
|
||||
@@ -393,6 +394,26 @@ merge_include_chains (const char *sysroot, cpp_reader *pfile, int verbose)
|
||||
}
|
||||
fprintf (stderr, _("End of search list.\n"));
|
||||
}
|
||||
+
|
||||
+#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES
|
||||
+ if (flag_poison_system_directories)
|
||||
+ {
|
||||
+ struct cpp_dir *p;
|
||||
+
|
||||
+ for (p = heads[INC_QUOTE]; p; p = p->next)
|
||||
+ {
|
||||
+ if ((!strncmp (p->name, "/usr/include", 12))
|
||||
+ || (!strncmp (p->name, "/usr/local/include", 18))
|
||||
+ || (!strncmp (p->name, "/usr/X11R6/include", 18))
|
||||
+ || (!strncmp (p->name, "/sw/include", 11))
|
||||
+ || (!strncmp (p->name, "/opt/include", 12)))
|
||||
+ warning (OPT_Wpoison_system_directories,
|
||||
+ "include location \"%s\" is unsafe for "
|
||||
+ "cross-compilation",
|
||||
+ p->name);
|
||||
+ }
|
||||
+ }
|
||||
+#endif
|
||||
}
|
||||
|
||||
/* Use given -I paths for #include "..." but not #include <...>, and
|
||||
--
|
||||
2.17.0
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
From b693804c8dba92fea7beee98f0aa520853a0532b Mon Sep 17 00:00:00 2001
|
||||
From: Szabolcs Nagy <nsz@port70.net>
|
||||
Date: Thu, 22 Dec 2016 11:22:28 +0000
|
||||
Subject: [PATCH 08/12] s390x muslldso
|
||||
|
||||
---
|
||||
gcc/config/s390/linux.h | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/gcc/config/s390/linux.h b/gcc/config/s390/linux.h
|
||||
index 525c17c2c9f..2d4f4a0654e 100644
|
||||
--- a/gcc/config/s390/linux.h
|
||||
+++ b/gcc/config/s390/linux.h
|
||||
@@ -76,6 +76,9 @@ along with GCC; see the file COPYING3. If not see
|
||||
#define GLIBC_DYNAMIC_LINKER32 "/lib/ld.so.1"
|
||||
#define GLIBC_DYNAMIC_LINKER64 "/lib/ld64.so.1"
|
||||
|
||||
+#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-s390.so.1"
|
||||
+#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-s390x.so.1"
|
||||
+
|
||||
#undef LINK_SPEC
|
||||
#define LINK_SPEC \
|
||||
"%{m31:-m elf_s390}%{m64:-m elf64_s390} \
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -0,0 +1,76 @@
|
||||
From 47467f3ab0fb2f2fcede81060fe8bb339d0909eb Mon Sep 17 00:00:00 2001
|
||||
From: Szabolcs Nagy <nsz@port70.net>
|
||||
Date: Wed, 28 Feb 2018 00:54:05 +0000
|
||||
Subject: [PATCH 10/12] ldbl128 config
|
||||
|
||||
---
|
||||
gcc/configure | 13 +++++++++++++
|
||||
gcc/configure.ac | 16 ++++++++++++++--
|
||||
2 files changed, 27 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/gcc/configure b/gcc/configure
|
||||
index 6121e163259..07ff8597d48 100755
|
||||
--- a/gcc/configure
|
||||
+++ b/gcc/configure
|
||||
@@ -29309,6 +29309,15 @@ if test "${with_long_double_128+set}" = set; then :
|
||||
withval=$with_long_double_128; gcc_cv_target_ldbl128="$with_long_double_128"
|
||||
else
|
||||
|
||||
+ case "$target" in
|
||||
+ s390*-*-linux-musl*)
|
||||
+ gcc_cv_target_ldbl128=yes
|
||||
+ ;;
|
||||
+ powerpc*-*-linux-musl*)
|
||||
+ gcc_cv_target_ldbl128=no
|
||||
+ ;;
|
||||
+ *)
|
||||
+
|
||||
if test $glibc_version_major -gt 2 \
|
||||
|| ( test $glibc_version_major -eq 2 && test $glibc_version_minor -ge 4 ); then :
|
||||
gcc_cv_target_ldbl128=yes
|
||||
@@ -29320,6 +29329,10 @@ else
|
||||
&& gcc_cv_target_ldbl128=yes
|
||||
|
||||
fi
|
||||
+
|
||||
+ ;;
|
||||
+ esac
|
||||
+
|
||||
fi
|
||||
|
||||
;;
|
||||
diff --git a/gcc/configure.ac b/gcc/configure.ac
|
||||
index b066cc609e1..6c15ed898c0 100644
|
||||
--- a/gcc/configure.ac
|
||||
+++ b/gcc/configure.ac
|
||||
@@ -5971,13 +5971,25 @@ case "$target" in
|
||||
AC_ARG_WITH(long-double-128,
|
||||
[AS_HELP_STRING([--with-long-double-128],
|
||||
[use 128-bit long double by default])],
|
||||
- gcc_cv_target_ldbl128="$with_long_double_128",
|
||||
+ gcc_cv_target_ldbl128="$with_long_double_128", [
|
||||
+ case "$target" in
|
||||
+ s390*-*-linux-musl*)
|
||||
+ gcc_cv_target_ldbl128=yes
|
||||
+ ;;
|
||||
+ powerpc*-*-linux-musl*)
|
||||
+ gcc_cv_target_ldbl128=no
|
||||
+ ;;
|
||||
+ *)]
|
||||
[GCC_GLIBC_VERSION_GTE_IFELSE([2], [4], [gcc_cv_target_ldbl128=yes], [
|
||||
[gcc_cv_target_ldbl128=no
|
||||
grep '^[ ]*#[ ]*define[ ][ ]*__LONG_DOUBLE_MATH_OPTIONAL' \
|
||||
$target_header_dir/bits/wordsize.h > /dev/null 2>&1 \
|
||||
&& gcc_cv_target_ldbl128=yes
|
||||
- ]])])
|
||||
+ ]])]
|
||||
+ [
|
||||
+ ;;
|
||||
+ esac
|
||||
+ ])
|
||||
;;
|
||||
esac
|
||||
if test x$gcc_cv_target_ldbl128 = xyes; then
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -0,0 +1,138 @@
|
||||
From a4aa319f7c19e564dced3daeb7222c9315af936c Mon Sep 17 00:00:00 2001
|
||||
From: Szabolcs Nagy <nsz@port70.net>
|
||||
Date: Sat, 18 Aug 2018 23:58:45 +0000
|
||||
Subject: [PATCH 12/12] static-pie
|
||||
|
||||
in gcc-8 -static means static non-pie, even if -pie or -static-pie
|
||||
are specified, -static-pie can be used to build static pie.
|
||||
|
||||
in musl toolchains -static -pie always meant static pie, so this
|
||||
patch fixes the link specs accordingly, the new -static-pie is just
|
||||
an alias to -static -pie.
|
||||
---
|
||||
gcc/common.opt | 4 ++--
|
||||
gcc/config/gnu-user.h | 12 +++++-------
|
||||
gcc/config/rs6000/sysv4.h | 11 +++++------
|
||||
gcc/gcc.c | 6 +++---
|
||||
4 files changed, 15 insertions(+), 18 deletions(-)
|
||||
|
||||
diff --git a/gcc/common.opt b/gcc/common.opt
|
||||
index b52ef0b38c8..0ce5857e01d 100644
|
||||
--- a/gcc/common.opt
|
||||
+++ b/gcc/common.opt
|
||||
@@ -3197,11 +3197,11 @@ Driver
|
||||
|
||||
no-pie
|
||||
Driver RejectNegative Negative(shared)
|
||||
-Don't create a dynamically linked position independent executable.
|
||||
+Don't create a position independent executable.
|
||||
|
||||
pie
|
||||
Driver RejectNegative Negative(no-pie)
|
||||
-Create a dynamically linked position independent executable.
|
||||
+Create a position independent executable.
|
||||
|
||||
static-pie
|
||||
Driver RejectNegative Negative(pie)
|
||||
diff --git a/gcc/config/gnu-user.h b/gcc/config/gnu-user.h
|
||||
index 8620de3e42d..235328a2642 100644
|
||||
--- a/gcc/config/gnu-user.h
|
||||
+++ b/gcc/config/gnu-user.h
|
||||
@@ -52,13 +52,12 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
#define GNU_USER_TARGET_STARTFILE_SPEC \
|
||||
"%{shared:; \
|
||||
pg|p|profile:%{static-pie:grcrt1.o%s;:gcrt1.o%s}; \
|
||||
- static:crt1.o%s; \
|
||||
- static-pie:rcrt1.o%s; \
|
||||
+ static|static-pie:%{" PIE_SPEC ":rcrt1.o%s;:crt1.o%s}; \
|
||||
" PIE_SPEC ":Scrt1.o%s; \
|
||||
:crt1.o%s} \
|
||||
crti.o%s \
|
||||
- %{static:crtbeginT.o%s; \
|
||||
- shared|static-pie|" PIE_SPEC ":crtbeginS.o%s; \
|
||||
+ %{shared|" PIE_SPEC ":crtbeginS.o%s; \
|
||||
+ static:crtbeginT.o%s; \
|
||||
:crtbegin.o%s} \
|
||||
%{fvtable-verify=none:%s; \
|
||||
fvtable-verify=preinit:vtv_start_preinit.o%s; \
|
||||
@@ -92,8 +91,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
"%{fvtable-verify=none:%s; \
|
||||
fvtable-verify=preinit:vtv_end_preinit.o%s; \
|
||||
fvtable-verify=std:vtv_end.o%s} \
|
||||
- %{static:crtend.o%s; \
|
||||
- shared|static-pie|" PIE_SPEC ":crtendS.o%s; \
|
||||
+ %{shared|" PIE_SPEC ":crtendS.o%s; \
|
||||
:crtend.o%s} \
|
||||
crtn.o%s \
|
||||
" CRTOFFLOADEND
|
||||
@@ -133,7 +131,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
#define LIB_SPEC GNU_USER_TARGET_LIB_SPEC
|
||||
|
||||
#if defined(HAVE_LD_EH_FRAME_HDR)
|
||||
-#define LINK_EH_SPEC "%{!static|static-pie:--eh-frame-hdr} "
|
||||
+#define LINK_EH_SPEC "%{!static|" PIE_SPEC ":--eh-frame-hdr} "
|
||||
#endif
|
||||
|
||||
#undef LINK_GCC_C_SEQUENCE_SPEC
|
||||
diff --git a/gcc/config/rs6000/sysv4.h b/gcc/config/rs6000/sysv4.h
|
||||
index bb19d0dcd41..bb2a2324eb0 100644
|
||||
--- a/gcc/config/rs6000/sysv4.h
|
||||
+++ b/gcc/config/rs6000/sysv4.h
|
||||
@@ -763,12 +763,12 @@ ENDIAN_SELECT(" -mbig", " -mlittle", DEFAULT_ASM_ENDIAN)
|
||||
#define STARTFILE_LINUX_SPEC \
|
||||
"%{shared:; \
|
||||
pg|p|profile:gcrt1.o%s; \
|
||||
- static:crt1.o%s; \
|
||||
- static-pie|" PIE_SPEC ":Scrt1.o%s; \
|
||||
+ static|static-pie:%{" PIE_SPEC ":rcrt1.o%s;:crt1.o%s}; \
|
||||
+ " PIE_SPEC ":Scrt1.o%s; \
|
||||
:crt1.o%s} \
|
||||
%{mnewlib:ecrti.o%s;:crti.o%s} \
|
||||
- %{static:crtbeginT.o%s; \
|
||||
- shared|static-pie|" PIE_SPEC ":crtbeginS.o%s; \
|
||||
+ %{shared|" PIE_SPEC ":crtbeginS.o%s; \
|
||||
+ static:crtbeginT.o%s; \
|
||||
:crtbegin.o%s} \
|
||||
%{fvtable-verify=none:%s; \
|
||||
fvtable-verify=preinit:vtv_start_preinit.o%s; \
|
||||
@@ -781,8 +781,7 @@ ENDIAN_SELECT(" -mbig", " -mlittle", DEFAULT_ASM_ENDIAN)
|
||||
"%{fvtable-verify=none:%s; \
|
||||
fvtable-verify=preinit:vtv_end_preinit.o%s; \
|
||||
fvtable-verify=std:vtv_end.o%s} \
|
||||
- %{static:crtend.o%s; \
|
||||
- shared|static-pie|" PIE_SPEC ":crtendS.o%s; \
|
||||
+ %{shared|" PIE_SPEC ":crtendS.o%s; \
|
||||
:crtend.o%s} \
|
||||
%{mnewlib:ecrtn.o%s;:crtn.o%s} \
|
||||
" CRTOFFLOADEND
|
||||
diff --git a/gcc/gcc.c b/gcc/gcc.c
|
||||
index eb1610ba8b0..87560afb03c 100644
|
||||
--- a/gcc/gcc.c
|
||||
+++ b/gcc/gcc.c
|
||||
@@ -900,7 +900,7 @@ proper position among the other output files. */
|
||||
#define NO_FPIE_AND_FPIC_SPEC NO_FPIE_SPEC "|" NO_FPIC_SPEC
|
||||
#define FPIE_OR_FPIC_SPEC NO_FPIE_AND_FPIC_SPEC ":;"
|
||||
#else
|
||||
-#define PIE_SPEC "pie"
|
||||
+#define PIE_SPEC "pie|static-pie"
|
||||
#define FPIE1_SPEC "fpie"
|
||||
#define NO_FPIE1_SPEC FPIE1_SPEC ":;"
|
||||
#define FPIE2_SPEC "fPIE"
|
||||
@@ -924,12 +924,12 @@ proper position among the other output files. */
|
||||
#ifndef LINK_PIE_SPEC
|
||||
#ifdef HAVE_LD_PIE
|
||||
#ifndef LD_PIE_SPEC
|
||||
-#define LD_PIE_SPEC "-pie"
|
||||
+#define LD_PIE_SPEC "-pie %{static|static-pie:--no-dynamic-linker -z text -Bsymbolic}"
|
||||
#endif
|
||||
#else
|
||||
#define LD_PIE_SPEC ""
|
||||
#endif
|
||||
-#define LINK_PIE_SPEC "%{static|shared|r:;" PIE_SPEC ":" LD_PIE_SPEC "} "
|
||||
+#define LINK_PIE_SPEC "%{shared|r:;" PIE_SPEC ":" LD_PIE_SPEC "} "
|
||||
#endif
|
||||
|
||||
#ifndef LINK_BUILDID_SPEC
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
--- ./libgomp/configure.tgt.orig 2018-09-25 13:44:16.654561098 -0400
|
||||
+++ ./libgomp/configure.tgt 2018-09-25 13:44:50.452688100 -0400
|
||||
@@ -10,23 +10,6 @@
|
||||
# XCFLAGS Add extra compile flags to use.
|
||||
# XLDFLAGS Add extra link flags to use.
|
||||
|
||||
-# Optimize TLS usage by avoiding the overhead of dynamic allocation.
|
||||
-if test $gcc_cv_have_tls = yes ; then
|
||||
- case "${target}" in
|
||||
-
|
||||
- *-*-k*bsd*-gnu*)
|
||||
- ;;
|
||||
-
|
||||
- *-*-linux* | *-*-gnu*)
|
||||
- XCFLAGS="${XCFLAGS} -ftls-model=initial-exec"
|
||||
- ;;
|
||||
-
|
||||
- *-*-rtems*)
|
||||
- XCFLAGS="${XCFLAGS} -ftls-model=local-exec"
|
||||
- ;;
|
||||
- esac
|
||||
-fi
|
||||
-
|
||||
# Since we require POSIX threads, assume a POSIX system by default.
|
||||
config_path="posix"
|
||||
@@ -1,9 +1,25 @@
|
||||
# DP: On linux targets pass --as-needed by default to the linker, but always
|
||||
# DP: link the sanitizer libraries with --no-as-needed.
|
||||
|
||||
Index: b/gcc/gcc.c
|
||||
===================================================================
|
||||
--- a/gcc/gcc.c
|
||||
+++ b/gcc/gcc.c
|
||||
@@ -568,8 +568,11 @@ proper position among the other output f
|
||||
@@ -692,8 +692,11 @@ proper position among the other output f
|
||||
#ifdef LIBASAN_EARLY_SPEC
|
||||
#define LIBASAN_SPEC STATIC_LIBASAN_LIBS
|
||||
#elif defined(HAVE_LD_STATIC_DYNAMIC)
|
||||
-#define LIBASAN_SPEC "%{static-libasan:" LD_STATIC_OPTION \
|
||||
- "} -lasan %{static-libasan:" LD_DYNAMIC_OPTION "}" \
|
||||
+#define LIBASAN_SPEC "%{static-libasan:" LD_STATIC_OPTION "}" \
|
||||
+ " %{!static-libasan:%{!fuse-ld=gold:--push-state }--no-as-needed}" \
|
||||
+ " -lasan " \
|
||||
+ " %{static-libasan:" LD_DYNAMIC_OPTION "}" \
|
||||
+ " %{!static-libasan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \
|
||||
STATIC_LIBASAN_LIBS
|
||||
#else
|
||||
#define LIBASAN_SPEC "-lasan" STATIC_LIBASAN_LIBS
|
||||
@@ -710,8 +713,11 @@ proper position among the other output f
|
||||
#ifdef LIBTSAN_EARLY_SPEC
|
||||
#define LIBTSAN_SPEC STATIC_LIBTSAN_LIBS
|
||||
#elif defined(HAVE_LD_STATIC_DYNAMIC)
|
||||
@@ -17,21 +33,53 @@
|
||||
STATIC_LIBTSAN_LIBS
|
||||
#else
|
||||
#define LIBTSAN_SPEC "-ltsan" STATIC_LIBTSAN_LIBS
|
||||
@@ -728,8 +734,11 @@ proper position among the other output f
|
||||
#ifdef LIBLSAN_EARLY_SPEC
|
||||
#define LIBLSAN_SPEC STATIC_LIBLSAN_LIBS
|
||||
#elif defined(HAVE_LD_STATIC_DYNAMIC)
|
||||
-#define LIBLSAN_SPEC "%{static-liblsan:" LD_STATIC_OPTION \
|
||||
- "} -llsan %{static-liblsan:" LD_DYNAMIC_OPTION "}" \
|
||||
+#define LIBLSAN_SPEC "%{static-liblsan:" LD_STATIC_OPTION "}" \
|
||||
+ " %{!static-liblsan:%{!fuse-ld=gold:--push-state }--no-as-needed}" \
|
||||
+ " -llsan " \
|
||||
+ " %{static-liblsan:" LD_DYNAMIC_OPTION "}" \
|
||||
+ " %{!static-liblsan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \
|
||||
STATIC_LIBLSAN_LIBS
|
||||
#else
|
||||
#define LIBLSAN_SPEC "-llsan" STATIC_LIBLSAN_LIBS
|
||||
@@ -744,8 +753,11 @@ proper position among the other output f
|
||||
#define STATIC_LIBUBSAN_LIBS \
|
||||
" %{static-libubsan|static:%:include(libsanitizer.spec)%(link_libubsan)}"
|
||||
#ifdef HAVE_LD_STATIC_DYNAMIC
|
||||
-#define LIBUBSAN_SPEC "%{static-libubsan:" LD_STATIC_OPTION \
|
||||
- "} -lubsan %{static-libubsan:" LD_DYNAMIC_OPTION "}" \
|
||||
+#define LIBUBSAN_SPEC "%{static-libubsan:" LD_STATIC_OPTION "}" \
|
||||
+ " %{!static-libubsan:%{!fuse-ld=gold:--push-state }--no-as-needed}" \
|
||||
+ " -lubsan " \
|
||||
+ " %{static-libubsan:" LD_DYNAMIC_OPTION "}" \
|
||||
+ " %{!static-libubsan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \
|
||||
STATIC_LIBUBSAN_LIBS
|
||||
#else
|
||||
#define LIBUBSAN_SPEC "-lubsan" STATIC_LIBUBSAN_LIBS
|
||||
Index: b/gcc/config/gnu-user.h
|
||||
===================================================================
|
||||
--- a/gcc/config/gnu-user.h
|
||||
+++ b/gcc/config/gnu-user.h
|
||||
@@ -124,13 +124,13 @@
|
||||
@@ -161,15 +161,15 @@ see the files COPYING3 and COPYING.RUNTI
|
||||
#define LIBASAN_EARLY_SPEC "%{!shared:libasan_preinit%O%s} " \
|
||||
"%{static-libasan:%{!shared:" \
|
||||
LD_STATIC_OPTION " --whole-archive -lasan --no-whole-archive " \
|
||||
- LD_DYNAMIC_OPTION "}}%{!static-libasan:-lasan}"
|
||||
+ LD_DYNAMIC_OPTION "}}%{!static-libasan:%{!fuse-ld=gold:--push-state} --no-as-needed -lasan %{fuse-ld=gold:--as-needed;:--pop-state}}"
|
||||
#undef LIBTSAN_EARLY_SPEC
|
||||
#define LIBTSAN_EARLY_SPEC "%{static-libtsan:%{!shared:" \
|
||||
#define LIBTSAN_EARLY_SPEC "%{!shared:libtsan_preinit%O%s} " \
|
||||
"%{static-libtsan:%{!shared:" \
|
||||
LD_STATIC_OPTION " --whole-archive -ltsan --no-whole-archive " \
|
||||
- LD_DYNAMIC_OPTION "}}%{!static-libtsan:-ltsan}"
|
||||
+ LD_DYNAMIC_OPTION "}}%{!static-libtsan:%{!fuse-ld=gold:--push-state} --no-as-needed -ltsan %{fuse-ld=gold:--as-needed;:--pop-state}}"
|
||||
#undef LIBLSAN_EARLY_SPEC
|
||||
#define LIBLSAN_EARLY_SPEC "%{static-liblsan:%{!shared:" \
|
||||
#define LIBLSAN_EARLY_SPEC "%{!shared:liblsan_preinit%O%s} " \
|
||||
"%{static-liblsan:%{!shared:" \
|
||||
LD_STATIC_OPTION " --whole-archive -llsan --no-whole-archive " \
|
||||
- LD_DYNAMIC_OPTION "}}%{!static-liblsan:-llsan}"
|
||||
+ LD_DYNAMIC_OPTION "}}%{!static-liblsan:%{!fuse-ld=gold:--push-state} --no-as-needed -llsan %{fuse-ld=gold:--as-needed;:--pop-state}}"
|
||||
@@ -40,7 +88,8 @@ Index: b/gcc/config/aarch64/aarch64-linux.h
|
||||
===================================================================
|
||||
--- a/gcc/config/aarch64/aarch64-linux.h
|
||||
+++ b/gcc/config/aarch64/aarch64-linux.h
|
||||
@@ -36,5 +36,6 @@
|
||||
@@ -35,6 +35,7 @@
|
||||
#define CPP_SPEC "%{pthread:-D_REENTRANT}"
|
||||
|
||||
#define LINUX_TARGET_LINK_SPEC "%{h*} \
|
||||
+ --as-needed \
|
||||
@@ -77,7 +126,7 @@ Index: b/gcc/config/s390/linux.h
|
||||
===================================================================
|
||||
--- a/gcc/config/s390/linux.h
|
||||
+++ b/gcc/config/s390/linux.h
|
||||
@@ -65,7 +65,7 @@ along with GCC; see the file COPYING3.
|
||||
@@ -78,7 +78,7 @@ along with GCC; see the file COPYING3.
|
||||
|
||||
#undef LINK_SPEC
|
||||
#define LINK_SPEC \
|
||||
@@ -90,26 +139,27 @@ Index: b/gcc/config/rs6000/linux64.h
|
||||
===================================================================
|
||||
--- a/gcc/config/rs6000/linux64.h
|
||||
+++ b/gcc/config/rs6000/linux64.h
|
||||
@@ -466,12 +466,12 @@ extern int dot_symbols;
|
||||
@@ -490,13 +490,13 @@ extern int dot_symbols;
|
||||
" -m elf64ppc")
|
||||
#endif
|
||||
|
||||
-#define LINK_OS_LINUX_SPEC32 LINK_OS_LINUX_EMUL32 " %{!shared: %{!static: \
|
||||
+#define LINK_OS_LINUX_SPEC32 LINK_OS_LINUX_EMUL32 " --as-needed %{!shared: %{!static: \
|
||||
%{rdynamic:-export-dynamic} \
|
||||
-dynamic-linker " GNU_USER_DYNAMIC_LINKER32 "}} \
|
||||
%{!static-pie: \
|
||||
%{rdynamic:-export-dynamic} \
|
||||
-dynamic-linker " GNU_USER_DYNAMIC_LINKER32 "}}} \
|
||||
%(link_os_extra_spec32)"
|
||||
|
||||
-#define LINK_OS_LINUX_SPEC64 LINK_OS_LINUX_EMUL64 " %{!shared: %{!static: \
|
||||
+#define LINK_OS_LINUX_SPEC64 LINK_OS_LINUX_EMUL64 " --as-needed %{!shared: %{!static: \
|
||||
%{rdynamic:-export-dynamic} \
|
||||
-dynamic-linker " GNU_USER_DYNAMIC_LINKER64 "}} \
|
||||
%(link_os_extra_spec64)"
|
||||
%{!static-pie: \
|
||||
%{rdynamic:-export-dynamic} \
|
||||
-dynamic-linker " GNU_USER_DYNAMIC_LINKER64 "}}} \
|
||||
Index: b/gcc/config/rs6000/sysv4.h
|
||||
===================================================================
|
||||
--- a/gcc/config/rs6000/sysv4.h
|
||||
+++ b/gcc/config/rs6000/sysv4.h
|
||||
@@ -784,7 +784,7 @@ ENDIAN_SELECT(" -mbig", " -mlittle", DEF
|
||||
@@ -811,7 +811,7 @@ ENDIAN_SELECT(" -mbig", " -mlittle", DEF
|
||||
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, \
|
||||
MUSL_DYNAMIC_LINKER)
|
||||
|
||||
@@ -122,7 +172,8 @@ Index: b/gcc/config/i386/gnu-user64.h
|
||||
===================================================================
|
||||
--- a/gcc/config/i386/gnu-user64.h
|
||||
+++ b/gcc/config/i386/gnu-user64.h
|
||||
@@ -57,5 +57,6 @@ see the files COPYING3 and COPYING.RUNTI
|
||||
@@ -56,6 +56,7 @@
|
||||
"%{" SPEC_64 ":-m " GNU_USER_LINK_EMULATION64 "} \
|
||||
%{" SPEC_32 ":-m " GNU_USER_LINK_EMULATION32 "} \
|
||||
%{" SPEC_X32 ":-m " GNU_USER_LINK_EMULATIONX32 "} \
|
||||
+ --as-needed \
|
||||
@@ -141,7 +192,7 @@ Index: b/gcc/config/i386/gnu-user.h
|
||||
+#define GNU_USER_TARGET_LINK_SPEC "-m %(link_emulation) --as-needed %{shared:-shared} \
|
||||
%{!shared: \
|
||||
%{!static: \
|
||||
%{rdynamic:-export-dynamic} \
|
||||
%{!static-pie: \
|
||||
Index: b/gcc/config/alpha/linux-elf.h
|
||||
===================================================================
|
||||
--- a/gcc/config/alpha/linux-elf.h
|
||||
@@ -151,7 +202,7 @@ Index: b/gcc/config/alpha/linux-elf.h
|
||||
#define ELF_DYNAMIC_LINKER GNU_USER_DYNAMIC_LINKER
|
||||
|
||||
-#define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax} \
|
||||
+#define LINK_SPEC "-m elf64alpha --as-needed %{G*} %{relax:-relax} \
|
||||
+#define LINK_SPEC "-m elf64alpha --as-needed %{G*} %{relax:-relax} \
|
||||
%{O*:-O3} %{!O*:-O1} \
|
||||
%{shared:-shared} \
|
||||
%{!shared: \
|
||||
@@ -159,7 +210,8 @@ Index: b/gcc/config/arm/linux-elf.h
|
||||
===================================================================
|
||||
--- a/gcc/config/arm/linux-elf.h
|
||||
+++ b/gcc/config/arm/linux-elf.h
|
||||
@@ -73,5 +73,6 @@
|
||||
@@ -70,6 +70,7 @@
|
||||
%{rdynamic:-export-dynamic} \
|
||||
%{!shared:-dynamic-linker " GNU_USER_DYNAMIC_LINKER "}} \
|
||||
-X \
|
||||
+ --as-needed \
|
||||
@@ -178,64 +230,15 @@ Index: b/gcc/config/mips/gnu-user.h
|
||||
%{!shared: \
|
||||
%{!static: \
|
||||
%{rdynamic:-export-dynamic} \
|
||||
Index: b/libjava/Makefile.am
|
||||
Index: b/gcc/config/riscv/linux.h
|
||||
===================================================================
|
||||
--- a/libjava/Makefile.am
|
||||
+++ b/libjava/Makefile.am
|
||||
@@ -627,14 +631,14 @@
|
||||
rm .libs/libgcj_bc.so; \
|
||||
mv .libs/libgcj_bc.so.1.0.0 .libs/libgcj_bc.so; \
|
||||
$(libgcj_bc_dummy_LINK) -xc /dev/null -Wl,-soname,libgcj_bc.so.1 \
|
||||
- -o .libs/libgcj_bc.so.1.0.0 -lgcj || exit; \
|
||||
+ -o .libs/libgcj_bc.so.1.0.0 -Wl,--no-as-needed -lgcj || exit; \
|
||||
rm .libs/libgcj_bc.so.1; \
|
||||
$(LN_S) libgcj_bc.so.1.0.0 .libs/libgcj_bc.so.1
|
||||
--- a/gcc/config/riscv/linux.h
|
||||
+++ b/gcc/config/riscv/linux.h
|
||||
@@ -50,6 +50,7 @@
|
||||
#define CPP_SPEC "%{pthread:-D_REENTRANT}"
|
||||
|
||||
## This rule creates the libgcj_bc library that is actually installed.
|
||||
install/libgcj_bc.la: $(libgcj_bc_la_OBJECTS) $(libgcj_bc_la_DEPENDENCIES) install/$(am__dirstamp)
|
||||
$(libgcj_bc_la_LINK) $(am_libgcj_bc_la_rpath) $(libgcj_bc_la_LDFLAGS) \
|
||||
- $(libgcj_bc_la_OBJECTS) $(libgcj_bc_la_LIBADD) $(LIBS)
|
||||
+ $(libgcj_bc_la_OBJECTS) $(libgcj_bc_la_LIBADD) $(LIBS) -Wl,--no-as-needed -lgcj
|
||||
|
||||
## Note that property_files is defined in sources.am.
|
||||
propertyo_files = $(patsubst classpath/resource/%,%,$(addsuffix .lo,$(property_files)))
|
||||
@@ -762,7 +766,7 @@
|
||||
rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
|
||||
mv $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0 $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
|
||||
$(libgcj_bc_dummy_LINK) -xc /dev/null -Wl,-soname,libgcj_bc.so.1 \
|
||||
- -o $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0 -lgcj || exit; \
|
||||
+ -o $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0 -Wl,--no-as-needed -lgcj || exit; \
|
||||
rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1; \
|
||||
$(LN_S) libgcj_bc.so.1.0.0 $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1; \
|
||||
rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.la;
|
||||
|
||||
Index: b/libjava/Makefile.in
|
||||
===================================================================
|
||||
--- a/libjava/Makefile.in
|
||||
+++ b/libjava/Makefile.in
|
||||
@@ -10644,13 +10648,13 @@
|
||||
rm .libs/libgcj_bc.so; \
|
||||
mv .libs/libgcj_bc.so.1.0.0 .libs/libgcj_bc.so; \
|
||||
$(libgcj_bc_dummy_LINK) -xc /dev/null -Wl,-soname,libgcj_bc.so.1 \
|
||||
- -o .libs/libgcj_bc.so.1.0.0 -lgcj || exit; \
|
||||
+ -o .libs/libgcj_bc.so.1.0.0 -Wl,--no-as-needed -lgcj || exit; \
|
||||
rm .libs/libgcj_bc.so.1; \
|
||||
$(LN_S) libgcj_bc.so.1.0.0 .libs/libgcj_bc.so.1
|
||||
|
||||
install/libgcj_bc.la: $(libgcj_bc_la_OBJECTS) $(libgcj_bc_la_DEPENDENCIES) install/$(am__dirstamp)
|
||||
$(libgcj_bc_la_LINK) $(am_libgcj_bc_la_rpath) $(libgcj_bc_la_LDFLAGS) \
|
||||
- $(libgcj_bc_la_OBJECTS) $(libgcj_bc_la_LIBADD) $(LIBS)
|
||||
+ $(libgcj_bc_la_OBJECTS) $(libgcj_bc_la_LIBADD) $(LIBS) -Wl,--no-as-needed -lgcj
|
||||
|
||||
$(propertyo_files): %.lo: classpath/resource/%
|
||||
$(mkinstalldirs) `dirname $@`; \
|
||||
@@ -12494,7 +12498,7 @@
|
||||
@USE_LIBGCJ_BC_TRUE@ rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
|
||||
@USE_LIBGCJ_BC_TRUE@ mv $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0 $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
|
||||
@USE_LIBGCJ_BC_TRUE@ $(libgcj_bc_dummy_LINK) -xc /dev/null -Wl,-soname,libgcj_bc.so.1 \
|
||||
-@USE_LIBGCJ_BC_TRUE@ -o $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0 -lgcj || exit; \
|
||||
+@USE_LIBGCJ_BC_TRUE@ -o $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0 -Wl,--no-as-needed -lgcj || exit; \
|
||||
@USE_LIBGCJ_BC_TRUE@ rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1; \
|
||||
@USE_LIBGCJ_BC_TRUE@ $(LN_S) libgcj_bc.so.1.0.0 $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1; \
|
||||
@USE_LIBGCJ_BC_TRUE@ rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.la;
|
||||
|
||||
#define LINK_SPEC "\
|
||||
+-as-needed \
|
||||
-melf" XLEN_SPEC "lriscv \
|
||||
%{mno-relax:--no-relax} \
|
||||
%{shared} \
|
||||
@@ -1,43 +1,22 @@
|
||||
Enable -Wformat and -Wformat-security by default.
|
||||
|
||||
|
||||
--- a/gcc/c-family/c.opt
|
||||
+++ b/gcc/c-family/c.opt
|
||||
@@ -412,7 +412,7 @@ C ObjC C++ ObjC++ Var(warn_format_nonliteral) Warning LangEnabledBy(C ObjC C++ O
|
||||
Warn about format strings that are not literals
|
||||
--- a/gcc/c-family/c.opt 2016-03-23 18:51:56.000000000 +0100
|
||||
+++ b/gcc/c-family/c.opt 2016-04-28 23:45:54.063351272 +0200
|
||||
@@ -459,7 +459,7 @@ C ObjC C++ ObjC++ Var(warn_format_nonlit
|
||||
Warn about format strings that are not literals.
|
||||
|
||||
Wformat-security
|
||||
-C ObjC C++ ObjC++ Var(warn_format_security) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 2, 0)
|
||||
+C ObjC C++ ObjC++ Var(warn_format_security) Init(1) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 2, 0)
|
||||
Warn about possible security problems with format functions
|
||||
Warn about possible security problems with format functions.
|
||||
|
||||
Wformat-y2k
|
||||
@@ -424,7 +424,7 @@ C ObjC C++ ObjC++ Var(warn_format_zero_length) Warning LangEnabledBy(C ObjC C++
|
||||
Warn about zero-length formats
|
||||
Wformat-signedness
|
||||
@@ -475,7 +475,7 @@ C ObjC C++ ObjC++ Var(warn_format_zero_l
|
||||
Warn about zero-length formats.
|
||||
|
||||
Wformat=
|
||||
-C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_format) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0)
|
||||
+C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_format) Init(1) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0)
|
||||
Warn about printf/scanf/strftime/strfmon format string anomalies
|
||||
-C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_format) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0) IntegerRange(0, 2)
|
||||
+C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_format) Init(1) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0) IntegerRange(0, 2)
|
||||
Warn about printf/scanf/strftime/strfmon format string anomalies.
|
||||
|
||||
Wignored-qualifiers
|
||||
--- a/gcc/doc/gcc.info
|
||||
+++ b/gcc/doc/gcc.info
|
||||
@@ -3451,6 +3451,8 @@ compiler warns that an unrecognized option is present.
|
||||
'-Wno-format-contains-nul', '-Wno-format-extra-args', and
|
||||
'-Wno-format-zero-length'. '-Wformat' is enabled by '-Wall'.
|
||||
|
||||
+ This option is enabled by default in Alpine Linux.
|
||||
+
|
||||
'-Wno-format-contains-nul'
|
||||
If '-Wformat' is specified, do not warn about format strings
|
||||
that contain NUL bytes.
|
||||
@@ -3496,6 +3498,8 @@ compiler warns that an unrecognized option is present.
|
||||
future warnings may be added to '-Wformat-security' that are
|
||||
not included in '-Wformat-nonliteral'.)
|
||||
|
||||
+ This option is enabled by default in Alpine Linux.
|
||||
+
|
||||
'-Wformat-y2k'
|
||||
If '-Wformat' is specified, also warn about 'strftime' formats
|
||||
that may yield only a two-digit year.
|
||||
@@ -1,25 +1,13 @@
|
||||
Enable -Wtrampolines by default.
|
||||
|
||||
|
||||
--- a/gcc/common.opt
|
||||
+++ b/gcc/common.opt
|
||||
@@ -648,7 +648,7 @@ Common Var(warn_system_headers) Warning
|
||||
Do not suppress warnings from system headers
|
||||
@@ -712,7 +712,7 @@ Common Var(warn_system_headers) Warning
|
||||
Do not suppress warnings from system headers.
|
||||
|
||||
Wtrampolines
|
||||
-Common Var(warn_trampolines) Warning
|
||||
+Common Var(warn_trampolines) Init(1) Warning
|
||||
Warn whenever a trampoline is generated
|
||||
Warn whenever a trampoline is generated.
|
||||
|
||||
Wtype-limits
|
||||
--- a/gcc/doc/gcc.info
|
||||
+++ b/gcc/doc/gcc.info
|
||||
@@ -4021,6 +4021,8 @@ compiler warns that an unrecognized option is present.
|
||||
and thus requires the stack to be made executable in order for the
|
||||
program to work properly.
|
||||
|
||||
+ This warning is enabled by default in Gentoo.
|
||||
+
|
||||
'-Wfloat-equal'
|
||||
Warn if floating-point values are used in equality comparisons.
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
Disable ssp on -nostdlib, -nodefaultlibs and -ffreestanding
|
||||
Change the buffer size.
|
||||
|
||||
--- a/gcc/gcc.c 2017-07-04 09:15:57.740793000 +0200
|
||||
+++ b/gcc/gcc.c 2018-03-02 13:58:44.387741114 +0100
|
||||
@@ -857,6 +857,12 @@ proper position among the other output f
|
||||
#define LINK_GCC_C_SEQUENCE_SPEC "%G %L %G"
|
||||
#endif
|
||||
|
||||
+#ifdef ENABLE_DEFAULT_SSP
|
||||
+#define NO_SSP_SPEC "%{nostdlib|nodefaultlibs|ffreestanding:-fno-stack-protector} "
|
||||
+#else
|
||||
+#define NO_SSP_SPEC ""
|
||||
+#endif
|
||||
+
|
||||
#ifndef LINK_SSP_SPEC
|
||||
#ifdef TARGET_LIBC_PROVIDES_SSP
|
||||
#define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \
|
||||
@@ -1131,7 +1148,7 @@ static const char *cc1_options =
|
||||
%{-version:--version}\
|
||||
%{-help=*:--help=%*}\
|
||||
%{!fsyntax-only:%{S:%W{o*}%{!o*:-o %b.s}}}\
|
||||
- %{fsyntax-only:-o %j} %{-param*}\
|
||||
+ %{fsyntax-only:-o %j} %{-param*} " NO_SSP_SPEC "\
|
||||
%{coverage:-fprofile-arcs -ftest-coverage}\
|
||||
%{fprofile-arcs|fprofile-generate*|coverage:\
|
||||
%{!fprofile-update=singel:\
|
||||
--- a/gcc/params.def 2016-03-30 09:47:40.000000000 +0200
|
||||
+++ b/gcc/params.def 2016-09-19 12:56:58.443179039 +0200
|
||||
@@ -673,7 +673,7 @@ DEFPARAM (PARAM_INTEGER_SHARE_LIMIT,
|
||||
DEFPARAM (PARAM_SSP_BUFFER_SIZE,
|
||||
"ssp-buffer-size",
|
||||
"The lower bound for a buffer to be considered for stack smashing protection.",
|
||||
- 8, 1, 0)
|
||||
+ 4, 1, 0)
|
||||
|
||||
DEFPARAM (PARAM_MIN_SIZE_FOR_STACK_SHARING,
|
||||
"min-size-for-stack-sharing",
|
||||
@@ -45,12 +45,13 @@ diff --git a/libgcc/config/i386/t-linux b/libgcc/config/i386/t-linux
|
||||
index 11bb46e..4f47f7b 100644
|
||||
--- a/libgcc/config/i386/t-linux
|
||||
+++ b/libgcc/config/i386/t-linux
|
||||
@@ -3,4 +3,4 @@
|
||||
@@ -3,5 +3,5 @@
|
||||
# t-slibgcc-elf-ver and t-linux
|
||||
SHLIB_MAPFILES = libgcc-std.ver $(srcdir)/config/i386/libgcc-glibc.ver
|
||||
|
||||
-HOST_LIBGCC2_CFLAGS += -mlong-double-80 -DUSE_ELF_SYMVER
|
||||
+HOST_LIBGCC2_CFLAGS += -mlong-double-80
|
||||
-HOST_LIBGCC2_CFLAGS += -mlong-double-80 -DUSE_ELF_SYMVER $(CET_FLAGS)
|
||||
+HOST_LIBGCC2_CFLAGS += -mlong-double-80 $(CET_FLAGS)
|
||||
CRTSTUFF_T_CFLAGS += $(CET_FLAGS)
|
||||
--
|
||||
2.8.1
|
||||
|
||||
+39
-149
@@ -1,6 +1,6 @@
|
||||
# Automatically generated aport, do not edit!
|
||||
# Generator: pmbootstrap aportgen gcc-armhf
|
||||
# Based on: main/gcc
|
||||
# Based on: main/gcc (from Alpine)
|
||||
|
||||
CTARGET_ARCH=armhf
|
||||
CTARGET="$(arch_to_hostspec ${CTARGET_ARCH})"
|
||||
@@ -23,19 +23,19 @@ CBUILDROOT="/"
|
||||
_cross_configure="--disable-bootstrap --with-sysroot=/usr/$CTARGET"
|
||||
|
||||
pkgname="gcc-armhf"
|
||||
pkgver=6.4.0
|
||||
pkgver=8.3.0
|
||||
[ "$BOOTSTRAP" = "nolibc" ] && pkgname="gcc-pass2"
|
||||
[ "$CBUILD" != "$CHOST" ] && _cross="-$CARCH" || _cross=""
|
||||
[ "$CHOST" != "$CTARGET" ] && _target="-$CTARGET_ARCH" || _target=""
|
||||
|
||||
pkgname="gcc-armhf"
|
||||
pkgrel=8
|
||||
pkgrel=0
|
||||
pkgdesc="Stage2 cross-compiler for armhf"
|
||||
url="http://gcc.gnu.org"
|
||||
arch="aarch64 x86_64 x86"
|
||||
arch="x86_64"
|
||||
license="GPL LGPL"
|
||||
_gccrel=$pkgver-r$pkgrel
|
||||
depends="isl binutils-armhf"
|
||||
depends="isl binutils-armhf mpc1"
|
||||
makedepends_build="gcc g++ paxmark bison flex texinfo gawk zip gmp-dev mpfr-dev mpc1-dev zlib-dev"
|
||||
makedepends_host="linux-headers gmp-dev mpfr-dev mpc1-dev isl-dev zlib-dev musl-dev-armhf binutils-armhf"
|
||||
subpackages="g++-armhf:gpp"
|
||||
@@ -44,7 +44,6 @@ replaces="libstdc++ binutils"
|
||||
|
||||
: ${LANG_CXX:=true}
|
||||
: ${LANG_OBJC:=true}
|
||||
: ${LANG_JAVA:=true}
|
||||
: ${LANG_GO:=true}
|
||||
: ${LANG_FORTRAN:=true}
|
||||
: ${LANG_ADA:=true}
|
||||
@@ -64,7 +63,6 @@ if [ "$CHOST" != "$CTARGET" ]; then
|
||||
_builddir="$srcdir/build-cross-final"
|
||||
fi
|
||||
LANG_OBJC=false
|
||||
LANG_JAVA=false
|
||||
LANG_GO=false
|
||||
LANG_FORTRAN=false
|
||||
LIBGOMP=false
|
||||
@@ -101,7 +99,6 @@ elif [ "$CBUILD" != "$CHOST" ]; then
|
||||
|
||||
# Languages that do not need bootstrapping
|
||||
LANG_OBJC=false
|
||||
LANG_JAVA=false
|
||||
LANG_GO=false
|
||||
LANG_FORTRAN=false
|
||||
|
||||
@@ -146,10 +143,6 @@ if $LANG_OBJC; then
|
||||
subpackages="$subpackages libobjc::$CTARGET_ARCH gcc-objc$_target:objc"
|
||||
_languages="$_languages,objc"
|
||||
fi
|
||||
if $LANG_JAVA; then
|
||||
subpackages="$subpackages libgcj::$CTARGET_ARCH gcc-java$_target:java"
|
||||
_languages="$_languages,java"
|
||||
fi
|
||||
if $LANG_GO; then
|
||||
subpackages="$subpackages libgo::$CTARGET_ARCH gcc-go$_target:go"
|
||||
_languages="$_languages,go"
|
||||
@@ -165,68 +158,47 @@ if $LANG_ADA; then
|
||||
fi
|
||||
makedepends="$makedepends_build $makedepends_host"
|
||||
|
||||
source="http://gcc.gnu.org/pub/gcc/releases/gcc-${_pkgbase:-$pkgver}/gcc-${_pkgbase:-$pkgver}.tar.xz
|
||||
http://sourceware.org/pub/java/ecj-4.9.jar
|
||||
|
||||
001_all_default-ssp-strong.patch
|
||||
source="https://gcc.gnu.org/pub/gcc/releases/gcc-${_pkgbase:-$pkgver}/gcc-${_pkgbase:-$pkgver}.tar.xz
|
||||
002_all_default-relro.patch
|
||||
003_all_default-fortify-source.patch
|
||||
005_all_default-as-needed.patch
|
||||
gcc-as-needed-gold.patch
|
||||
gcc-as-needed-push-pop.patch
|
||||
011_all_default-warn-format-security.patch
|
||||
012_all_default-warn-trampolines.patch
|
||||
013_all_default-ssp-fix.patch
|
||||
020_all_msgfmt-libstdc++-link.patch
|
||||
050_all_libiberty-asprintf.patch
|
||||
051_all_libiberty-pic.patch
|
||||
053_all_libitm-no-fortify-source.patch
|
||||
067_all_gcc-poison-system-directories.patch
|
||||
090_all_pr55930-dependency-tracking.patch
|
||||
0003-gcc-poison-system-directories.patch
|
||||
|
||||
201-cilkrts.patch
|
||||
203-libgcc_s.patch
|
||||
204-linux_libc_has_function.patch
|
||||
205-nopie.patch
|
||||
207-static-pie.patch
|
||||
0002-posix_memalign.patch
|
||||
0008-s390x-muslldso.patch
|
||||
0010-ldbl128-config.patch
|
||||
0012-static-pie.patch
|
||||
|
||||
libgcc-always-build-gcceh.a.patch
|
||||
gcc-4.9-musl-fortify.patch
|
||||
gcc-6.1-musl-libssp.patch
|
||||
boehm-gc-musl.patch
|
||||
gcc-pure64.patch
|
||||
fix-gcj-stdgnu14-link.patch
|
||||
fix-gcj-musl.patch
|
||||
fix-gcj-iconv-musl.patch
|
||||
|
||||
gcc-4.8-build-args.patch
|
||||
fix-cxxflags-passing.patch
|
||||
ada-fixes.patch
|
||||
ada-shared.patch
|
||||
ada-musl.patch
|
||||
ada-aarch64-multiarch.patch
|
||||
libgnarl-musl.patch
|
||||
|
||||
300-main-gcc-add-musl-s390x-dynamic-linker.patch
|
||||
310-build-gcj-s390x.patch
|
||||
320-libffi-gnulinux.patch
|
||||
|
||||
fix-rs6000-pie.patch
|
||||
fix-linux-header-use-in-libgcc.patch
|
||||
gcc-pure64-mips.patch
|
||||
ada-mips64.patch
|
||||
|
||||
0001-i386-Move-struct-ix86_frame-to-machine_function.patch
|
||||
0002-i386-Use-reference-of-struct-ix86_frame-to-avoid-cop.patch
|
||||
0003-i386-Use-const-reference-of-struct-ix86_frame-to-avo.patch
|
||||
0004-x86-Add-mindirect-branch.patch
|
||||
0005-x86-Add-mfunction-return.patch
|
||||
0006-x86-Add-mindirect-branch-register.patch
|
||||
0007-x86-Add-V-register-operand-modifier.patch
|
||||
0008-x86-Disallow-mindirect-branch-mfunction-return-with-.patch
|
||||
0009-Use-INVALID_REGNUM-in-indirect-thunk-processing.patch
|
||||
0010-i386-Pass-INVALID_REGNUM-as-invalid-register-number.patch
|
||||
0011-i386-Update-mfunction-return-for-return-with-pop.patch
|
||||
0012-i386-Add-TARGET_INDIRECT_BRANCH_REGISTER.patch
|
||||
0013-i386-Don-t-generate-alias-for-function-return-thunk.patch
|
||||
0016-invalid_tls_model.patch
|
||||
"
|
||||
|
||||
# gcc-4.8-build-args.patch
|
||||
|
||||
# we build out-of-tree
|
||||
_gccdir="$srcdir"/gcc-${_pkgbase:-$pkgver}
|
||||
_gcclibdir=/usr/lib/gcc/${CTARGET}/$pkgver
|
||||
@@ -240,7 +212,7 @@ prepare() {
|
||||
case "$i" in
|
||||
*.patch)
|
||||
msg "Applying $i"
|
||||
patch -p1 -F3 -i "$srcdir"/$i || _err="$_err $i"
|
||||
patch -p1 -i "$srcdir"/$i || _err="$_err $i"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
@@ -253,9 +225,6 @@ prepare() {
|
||||
return 1
|
||||
fi
|
||||
|
||||
# see http://gcc.gnu.org/ml/java/2008-04/msg00027.html
|
||||
mv "$srcdir"/ecj-*.jar ecj.jar
|
||||
|
||||
echo ${pkgver} > gcc/BASE-VER
|
||||
}
|
||||
|
||||
@@ -343,6 +312,7 @@ build() {
|
||||
$_symvers \
|
||||
--enable-__cxa_atexit \
|
||||
--enable-default-pie \
|
||||
--enable-default-ssp \
|
||||
--enable-cloog-backend \
|
||||
--enable-languages=$_languages \
|
||||
$_arch_configure \
|
||||
@@ -362,10 +332,9 @@ package() {
|
||||
|
||||
# we dont support gcj -static
|
||||
# and saving 35MB is not bad.
|
||||
find "$pkgdir" -name libgcj.a -o -name libgtkpeer.a \
|
||||
-o -name libgjsmalsa.a -o -name libgcj-tools.a \
|
||||
-o -name libjvm.a -o -name libgij.a -o -name libgcj_bc.a \
|
||||
-o -name libjavamath.a \
|
||||
find "$pkgdir" -name libgtkpeer.a \
|
||||
-o -name libgjsmalsa.a -o \
|
||||
-o -name libgij.a -o \
|
||||
| xargs rm -f
|
||||
|
||||
# strip debug info from some static libs
|
||||
@@ -376,11 +345,6 @@ package() {
|
||||
-o -name libatomic.a -o -name libasan.a -o -name libtsan.a \) \
|
||||
-a -type f`
|
||||
|
||||
if $LANG_JAVA; then
|
||||
sed -i -e 's/lib: /&%{static:%eJava programs cannot be linked statically}/' \
|
||||
"$pkgdir"/usr/lib/libgcj.spec
|
||||
fi
|
||||
|
||||
if $LIBGOMP; then
|
||||
mv "$pkgdir"/usr/lib/libgomp.spec "$pkgdir"/$_gcclibdir
|
||||
fi
|
||||
@@ -524,59 +488,6 @@ libgomp() {
|
||||
mv "$pkgdir"/usr/${_target:+$CTARGET/}lib/libgomp.so.* "$subpkgdir"/usr/lib/
|
||||
}
|
||||
|
||||
java() {
|
||||
pkgdesc="Java support for GCC"
|
||||
depends="zlib-dev gcc=$_gccrel libgcj=$_gccrel"
|
||||
|
||||
paxmark -pm "$pkgdir"/$_gcclibexec/ecj1
|
||||
mkdir -p "$subpkgdir"/usr/bin "$subpkgdir"/usr/lib "$subpkgdir"/$_gcclibdir/
|
||||
cd "$pkgdir"/usr/bin
|
||||
mv gcj gcj-dbtool gjavah gcjh jcf-dump "$subpkgdir"/usr/bin/
|
||||
cd "$pkgdir"
|
||||
for i in $(find usr/ -name ecj1 -o -name jc1 -o -name jvgenmain); do
|
||||
mkdir -p "$subpkgdir"/${i%/*}
|
||||
mv "$pkgdir"/$i "$subpkgdir"/$i
|
||||
done
|
||||
for i in "$pkgdir"/usr/lib/libgcj*.so; do
|
||||
if [ -L "$i" ]; then
|
||||
mv "$i" "$subpkgdir"/usr/lib/
|
||||
fi
|
||||
done
|
||||
mv "$pkgdir"/usr/lib/libgij.so "$subpkgdir"/usr/lib/
|
||||
mv "$pkgdir"/usr/lib/libgcj.spec "$subpkgdir"/$_gcclibdir/
|
||||
}
|
||||
|
||||
libgcj() {
|
||||
pkgdesc="Java runtime library for gcc"
|
||||
# libgcj_bc.so moved from gcc-java to libgcj
|
||||
replaces="gcc-java"
|
||||
depends=
|
||||
|
||||
mkdir -p "$subpkgdir"/usr/bin
|
||||
cd "$pkgdir"/usr/bin
|
||||
paxmark -pmse "$pkgdir"/usr/bin/gij
|
||||
mv aot-compile gappletviewer gc-analyze gij gjar gjarsigner gkeytool\
|
||||
gnative2ascii gorbd grmic grmid grmiregistry gserialver \
|
||||
gtnameserv jv-convert rebuild-gcj-db \
|
||||
"$subpkgdir"/usr/bin/
|
||||
cd "$pkgdir"
|
||||
for i in $(find usr/lib -name jc1 -o -name jvgenmain); do
|
||||
mkdir -p "$subpkgdir"/${i%/*}
|
||||
mv "$pkgdir"/$i "$subpkgdir"/$i
|
||||
done
|
||||
mkdir -p "$subpkgdir"/usr/lib
|
||||
mv "$pkgdir"/usr/lib/gcj-* \
|
||||
"$pkgdir"/usr/lib/libgcj_bc.so \
|
||||
"$pkgdir"/usr/lib/libgcj*.so.* \
|
||||
"$pkgdir"/usr/lib/libgij.so.* \
|
||||
"$pkgdir"/usr/lib/logging.properties \
|
||||
"$pkgdir"/usr/lib/security \
|
||||
"$subpkgdir"/usr/lib/
|
||||
|
||||
mkdir -p "$subpkgdir"/usr/share/
|
||||
mv "$pkgdir"/usr/share/java "$subpkgdir"/usr/share/
|
||||
}
|
||||
|
||||
libgo() {
|
||||
pkgdesc="Go runtime library for GCC"
|
||||
depends=
|
||||
@@ -662,56 +573,35 @@ gnat() {
|
||||
mv "$pkgdir"/usr/bin/*gnat* "$subpkgdir"/usr/bin/
|
||||
}
|
||||
|
||||
sha512sums="02c60e54527c7adf584798d5251f8a0b80c93d5deafce82501b2c28e6692e0bd783927bbfc4bc527a863c0cccc025150a34740a9e29badb02d4b48e56a8aba90 gcc-6.4.0.tar.xz
|
||||
28f8c6fdbcb19e950b1d0bafb3bcc7a8cba87bc673aa6027cece116599cdee80f0cf5e95a1440544890239f5c754e8a93ab46d9daedd937faef445d7ea33b226 ecj-4.9.jar
|
||||
a1335adc2fbee98e36c4437ff2587771b98ed4180726779020f65039498235626a411cdb0100dbd20cd19d12f0d94f9a21af179ff624676c28cead9d60598b5d 001_all_default-ssp-strong.patch
|
||||
sha512sums="1811337ae3add9680cec64968a2509d085b6dc5b6783fc1e8c295e3e47416196fd1a3ad8dfe7e10be2276b4f62c357659ce2902f239f60a8648548231b4b5802 gcc-8.3.0.tar.xz
|
||||
e36e95b81489163abd6fe9d58f7867bdca43e61143afacbfb17f4698c0b16ec5fd0061d8fab7b2ae615540bebd721c2e2227f80401b4e7fc253da9da62e6b513 002_all_default-relro.patch
|
||||
f86466c62b8291fac46f9c250c7ad8fa5ab7b1cce2504442fd07ddc4543665b317ae28951f244e39aba29aeaf3fff252ec4f6a147aa16adb2b7aed747dd89188 003_all_default-fortify-source.patch
|
||||
51282fea54c7e616367bbeb2479ba13fec6f24eb47bd04e2071907b3b36273b2ff24676f46ef8d22f241c8ab4857307861eee076eab66797c3a50a8ecaa1809a 005_all_default-as-needed.patch
|
||||
3398386dd1e079d6545dd9799adc799c6b80e3984fac6899d0e1a7ee21b66d0c7e53cddf17a65d590c883db750f9f79aaedd857355a8b9f7fb9476c906237919 011_all_default-warn-format-security.patch
|
||||
9adb0d2b9b67dd957df6c609b8714c7c078efb52cd88770905c37c67827be8fc83d1125037b9c29d77db21ce78756aa2bb0bacdb0b98d869ac126da76a298e21 012_all_default-warn-trampolines.patch
|
||||
02b725b220e540077efef741e9d457f9e004fe53ae642a138e214875d076a60f7c2f27de0ed9a4225db2030fc9c3d2c5b0414c895b9eec0f5f48fad70e2fb029 005_all_default-as-needed.patch
|
||||
6c9a5068f6eea8a85d297a3555b1d2333ffd4b9ddbfb7560a3e643f8577603871ca123373ef7f96e894225291d88f7bf575c7f8386bcfdd1dabcd7ba12598b65 gcc-as-needed-gold.patch
|
||||
ab0df1862f1b645634e79b8101326ce53215eba39861a455cd145b81b5267a6a61bc6e76b32d53887a0a48873f7efc23e2c52cc04400c6afd89822f245cdbc77 gcc-as-needed-push-pop.patch
|
||||
e026bf9f73ee254528423c6cabdfd7794960c567161581b7d4b7c61c45027e12a6efef79662d4288b9cbaecb4798f01af6a5b4a13b766c2d501444ac1846fd43 011_all_default-warn-format-security.patch
|
||||
37de4cc9061bfe1963e6e6570e1a6bbfd58204bf90e0eef819882599a9a80ea28f3eb815c20c1f173dc25d4bd9971b7c7f7f9512d6f8f91f04de1e1175114d4d 012_all_default-warn-trampolines.patch
|
||||
38a0fedeac3eebe4a6a957792ba520225cf42663c96a171cd168fdb6c91ffa9a56b80351f8238c5d03b78d3ae2a6539a54481fe4848b4a395e2c87f2ff7adc08 013_all_default-ssp-fix.patch
|
||||
d35a3ac7e13a4446921a90e1ff3eec1079840c845f9d523c868e24ae21f94cf69ba041de5341ebef96432a6f57598e223381d4286e8fb8baaa25906707f29fbd 020_all_msgfmt-libstdc++-link.patch
|
||||
840070a3c423e6206aaa6e63e1d9a0fcd6efd53626cd1240a193f0b60aa5d84216acc4a2a4fa8bce74549b07e6a316b01d638f20cea13dc62473491a302fb3d6 050_all_libiberty-asprintf.patch
|
||||
0a0bc72b9366158f5d23fff1928e756fdd212433bac6ab1f00d632f241382820db8db5d475ddf11ea020eaf7e2e71b12fb9b1c3c870cf84adf6c2b16f15aabca 051_all_libiberty-pic.patch
|
||||
e7a2eb1b1870e199d6fd753d065781575656fa12baa264f96c5d179689d88c31b8a3f92a5dae96088c05e96aa2bda138364ad7dbcc79e1819a102f192cbb7bab 053_all_libitm-no-fortify-source.patch
|
||||
e87da18aa7ab92b02b06168658c63b42a6c73a08fad2a30f81ef6296100fdbe3c3a91548fd0cb24eaf591e862bb08e4b67249bc4b977b07da33523aee0c686bc 067_all_gcc-poison-system-directories.patch
|
||||
4a328d1e1a56c20166307edcfa322068915784d9c08025b7f81cf69714da48fc266b6d34f77b9135c2f10da830d9df408276a1b78d1fd218637c2823506593c2 090_all_pr55930-dependency-tracking.patch
|
||||
ef052d0c3c9642fcb5ed570069c5a49c8ef523c47ac8ce3f201a801766f72ae4ff7c3725a70ee66e52c0fb559621e35fe0cf5b88b901d71ceadd381f49653a08 201-cilkrts.patch
|
||||
808e206f5e107084156fba333d4e091dcbd62f5d7756142bc292d4b0a52619f8c2aaca3617defc2f5b6552ba0439aebd33f4141329d88eab6ddf2dd637d92c08 203-libgcc_s.patch
|
||||
fc0de05b36613b732a0222ea005c90653c6a40d6761b6894af2419272f4e74875f37e26af33a9b9940669ef89269c44c46d17ca5bcd54b5cd1176e5eaf2992c1 204-linux_libc_has_function.patch
|
||||
3842bd2be3e53db34e59bfb2bd438b244fc3712055058b9e232e33345f0fab216256b79e364fbac335972dc599a1d74393704f0cd595f3f076dcc10883c85b28 0003-gcc-poison-system-directories.patch
|
||||
d1c2d7ff7f673375dc7cd84ae9d8515853b5af6390c70bb763412c012101344e4ee1ce155151ce3fb6ba2b80af7ed42d697dbe1bf6fd6e7b2b9087a378c47c37 203-libgcc_s.patch
|
||||
98473bcaa77903a223ca9b0d2087c0921b287a2816d308cc32c8fe009e6cbf5dd1ae7fba27794ab8d9c09e117fe534413d91a464d1218474fc123ce0adfdc2c1 205-nopie.patch
|
||||
3287d5b443bea8ec64132bcabe869c738ae98ea8f1a86df1c5d18c927f8816edbfcefeefc47792dbbb2bcacf50319af00e01b3735d34525913b64350770ad453 207-static-pie.patch
|
||||
6d84354e6df96d5ea244eb3bb5f044781796b88040b11c78fb6ee509e5aac19d46e0e92ca836e98e6495d9751f52439833b748efc419e4f5d5301fb549c4dcc9 0002-posix_memalign.patch
|
||||
7f434a7350c9b06d0ae7cc18a569d813238483afa34b0801d112844a0dfe6164ae36b0416955fd4da7a8caa54672247f319a8ec7ce4b6a97a5f4e17ec083112a 0008-s390x-muslldso.patch
|
||||
66085c5555e6b91b6874d1782d5a1dc0ab1792889f9400f48cde9483f82b51b9e3a5de1efbba21a19fc5e664334f2188d0c2bc988d42335efa26118b3c85cc7f 0010-ldbl128-config.patch
|
||||
45d5bc11a89e5af77503ca06eec52d6d84e6fea0be021aaee1bcc39f8dd3c7b4baa4200cfa2b0688faa0f207d005db89c029eff32f362207aa3d2365b2f2363e 0012-static-pie.patch
|
||||
d08d7ead2de0429e5c9055d5b029ec2be9a8c821d22cecaf9b51f633652c493333f98963d9267fa2fa63850c50ae5eefd5f59e5910ec10d20044dac082182a8b libgcc-always-build-gcceh.a.patch
|
||||
600fe5098dc54edaa9808fd5717af9dec058953f9ad37d49cfba1db4f7e9a7a8f02019342f75157fc575946fa693259422184de27b7ecc8386d9f3ecc0f7cc5d gcc-4.9-musl-fortify.patch
|
||||
dbe0ee917fc7668571722364ab7c806731e3a31e8bfa30b4941b28b16b877d2a32b4a3897ef533399a28f82d43cac9b28e92de0493f0e779046db56584e07fa4 gcc-6.1-musl-libssp.patch
|
||||
bda845a6aa1854d2c883910b115f79ccfa93dfc2b5eac69a3a236d83eb34cadc140731d616ffc24698c7abc8878dd15f231bcc5119f1860e575a120b311706c7 boehm-gc-musl.patch
|
||||
fa62556719449caec6b2b434355bfbcaa5ae55ffe017b3e1f827f66a2aae21b79c571ee7a4ce723ea69169bc3a6447e73650991a200cc372adf2f102677518d7 gcc-pure64.patch
|
||||
2253941f3d19b6d08801d3782f5f5ed56c3b73fbc9d3561a8f01c702963ac4fab91599c686076e7081eb6a80c37ccd33591ae978996d6eee1dc0ce0f1c50259a fix-gcj-stdgnu14-link.patch
|
||||
f89ddeb21bc8f97e6a850a6b70b4501a8f3e49a4bc8cc82897488decda5d98ad01cb7f6c8b392d452e9579924a523bc75da6e0648c1c976d42e40af48b10343b fix-gcj-musl.patch
|
||||
54d67cc008b735e47771314171930c5d8b8f5f5dc97fcf4214824c105c808f3e75d22d5a4fdf5068ed0457fa0d46c60cfb442e276259a4a5e9b8722a027d18e6 fix-gcj-iconv-musl.patch
|
||||
abe9aaf9aa956058d0386a4396a511d176a46bb3906b90e952383646cdc158cbeb0a5dc616a1ccb1ca7d49fd0b5e351532aa15a3b13362abbf1ca4266f54a687 gcc-4.8-build-args.patch
|
||||
35d6d59f0b7b968f282f56767c9e0823a7bdc5aa0d450aca50fbd802649a7ca608b47671244a3faa208a9b0d6832cabb5a22724157dc817b2c0ad63d09f93282 fix-cxxflags-passing.patch
|
||||
9016b257abd8fa981de44a49512e35db814d1cbb47c1a87cd31c12d4ae20b13e9e149fe41691a7ec3c95bbcfde8a79194a8d2eaf547ceade3a246fad67c47dd8 ada-fixes.patch
|
||||
3f5bc334d9f73d06f5f7c876738d02356acdd08958bea0e4d2095ebf15c2c2ec4e411abdae0297505ae9a1699ca01b17338e853184e84663203b192b0d35fc19 ada-shared.patch
|
||||
631d4bdef6d8bde34df7978bb53ec28c3c909cf1f87139e5f148138d0f09adc58b41ecf0148bbf50fb4bc916c411e9bf8a2b6c046c75c0e77d754d8c35bcd4d7 ada-musl.patch
|
||||
fa44c8158111627aa0e91c43e7cc3aa38642c2041c96532dd4f0932dae4d6f92ea2850b683abcf10e7e120299d42ea6b69adc00002a514c76be8e39e99fa052b ada-aarch64-multiarch.patch
|
||||
4b4a0ff306a8ef34ff6e3284fbfca869012164a47ba7cb099085c1dd03e6ca0cdd462f82710e08c9a02895adc7484e4c5eef17b5aa264cf5d978fe8ad78eea93 300-main-gcc-add-musl-s390x-dynamic-linker.patch
|
||||
385bc2fa50204f678964e5148c6170f572701dab920fbec8301f505bda34d182cde0adb7da042fee71719e12fb59f59181897f9b1bb4f4716ff59aad46ca1998 310-build-gcj-s390x.patch
|
||||
50537add461714f44dc6a778e0c6d0e15d6a782591c8aff38d1fb559191ddac2b5ee14a43a3005b389fdf98d2e7468ff4e64c88ba024cf94f9fe0d9854b9e9c8 ada-musl.patch
|
||||
a1f7750bc7b8b7d916a5dee34fcc736bd4fb249c96538b547d495794e6cfd49356aa3974506a15074b4cb58edd5d7e2868607c902dd003e8c464d5066fd4a575 libgnarl-musl.patch
|
||||
f4ef08454e28c8732db69115e4998ec153399e8d229dd27f923dbdcf57b68128a65640d026cc7f45b58ba8764ab1eb575d4eb6d6dfc550a87a183f8b94e76181 320-libffi-gnulinux.patch
|
||||
01c71cd5881fc07ea3b9b980697e89b3ca0fe98502958ceafc3fca18b2604c844e2f457feab711baf8e03f00a5383b0e38aac7eb954034e306f43d4a37f165ed fix-rs6000-pie.patch
|
||||
34a818d5be67eb1f34e44a80b83c28a9b9c17d37fc9fac639f490d6bb5b53ebe3318140d09c236a17d7c98f5a7792ae3d6cefccda8067a5e942d6305b9d1f87c fix-linux-header-use-in-libgcc.patch
|
||||
86be3338cc9c33089608bc4c5e3b7918c4e500a345c338f361b18c342119a6ed69af5495d72950de7106d760f003528b46ad14795e805f8a3331e206dcb234e3 gcc-pure64-mips.patch
|
||||
508f3bca214d88531d739d761d07affc953689b1540905c73420b34c246e1e6b72588cf89f0e1462752633f8ddc88da8c0238be2a1b6e1c213829cecee7924cf ada-mips64.patch
|
||||
7912964bf3a985e9f870250d6e068f715582a4fb04270849d697a50e6aad0cf50df3d483ff80a0eb777d9940fd85526dd8d0b85da9bc71a5f2fbc07616263866 0001-i386-Move-struct-ix86_frame-to-machine_function.patch
|
||||
baa27a4b912d8e27cd65a556b09cf45289a0e00e86dae3925f2923d1f3752080e80d80e159c996ef4156c4df1dfc3069114810a846672170ef3ae461ae0ab7e1 0002-i386-Use-reference-of-struct-ix86_frame-to-avoid-cop.patch
|
||||
6701d15000bdd7c4c98a8fece8c814f5e4e73603eecf84fe4dc5ac10f79b3074afba7c2cc9e51d08b2abade1c34cb0c944c08ead7a85db94e97158c752fd1aac 0003-i386-Use-const-reference-of-struct-ix86_frame-to-avo.patch
|
||||
4e7e71ae57e232b29a6455ec977f60b47df1356eca0e85976ae2b4567c4c39541be9f10c30fe0085d69be5acdb61dff51d3e9d7af587c95d9cd2cb9ee307bd13 0004-x86-Add-mindirect-branch.patch
|
||||
07f7fdbd9b4876f36ed7715a35a369dbaf1016f46c42a8935930cfcc9ea250de2dbe8113f077373ccce3c39cd728f957b6c4c7c6a7da299f160a4109f0bbe88d 0005-x86-Add-mfunction-return.patch
|
||||
76ea947591e5241f8e6216ce337baaf1b5dfe3f02d8251f77a4acd70e2a5e7798e2867d70f452027f51a2e3baf1b5c94c3bffe9ef8e0a5ce24dc5d509adaf414 0006-x86-Add-mindirect-branch-register.patch
|
||||
1c33c5cd34efb44d4fa0ace56e3d27ec802a66e03b08a29ab6122cbc70edbbe22313a34114437a41e09e0a6869af3cea3fb18f5bcb49db2f8e3f155026fe15f0 0007-x86-Add-V-register-operand-modifier.patch
|
||||
5366e2cff0629304394bf35e9417c7faea6b6f3fc565d0410a17fdafcb2b30c9a218f8ca098274c09ca4c982ff5b178ad6df5bf464ec541aa086966915c7fe11 0008-x86-Disallow-mindirect-branch-mfunction-return-with-.patch
|
||||
67c738b1f6afb09b6f0469c9cb282ab4d51fc8dd8e39df1cfdff8831788c1022081fccd446a482623f649898733aeaaa205cba0aa41162cdbdc74e57de9bb6eb 0009-Use-INVALID_REGNUM-in-indirect-thunk-processing.patch
|
||||
b7b59f3203bf53168de2170b91738cd456f6ae205b3fe5bf8aacbaa8cc5624dd09c941ad8f1071d1ab8ab4fb5f69068a4bc792c0486fdec1ee2eb9c83688bb78 0010-i386-Pass-INVALID_REGNUM-as-invalid-register-number.patch
|
||||
c53d4c5968865abb709ee8a9af9d57917d43ea3ba31ee8312f9e8f338e9b1b44babf5aa3414848da7267e5cf13a9261815eb9185dc153cbd41ee7ce5ea23d2d0 0011-i386-Update-mfunction-return-for-return-with-pop.patch
|
||||
955080ba3e42cfe2f604e5dcef46aa6fca7c899c7808398947af655ff3b7954e30807ef85246986a5cc7db36dbc870db151e9fa8d8bc967b89ea56efdf64614c 0012-i386-Add-TARGET_INDIRECT_BRANCH_REGISTER.patch
|
||||
3aae3a9cef8e8afe5a5433db8d9f410e1a2882481af01bb1d33232f987dbb74d7780c32be70b868bb391b3601b65ed3a16d777afea946f5eeaff72aa1e7fa3a9 0013-i386-Don-t-generate-alias-for-function-return-thunk.patch"
|
||||
8039d4081b77332694bc10f898d5e4da0ece4ce7b0e219fedb2aab965126b6b0537d03ba8652341c9c35af07eef33e96b42cc02388f36d8027b9475d44f6b420 0016-invalid_tls_model.patch"
|
||||
+103
-23
@@ -1,7 +1,8 @@
|
||||
diff -rup gcc-5.1.0/gcc.orig/ada/adaint.c gcc-5.1.0/gcc/ada/adaint.c
|
||||
--- gcc-5.1.0/gcc.orig/ada/adaint.c 2015-02-20 11:48:57.000000000 +0000
|
||||
+++ gcc-5.1.0/gcc/ada/adaint.c 2015-06-02 10:47:51.672767476 +0000
|
||||
@@ -70,6 +70,11 @@
|
||||
diff --git a/gcc/ada/adaint.c b/gcc/ada/adaint.c
|
||||
index 3b0aea9..ee0bb69 100644
|
||||
--- a/gcc/ada/adaint.c
|
||||
+++ b/gcc/ada/adaint.c
|
||||
@@ -76,6 +76,11 @@
|
||||
#include <sys/param.h>
|
||||
#include <sys/pstat.h>
|
||||
#endif
|
||||
@@ -13,16 +14,15 @@ diff -rup gcc-5.1.0/gcc.orig/ada/adaint.c gcc-5.1.0/gcc/ada/adaint.c
|
||||
|
||||
#ifdef __PikeOS__
|
||||
#define __BSD_VISIBLE 1
|
||||
@@ -3057,8 +3062,6 @@ __gnat_lwp_self (void)
|
||||
return (void *) syscall (__NR_gettid);
|
||||
}
|
||||
@@ -3255,7 +3260,6 @@ __gnat_lwp_self (void)
|
||||
#endif
|
||||
|
||||
#if defined (__linux__)
|
||||
-#include <sched.h>
|
||||
-
|
||||
|
||||
/* glibc versions earlier than 2.7 do not define the routines to handle
|
||||
dynamically allocated CPU sets. For these targets, we use the static
|
||||
versions. */
|
||||
@@ -3067,7 +3070,7 @@ __gnat_lwp_self (void)
|
||||
@@ -3265,7 +3269,7 @@ __gnat_lwp_self (void)
|
||||
|
||||
/* Dynamic cpu sets */
|
||||
|
||||
@@ -31,7 +31,7 @@ diff -rup gcc-5.1.0/gcc.orig/ada/adaint.c gcc-5.1.0/gcc/ada/adaint.c
|
||||
__gnat_cpu_alloc (size_t count)
|
||||
{
|
||||
return CPU_ALLOC (count);
|
||||
@@ -3080,33 +3083,33 @@ __gnat_cpu_alloc_size (size_t count)
|
||||
@@ -3278,33 +3282,33 @@ __gnat_cpu_alloc_size (size_t count)
|
||||
}
|
||||
|
||||
void
|
||||
@@ -73,7 +73,7 @@ diff -rup gcc-5.1.0/gcc.orig/ada/adaint.c gcc-5.1.0/gcc/ada/adaint.c
|
||||
}
|
||||
|
||||
size_t
|
||||
@@ -3116,23 +3119,23 @@ __gnat_cpu_alloc_size (size_t count ATTR
|
||||
@@ -3314,23 +3318,23 @@ __gnat_cpu_alloc_size (size_t count ATTRIBUTE_UNUSED)
|
||||
}
|
||||
|
||||
void
|
||||
@@ -101,11 +101,12 @@ diff -rup gcc-5.1.0/gcc.orig/ada/adaint.c gcc-5.1.0/gcc/ada/adaint.c
|
||||
+ CPU_SET (cpu - 1, (cpu_set_t *) set);
|
||||
}
|
||||
#endif /* !CPU_ALLOC */
|
||||
#endif /* linux */
|
||||
diff -rup gcc-5.1.0/gcc.orig/ada/adaint.h gcc-5.1.0/gcc/ada/adaint.h
|
||||
--- gcc-5.1.0/gcc.orig/ada/adaint.h 2015-01-27 17:20:27.000000000 +0000
|
||||
+++ gcc-5.1.0/gcc/ada/adaint.h 2015-06-02 10:47:23.188910894 +0000
|
||||
@@ -287,13 +287,11 @@ extern void *__gnat_lwp_self (voi
|
||||
#endif /* __linux__ */
|
||||
diff --git a/gcc/ada/adaint.h b/gcc/ada/adaint.h
|
||||
index 0d12f7e..a063b47 100644
|
||||
--- a/gcc/ada/adaint.h
|
||||
+++ b/gcc/ada/adaint.h
|
||||
@@ -316,13 +316,11 @@ extern void *__gnat_lwp_self (void);
|
||||
|
||||
/* Routines for interface to required CPU set primitives */
|
||||
|
||||
@@ -123,15 +124,94 @@ diff -rup gcc-5.1.0/gcc.orig/ada/adaint.h gcc-5.1.0/gcc/ada/adaint.h
|
||||
#endif
|
||||
|
||||
#if defined (_WIN32)
|
||||
diff -rup gcc-5.1.0/gcc.orig/ada/gcc-interface/Makefile.in gcc-5.1.0/gcc/ada/gcc-interface/Makefile.in
|
||||
--- gcc-5.1.0/gcc.orig/ada/gcc-interface/Makefile.in 2015-04-09 20:29:28.000000000 +0000
|
||||
+++ gcc-5.1.0/gcc/ada/gcc-interface/Makefile.in 2015-06-02 10:47:23.188910894 +0000
|
||||
@@ -1910,7 +1910,7 @@ ifeq ($(strip $(filter-out powerpc% linu
|
||||
diff --git a/gcc/ada/terminals.c b/gcc/ada/terminals.c
|
||||
index 7025f57..207b50d 100644
|
||||
--- a/gcc/ada/terminals.c
|
||||
+++ b/gcc/ada/terminals.c
|
||||
@@ -1108,13 +1108,6 @@ __gnat_setup_winsize (void *desc, int rows, int columns)
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
-/* On some system termio is either absent or including it will disable termios
|
||||
- (HP-UX) */
|
||||
-#if !defined (__hpux__) && !defined (BSD) && !defined (__APPLE__) \
|
||||
- && !defined (__rtems__) && !defined (__QNXNTO__)
|
||||
-# include <termio.h>
|
||||
-#endif
|
||||
-
|
||||
#include <sys/ioctl.h>
|
||||
#include <termios.h>
|
||||
#include <fcntl.h>
|
||||
diff --git a/gcc/ada/gcc-interface/Makefile.in b/gcc/ada/gcc-interface/Makefile.in
|
||||
index ebb955e..08cfbee 100644
|
||||
--- a/gcc/ada/gcc-interface/Makefile.in
|
||||
+++ b/gcc/ada/gcc-interface/Makefile.in
|
||||
@@ -1028,7 +1028,7 @@ ifeq ($(strip $(filter-out %86 linux%,$(target_cpu) $(target_os))),)
|
||||
s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
|
||||
$(TRASYM_DWARF_UNIX_PAIRS) \
|
||||
g-sercom.adb<libgnat/g-sercom__linux.adb \
|
||||
- s-tsmona.adb<libgnat/s-tsmona__linux.adb \
|
||||
+ s-tsmona.adb<libgnat/s-tsmona.adb \
|
||||
a-exetim.adb<libgnarl/a-exetim__posix.adb \
|
||||
a-exetim.ads<libgnarl/a-exetim__default.ads \
|
||||
s-linux.ads<libgnarl/s-linux.ads \
|
||||
@@ -1545,7 +1545,7 @@ ifeq ($(strip $(filter-out powerpc% linux%,$(target_cpu) $(target_os))),)
|
||||
s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
|
||||
g-sercom.adb<libgnat/g-sercom__linux.adb \
|
||||
$(TRASYM_DWARF_UNIX_PAIRS) \
|
||||
- s-tsmona.adb<libgnat/s-tsmona__linux.adb \
|
||||
+ s-tsmona.adb<libgnat/s-tsmona.adb \
|
||||
$(ATOMICS_TARGET_PAIRS) \
|
||||
$(ATOMICS_BUILTINS_TARGET_PAIRS) \
|
||||
system.ads<libgnat/system-linux-ppc.ads
|
||||
@@ -1574,7 +1574,7 @@ ifeq ($(strip $(filter-out powerpc% linux%,$(target_cpu) $(target_os))),)
|
||||
endif
|
||||
|
||||
# ARM linux, GNU eabi
|
||||
-ifeq ($(strip $(filter-out arm% linux-gnueabi%,$(target_cpu) $(target_os))),)
|
||||
+ifeq ($(strip $(filter-out arm% linux-gnueabi% linux-musleabi% linux-muslgnueabi%,$(target_cpu) $(target_os))),)
|
||||
LIBGNAT_TARGET_PAIRS = \
|
||||
a-intnam.ads<a-intnam-linux.ads \
|
||||
s-inmaop.adb<s-inmaop-posix.adb \
|
||||
a-intnam.ads<libgnarl/a-intnam__linux.ads \
|
||||
s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
|
||||
@@ -1774,7 +1774,7 @@ ifeq ($(strip $(filter-out %ia64 linux%,$(target_cpu) $(target_os))),)
|
||||
s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
|
||||
g-sercom.adb<libgnat/g-sercom__linux.adb \
|
||||
$(TRASYM_DWARF_UNIX_PAIRS) \
|
||||
- s-tsmona.adb<libgnat/s-tsmona__linux.adb \
|
||||
+ s-tsmona.adb<libgnat/s-tsmona.adb \
|
||||
$(ATOMICS_TARGET_PAIRS) \
|
||||
$(ATOMICS_BUILTINS_TARGET_PAIRS) \
|
||||
system.ads<libgnat/system-linux-ia64.ads
|
||||
@@ -1871,7 +1871,7 @@ ifeq ($(strip $(filter-out %x86_64 linux%,$(target_cpu) $(target_os))),)
|
||||
s-taspri.ads<libgnarl/s-taspri__posix.ads \
|
||||
g-sercom.adb<libgnat/g-sercom__linux.adb \
|
||||
$(TRASYM_DWARF_UNIX_PAIRS) \
|
||||
- s-tsmona.adb<libgnat/s-tsmona__linux.adb \
|
||||
+ s-tsmona.adb<libgnat/s-tsmona.adb \
|
||||
$(ATOMICS_TARGET_PAIRS) \
|
||||
$(X86_64_TARGET_PAIRS) \
|
||||
system.ads<libgnat/system-linux-x86.ads
|
||||
diff --git a/gcc/ada/terminals.c b/gcc/ada/terminals.c
|
||||
index 207b50d..bd3a02c 100644
|
||||
--- a/gcc/ada/terminals.c
|
||||
+++ b/gcc/ada/terminals.c
|
||||
@@ -1152,7 +1152,7 @@ __gnat_setup_winsize (void *desc, int rows, int columns)
|
||||
#if defined (__APPLE__) || defined (BSD)
|
||||
#define USE_OPENPTY
|
||||
#elif defined (__linux__)
|
||||
-#define USE_GETPT
|
||||
+#define USE_POSIX_OPENPT
|
||||
#elif defined (__sun__)
|
||||
#define USE_CLONE_DEVICE "/dev/ptmx"
|
||||
#elif defined (_AIX)
|
||||
@@ -1201,8 +1201,8 @@ allocate_pty_desc (pty_desc **desc) {
|
||||
int master_fd = -1;
|
||||
char *slave_name = NULL;
|
||||
|
||||
-#ifdef USE_GETPT
|
||||
- master_fd = getpt ();
|
||||
+#ifdef USE_POSIX_OPENPT
|
||||
+ master_fd = posix_openpt(O_RDWR | O_NOCTTY);
|
||||
#elif defined (USE_OPENPTY)
|
||||
status = openpty (&master_fd, &slave_fd, NULL, NULL, NULL);
|
||||
#elif defined (USE_CLONE_DEVICE)
|
||||
@@ -0,0 +1,58 @@
|
||||
# DP: Use --push-state/--pop-state for gold as well when linking libtsan.
|
||||
|
||||
Index: b/gcc/gcc.c
|
||||
===================================================================
|
||||
--- a/gcc/gcc.c
|
||||
+++ b/gcc/gcc.c
|
||||
@@ -693,10 +693,10 @@ proper position among the other output f
|
||||
#define LIBASAN_SPEC STATIC_LIBASAN_LIBS
|
||||
#elif defined(HAVE_LD_STATIC_DYNAMIC)
|
||||
#define LIBASAN_SPEC "%{static-libasan:" LD_STATIC_OPTION "}" \
|
||||
- " %{!static-libasan:%{!fuse-ld=gold:--push-state }--no-as-needed}" \
|
||||
+ " %{!static-libasan:--push-state --no-as-needed}" \
|
||||
" -lasan " \
|
||||
" %{static-libasan:" LD_DYNAMIC_OPTION "}" \
|
||||
- " %{!static-libasan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \
|
||||
+ " %{!static-libasan:--pop-state}" \
|
||||
STATIC_LIBASAN_LIBS
|
||||
#else
|
||||
#define LIBASAN_SPEC "-lasan" STATIC_LIBASAN_LIBS
|
||||
@@ -714,10 +714,10 @@ proper position among the other output f
|
||||
#define LIBTSAN_SPEC STATIC_LIBTSAN_LIBS
|
||||
#elif defined(HAVE_LD_STATIC_DYNAMIC)
|
||||
#define LIBTSAN_SPEC "%{static-libtsan:" LD_STATIC_OPTION "}" \
|
||||
- " %{!static-libtsan:%{!fuse-ld=gold:--push-state }--no-as-needed}" \
|
||||
+ " %{!static-libtsan:--push-state --no-as-needed}" \
|
||||
" -ltsan " \
|
||||
" %{static-libtsan:" LD_DYNAMIC_OPTION "}" \
|
||||
- " %{!static-libtsan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \
|
||||
+ " %{!static-libtsan:--pop-state}" \
|
||||
STATIC_LIBTSAN_LIBS
|
||||
#else
|
||||
#define LIBTSAN_SPEC "-ltsan" STATIC_LIBTSAN_LIBS
|
||||
@@ -735,10 +735,10 @@ proper position among the other output f
|
||||
#define LIBLSAN_SPEC STATIC_LIBLSAN_LIBS
|
||||
#elif defined(HAVE_LD_STATIC_DYNAMIC)
|
||||
#define LIBLSAN_SPEC "%{static-liblsan:" LD_STATIC_OPTION "}" \
|
||||
- " %{!static-liblsan:%{!fuse-ld=gold:--push-state }--no-as-needed}" \
|
||||
+ " %{!static-liblsan:--push-state --no-as-needed}" \
|
||||
" -llsan " \
|
||||
" %{static-liblsan:" LD_DYNAMIC_OPTION "}" \
|
||||
- " %{!static-liblsan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \
|
||||
+ " %{!static-liblsan:--pop-state}" \
|
||||
STATIC_LIBLSAN_LIBS
|
||||
#else
|
||||
#define LIBLSAN_SPEC "-llsan" STATIC_LIBLSAN_LIBS
|
||||
@@ -754,10 +754,10 @@ proper position among the other output f
|
||||
" %{static-libubsan|static:%:include(libsanitizer.spec)%(link_libubsan)}"
|
||||
#ifdef HAVE_LD_STATIC_DYNAMIC
|
||||
#define LIBUBSAN_SPEC "%{static-libubsan:" LD_STATIC_OPTION "}" \
|
||||
- " %{!static-libubsan:%{!fuse-ld=gold:--push-state }--no-as-needed}" \
|
||||
+ " %{!static-libubsan:--push-state --no-as-needed}" \
|
||||
" -lubsan " \
|
||||
" %{static-libubsan:" LD_DYNAMIC_OPTION "}" \
|
||||
- " %{!static-libubsan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \
|
||||
+ " %{!static-libubsan:--pop-state}" \
|
||||
STATIC_LIBUBSAN_LIBS
|
||||
#else
|
||||
#define LIBUBSAN_SPEC "-lubsan" STATIC_LIBUBSAN_LIBS
|
||||
@@ -0,0 +1,43 @@
|
||||
From: Jakub Jelinek <jakub@redhat.com>
|
||||
Subject: [PATCH] Use --push-state --as-needed and --pop-state instead of --as-needed and --no-as-needed for libgcc
|
||||
|
||||
As discussed, using --as-needed and --no-as-needed is dangerous, because
|
||||
it results in --no-as-needed even for libraries after -lgcc_s, even when the
|
||||
default is --as-needed or --as-needed has been specified earlier on the
|
||||
command line.
|
||||
|
||||
If the linker supports --push-state/--pop-state, we should IMHO use it.
|
||||
|
||||
2018-04-11 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* configure.ac (LD_AS_NEEDED_OPTION, LD_NO_AS_NEEDED_OPTION): Use
|
||||
--push-state --as-needed and --pop-state instead of --as-needed and
|
||||
--no-as-needed if ld supports it.
|
||||
* configure: Regenerated.
|
||||
|
||||
Index: b/gcc/configure.ac
|
||||
===================================================================
|
||||
--- a/gcc/configure.ac
|
||||
+++ b/gcc/configure.ac
|
||||
@@ -5518,11 +5518,21 @@ if test $in_tree_ld = yes ; then
|
||||
if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 16 -o "$gcc_cv_gld_major_version" -gt 2 \
|
||||
&& test $in_tree_ld_is_elf = yes; then
|
||||
gcc_cv_ld_as_needed=yes
|
||||
+ if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 28; then
|
||||
+ gcc_cv_ld_as_needed_option='--push-state --as-needed'
|
||||
+ gcc_cv_ld_no_as_needed_option='--pop-state'
|
||||
+ fi
|
||||
fi
|
||||
elif test x$gcc_cv_ld != x; then
|
||||
# Check if linker supports --as-needed and --no-as-needed options
|
||||
if $gcc_cv_ld --help 2>&1 | grep as-needed > /dev/null; then
|
||||
gcc_cv_ld_as_needed=yes
|
||||
+ if $gcc_cv_ld --help 2>&1 | grep push-state > /dev/null; then
|
||||
+ if $gcc_cv_ld --help 2>&1 | grep pop-state > /dev/null; then
|
||||
+ gcc_cv_ld_as_needed_option='--push-state --as-needed'
|
||||
+ gcc_cv_ld_no_as_needed_option='--pop-state'
|
||||
+ fi
|
||||
+ fi
|
||||
fi
|
||||
case "$target:$gnu_ld" in
|
||||
*-*-solaris2*:no)
|
||||
@@ -0,0 +1,120 @@
|
||||
diff -rup gcc-8.2.0/gcc/ada/libgnarl/s-osinte__linux.ads gcc-8.2.0-new/gcc/ada/libgnarl/s-osinte__linux.ads
|
||||
--- gcc-8.2.0/gcc/ada/libgnarl/s-osinte__linux.ads 2018-01-11 00:55:25.000000000 -0800
|
||||
+++ gcc-8.2.0-new/gcc/ada/libgnarl/s-osinte__linux.ads 2018-11-01 16:16:23.372452951 -0700
|
||||
@@ -394,12 +394,6 @@ package System.OS_Interface is
|
||||
PTHREAD_RWLOCK_PREFER_WRITER_NP : constant := 1;
|
||||
PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP : constant := 2;
|
||||
|
||||
- function pthread_rwlockattr_setkind_np
|
||||
- (attr : access pthread_rwlockattr_t;
|
||||
- pref : int) return int;
|
||||
- pragma Import
|
||||
- (C, pthread_rwlockattr_setkind_np, "pthread_rwlockattr_setkind_np");
|
||||
-
|
||||
function pthread_rwlock_init
|
||||
(mutex : access pthread_rwlock_t;
|
||||
attr : access pthread_rwlockattr_t) return int;
|
||||
@@ -464,11 +458,6 @@ package System.OS_Interface is
|
||||
protocol : int) return int;
|
||||
pragma Import (C, pthread_mutexattr_setprotocol);
|
||||
|
||||
- function pthread_mutexattr_setprioceiling
|
||||
- (attr : access pthread_mutexattr_t;
|
||||
- prioceiling : int) return int;
|
||||
- pragma Import (C, pthread_mutexattr_setprioceiling);
|
||||
-
|
||||
type struct_sched_param is record
|
||||
sched_priority : int; -- scheduling priority
|
||||
end record;
|
||||
diff -rup gcc-8.2.0/gcc/ada/libgnarl/s-taprop__linux.adb gcc-8.2.0-new/gcc/ada/libgnarl/s-taprop__linux.adb
|
||||
--- gcc-8.2.0/gcc/ada/libgnarl/s-taprop__linux.adb 2018-01-11 00:55:25.000000000 -0800
|
||||
+++ gcc-8.2.0-new/gcc/ada/libgnarl/s-taprop__linux.adb 2018-11-13 11:28:36.433964449 -0800
|
||||
@@ -202,9 +202,6 @@ package body System.Task_Primitives.Oper
|
||||
pragma Import
|
||||
(C, GNAT_pthread_condattr_setup, "__gnat_pthread_condattr_setup");
|
||||
|
||||
- function GNAT_has_cap_sys_nice return C.int;
|
||||
- pragma Import
|
||||
- (C, GNAT_has_cap_sys_nice, "__gnat_has_cap_sys_nice");
|
||||
-- We do not have pragma Linker_Options ("-lcap"); here, because this
|
||||
-- library is not present on many Linux systems. 'libcap' is the Linux
|
||||
-- "capabilities" library, called by __gnat_has_cap_sys_nice.
|
||||
@@ -214,38 +211,6 @@ package body System.Task_Primitives.Oper
|
||||
-- Convert Ada priority to Linux priority. Priorities are 1 .. 99 on
|
||||
-- GNU/Linux, so we map 0 .. 98 to 1 .. 99.
|
||||
|
||||
- function Get_Ceiling_Support return Boolean;
|
||||
- -- Get the value of the Ceiling_Support constant (see below).
|
||||
- -- Note well: If this function or related code is modified, it should be
|
||||
- -- tested by hand, because automated testing doesn't exercise it.
|
||||
-
|
||||
- -------------------------
|
||||
- -- Get_Ceiling_Support --
|
||||
- -------------------------
|
||||
-
|
||||
- function Get_Ceiling_Support return Boolean is
|
||||
- Ceiling_Support : Boolean := False;
|
||||
- begin
|
||||
- if Locking_Policy /= 'C' then
|
||||
- return False;
|
||||
- end if;
|
||||
-
|
||||
- declare
|
||||
- function geteuid return Integer;
|
||||
- pragma Import (C, geteuid, "geteuid");
|
||||
- Superuser : constant Boolean := geteuid = 0;
|
||||
- Has_Cap : constant C.int := GNAT_has_cap_sys_nice;
|
||||
- pragma Assert (Has_Cap in 0 | 1);
|
||||
- begin
|
||||
- Ceiling_Support := Superuser or else Has_Cap = 1;
|
||||
- end;
|
||||
-
|
||||
- return Ceiling_Support;
|
||||
- end Get_Ceiling_Support;
|
||||
-
|
||||
- pragma Warnings (Off, "non-static call not allowed in preelaborated unit");
|
||||
- Ceiling_Support : constant Boolean := Get_Ceiling_Support;
|
||||
- pragma Warnings (On, "non-static call not allowed in preelaborated unit");
|
||||
-- True if the locking policy is Ceiling_Locking, and the current process
|
||||
-- has permission to use this policy. The process has permission if it is
|
||||
-- running as 'root', or if the capability was set by the setcap command,
|
||||
@@ -348,7 +313,9 @@ package body System.Task_Primitives.Oper
|
||||
-- Init_Mutex --
|
||||
----------------
|
||||
|
||||
+ pragma Warnings (Off, "formal parameter * is not referenced");
|
||||
function Init_Mutex (L : RTS_Lock_Ptr; Prio : Any_Priority) return C.int is
|
||||
+ pragma Warnings (On, "formal parameter * is not referenced");
|
||||
Mutex_Attr : aliased pthread_mutexattr_t;
|
||||
Result, Result_2 : C.int;
|
||||
|
||||
@@ -360,16 +327,7 @@ package body System.Task_Primitives.Oper
|
||||
return Result;
|
||||
end if;
|
||||
|
||||
- if Ceiling_Support then
|
||||
- Result := pthread_mutexattr_setprotocol
|
||||
- (Mutex_Attr'Access, PTHREAD_PRIO_PROTECT);
|
||||
- pragma Assert (Result = 0);
|
||||
-
|
||||
- Result := pthread_mutexattr_setprioceiling
|
||||
- (Mutex_Attr'Access, Prio_To_Linux_Prio (Prio));
|
||||
- pragma Assert (Result = 0);
|
||||
-
|
||||
- elsif Locking_Policy = 'I' then
|
||||
+ if Locking_Policy = 'I' then
|
||||
Result := pthread_mutexattr_setprotocol
|
||||
(Mutex_Attr'Access, PTHREAD_PRIO_INHERIT);
|
||||
pragma Assert (Result = 0);
|
||||
@@ -409,11 +367,6 @@ package body System.Task_Primitives.Oper
|
||||
Result := pthread_rwlockattr_init (RWlock_Attr'Access);
|
||||
pragma Assert (Result = 0);
|
||||
|
||||
- Result := pthread_rwlockattr_setkind_np
|
||||
- (RWlock_Attr'Access,
|
||||
- PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP);
|
||||
- pragma Assert (Result = 0);
|
||||
-
|
||||
Result := pthread_rwlock_init (L.RW'Access, RWlock_Attr'Access);
|
||||
|
||||
pragma Assert (Result in 0 | ENOMEM);
|
||||
@@ -0,0 +1,42 @@
|
||||
From 65eb86f3e110998d30489df009d44b4bc1043adc Mon Sep 17 00:00:00 2001
|
||||
From: Szabolcs Nagy <nsz@port70.net>
|
||||
Date: Fri, 26 Jan 2018 20:32:50 +0000
|
||||
Subject: [PATCH 02/12] posix_memalign
|
||||
|
||||
---
|
||||
gcc/config/i386/pmm_malloc.h | 9 +++++----
|
||||
1 file changed, 5 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/gcc/config/i386/pmm_malloc.h b/gcc/config/i386/pmm_malloc.h
|
||||
index ffbb7f82cf5..b0b890d2403 100644
|
||||
--- a/gcc/config/i386/pmm_malloc.h
|
||||
+++ b/gcc/config/i386/pmm_malloc.h
|
||||
@@ -27,12 +27,13 @@
|
||||
#include <stdlib.h>
|
||||
|
||||
/* We can't depend on <stdlib.h> since the prototype of posix_memalign
|
||||
- may not be visible. */
|
||||
+ may not be visible and we can't pollute the namespace either. */
|
||||
#ifndef __cplusplus
|
||||
-extern int posix_memalign (void **, size_t, size_t);
|
||||
+extern int _mm_posix_memalign (void **, size_t, size_t)
|
||||
#else
|
||||
-extern "C" int posix_memalign (void **, size_t, size_t) throw ();
|
||||
+extern "C" int _mm_posix_memalign (void **, size_t, size_t) throw ()
|
||||
#endif
|
||||
+__asm__("posix_memalign");
|
||||
|
||||
static __inline void *
|
||||
_mm_malloc (size_t __size, size_t __alignment)
|
||||
@@ -42,7 +43,7 @@ _mm_malloc (size_t __size, size_t __alignment)
|
||||
return malloc (__size);
|
||||
if (__alignment == 2 || (sizeof (void *) == 8 && __alignment == 4))
|
||||
__alignment = sizeof (void *);
|
||||
- if (posix_memalign (&__ptr, __alignment, __size) == 0)
|
||||
+ if (_mm_posix_memalign (&__ptr, __alignment, __size) == 0)
|
||||
return __ptr;
|
||||
else
|
||||
return NULL;
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -0,0 +1,194 @@
|
||||
From 48c670d2678e0323d88eb72205e039f393cabe05 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 29 Mar 2013 08:59:00 +0400
|
||||
Subject: [PATCH 03/39] gcc: poison-system-directories
|
||||
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
|
||||
Upstream-Status: Inappropriate [distribution: codesourcery]
|
||||
---
|
||||
gcc/common.opt | 4 ++++
|
||||
gcc/config.in | 6 ++++++
|
||||
gcc/configure | 16 ++++++++++++++++
|
||||
gcc/configure.ac | 10 ++++++++++
|
||||
gcc/doc/invoke.texi | 9 +++++++++
|
||||
gcc/gcc.c | 2 ++
|
||||
gcc/incpath.c | 19 +++++++++++++++++++
|
||||
7 files changed, 66 insertions(+)
|
||||
|
||||
diff --git a/gcc/common.opt b/gcc/common.opt
|
||||
index d6ef85928f3..7b29efe3882 100644
|
||||
--- a/gcc/common.opt
|
||||
+++ b/gcc/common.opt
|
||||
@@ -679,6 +679,10 @@ Wreturn-local-addr
|
||||
Common Var(warn_return_local_addr) Init(1) Warning
|
||||
Warn about returning a pointer/reference to a local or temporary variable.
|
||||
|
||||
+Wpoison-system-directories
|
||||
+Common Var(flag_poison_system_directories) Init(1) Warning
|
||||
+Warn for -I and -L options using system directories if cross compiling
|
||||
+
|
||||
Wshadow
|
||||
Common Var(warn_shadow) Warning
|
||||
Warn when one variable shadows another. Same as -Wshadow=global.
|
||||
diff --git a/gcc/config.in b/gcc/config.in
|
||||
index 5bccb408016..1c784a8276b 100644
|
||||
--- a/gcc/config.in
|
||||
+++ b/gcc/config.in
|
||||
@@ -194,6 +194,12 @@
|
||||
#endif
|
||||
|
||||
|
||||
+/* Define to warn for use of native system header directories */
|
||||
+#ifndef USED_FOR_TARGET
|
||||
+#undef ENABLE_POISON_SYSTEM_DIRECTORIES
|
||||
+#endif
|
||||
+
|
||||
+
|
||||
/* Define if you want all operations on RTL (the basic data structure of the
|
||||
optimizer and back end) to be checked for dynamic type safety at runtime.
|
||||
This is quite expensive. */
|
||||
diff --git a/gcc/configure b/gcc/configure
|
||||
index 5c345ce0fd7..cafd05fd150 100755
|
||||
--- a/gcc/configure
|
||||
+++ b/gcc/configure
|
||||
@@ -953,6 +953,7 @@ with_system_zlib
|
||||
enable_maintainer_mode
|
||||
enable_link_mutex
|
||||
enable_version_specific_runtime_libs
|
||||
+enable_poison_system_directories
|
||||
enable_plugin
|
||||
enable_host_shared
|
||||
enable_libquadmath_support
|
||||
@@ -1696,6 +1697,8 @@ Optional Features:
|
||||
--enable-version-specific-runtime-libs
|
||||
specify that runtime libraries should be installed
|
||||
in a compiler-specific directory
|
||||
+ --enable-poison-system-directories
|
||||
+ warn for use of native system header directories
|
||||
--enable-plugin enable plugin support
|
||||
--enable-host-shared build host code as shared libraries
|
||||
--disable-libquadmath-support
|
||||
@@ -29715,6 +29718,19 @@ if test "${enable_version_specific_runtime_libs+set}" = set; then :
|
||||
fi
|
||||
|
||||
|
||||
+# Check whether --enable-poison-system-directories was given.
|
||||
+if test "${enable_poison_system_directories+set}" = set; then :
|
||||
+ enableval=$enable_poison_system_directories;
|
||||
+else
|
||||
+ enable_poison_system_directories=no
|
||||
+fi
|
||||
+
|
||||
+if test "x${enable_poison_system_directories}" = "xyes"; then
|
||||
+
|
||||
+$as_echo "#define ENABLE_POISON_SYSTEM_DIRECTORIES 1" >>confdefs.h
|
||||
+
|
||||
+fi
|
||||
+
|
||||
# Substitute configuration variables
|
||||
|
||||
|
||||
diff --git a/gcc/configure.ac b/gcc/configure.ac
|
||||
index 65dbf1f2f80..dd5b38195ce 100644
|
||||
--- a/gcc/configure.ac
|
||||
+++ b/gcc/configure.ac
|
||||
@@ -6341,6 +6341,16 @@ AC_ARG_ENABLE(version-specific-runtime-libs,
|
||||
[specify that runtime libraries should be
|
||||
installed in a compiler-specific directory])])
|
||||
|
||||
+AC_ARG_ENABLE([poison-system-directories],
|
||||
+ AS_HELP_STRING([--enable-poison-system-directories],
|
||||
+ [warn for use of native system header directories]),,
|
||||
+ [enable_poison_system_directories=no])
|
||||
+if test "x${enable_poison_system_directories}" = "xyes"; then
|
||||
+ AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES],
|
||||
+ [1],
|
||||
+ [Define to warn for use of native system header directories])
|
||||
+fi
|
||||
+
|
||||
# Substitute configuration variables
|
||||
AC_SUBST(subdirs)
|
||||
AC_SUBST(srcdir)
|
||||
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
|
||||
index 255149fcfb8..cb71b60fe3c 100644
|
||||
--- a/gcc/doc/invoke.texi
|
||||
+++ b/gcc/doc/invoke.texi
|
||||
@@ -303,6 +303,7 @@ Objective-C and Objective-C++ Dialects}.
|
||||
-Wpacked -Wpacked-bitfield-compat -Wpacked-not-aligned -Wpadded @gol
|
||||
-Wparentheses -Wno-pedantic-ms-format @gol
|
||||
-Wplacement-new -Wplacement-new=@var{n} @gol
|
||||
+-Wno-poison-system-directories @gol
|
||||
-Wpointer-arith -Wpointer-compare -Wno-pointer-to-int-cast @gol
|
||||
-Wno-pragmas -Wredundant-decls -Wrestrict -Wno-return-local-addr @gol
|
||||
-Wreturn-type -Wsequence-point -Wshadow -Wno-shadow-ivar @gol
|
||||
@@ -5712,6 +5713,14 @@ made up of data only and thus requires no special treatment. But, for
|
||||
most targets, it is made up of code and thus requires the stack to be
|
||||
made executable in order for the program to work properly.
|
||||
|
||||
+@item -Wno-poison-system-directories
|
||||
+@opindex Wno-poison-system-directories
|
||||
+Do not warn for @option{-I} or @option{-L} options using system
|
||||
+directories such as @file{/usr/include} when cross compiling. This
|
||||
+option is intended for use in chroot environments when such
|
||||
+directories contain the correct headers and libraries for the target
|
||||
+system rather than the host.
|
||||
+
|
||||
@item -Wfloat-equal
|
||||
@opindex Wfloat-equal
|
||||
@opindex Wno-float-equal
|
||||
diff --git a/gcc/gcc.c b/gcc/gcc.c
|
||||
index a716f708259..02b3cd39fc2 100644
|
||||
--- a/gcc/gcc.c
|
||||
+++ b/gcc/gcc.c
|
||||
@@ -1037,6 +1037,8 @@ proper position among the other output files. */
|
||||
"%{fuse-ld=*:-fuse-ld=%*} " LINK_COMPRESS_DEBUG_SPEC \
|
||||
"%X %{o*} %{e*} %{N} %{n} %{r}\
|
||||
%{s} %{t} %{u*} %{z} %{Z} %{!nostdlib:%{!nostartfiles:%S}} \
|
||||
+ %{Wno-poison-system-directories:--no-poison-system-directories} \
|
||||
+ %{Werror=poison-system-directories:--error-poison-system-directories} \
|
||||
%{static|no-pie|static-pie:} %{L*} %(mfwrap) %(link_libgcc) " \
|
||||
VTABLE_VERIFICATION_SPEC " " SANITIZER_EARLY_SPEC " %o " CHKP_SPEC " \
|
||||
%{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*:%*} 1):\
|
||||
diff --git a/gcc/incpath.c b/gcc/incpath.c
|
||||
index b11c6a57939..e3b7a21966f 100644
|
||||
--- a/gcc/incpath.c
|
||||
+++ b/gcc/incpath.c
|
||||
@@ -26,6 +26,7 @@
|
||||
#include "intl.h"
|
||||
#include "incpath.h"
|
||||
#include "cppdefault.h"
|
||||
+#include "diagnostic-core.h"
|
||||
|
||||
/* Microsoft Windows does not natively support inodes.
|
||||
VMS has non-numeric inodes. */
|
||||
@@ -393,6 +394,26 @@ merge_include_chains (const char *sysroot, cpp_reader *pfile, int verbose)
|
||||
}
|
||||
fprintf (stderr, _("End of search list.\n"));
|
||||
}
|
||||
+
|
||||
+#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES
|
||||
+ if (flag_poison_system_directories)
|
||||
+ {
|
||||
+ struct cpp_dir *p;
|
||||
+
|
||||
+ for (p = heads[INC_QUOTE]; p; p = p->next)
|
||||
+ {
|
||||
+ if ((!strncmp (p->name, "/usr/include", 12))
|
||||
+ || (!strncmp (p->name, "/usr/local/include", 18))
|
||||
+ || (!strncmp (p->name, "/usr/X11R6/include", 18))
|
||||
+ || (!strncmp (p->name, "/sw/include", 11))
|
||||
+ || (!strncmp (p->name, "/opt/include", 12)))
|
||||
+ warning (OPT_Wpoison_system_directories,
|
||||
+ "include location \"%s\" is unsafe for "
|
||||
+ "cross-compilation",
|
||||
+ p->name);
|
||||
+ }
|
||||
+ }
|
||||
+#endif
|
||||
}
|
||||
|
||||
/* Use given -I paths for #include "..." but not #include <...>, and
|
||||
--
|
||||
2.17.0
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
From b693804c8dba92fea7beee98f0aa520853a0532b Mon Sep 17 00:00:00 2001
|
||||
From: Szabolcs Nagy <nsz@port70.net>
|
||||
Date: Thu, 22 Dec 2016 11:22:28 +0000
|
||||
Subject: [PATCH 08/12] s390x muslldso
|
||||
|
||||
---
|
||||
gcc/config/s390/linux.h | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/gcc/config/s390/linux.h b/gcc/config/s390/linux.h
|
||||
index 525c17c2c9f..2d4f4a0654e 100644
|
||||
--- a/gcc/config/s390/linux.h
|
||||
+++ b/gcc/config/s390/linux.h
|
||||
@@ -76,6 +76,9 @@ along with GCC; see the file COPYING3. If not see
|
||||
#define GLIBC_DYNAMIC_LINKER32 "/lib/ld.so.1"
|
||||
#define GLIBC_DYNAMIC_LINKER64 "/lib/ld64.so.1"
|
||||
|
||||
+#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-s390.so.1"
|
||||
+#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-s390x.so.1"
|
||||
+
|
||||
#undef LINK_SPEC
|
||||
#define LINK_SPEC \
|
||||
"%{m31:-m elf_s390}%{m64:-m elf64_s390} \
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -0,0 +1,76 @@
|
||||
From 47467f3ab0fb2f2fcede81060fe8bb339d0909eb Mon Sep 17 00:00:00 2001
|
||||
From: Szabolcs Nagy <nsz@port70.net>
|
||||
Date: Wed, 28 Feb 2018 00:54:05 +0000
|
||||
Subject: [PATCH 10/12] ldbl128 config
|
||||
|
||||
---
|
||||
gcc/configure | 13 +++++++++++++
|
||||
gcc/configure.ac | 16 ++++++++++++++--
|
||||
2 files changed, 27 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/gcc/configure b/gcc/configure
|
||||
index 6121e163259..07ff8597d48 100755
|
||||
--- a/gcc/configure
|
||||
+++ b/gcc/configure
|
||||
@@ -29309,6 +29309,15 @@ if test "${with_long_double_128+set}" = set; then :
|
||||
withval=$with_long_double_128; gcc_cv_target_ldbl128="$with_long_double_128"
|
||||
else
|
||||
|
||||
+ case "$target" in
|
||||
+ s390*-*-linux-musl*)
|
||||
+ gcc_cv_target_ldbl128=yes
|
||||
+ ;;
|
||||
+ powerpc*-*-linux-musl*)
|
||||
+ gcc_cv_target_ldbl128=no
|
||||
+ ;;
|
||||
+ *)
|
||||
+
|
||||
if test $glibc_version_major -gt 2 \
|
||||
|| ( test $glibc_version_major -eq 2 && test $glibc_version_minor -ge 4 ); then :
|
||||
gcc_cv_target_ldbl128=yes
|
||||
@@ -29320,6 +29329,10 @@ else
|
||||
&& gcc_cv_target_ldbl128=yes
|
||||
|
||||
fi
|
||||
+
|
||||
+ ;;
|
||||
+ esac
|
||||
+
|
||||
fi
|
||||
|
||||
;;
|
||||
diff --git a/gcc/configure.ac b/gcc/configure.ac
|
||||
index b066cc609e1..6c15ed898c0 100644
|
||||
--- a/gcc/configure.ac
|
||||
+++ b/gcc/configure.ac
|
||||
@@ -5971,13 +5971,25 @@ case "$target" in
|
||||
AC_ARG_WITH(long-double-128,
|
||||
[AS_HELP_STRING([--with-long-double-128],
|
||||
[use 128-bit long double by default])],
|
||||
- gcc_cv_target_ldbl128="$with_long_double_128",
|
||||
+ gcc_cv_target_ldbl128="$with_long_double_128", [
|
||||
+ case "$target" in
|
||||
+ s390*-*-linux-musl*)
|
||||
+ gcc_cv_target_ldbl128=yes
|
||||
+ ;;
|
||||
+ powerpc*-*-linux-musl*)
|
||||
+ gcc_cv_target_ldbl128=no
|
||||
+ ;;
|
||||
+ *)]
|
||||
[GCC_GLIBC_VERSION_GTE_IFELSE([2], [4], [gcc_cv_target_ldbl128=yes], [
|
||||
[gcc_cv_target_ldbl128=no
|
||||
grep '^[ ]*#[ ]*define[ ][ ]*__LONG_DOUBLE_MATH_OPTIONAL' \
|
||||
$target_header_dir/bits/wordsize.h > /dev/null 2>&1 \
|
||||
&& gcc_cv_target_ldbl128=yes
|
||||
- ]])])
|
||||
+ ]])]
|
||||
+ [
|
||||
+ ;;
|
||||
+ esac
|
||||
+ ])
|
||||
;;
|
||||
esac
|
||||
if test x$gcc_cv_target_ldbl128 = xyes; then
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -0,0 +1,138 @@
|
||||
From a4aa319f7c19e564dced3daeb7222c9315af936c Mon Sep 17 00:00:00 2001
|
||||
From: Szabolcs Nagy <nsz@port70.net>
|
||||
Date: Sat, 18 Aug 2018 23:58:45 +0000
|
||||
Subject: [PATCH 12/12] static-pie
|
||||
|
||||
in gcc-8 -static means static non-pie, even if -pie or -static-pie
|
||||
are specified, -static-pie can be used to build static pie.
|
||||
|
||||
in musl toolchains -static -pie always meant static pie, so this
|
||||
patch fixes the link specs accordingly, the new -static-pie is just
|
||||
an alias to -static -pie.
|
||||
---
|
||||
gcc/common.opt | 4 ++--
|
||||
gcc/config/gnu-user.h | 12 +++++-------
|
||||
gcc/config/rs6000/sysv4.h | 11 +++++------
|
||||
gcc/gcc.c | 6 +++---
|
||||
4 files changed, 15 insertions(+), 18 deletions(-)
|
||||
|
||||
diff --git a/gcc/common.opt b/gcc/common.opt
|
||||
index b52ef0b38c8..0ce5857e01d 100644
|
||||
--- a/gcc/common.opt
|
||||
+++ b/gcc/common.opt
|
||||
@@ -3197,11 +3197,11 @@ Driver
|
||||
|
||||
no-pie
|
||||
Driver RejectNegative Negative(shared)
|
||||
-Don't create a dynamically linked position independent executable.
|
||||
+Don't create a position independent executable.
|
||||
|
||||
pie
|
||||
Driver RejectNegative Negative(no-pie)
|
||||
-Create a dynamically linked position independent executable.
|
||||
+Create a position independent executable.
|
||||
|
||||
static-pie
|
||||
Driver RejectNegative Negative(pie)
|
||||
diff --git a/gcc/config/gnu-user.h b/gcc/config/gnu-user.h
|
||||
index 8620de3e42d..235328a2642 100644
|
||||
--- a/gcc/config/gnu-user.h
|
||||
+++ b/gcc/config/gnu-user.h
|
||||
@@ -52,13 +52,12 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
#define GNU_USER_TARGET_STARTFILE_SPEC \
|
||||
"%{shared:; \
|
||||
pg|p|profile:%{static-pie:grcrt1.o%s;:gcrt1.o%s}; \
|
||||
- static:crt1.o%s; \
|
||||
- static-pie:rcrt1.o%s; \
|
||||
+ static|static-pie:%{" PIE_SPEC ":rcrt1.o%s;:crt1.o%s}; \
|
||||
" PIE_SPEC ":Scrt1.o%s; \
|
||||
:crt1.o%s} \
|
||||
crti.o%s \
|
||||
- %{static:crtbeginT.o%s; \
|
||||
- shared|static-pie|" PIE_SPEC ":crtbeginS.o%s; \
|
||||
+ %{shared|" PIE_SPEC ":crtbeginS.o%s; \
|
||||
+ static:crtbeginT.o%s; \
|
||||
:crtbegin.o%s} \
|
||||
%{fvtable-verify=none:%s; \
|
||||
fvtable-verify=preinit:vtv_start_preinit.o%s; \
|
||||
@@ -92,8 +91,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
"%{fvtable-verify=none:%s; \
|
||||
fvtable-verify=preinit:vtv_end_preinit.o%s; \
|
||||
fvtable-verify=std:vtv_end.o%s} \
|
||||
- %{static:crtend.o%s; \
|
||||
- shared|static-pie|" PIE_SPEC ":crtendS.o%s; \
|
||||
+ %{shared|" PIE_SPEC ":crtendS.o%s; \
|
||||
:crtend.o%s} \
|
||||
crtn.o%s \
|
||||
" CRTOFFLOADEND
|
||||
@@ -133,7 +131,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
#define LIB_SPEC GNU_USER_TARGET_LIB_SPEC
|
||||
|
||||
#if defined(HAVE_LD_EH_FRAME_HDR)
|
||||
-#define LINK_EH_SPEC "%{!static|static-pie:--eh-frame-hdr} "
|
||||
+#define LINK_EH_SPEC "%{!static|" PIE_SPEC ":--eh-frame-hdr} "
|
||||
#endif
|
||||
|
||||
#undef LINK_GCC_C_SEQUENCE_SPEC
|
||||
diff --git a/gcc/config/rs6000/sysv4.h b/gcc/config/rs6000/sysv4.h
|
||||
index bb19d0dcd41..bb2a2324eb0 100644
|
||||
--- a/gcc/config/rs6000/sysv4.h
|
||||
+++ b/gcc/config/rs6000/sysv4.h
|
||||
@@ -763,12 +763,12 @@ ENDIAN_SELECT(" -mbig", " -mlittle", DEFAULT_ASM_ENDIAN)
|
||||
#define STARTFILE_LINUX_SPEC \
|
||||
"%{shared:; \
|
||||
pg|p|profile:gcrt1.o%s; \
|
||||
- static:crt1.o%s; \
|
||||
- static-pie|" PIE_SPEC ":Scrt1.o%s; \
|
||||
+ static|static-pie:%{" PIE_SPEC ":rcrt1.o%s;:crt1.o%s}; \
|
||||
+ " PIE_SPEC ":Scrt1.o%s; \
|
||||
:crt1.o%s} \
|
||||
%{mnewlib:ecrti.o%s;:crti.o%s} \
|
||||
- %{static:crtbeginT.o%s; \
|
||||
- shared|static-pie|" PIE_SPEC ":crtbeginS.o%s; \
|
||||
+ %{shared|" PIE_SPEC ":crtbeginS.o%s; \
|
||||
+ static:crtbeginT.o%s; \
|
||||
:crtbegin.o%s} \
|
||||
%{fvtable-verify=none:%s; \
|
||||
fvtable-verify=preinit:vtv_start_preinit.o%s; \
|
||||
@@ -781,8 +781,7 @@ ENDIAN_SELECT(" -mbig", " -mlittle", DEFAULT_ASM_ENDIAN)
|
||||
"%{fvtable-verify=none:%s; \
|
||||
fvtable-verify=preinit:vtv_end_preinit.o%s; \
|
||||
fvtable-verify=std:vtv_end.o%s} \
|
||||
- %{static:crtend.o%s; \
|
||||
- shared|static-pie|" PIE_SPEC ":crtendS.o%s; \
|
||||
+ %{shared|" PIE_SPEC ":crtendS.o%s; \
|
||||
:crtend.o%s} \
|
||||
%{mnewlib:ecrtn.o%s;:crtn.o%s} \
|
||||
" CRTOFFLOADEND
|
||||
diff --git a/gcc/gcc.c b/gcc/gcc.c
|
||||
index eb1610ba8b0..87560afb03c 100644
|
||||
--- a/gcc/gcc.c
|
||||
+++ b/gcc/gcc.c
|
||||
@@ -900,7 +900,7 @@ proper position among the other output files. */
|
||||
#define NO_FPIE_AND_FPIC_SPEC NO_FPIE_SPEC "|" NO_FPIC_SPEC
|
||||
#define FPIE_OR_FPIC_SPEC NO_FPIE_AND_FPIC_SPEC ":;"
|
||||
#else
|
||||
-#define PIE_SPEC "pie"
|
||||
+#define PIE_SPEC "pie|static-pie"
|
||||
#define FPIE1_SPEC "fpie"
|
||||
#define NO_FPIE1_SPEC FPIE1_SPEC ":;"
|
||||
#define FPIE2_SPEC "fPIE"
|
||||
@@ -924,12 +924,12 @@ proper position among the other output files. */
|
||||
#ifndef LINK_PIE_SPEC
|
||||
#ifdef HAVE_LD_PIE
|
||||
#ifndef LD_PIE_SPEC
|
||||
-#define LD_PIE_SPEC "-pie"
|
||||
+#define LD_PIE_SPEC "-pie %{static|static-pie:--no-dynamic-linker -z text -Bsymbolic}"
|
||||
#endif
|
||||
#else
|
||||
#define LD_PIE_SPEC ""
|
||||
#endif
|
||||
-#define LINK_PIE_SPEC "%{static|shared|r:;" PIE_SPEC ":" LD_PIE_SPEC "} "
|
||||
+#define LINK_PIE_SPEC "%{shared|r:;" PIE_SPEC ":" LD_PIE_SPEC "} "
|
||||
#endif
|
||||
|
||||
#ifndef LINK_BUILDID_SPEC
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
--- ./libgomp/configure.tgt.orig 2018-09-25 13:44:16.654561098 -0400
|
||||
+++ ./libgomp/configure.tgt 2018-09-25 13:44:50.452688100 -0400
|
||||
@@ -10,23 +10,6 @@
|
||||
# XCFLAGS Add extra compile flags to use.
|
||||
# XLDFLAGS Add extra link flags to use.
|
||||
|
||||
-# Optimize TLS usage by avoiding the overhead of dynamic allocation.
|
||||
-if test $gcc_cv_have_tls = yes ; then
|
||||
- case "${target}" in
|
||||
-
|
||||
- *-*-k*bsd*-gnu*)
|
||||
- ;;
|
||||
-
|
||||
- *-*-linux* | *-*-gnu*)
|
||||
- XCFLAGS="${XCFLAGS} -ftls-model=initial-exec"
|
||||
- ;;
|
||||
-
|
||||
- *-*-rtems*)
|
||||
- XCFLAGS="${XCFLAGS} -ftls-model=local-exec"
|
||||
- ;;
|
||||
- esac
|
||||
-fi
|
||||
-
|
||||
# Since we require POSIX threads, assume a POSIX system by default.
|
||||
config_path="posix"
|
||||
File renamed without changes.
File renamed without changes.
Loaded 100 of 2154 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user