Skip to content

Commit d30294e

Browse files
Add a sparc-unknown-none-elf target.
Tested with the Gaisler bcc2 toolchain (both gcc and clang) and the Leon3 simulator.
1 parent d8899c5 commit d30294e

File tree

4 files changed

+31
-0
lines changed

4 files changed

+31
-0
lines changed

compiler/rustc_target/src/spec/mod.rs

+2
Original file line numberDiff line numberDiff line change
@@ -1433,6 +1433,8 @@ supported_targets! {
14331433
("riscv64gc-unknown-linux-gnu", riscv64gc_unknown_linux_gnu),
14341434
("riscv64gc-unknown-linux-musl", riscv64gc_unknown_linux_musl),
14351435

1436+
("sparc-unknown-none-elf", sparc_unknown_none_elf),
1437+
14361438
("loongarch64-unknown-none", loongarch64_unknown_none),
14371439
("loongarch64-unknown-none-softfloat", loongarch64_unknown_none_softfloat),
14381440

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
use crate::abi::Endian;
2+
use crate::spec::{Cc, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetOptions};
3+
4+
pub fn target() -> Target {
5+
let options = TargetOptions {
6+
linker_flavor: LinkerFlavor::Gnu(Cc::Yes, Lld::No),
7+
linker: Some("sparc-elf-gcc".into()),
8+
endian: Endian::Big,
9+
cpu: "v7".into(),
10+
abi: "elf".into(),
11+
max_atomic_width: Some(32),
12+
atomic_cas: true,
13+
panic_strategy: PanicStrategy::Abort,
14+
relocation_model: RelocModel::Static,
15+
no_default_libraries: false,
16+
emit_debug_gdb_scripts: false,
17+
eh_frame_header: false,
18+
..Default::default()
19+
};
20+
Target {
21+
data_layout: "E-m:e-p:32:32-i64:64-f128:64-n32-S64".into(),
22+
llvm_target: "sparc-unknown-none-elf".into(),
23+
pointer_width: 32,
24+
arch: "sparc".into(),
25+
options,
26+
}
27+
}

src/doc/rustc/src/platform-support.md

+1
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,7 @@ target | std | notes
176176
`thumbv8m.base-none-eabi` | * | Bare ARMv8-M Baseline
177177
`thumbv8m.main-none-eabi` | * | Bare ARMv8-M Mainline
178178
`thumbv8m.main-none-eabihf` | * | Bare ARMv8-M Mainline, hardfloat
179+
`sparc-unknown-none-elf` | * | Bare 32-bit SPARC V7+
179180
`wasm32-unknown-emscripten` | ✓ | WebAssembly via Emscripten
180181
`wasm32-unknown-unknown` | ✓ | WebAssembly
181182
`wasm32-wasi` | ✓ | WebAssembly with WASI

src/tools/build-manifest/src/main.rs

+1
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ static TARGETS: &[&str] = &[
127127
"s390x-unknown-linux-gnu",
128128
"sparc64-unknown-linux-gnu",
129129
"sparcv9-sun-solaris",
130+
"sparc-unknown-none-elf",
130131
"thumbv6m-none-eabi",
131132
"thumbv7em-none-eabi",
132133
"thumbv7em-none-eabihf",

0 commit comments

Comments
 (0)