recipes: devel/rust: Downgraded to version 1.64.0
[dragora.git] / patches / rust / void / 0015-initial-ppcle-port.patch
blobdd6b72e21bcb901fba339e0c883a6883564b1c4d
1 From 2b3b4a11dd75ff43e0f1f12de395d0ce29f8555f Mon Sep 17 00:00:00 2001
2 From: Daniel Kolesa <daniel@octaforge.org>
3 Date: Sat, 3 Jul 2021 21:02:03 +0200
4 Subject: [PATCH 15/15] initial ppcle port
6 ---
7 compiler/rustc_middle/src/ty/layout.rs | 5 ++++-
8 compiler/rustc_target/src/spec/mod.rs | 2 ++
9 .../src/spec/powerpcle_unknown_linux_gnu.rs | 15 +++++++++++++++
10 .../src/spec/powerpcle_unknown_linux_musl.rs | 15 +++++++++++++++
11 src/bootstrap/bootstrap.py | 2 ++
12 .../codegen/abi-main-signature-16bit-c-int.rs | 1 +
13 src/test/codegen/global_asm.rs | 1 +
14 src/test/codegen/global_asm_include.rs | 1 +
15 src/test/codegen/global_asm_x2.rs | 1 +
16 src/test/codegen/repr-transparent-aggregates-1.rs | 1 +
17 src/test/codegen/repr-transparent-aggregates-2.rs | 1 +
18 src/test/codegen/stack-probes.rs | 1 +
19 .../run-make-fulldeps/atomic-lock-free/Makefile | 2 ++
20 src/test/ui/abi/stack-probes-lto.rs | 1 +
21 src/test/ui/abi/stack-probes.rs | 1 +
22 src/test/ui/target-feature/gate.rs | 1 +
23 src/test/ui/target-feature/invalid-attribute.rs | 1 +
24 src/tools/compiletest/src/util.rs | 1 +
25 vendor/cc/src/lib.rs | 1 +
26 vendor/target-lexicon/src/targets.rs | 7 +++++++
27 vendor/tikv-jemallocator/benches/roundtrip.rs | 3 ++-
28 vendor/tikv-jemallocator/src/lib.rs | 3 ++-
29 22 files changed, 64 insertions(+), 3 deletions(-)
30 create mode 100644 compiler/rustc_target/src/spec/powerpcle_unknown_linux_gnu.rs
31 create mode 100644 compiler/rustc_target/src/spec/powerpcle_unknown_linux_musl.rs
33 diff --git a/compiler/rustc_middle/src/ty/layout.rs b/compiler/rustc_middle/src/ty/layout.rs
34 index 3b05e42a5..66420f507 100644
35 --- a/compiler/rustc_middle/src/ty/layout.rs
36 +++ b/compiler/rustc_middle/src/ty/layout.rs
37 @@ -3205,6 +3205,8 @@ impl<'tcx> LayoutCx<'tcx, TyCtxt<'tcx>> {
38 target.os == "linux" && target.arch == "sparc64" && target_env_gnu_like;
39 let linux_powerpc_gnu_like =
40 target.os == "linux" && target.arch == "powerpc" && target_env_gnu_like;
41 + let linux_powerpcle_gnu_like =
42 + target.os == "linux" && target.arch == "powerpcle" && target_env_gnu_like;
43 use SpecAbi::*;
44 let rust_abi = matches!(sig.abi, RustIntrinsic | PlatformIntrinsic | Rust | RustCall);
46 @@ -3311,7 +3313,8 @@ impl<'tcx> LayoutCx<'tcx, TyCtxt<'tcx>> {
47 || (!win_x64_gnu
48 && !linux_s390x_gnu_like
49 && !linux_sparc64_gnu_like
50 - && !linux_powerpc_gnu_like)
51 + && !linux_powerpc_gnu_like
52 + && !linux_powerpcle_gnu_like)
54 arg.mode = PassMode::Ignore;
56 diff --git a/compiler/rustc_target/src/spec/mod.rs b/compiler/rustc_target/src/spec/mod.rs
57 index da0589cdd..2db403913 100644
58 --- a/compiler/rustc_target/src/spec/mod.rs
59 +++ b/compiler/rustc_target/src/spec/mod.rs
60 @@ -831,6 +831,8 @@ supported_targets! {
61 ("powerpc-unknown-linux-gnu", powerpc_unknown_linux_gnu),
62 ("powerpc-unknown-linux-gnuspe", powerpc_unknown_linux_gnuspe),
63 ("powerpc-unknown-linux-musl", powerpc_unknown_linux_musl),
64 + ("powerpcle-unknown-linux-gnu", powerpcle_unknown_linux_gnu),
65 + ("powerpcle-unknown-linux-musl", powerpcle_unknown_linux_musl),
66 ("powerpc64-unknown-linux-gnu", powerpc64_unknown_linux_gnu),
67 ("powerpc64-unknown-linux-musl", powerpc64_unknown_linux_musl),
68 ("powerpc64le-unknown-linux-gnu", powerpc64le_unknown_linux_gnu),
69 diff --git a/compiler/rustc_target/src/spec/powerpcle_unknown_linux_gnu.rs b/compiler/rustc_target/src/spec/powerpcle_unknown_linux_gnu.rs
70 new file mode 100644
71 index 000000000..b7148a2fc
72 --- /dev/null
73 +++ b/compiler/rustc_target/src/spec/powerpcle_unknown_linux_gnu.rs
74 @@ -0,0 +1,15 @@
75 +use crate::spec::{LinkerFlavor, Target, TargetOptions};
77 +pub fn target() -> Target {
78 + let mut base = super::linux_gnu_base::opts();
79 + base.pre_link_args.entry(LinkerFlavor::Gcc).or_default().push("-m32".into());
80 + base.max_atomic_width = Some(32);
82 + Target {
83 + llvm_target: "powerpcle-unknown-linux-gnu".into(),
84 + pointer_width: 32,
85 + data_layout: "e-m:e-p:32:32-i64:64-n32".into(),
86 + arch: "powerpc".into(),
87 + options: TargetOptions { mcount: "_mcount".into(), ..base },
88 + }
90 diff --git a/compiler/rustc_target/src/spec/powerpcle_unknown_linux_musl.rs b/compiler/rustc_target/src/spec/powerpcle_unknown_linux_musl.rs
91 new file mode 100644
92 index 000000000..a826b6e47
93 --- /dev/null
94 +++ b/compiler/rustc_target/src/spec/powerpcle_unknown_linux_musl.rs
95 @@ -0,0 +1,15 @@
96 +use crate::spec::{LinkerFlavor, Target, TargetOptions};
98 +pub fn target() -> Target {
99 + let mut base = super::linux_musl_base::opts();
100 + base.pre_link_args.entry(LinkerFlavor::Gcc).or_default().push("-m32".into());
101 + base.max_atomic_width = Some(32);
103 + Target {
104 + llvm_target: "powerpcle-unknown-linux-musl".into(),
105 + pointer_width: 32,
106 + data_layout: "e-m:e-p:32:32-i64:64-n32".into(),
107 + arch: "powerpc".into(),
108 + options: TargetOptions { mcount: "_mcount".into(), ..base },
111 diff --git a/src/bootstrap/bootstrap.py b/src/bootstrap/bootstrap.py
112 index 3501fd901..a28f456d3 100644
113 --- a/src/bootstrap/bootstrap.py
114 +++ b/src/bootstrap/bootstrap.py
115 @@ -339,9 +339,11 @@ def default_build_triple(verbose):
116 'i786': 'i686',
117 'm68k': 'm68k',
118 'powerpc': 'powerpc',
119 + 'powerpcle': 'powerpcle',
120 'powerpc64': 'powerpc64',
121 'powerpc64le': 'powerpc64le',
122 'ppc': 'powerpc',
123 + 'ppcle': 'powerpcle',
124 'ppc64': 'powerpc64',
125 'ppc64le': 'powerpc64le',
126 'riscv64': 'riscv64gc',
127 diff --git a/src/test/codegen/abi-main-signature-16bit-c-int.rs b/src/test/codegen/abi-main-signature-16bit-c-int.rs
128 index 4ed491dfb..82ec7755d 100644
129 --- a/src/test/codegen/abi-main-signature-16bit-c-int.rs
130 +++ b/src/test/codegen/abi-main-signature-16bit-c-int.rs
131 @@ -9,6 +9,7 @@
132 // ignore-mips
133 // ignore-mips64
134 // ignore-powerpc
135 +// ignore-powerpcle
136 // ignore-powerpc64
137 // ignore-riscv64
138 // ignore-s390x
139 diff --git a/src/test/codegen/global_asm.rs b/src/test/codegen/global_asm.rs
140 index fab84868f..104d93d01 100644
141 --- a/src/test/codegen/global_asm.rs
142 +++ b/src/test/codegen/global_asm.rs
143 @@ -12,6 +12,7 @@
144 // ignore-powerpc64
145 // ignore-powerpc64le
146 // ignore-powerpc
147 +// ignore-powerpcle
148 // ignore-r600
149 // ignore-amdgcn
150 // ignore-sparc
151 diff --git a/src/test/codegen/global_asm_include.rs b/src/test/codegen/global_asm_include.rs
152 index 02ee91645..13f303332 100644
153 --- a/src/test/codegen/global_asm_include.rs
154 +++ b/src/test/codegen/global_asm_include.rs
155 @@ -12,6 +12,7 @@
156 // ignore-powerpc64
157 // ignore-powerpc64le
158 // ignore-powerpc
159 +// ignore-powerpcle
160 // ignore-r600
161 // ignore-amdgcn
162 // ignore-sparc
163 diff --git a/src/test/codegen/global_asm_x2.rs b/src/test/codegen/global_asm_x2.rs
164 index bdcf0ea84..1e2ff8b8d 100644
165 --- a/src/test/codegen/global_asm_x2.rs
166 +++ b/src/test/codegen/global_asm_x2.rs
167 @@ -12,6 +12,7 @@
168 // ignore-powerpc64
169 // ignore-powerpc64le
170 // ignore-powerpc
171 +// ignore-powerpcle
172 // ignore-r600
173 // ignore-amdgcn
174 // ignore-sparc
175 diff --git a/src/test/codegen/repr-transparent-aggregates-1.rs b/src/test/codegen/repr-transparent-aggregates-1.rs
176 index 9d18c5f03..8e69d2afd 100644
177 --- a/src/test/codegen/repr-transparent-aggregates-1.rs
178 +++ b/src/test/codegen/repr-transparent-aggregates-1.rs
179 @@ -6,6 +6,7 @@
180 // ignore-mips
181 // ignore-mips64
182 // ignore-powerpc
183 +// ignore-powerpcle
184 // ignore-powerpc64
185 // ignore-riscv64 see codegen/riscv-abi
186 // ignore-windows
187 diff --git a/src/test/codegen/repr-transparent-aggregates-2.rs b/src/test/codegen/repr-transparent-aggregates-2.rs
188 index b68e8e9eb..97c509b1b 100644
189 --- a/src/test/codegen/repr-transparent-aggregates-2.rs
190 +++ b/src/test/codegen/repr-transparent-aggregates-2.rs
191 @@ -5,6 +5,7 @@
192 // ignore-emscripten
193 // ignore-mips64
194 // ignore-powerpc
195 +// ignore-powerpcle
196 // ignore-powerpc64
197 // ignore-powerpc64le
198 // ignore-riscv64 see codegen/riscv-abi
199 diff --git a/src/test/codegen/stack-probes.rs b/src/test/codegen/stack-probes.rs
200 index 9bd351df3..29073eb56 100644
201 --- a/src/test/codegen/stack-probes.rs
202 +++ b/src/test/codegen/stack-probes.rs
203 @@ -3,6 +3,7 @@
204 // ignore-mips
205 // ignore-mips64
206 // ignore-powerpc
207 +// ignore-powerpcle
208 // ignore-powerpc64
209 // ignore-powerpc64le
210 // ignore-riscv64
211 diff --git a/src/test/run-make-fulldeps/atomic-lock-free/Makefile b/src/test/run-make-fulldeps/atomic-lock-free/Makefile
212 index 9e8b4fabf..402d37a45 100644
213 --- a/src/test/run-make-fulldeps/atomic-lock-free/Makefile
214 +++ b/src/test/run-make-fulldeps/atomic-lock-free/Makefile
215 @@ -36,6 +36,8 @@ ifeq ($(filter powerpc,$(LLVM_COMPONENTS)),powerpc)
216 nm "$(TMPDIR)/libatomic_lock_free.rlib" | $(CGREP) -v __atomic_fetch_add
217 $(RUSTC) --target=powerpc-unknown-linux-gnuspe atomic_lock_free.rs
218 nm "$(TMPDIR)/libatomic_lock_free.rlib" | $(CGREP) -v __atomic_fetch_add
219 + $(RUSTC) --target=powerpcle-unknown-linux-gnu atomic_lock_free.rs
220 + nm "$(TMPDIR)/libatomic_lock_free.rlib" | $(CGREP) -v __atomic_fetch_add
221 $(RUSTC) --target=powerpc64-unknown-linux-gnu atomic_lock_free.rs
222 nm "$(TMPDIR)/libatomic_lock_free.rlib" | $(CGREP) -v __atomic_fetch_add
223 $(RUSTC) --target=powerpc64le-unknown-linux-gnu atomic_lock_free.rs
224 diff --git a/src/test/ui/abi/stack-probes-lto.rs b/src/test/ui/abi/stack-probes-lto.rs
225 index 90df1f3f5..8c6dda8b8 100644
226 --- a/src/test/ui/abi/stack-probes-lto.rs
227 +++ b/src/test/ui/abi/stack-probes-lto.rs
228 @@ -4,6 +4,7 @@
229 // ignore-mips
230 // ignore-mips64
231 // ignore-powerpc
232 +// ignore-powerpcle
233 // ignore-s390x
234 // ignore-sparc
235 // ignore-sparc64
236 diff --git a/src/test/ui/abi/stack-probes.rs b/src/test/ui/abi/stack-probes.rs
237 index e998dd0f8..9472e5387 100644
238 --- a/src/test/ui/abi/stack-probes.rs
239 +++ b/src/test/ui/abi/stack-probes.rs
240 @@ -4,6 +4,7 @@
241 // ignore-mips
242 // ignore-mips64
243 // ignore-powerpc
244 +// ignore-powerpcle
245 // ignore-s390x
246 // ignore-sparc
247 // ignore-sparc64
248 diff --git a/src/test/ui/target-feature/gate.rs b/src/test/ui/target-feature/gate.rs
249 index 2382c98f8..e6fe855d7 100644
250 --- a/src/test/ui/target-feature/gate.rs
251 +++ b/src/test/ui/target-feature/gate.rs
252 @@ -5,6 +5,7 @@
253 // ignore-mips
254 // ignore-mips64
255 // ignore-powerpc
256 +// ignore-powerpcle
257 // ignore-powerpc64
258 // ignore-powerpc64le
259 // ignore-riscv64
260 diff --git a/src/test/ui/target-feature/invalid-attribute.rs b/src/test/ui/target-feature/invalid-attribute.rs
261 index ad1b6e96b..122d59a57 100644
262 --- a/src/test/ui/target-feature/invalid-attribute.rs
263 +++ b/src/test/ui/target-feature/invalid-attribute.rs
264 @@ -5,6 +5,7 @@
265 // ignore-mips
266 // ignore-mips64
267 // ignore-powerpc
268 +// ignore-powerpcle
269 // ignore-powerpc64
270 // ignore-powerpc64le
271 // ignore-riscv64
272 diff --git a/src/tools/compiletest/src/util.rs b/src/tools/compiletest/src/util.rs
273 index 215af347f..a1c7e4c6a 100644
274 --- a/src/tools/compiletest/src/util.rs
275 +++ b/src/tools/compiletest/src/util.rs
276 @@ -71,6 +71,7 @@ const ARCH_TABLE: &[(&str, &str)] = &[
277 ("msp430", "msp430"),
278 ("nvptx64", "nvptx64"),
279 ("powerpc", "powerpc"),
280 + ("powerpcle", "powerpc"),
281 ("powerpc64", "powerpc64"),
282 ("powerpc64le", "powerpc64"),
283 ("riscv64gc", "riscv64"),
284 diff --git a/vendor/cc/src/lib.rs b/vendor/cc/src/lib.rs
285 index e3a2b98b0..0236729fd 100644
286 --- a/vendor/cc/src/lib.rs
287 +++ b/vendor/cc/src/lib.rs
288 @@ -2594,6 +2594,7 @@ impl Build {
289 "powerpc-unknown-linux-gnu" => Some("powerpc-linux-gnu"),
290 "powerpc-unknown-linux-gnuspe" => Some("powerpc-linux-gnuspe"),
291 "powerpc-unknown-netbsd" => Some("powerpc--netbsd"),
292 + "powerpcle-unknown-linux-gnu" => Some("powerpcle-linux-gnu"),
293 "powerpc64-unknown-linux-gnu" => Some("powerpc-linux-gnu"),
294 "powerpc64le-unknown-linux-gnu" => Some("powerpc64le-linux-gnu"),
295 "riscv32i-unknown-none-elf" => self.find_working_gnu_prefix(&[
296 diff --git a/vendor/target-lexicon/src/targets.rs b/vendor/target-lexicon/src/targets.rs
297 index 22cc95cc3..46167e34e 100644
298 --- a/vendor/target-lexicon/src/targets.rs
299 +++ b/vendor/target-lexicon/src/targets.rs
300 @@ -29,6 +29,7 @@ pub enum Architecture {
301 Msp430,
302 Nvptx64,
303 Powerpc,
304 + Powerpcle,
305 Powerpc64,
306 Powerpc64le,
307 Riscv32(Riscv32Architecture),
308 @@ -533,6 +534,7 @@ impl Architecture {
309 | Mips64(Mips64Architecture::Mipsisa64r6el)
310 | Msp430
311 | Nvptx64
312 + | Powerpcle
313 | Powerpc64le
314 | Riscv32(_)
315 | Riscv64(_)
316 @@ -574,6 +576,7 @@ impl Architecture {
317 | M68k
318 | Mips32(_)
319 | Powerpc
320 + | Powerpcle
321 | XTensa => Ok(PointerWidth::U32),
322 AmdGcn
323 | Bpfeb
324 @@ -763,6 +766,7 @@ impl fmt::Display for Architecture {
325 Msp430 => f.write_str("msp430"),
326 Nvptx64 => f.write_str("nvptx64"),
327 Powerpc => f.write_str("powerpc"),
328 + Powerpcle => f.write_str("powerpcle"),
329 Powerpc64 => f.write_str("powerpc64"),
330 Powerpc64le => f.write_str("powerpc64le"),
331 Riscv32(riscv32) => riscv32.fmt(f),
332 @@ -943,6 +947,7 @@ impl FromStr for Architecture {
333 "msp430" => Msp430,
334 "nvptx64" => Nvptx64,
335 "powerpc" => Powerpc,
336 + "powerpcle" => Powerpcle,
337 "powerpc64" => Powerpc64,
338 "powerpc64le" => Powerpc64le,
339 "s390x" => S390x,
340 @@ -1445,6 +1450,8 @@ mod tests {
341 "powerpc-unknown-openbsd",
342 "powerpc-wrs-vxworks",
343 "powerpc-wrs-vxworks-spe",
344 + "powerpcle-unknown-linux-gnu",
345 + "powerpcle-unknown-linux-musl",
346 "powerpc64-unknown-freebsd",
347 "powerpc64-unknown-linux-gnu",
348 "powerpc64-unknown-linux-musl",
349 diff --git a/vendor/tikv-jemallocator/benches/roundtrip.rs b/vendor/tikv-jemallocator/benches/roundtrip.rs
350 index 767abe8d4..704bf955a 100644
351 --- a/vendor/tikv-jemallocator/benches/roundtrip.rs
352 +++ b/vendor/tikv-jemallocator/benches/roundtrip.rs
353 @@ -22,7 +22,8 @@ static A: Jemalloc = Jemalloc;
354 target_arch = "arm",
355 target_arch = "mips",
356 target_arch = "mipsel",
357 - target_arch = "powerpc"
358 + target_arch = "powerpc",
359 + target_arch = "powerpcle",
360 )))]
361 const MIN_ALIGN: usize = 8;
362 #[cfg(all(any(
363 diff --git a/vendor/tikv-jemallocator/src/lib.rs b/vendor/tikv-jemallocator/src/lib.rs
364 index 4a9397331..4cf47c05d 100644
365 --- a/vendor/tikv-jemallocator/src/lib.rs
366 +++ b/vendor/tikv-jemallocator/src/lib.rs
367 @@ -46,7 +46,8 @@ use libc::{c_int, c_void};
368 target_arch = "arm",
369 target_arch = "mips",
370 target_arch = "mipsel",
371 - target_arch = "powerpc"
372 + target_arch = "powerpc",
373 + target_arch = "powerpcle",
374 )))]
375 const ALIGNOF_MAX_ALIGN_T: usize = 8;
376 #[cfg(all(any(
378 2.37.2