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

4 files changed

Lines changed: 79 additions & 0 deletions

File tree

‎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+
usecrate::spec::{Cc,LinkerFlavor,Lld,PanicStrategy,RelocModel,Target,TargetOptions};
2+
3+
pubfntarget() -> 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+
usecrate::spec::{Cc,LinkerFlavor,Lld,PanicStrategy,RelocModel,Target,TargetOptions};
2+
3+
pubfntarget() -> 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+
usecrate::spec::{Cc,LinkerFlavor,Lld,PanicStrategy,RelocModel,Target,TargetOptions};
2+
3+
pubfntarget() -> 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)