Skip to content

Commit b22b348

Browse files
committed
Add targets: riscv32{e|em|emc}
- Based on riscv32{i|im|imc} - Set data_layout stack alignment: S32 (bits) - Set llvm_abiname = ilp32e
1 parent 5a4ee43 commit b22b348

File tree

4 files changed

+79
-0
lines changed

4 files changed

+79
-0
lines changed

compiler/rustc_target/src/spec/mod.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1841,6 +1841,10 @@ supported_targets! {
18411841
("riscv32imac-esp-espidf", riscv32imac_esp_espidf),
18421842
("riscv32imafc-esp-espidf", riscv32imafc_esp_espidf),
18431843

1844+
("riscv32e-unknown-none-elf", riscv32e_unknown_none_elf),
1845+
("riscv32em-unknown-none-elf", riscv32em_unknown_none_elf),
1846+
("riscv32emc-unknown-none-elf", riscv32emc_unknown_none_elf),
1847+
18441848
("riscv32imac-unknown-none-elf", riscv32imac_unknown_none_elf),
18451849
("riscv32imafc-unknown-none-elf", riscv32imafc_unknown_none_elf),
18461850
("riscv32imac-unknown-xous-elf", riscv32imac_unknown_xous_elf),
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
use crate::spec::{Cc, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetOptions};
2+
3+
pub fn target() -> Target {
4+
Target {
5+
data_layout: "e-m:e-p:32:32-i64:64-n32-S32".into(),
6+
llvm_target: "riscv32".into(),
7+
pointer_width: 32,
8+
arch: "riscv32".into(),
9+
10+
options: TargetOptions {
11+
linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes),
12+
linker: Some("rust-lld".into()),
13+
cpu: "generic-rv32".into(),
14+
llvm_abiname: "ilp32e".into(),
15+
max_atomic_width: Some(32),
16+
atomic_cas: false,
17+
features: "+e,+forced-atomics".into(),
18+
panic_strategy: PanicStrategy::Abort,
19+
relocation_model: RelocModel::Static,
20+
emit_debug_gdb_scripts: false,
21+
eh_frame_header: false,
22+
..Default::default()
23+
},
24+
}
25+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
use crate::spec::{Cc, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetOptions};
2+
3+
pub fn target() -> Target {
4+
Target {
5+
data_layout: "e-m:e-p:32:32-i64:64-n32-S32".into(),
6+
llvm_target: "riscv32".into(),
7+
pointer_width: 32,
8+
arch: "riscv32".into(),
9+
10+
options: TargetOptions {
11+
linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes),
12+
linker: Some("rust-lld".into()),
13+
cpu: "generic-rv32".into(),
14+
llvm_abiname: "ilp32e".into(),
15+
max_atomic_width: Some(32),
16+
atomic_cas: false,
17+
features: "+e,+m,+forced-atomics".into(),
18+
panic_strategy: PanicStrategy::Abort,
19+
relocation_model: RelocModel::Static,
20+
emit_debug_gdb_scripts: false,
21+
eh_frame_header: false,
22+
..Default::default()
23+
},
24+
}
25+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
use crate::spec::{Cc, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetOptions};
2+
3+
pub fn target() -> Target {
4+
Target {
5+
data_layout: "e-m:e-p:32:32-i64:64-n32-S32".into(),
6+
llvm_target: "riscv32".into(),
7+
pointer_width: 32,
8+
arch: "riscv32".into(),
9+
10+
options: TargetOptions {
11+
linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes),
12+
linker: Some("rust-lld".into()),
13+
cpu: "generic-rv32".into(),
14+
llvm_abiname: "ilp32e".into(),
15+
max_atomic_width: Some(32),
16+
atomic_cas: false,
17+
features: "+e,+m,+c,+forced-atomics".into(),
18+
panic_strategy: PanicStrategy::Abort,
19+
relocation_model: RelocModel::Static,
20+
emit_debug_gdb_scripts: false,
21+
eh_frame_header: false,
22+
..Default::default()
23+
},
24+
}
25+
}

0 commit comments

Comments
 (0)