Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit a6a6fe2

Browse files
committedMay 9, 2025·
[SOL] Create sbpfv4 target for ABIv2
1 parent 79ae6ff commit a6a6fe2

File tree

11 files changed

+24
-10
lines changed

11 files changed

+24
-10
lines changed
 

‎build.sh

Lines changed: 1 addition & 1 deletion
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

Lines changed: 6 additions & 7 deletions
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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1913,6 +1913,7 @@ supported_targets! {
19131913
("sbpfv1-solana-solana", sbpfv1_solana_solana),
19141914
("sbpfv2-solana-solana", sbpfv2_solana_solana),
19151915
("sbpfv3-solana-solana", sbpfv3_solana_solana),
1916+
("sbpfv4-solana-solana", sbpfv4_solana_solana),
19161917

19171918

19181919
("armv6k-nintendo-3ds", armv6k_nintendo_3ds),
Lines changed: 6 additions & 0 deletions
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

Lines changed: 1 addition & 0 deletions
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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ const STAGE0_MISSING_TARGETS: &[&str] = &[
4040
"sbpfv1-solana-solana",
4141
"sbpfv2-solana-solana",
4242
"sbpfv3-solana-solana",
43+
"sbpfv4-solana-solana",
4344
];
4445

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

‎src/bootstrap/src/utils/cc_detect.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,8 @@ fn default_compiler(
234234
| "sbpfv0-solana-solana"
235235
| "sbpfv1-solana-solana"
236236
| "sbpfv2-solana-solana"
237-
| "sbpfv3-solana-solana" => {
237+
| "sbpfv3-solana-solana"
238+
| "sbpfv4-solana-solana" => {
238239
Some(build.llvm_bin(target).join(compiler.clang()))
239240
}
240241

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -374,6 +374,7 @@ target | std | host | notes
374374
`sbpfv1-solana-solana` | ✓ | | SBPF v1
375375
`sbpfv2-solana-solana` | ✓ | | SBPF v2
376376
`sbpfv3-solana-solana` | ✓ | | SBPF v3
377+
`sbpfv4-solana-solana` | ✓ | | SBPF v3
377378
`sparc-unknown-linux-gnu` | ✓ | | 32-bit SPARC Linux
378379
[`sparc-unknown-none-elf`](./platform-support/sparc-unknown-none-elf.md) | * | | Bare 32-bit SPARC V7+
379380
[`sparc64-unknown-netbsd`](platform-support/netbsd.md) | ✓ | ✓ | NetBSD/sparc64

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@ static TARGETS: &[&str] = &[
151151
"sbpfv1-solana-solana",
152152
"sbpfv2-solana-solana",
153153
"sbpfv3-solana-solana",
154+
"sbpfv4-solana-solana",
154155
"sparc64-unknown-linux-gnu",
155156
"sparcv9-sun-solaris",
156157
"sparc-unknown-none-elf",

‎tests/assembly/targets/targets-elf.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -684,6 +684,9 @@
684684
//@ revisions: sbpfv3_solana_solana
685685
//@ [sbpfv3_solana_solana] compile-flags: --target sbpfv3-solana-solana
686686
//@ [sbpfv3_solana_solana] needs-llvm-components: sbf
687+
//@ revisions: sbpfv4_solana_solana
688+
//@ [sbpfv4_solana_solana] compile-flags: --target sbpfv4-solana-solana
689+
//@ [sbpfv4_solana_solana] needs-llvm-components: sbf
687690

688691
// Sanity-check that each target can produce assembly code.
689692

0 commit comments

Comments
 (0)
Please sign in to comment.