Skip to content

Commit 02efe1e

Browse files
committed
Support sparc-unknown-linux-gnu again
Currently, a patch is needed due to "undefined reference to `__sync_val_compare_and_swap_8'" error (due to max_atomic_width is wrongly set to 64: https://github.com/rust-lang/rust/blob/1.70.0/compiler/rustc_target/src/spec/sparc_unknown_linux_gnu.rs#L8)
1 parent e820504 commit 02efe1e

File tree

5 files changed

+19
-8
lines changed

5 files changed

+19
-8
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,10 @@
2323

2424
| libc | GCC | clang | C++ | test | host |
2525
| ---- | --- | ----- | --- | ---- | ---- |
26-
| glibc [1] | [1] | host [3] | ✓ (libstdc++) | ✓ (qemu) [2] | [1] |
26+
| glibc [1] | [1] | host | ✓ (libstdc++) | ✓ (qemu) [2] | [1] |
2727

2828
[1] See target list below for details<br>
2929
[2] Except for powerpc-unknown-linux-gnuspe, riscv32gc-unknown-linux-gnu, and x86_64-unknown-linux-gnux32<br>
30-
[3] Except for sparc-unknown-linux-gnu<br>
3130

3231
([Dockerfile](docker/linux-gnu.Dockerfile))
3332

@@ -61,6 +60,7 @@
6160
| `riscv64gc-unknown-linux-gnu` | 2.27 | 7.4.0 | x86_64/aarch64 linux (glibc 2.27+) |
6261
| `s390x-unknown-linux-gnu` | 2.27 | 7.4.0 | x86_64/aarch64 linux (glibc 2.27+) |
6362
| `sparc64-unknown-linux-gnu` | 2.27 | 7.4.0 | x86_64 linux (glibc 2.27+) |
63+
| `sparc-unknown-linux-gnu` (tier3) | 2.27 | 7.4.0 | x86_64 linux (glibc 2.27+) |
6464
| `thumbv7neon-unknown-linux-gnueabihf` | 2.27 | 7.4.0 | x86_64/aarch64 linux (glibc 2.27+) |
6565
| `x86_64-unknown-linux-gnu` | host (x86_64 host) / 2.27 (aarch64 host) | host (x86_64 host) / 7.4.0 (aarch64 host) | x86_64/aarch64 linux (glibc 2.27+) |
6666
| `x86_64-unknown-linux-gnux32` | 2.27 | 7.4.0 | x86_64/aarch64 linux (glibc 2.27+) |
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
diff --git a/src/thread/mod.rs b/src/thread/mod.rs
2+
index e4581c2..4ff9d03 100644
3+
--- a/src/thread/mod.rs
4+
+++ b/src/thread/mod.rs
5+
@@ -1099,7 +1099,7 @@ fn exhausted() -> ! {
6+
}
7+
8+
cfg_if::cfg_if! {
9+
- if #[cfg(target_has_atomic = "64")] {
10+
+ if #[cfg(all(target_has_atomic = "64", not(target_arch = "sparc")))] {
11+
use crate::sync::atomic::{AtomicU64, Ordering::Relaxed};
12+
13+
static COUNTER: AtomicU64 = AtomicU64::new(0);

docker/test/test.sh

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -210,11 +210,10 @@ case "${RUST_TARGET}" in
210210
esac
211211
no_cc_bin=""
212212
case "${RUST_TARGET}" in
213-
# TODO(clang,sparc-unknown-linux-gnu): clang: error: unknown argument: '-mv8plus'
214213
# TODO(clang,linux-uclibc): interpreter should be /lib/ld-uClibc.so.0
215214
# TODO(clang,linux-uclibc): qemu: uncaught target signal 11 (Segmentation fault) - core dumped
216215
# TODO(clang,mips-musl-sf): interpreter should be /lib/ld-musl-mips(el)-sf.so.1
217-
sparc-unknown-linux-gnu | mips-unknown-linux-musl | mipsel-unknown-linux-musl | *-linux-uclibc*)
216+
mips-unknown-linux-musl | mipsel-unknown-linux-musl | *-linux-uclibc*)
218217
case "${cc}" in
219218
clang) no_cc_bin=1 ;;
220219
esac
@@ -250,11 +249,10 @@ esac
250249
# Whether or not to build the test.
251250
no_build_test=""
252251
case "${RUST_TARGET}" in
253-
# TODO(sparc-unknown-linux-gnu): undefined reference to `__sync_val_compare_and_swap_8'
254252
# TODO(sparc64-unknown-openbsd):
255253
# /sparc64-unknown-openbsd/bin/sparc64-unknown-openbsd7.0-ld: /sparc64-unknown-openbsd/sparc64-unknown-openbsd/usr/lib/libm.a(s_fmin.o): in function `*_libm_fmin':
256254
# /usr/src/lib/libm/src/s_fmin.c:35: undefined reference to `__isnan'
257-
sparc-unknown-linux-gnu | sparc64-unknown-openbsd) no_build_test=1 ;;
255+
sparc64-unknown-openbsd) no_build_test=1 ;;
258256
esac
259257
# Whether or not to run the test.
260258
no_run_test=""

platform-support-status-tier3.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ See [platform-support-status.md](platform-support-status.md) for Tier 1 & Tier 2
106106
- [ ] riscv64gc-unknown-netbsd
107107
- [x] riscv64gc-unknown-openbsd
108108
- [x] s390x-unknown-linux-musl
109-
- [ ] sparc-unknown-linux-gnu
109+
- [x] sparc-unknown-linux-gnu
110110
- [x] sparc64-unknown-netbsd
111111
- [x] sparc64-unknown-openbsd
112112
- [ ] thumbv4t-none-eabi

tools/target-list-shared.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ linux_gnu_targets=(
3535
riscv32gc-unknown-linux-gnu # tier3
3636
riscv64gc-unknown-linux-gnu
3737
s390x-unknown-linux-gnu
38-
# sparc-unknown-linux-gnu # tier3
38+
sparc-unknown-linux-gnu # tier3
3939
sparc64-unknown-linux-gnu
4040
thumbv7neon-unknown-linux-gnueabihf
4141
x86_64-unknown-linux-gnu

0 commit comments

Comments
 (0)