Skip to content

Commit bee3c79

Browse files
committed
[SOL] Create sbpfv4 target for ABIv2
1 parent 7d0f408 commit bee3c79

File tree

11 files changed

+24
-10
lines changed

11 files changed

+24
-10
lines changed

build.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,4 @@ esac
2424
if [ "$1" == "--llvm" ]; then
2525
rm -f build/${HOST_TRIPLE}/llvm/llvm-finished-building;
2626
fi
27-
./x.py build --stage 1 --target ${HOST_TRIPLE},sbf-solana-solana,sbpf-solana-solana,sbpfv1-solana-solana,sbpfv2-solana-solana,sbpfv3-solana-solana
27+
./x.py build --stage 1 --target ${HOST_TRIPLE},sbf-solana-solana,sbpf-solana-solana,sbpfv1-solana-solana,sbpfv2-solana-solana,sbpfv3-solana-solana,sbpfv4-solana-solana

compiler/rustc_target/src/spec/base/sbf_base.rs

+6-7
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ pub(crate) fn opts(version: &'static str) -> TargetOptions {
9696
linker_args.as_slice(),
9797
);
9898

99-
let linker_script = if version == "v3" {
99+
let linker_script = if version == "v3" || version == "v4" {
100100
V3_LINKER_SCRIPT
101101
} else {
102102
V0_LINKER_SCRIPT
@@ -107,12 +107,11 @@ pub(crate) fn opts(version: &'static str) -> TargetOptions {
107107
version
108108
};
109109

110-
let features = if version == "v3" {
111-
"+static-syscalls"
112-
} else if version == "v0" {
113-
"+store-imm,+jmp-ext"
114-
} else {
115-
""
110+
let features = match version {
111+
"v4" => "+static-syscalls,+abi-v2",
112+
"v3" => "+static-syscalls",
113+
"v0" => "+store-imm,+jmp-ext",
114+
_ => ""
116115
};
117116

118117
TargetOptions {

compiler/rustc_target/src/spec/mod.rs

+1
Original file line numberDiff line numberDiff line change
@@ -1912,6 +1912,7 @@ supported_targets! {
19121912
("sbpfv1-solana-solana", sbpfv1_solana_solana),
19131913
("sbpfv2-solana-solana", sbpfv2_solana_solana),
19141914
("sbpfv3-solana-solana", sbpfv3_solana_solana),
1915+
("sbpfv4-solana-solana", sbpfv4_solana_solana),
19151916

19161917

19171918
("armv6k-nintendo-3ds", armv6k_nintendo_3ds),
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
use crate::spec::Target;
2+
use crate::spec::base::sbf_base;
3+
4+
pub(crate) fn target() -> Target {
5+
sbf_base::sbf_target("v4")
6+
}

compiler/rustc_target/src/target_features.rs

+1
Original file line numberDiff line numberDiff line change
@@ -487,6 +487,7 @@ const SBF_FEATURES: &[(&str, Stability, ImpliedFeatures)] = &[
487487
("alu32", Unstable(sym::sbf_target_feature), &[]),
488488
("static-syscalls", Stable, &[]),
489489
("dynamic-frames", Stable, &[]),
490+
("abi-v2", Stable, &[]),
490491
];
491492

492493
const CSKY_FEATURES: &[(&str, Stability, ImpliedFeatures)] = &[

src/bootstrap/src/core/sanity.rs

+1
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ const STAGE0_MISSING_TARGETS: &[&str] = &[
3939
"sbpfv1-solana-solana",
4040
"sbpfv2-solana-solana",
4141
"sbpfv3-solana-solana",
42+
"sbpfv4-solana-solana",
4243
];
4344

4445
/// Minimum version threshold for libstdc++ required when using prebuilt LLVM

src/bootstrap/src/utils/cc_detect.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,8 @@ fn default_compiler(
233233
| "sbpf-solana-solana"
234234
| "sbpfv1-solana-solana"
235235
| "sbpfv2-solana-solana"
236-
| "sbpfv3-solana-solana" => {
236+
| "sbpfv3-solana-solana"
237+
| "sbpfv4-solana-solana" => {
237238
Some(build.llvm_bin(target).join(compiler.clang()))
238239
}
239240

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

+1
Original file line numberDiff line numberDiff line change
@@ -373,6 +373,7 @@ target | std | host | notes
373373
`sbpfv1-solana-solana` | ✓ | | SBPF v1
374374
`sbpfv2-solana-solana` | ✓ | | SBPF v2
375375
`sbpfv3-solana-solana` | ✓ | | SBPF v3
376+
`sbpfv4-solana-solana` | ✓ | | SBPF v3
376377
`sparc-unknown-linux-gnu` | ✓ | | 32-bit SPARC Linux
377378
[`sparc-unknown-none-elf`](./platform-support/sparc-unknown-none-elf.md) | * | | Bare 32-bit SPARC V7+
378379
[`sparc64-unknown-netbsd`](platform-support/netbsd.md) | ✓ | ✓ | NetBSD/sparc64

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

+1
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ static TARGETS: &[&str] = &[
150150
"sbpfv1-solana-solana",
151151
"sbpfv2-solana-solana",
152152
"sbpfv3-solana-solana",
153+
"sbpfv4-solana-solana",
153154
"sparc64-unknown-linux-gnu",
154155
"sparcv9-sun-solaris",
155156
"sparc-unknown-none-elf",

tests/assembly/targets/targets-elf.rs

+3
Original file line numberDiff line numberDiff line change
@@ -681,6 +681,9 @@
681681
//@ revisions: sbpfv3_solana_solana
682682
//@ [sbpfv3_solana_solana] compile-flags: --target sbpfv3-solana-solana
683683
//@ [sbpfv3_solana_solana] needs-llvm-components: sbf
684+
//@ revisions: sbpfv4_solana_solana
685+
//@ [sbpfv4_solana_solana] compile-flags: --target sbpfv4-solana-solana
686+
//@ [sbpfv4_solana_solana] needs-llvm-components: sbf
684687

685688
// Sanity-check that each target can produce assembly code.
686689

0 commit comments

Comments
 (0)