From ea4c1604cf9c3731ae897b013595505ec1dca06b Mon Sep 17 00:00:00 2001 From: nhtyy <n@push0.dev> Date: Thu, 13 Mar 2025 11:03:56 -0700 Subject: [PATCH 1/7] feat: succinct-zkvm target --- compiler/rustc_target/src/spec/mod.rs | 1 + .../targets/riscv32im_succinct_zkvm_elf.rs | 42 +++++++++++++++++++ src/bootstrap/src/core/sanity.rs | 1 + src/tools/build-manifest/src/main.rs | 1 + tests/assembly/targets/targets-elf.rs | 3 ++ 5 files changed, 48 insertions(+) create mode 100644 compiler/rustc_target/src/spec/targets/riscv32im_succinct_zkvm_elf.rs diff --git a/compiler/rustc_target/src/spec/mod.rs b/compiler/rustc_target/src/spec/mod.rs index 1887134c5757d..5bedab81aef99 100644 --- a/compiler/rustc_target/src/spec/mod.rs +++ b/compiler/rustc_target/src/spec/mod.rs @@ -1954,6 +1954,7 @@ supported_targets! { ("riscv32i-unknown-none-elf", riscv32i_unknown_none_elf), ("riscv32im-risc0-zkvm-elf", riscv32im_risc0_zkvm_elf), + ("riscv32im-succinct-zkvm-elf", riscv32im_succinct_zkvm_elf), ("riscv32im-unknown-none-elf", riscv32im_unknown_none_elf), ("riscv32ima-unknown-none-elf", riscv32ima_unknown_none_elf), ("riscv32imc-unknown-none-elf", riscv32imc_unknown_none_elf), diff --git a/compiler/rustc_target/src/spec/targets/riscv32im_succinct_zkvm_elf.rs b/compiler/rustc_target/src/spec/targets/riscv32im_succinct_zkvm_elf.rs new file mode 100644 index 0000000000000..db1a61c69688a --- /dev/null +++ b/compiler/rustc_target/src/spec/targets/riscv32im_succinct_zkvm_elf.rs @@ -0,0 +1,42 @@ +use crate::spec::{ + Cc, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetMetadata, TargetOptions, +}; + +pub(crate) fn target() -> Target { + Target { + data_layout: "e-m:e-p:32:32-i64:64-n32-S128".into(), + llvm_target: "riscv32".into(), + metadata: TargetMetadata { + description: Some("Succinct's zero-knowledge Virtual Machine (RV32IM ISA)".into()), + tier: Some(3), + host_tools: Some(false), + std: None, + }, + pointer_width: 32, + arch: "riscv32".into(), + + options: TargetOptions { + os: "succinct-zkvm".into(), + vendor: "succinct".into(), + linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes), + linker: Some("rust-lld".into()), + cpu: "generic-rv32".into(), + + // The zkvm is singlethreaded and all operations are atomic. + // The std-lib is compiled with lowered atomicsa and the default Succinct build tools + // enforce this on programs. + max_atomic_width: Some(64), + atomic_cas: true, + + features: "+m".into(), + llvm_abiname: "ilp32".into(), + executables: true, + panic_strategy: PanicStrategy::Abort, + relocation_model: RelocModel::Static, + emit_debug_gdb_scripts: false, + eh_frame_header: false, + singlethread: true, + ..Default::default() + }, + } +} diff --git a/src/bootstrap/src/core/sanity.rs b/src/bootstrap/src/core/sanity.rs index 583b8e1198ae3..88139b662a8d2 100644 --- a/src/bootstrap/src/core/sanity.rs +++ b/src/bootstrap/src/core/sanity.rs @@ -35,6 +35,7 @@ pub struct Finder { const STAGE0_MISSING_TARGETS: &[&str] = &[ // just a dummy comment so the list doesn't get onelined "wasm32-wali-linux-musl", + "riscv32im-succinct-zkvm-elf" ]; /// Minimum version threshold for libstdc++ required when using prebuilt LLVM diff --git a/src/tools/build-manifest/src/main.rs b/src/tools/build-manifest/src/main.rs index 741d7e3fa16c1..809e73e7152ff 100644 --- a/src/tools/build-manifest/src/main.rs +++ b/src/tools/build-manifest/src/main.rs @@ -138,6 +138,7 @@ static TARGETS: &[&str] = &[ "powerpc64le-unknown-linux-musl", "riscv32i-unknown-none-elf", "riscv32im-risc0-zkvm-elf", + "riscv32im-succinct-zkvm-elf", "riscv32im-unknown-none-elf", "riscv32ima-unknown-none-elf", "riscv32imc-unknown-none-elf", diff --git a/tests/assembly/targets/targets-elf.rs b/tests/assembly/targets/targets-elf.rs index 8f2fef0e9c911..a6821d238e824 100644 --- a/tests/assembly/targets/targets-elf.rs +++ b/tests/assembly/targets/targets-elf.rs @@ -421,6 +421,9 @@ //@ revisions: riscv32im_risc0_zkvm_elf //@ [riscv32im_risc0_zkvm_elf] compile-flags: --target riscv32im-risc0-zkvm-elf //@ [riscv32im_risc0_zkvm_elf] needs-llvm-components: riscv +//@ revisions: riscv32im_succinct_zkvm_elf +//@ [riscv32im_succinct_zkvm_elf] compile-flags: --target riscv32im-succinct-zkvm-elf +//@ [riscv32im_succinct_zkvm_elf] needs-llvm-components: riscv //@ revisions: riscv32im_unknown_none_elf //@ [riscv32im_unknown_none_elf] compile-flags: --target riscv32im-unknown-none-elf //@ [riscv32im_unknown_none_elf] needs-llvm-components: riscv From 900796824ec1c6e7a3fbf405d59720da4b4cf4cd Mon Sep 17 00:00:00 2001 From: nhtyy <n@push0.dev> Date: Thu, 13 Mar 2025 11:19:08 -0700 Subject: [PATCH 2/7] fix(ci): trailing comma fmt --- src/bootstrap/src/core/sanity.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bootstrap/src/core/sanity.rs b/src/bootstrap/src/core/sanity.rs index 88139b662a8d2..aadc96a794cc1 100644 --- a/src/bootstrap/src/core/sanity.rs +++ b/src/bootstrap/src/core/sanity.rs @@ -35,7 +35,7 @@ pub struct Finder { const STAGE0_MISSING_TARGETS: &[&str] = &[ // just a dummy comment so the list doesn't get onelined "wasm32-wali-linux-musl", - "riscv32im-succinct-zkvm-elf" + "riscv32im-succinct-zkvm-elf", ]; /// Minimum version threshold for libstdc++ required when using prebuilt LLVM From 7e69cf756dd885d84c6c20871528a418e7ea9a9a Mon Sep 17 00:00:00 2001 From: nhtyy <n@push0.dev> Date: Thu, 13 Mar 2025 14:07:29 -0700 Subject: [PATCH 3/7] fix: include platform-summary --- src/doc/rustc/src/SUMMARY.md | 1 + .../riscv32im-succinct-zkvm-elf.md | 83 +++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 src/doc/rustc/src/platform-support/riscv32im-succinct-zkvm-elf.md diff --git a/src/doc/rustc/src/SUMMARY.md b/src/doc/rustc/src/SUMMARY.md index 542ee9fffce3a..51d4d137a1096 100644 --- a/src/doc/rustc/src/SUMMARY.md +++ b/src/doc/rustc/src/SUMMARY.md @@ -77,6 +77,7 @@ - [riscv32e\*-unknown-none-elf](platform-support/riscv32e-unknown-none-elf.md) - [riscv32i\*-unknown-none-elf](platform-support/riscv32-unknown-none-elf.md) - [riscv32im-risc0-zkvm-elf](platform-support/riscv32im-risc0-zkvm-elf.md) + - [riscv32im-succinct-zkvm-elf](platform-support/riscv32im-succinct-zkvm-elf.md) - [riscv32imac-unknown-xous-elf](platform-support/riscv32imac-unknown-xous-elf.md) - [riscv64gc-unknown-linux-gnu](platform-support/riscv64gc-unknown-linux-gnu.md) - [riscv64gc-unknown-linux-musl](platform-support/riscv64gc-unknown-linux-musl.md) diff --git a/src/doc/rustc/src/platform-support/riscv32im-succinct-zkvm-elf.md b/src/doc/rustc/src/platform-support/riscv32im-succinct-zkvm-elf.md new file mode 100644 index 0000000000000..5cdab3da22ca8 --- /dev/null +++ b/src/doc/rustc/src/platform-support/riscv32im-succinct-zkvm-elf.md @@ -0,0 +1,83 @@ +# `riscv32im-risc0-zkvm-elf` + +**Tier: 3** + +Succinct's ISA for the SP1 zkVM (Zero Knowledge Virtual Machine). + +## Target maintainers + +- John Guibas, `john@succinct.xyz`, https://github.com/jtguibas +- Nathan Bustamante, `nathan@succinct.xyz`, https://github.com/nhtyy + +## Background + +This target is an execution environment to produce a proof of execution of +a RISC-V ELF binary and any output that the developer of the binary wishes to +display publicly. In order to do this, the target will execute the ELF and +create a cryptographic proof of the "trace" of the programs runtime. + +We have a cargo extension called [cargo-prove] that allow users to generate +project templates, install tools for improved user experience and build binaries. + +## Requirements + +The target only supports cross compilation and no host tools. The target +supports `alloc` with a default allocator and will have support for std soon. + +The target's execution environment is single threaded, non-preemptive, and does +not support any privileged instructions, nor unaligned accesses. At the time of +writing the VM has 192 MB of memory and text/data, heap, and stack need to be +with in the address range `0x400` - `0x0C000000`. The binaries themselves expect +no operating system and can be thought of as running on bare-metal. The target +does not use `#[target_feature(...)]` or `-C target-feature=` values. + +Calling `extern "C"` on the target uses the C calling convention outlined in the +[RISC-V specification]. + +## Building for the zkVM + +Programs for the zkVM could be built by adding it to the `target` list in +`config.toml`. However, we recommend building programs in our starter template +generated by the [cargo-prove] utility and the [sp1-build] crate. This +crate calls `rustc` with `-C "link-arg=-Ttext=` so that it maps the text in the +appropriate location as well as generating variables that represent the ELF and +a unique ID associated with the ELF. + +The starter template provides developers with system calls that are useful +to zero knowledge computing such as writing to +the public output, hashing using sha256, and multiply big integers. + +## Building Rust programs + +Rust does not yet ship pre-compiled artifacts for this target. To compile for +this target, you will either need to build Rust with the target enabled (see +"Building the target" above). We do not recommend using `build-std` as we have +run into issues building core in the past on our starter template. An alternate +solution is to download the risc0 tool chain by running `cargo prove install-toolchain`. + +## Testing + +Note: the target is implemented as a software emulator called the zkVM and there +is no hardware implementation of the target. + +The most practical way to test the target program is to use our starter template +that can be generated by using the `cargo prove new` command. The template +generates a sample "host" and "guest" code. The guest code compiled to the +target (which is RV32IM) whereas the "host" code is compiled to run on the +programmer's machine running either a Linux distribution or macOS. + +The host program is responsible for running the guest binary on the zkVM and retrieving +its public output. + +The target currently does not support running the Rust test suite. + +## Cross-compilation toolchains and C code + +Compatible C code can be built for this target on any compiler that has a RV32IM +target. On clang and ld.lld linker, it can be generated using the +`-march=rv32im`, `-mabi=ilp32` with llvm features flag `features=+m` and llvm +target `riscv32-unknown-none`. + +[RISC-V specification]: https://riscv.org/wp-content/uploads/2015/01/riscv-calling.pdf +[cargo-prove]: https://docs.succinct.xyz/docs/sp1/getting-started/install +[sp1-build]: https://crates.io/crates/sp1-build \ No newline at end of file From 92244b3a7314e293c3eb9a27fd613d3f1556b27a Mon Sep 17 00:00:00 2001 From: nhtyy <n@push0.dev> Date: Thu, 13 Mar 2025 14:58:50 -0700 Subject: [PATCH 4/7] fix: pr suggestions, risc32im-succinct-zkvm-elf -> riscv32im-succinct-elf --- compiler/rustc_target/src/spec/mod.rs | 2 +- ...v32im_succinct_zkvm_elf.rs => riscv32im_succinct_elf.rs} | 2 +- src/bootstrap/src/core/sanity.rs | 2 +- src/doc/rustc/src/SUMMARY.md | 2 +- ...v32im-succinct-zkvm-elf.md => riscv32im-succinct-elf.md} | 2 +- src/tools/build-manifest/src/main.rs | 2 +- tests/assembly/targets/targets-elf.rs | 6 +++--- 7 files changed, 9 insertions(+), 9 deletions(-) rename compiler/rustc_target/src/spec/targets/{riscv32im_succinct_zkvm_elf.rs => riscv32im_succinct_elf.rs} (93%) rename src/doc/rustc/src/platform-support/{riscv32im-succinct-zkvm-elf.md => riscv32im-succinct-elf.md} (99%) diff --git a/compiler/rustc_target/src/spec/mod.rs b/compiler/rustc_target/src/spec/mod.rs index 5bedab81aef99..2c6ff9bdab665 100644 --- a/compiler/rustc_target/src/spec/mod.rs +++ b/compiler/rustc_target/src/spec/mod.rs @@ -1954,7 +1954,7 @@ supported_targets! { ("riscv32i-unknown-none-elf", riscv32i_unknown_none_elf), ("riscv32im-risc0-zkvm-elf", riscv32im_risc0_zkvm_elf), - ("riscv32im-succinct-zkvm-elf", riscv32im_succinct_zkvm_elf), + ("riscv32im-succinct-elf", riscv32im_succinct_elf), ("riscv32im-unknown-none-elf", riscv32im_unknown_none_elf), ("riscv32ima-unknown-none-elf", riscv32ima_unknown_none_elf), ("riscv32imc-unknown-none-elf", riscv32imc_unknown_none_elf), diff --git a/compiler/rustc_target/src/spec/targets/riscv32im_succinct_zkvm_elf.rs b/compiler/rustc_target/src/spec/targets/riscv32im_succinct_elf.rs similarity index 93% rename from compiler/rustc_target/src/spec/targets/riscv32im_succinct_zkvm_elf.rs rename to compiler/rustc_target/src/spec/targets/riscv32im_succinct_elf.rs index db1a61c69688a..03490128a99c6 100644 --- a/compiler/rustc_target/src/spec/targets/riscv32im_succinct_zkvm_elf.rs +++ b/compiler/rustc_target/src/spec/targets/riscv32im_succinct_elf.rs @@ -23,7 +23,7 @@ pub(crate) fn target() -> Target { cpu: "generic-rv32".into(), // The zkvm is singlethreaded and all operations are atomic. - // The std-lib is compiled with lowered atomicsa and the default Succinct build tools + // The std-lib is compiled with lowered atomics and the default Succinct build tools // enforce this on programs. max_atomic_width: Some(64), atomic_cas: true, diff --git a/src/bootstrap/src/core/sanity.rs b/src/bootstrap/src/core/sanity.rs index aadc96a794cc1..822246be2a7b5 100644 --- a/src/bootstrap/src/core/sanity.rs +++ b/src/bootstrap/src/core/sanity.rs @@ -35,7 +35,7 @@ pub struct Finder { const STAGE0_MISSING_TARGETS: &[&str] = &[ // just a dummy comment so the list doesn't get onelined "wasm32-wali-linux-musl", - "riscv32im-succinct-zkvm-elf", + "riscv32im-succinct-elf", ]; /// Minimum version threshold for libstdc++ required when using prebuilt LLVM diff --git a/src/doc/rustc/src/SUMMARY.md b/src/doc/rustc/src/SUMMARY.md index 51d4d137a1096..b7037270d0ad4 100644 --- a/src/doc/rustc/src/SUMMARY.md +++ b/src/doc/rustc/src/SUMMARY.md @@ -77,7 +77,7 @@ - [riscv32e\*-unknown-none-elf](platform-support/riscv32e-unknown-none-elf.md) - [riscv32i\*-unknown-none-elf](platform-support/riscv32-unknown-none-elf.md) - [riscv32im-risc0-zkvm-elf](platform-support/riscv32im-risc0-zkvm-elf.md) - - [riscv32im-succinct-zkvm-elf](platform-support/riscv32im-succinct-zkvm-elf.md) + - [riscv32im-succinct-elf](platform-support/riscv32im-succinct-elf.md) - [riscv32imac-unknown-xous-elf](platform-support/riscv32imac-unknown-xous-elf.md) - [riscv64gc-unknown-linux-gnu](platform-support/riscv64gc-unknown-linux-gnu.md) - [riscv64gc-unknown-linux-musl](platform-support/riscv64gc-unknown-linux-musl.md) diff --git a/src/doc/rustc/src/platform-support/riscv32im-succinct-zkvm-elf.md b/src/doc/rustc/src/platform-support/riscv32im-succinct-elf.md similarity index 99% rename from src/doc/rustc/src/platform-support/riscv32im-succinct-zkvm-elf.md rename to src/doc/rustc/src/platform-support/riscv32im-succinct-elf.md index 5cdab3da22ca8..f120406cc8970 100644 --- a/src/doc/rustc/src/platform-support/riscv32im-succinct-zkvm-elf.md +++ b/src/doc/rustc/src/platform-support/riscv32im-succinct-elf.md @@ -1,4 +1,4 @@ -# `riscv32im-risc0-zkvm-elf` +# `riscv32im-succinct-elf` **Tier: 3** diff --git a/src/tools/build-manifest/src/main.rs b/src/tools/build-manifest/src/main.rs index 809e73e7152ff..b01151e350bf9 100644 --- a/src/tools/build-manifest/src/main.rs +++ b/src/tools/build-manifest/src/main.rs @@ -138,7 +138,7 @@ static TARGETS: &[&str] = &[ "powerpc64le-unknown-linux-musl", "riscv32i-unknown-none-elf", "riscv32im-risc0-zkvm-elf", - "riscv32im-succinct-zkvm-elf", + "riscv32im-succinct-elf", "riscv32im-unknown-none-elf", "riscv32ima-unknown-none-elf", "riscv32imc-unknown-none-elf", diff --git a/tests/assembly/targets/targets-elf.rs b/tests/assembly/targets/targets-elf.rs index a6821d238e824..cb93cf75ffd82 100644 --- a/tests/assembly/targets/targets-elf.rs +++ b/tests/assembly/targets/targets-elf.rs @@ -421,9 +421,9 @@ //@ revisions: riscv32im_risc0_zkvm_elf //@ [riscv32im_risc0_zkvm_elf] compile-flags: --target riscv32im-risc0-zkvm-elf //@ [riscv32im_risc0_zkvm_elf] needs-llvm-components: riscv -//@ revisions: riscv32im_succinct_zkvm_elf -//@ [riscv32im_succinct_zkvm_elf] compile-flags: --target riscv32im-succinct-zkvm-elf -//@ [riscv32im_succinct_zkvm_elf] needs-llvm-components: riscv +//@ revisions: riscv32im_succinct_elf +//@ [riscv32im_succinct_elf] compile-flags: --target riscv32im-succinct-elf +//@ [riscv32im_succinct_elf] needs-llvm-components: riscv //@ revisions: riscv32im_unknown_none_elf //@ [riscv32im_unknown_none_elf] compile-flags: --target riscv32im-unknown-none-elf //@ [riscv32im_unknown_none_elf] needs-llvm-components: riscv From c0f6dfc5bed6fcea62826321173252aa12912fdb Mon Sep 17 00:00:00 2001 From: nhtyy <n@push0.dev> Date: Fri, 14 Mar 2025 10:49:30 -0700 Subject: [PATCH 5/7] fix: tidy ci --- src/doc/rustc/src/platform-support/riscv32im-succinct-elf.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/doc/rustc/src/platform-support/riscv32im-succinct-elf.md b/src/doc/rustc/src/platform-support/riscv32im-succinct-elf.md index f120406cc8970..c5b9c950c14e6 100644 --- a/src/doc/rustc/src/platform-support/riscv32im-succinct-elf.md +++ b/src/doc/rustc/src/platform-support/riscv32im-succinct-elf.md @@ -80,4 +80,4 @@ target `riscv32-unknown-none`. [RISC-V specification]: https://riscv.org/wp-content/uploads/2015/01/riscv-calling.pdf [cargo-prove]: https://docs.succinct.xyz/docs/sp1/getting-started/install -[sp1-build]: https://crates.io/crates/sp1-build \ No newline at end of file +[sp1-build]: https://crates.io/crates/sp1-build From 24e8fee4e97b243fea3abdaefd2bd1d3d71a1c3e Mon Sep 17 00:00:00 2001 From: nhtyy <n@push0.dev> Date: Tue, 18 Mar 2025 14:10:43 -0700 Subject: [PATCH 6/7] fix: ui tests --- tests/ui/check-cfg/exhaustive-names-values.empty_cfg.stderr | 2 +- tests/ui/check-cfg/exhaustive-names-values.feature.stderr | 2 +- tests/ui/check-cfg/exhaustive-names-values.full.stderr | 2 +- tests/ui/check-cfg/well-known-values.stderr | 6 +++--- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/ui/check-cfg/exhaustive-names-values.empty_cfg.stderr b/tests/ui/check-cfg/exhaustive-names-values.empty_cfg.stderr index e7b8f35505761..28597e2ff8ff9 100644 --- a/tests/ui/check-cfg/exhaustive-names-values.empty_cfg.stderr +++ b/tests/ui/check-cfg/exhaustive-names-values.empty_cfg.stderr @@ -14,7 +14,7 @@ warning: unexpected `cfg` condition value: `value` LL | #[cfg(target_vendor = "value")] | ^^^^^^^^^^^^^^^^^^^^^^^ | - = note: expected values for `target_vendor` are: `amd`, `apple`, `espressif`, `fortanix`, `ibm`, `kmc`, `mti`, `nintendo`, `nvidia`, `pc`, `risc0`, `sony`, `sun`, `unikraft`, `unknown`, `uwp`, `win7`, and `wrs` + = note: expected values for `target_vendor` are: `amd`, `apple`, `espressif`, `fortanix`, `ibm`, `kmc`, `mti`, `nintendo`, `nvidia`, `pc`, `risc0`, `sony`, `succinct`, `sun`, `unikraft`, `unknown`, `uwp`, `win7`, and `wrs` = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg.html> for more information about checking conditional configuration warning: unexpected `cfg` condition name: `feature` diff --git a/tests/ui/check-cfg/exhaustive-names-values.feature.stderr b/tests/ui/check-cfg/exhaustive-names-values.feature.stderr index 95af0a9092993..bd3281baf23af 100644 --- a/tests/ui/check-cfg/exhaustive-names-values.feature.stderr +++ b/tests/ui/check-cfg/exhaustive-names-values.feature.stderr @@ -15,7 +15,7 @@ warning: unexpected `cfg` condition value: `value` LL | #[cfg(target_vendor = "value")] | ^^^^^^^^^^^^^^^^^^^^^^^ | - = note: expected values for `target_vendor` are: `amd`, `apple`, `espressif`, `fortanix`, `ibm`, `kmc`, `mti`, `nintendo`, `nvidia`, `pc`, `risc0`, `sony`, `sun`, `unikraft`, `unknown`, `uwp`, `win7`, and `wrs` + = note: expected values for `target_vendor` are: `amd`, `apple`, `espressif`, `fortanix`, `ibm`, `kmc`, `mti`, `nintendo`, `nvidia`, `pc`, `risc0`, `sony`, `succinct`, `sun`, `unikraft`, `unknown`, `uwp`, `win7`, and `wrs` = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg.html> for more information about checking conditional configuration warning: unexpected `cfg` condition value: `unk` diff --git a/tests/ui/check-cfg/exhaustive-names-values.full.stderr b/tests/ui/check-cfg/exhaustive-names-values.full.stderr index 95af0a9092993..bd3281baf23af 100644 --- a/tests/ui/check-cfg/exhaustive-names-values.full.stderr +++ b/tests/ui/check-cfg/exhaustive-names-values.full.stderr @@ -15,7 +15,7 @@ warning: unexpected `cfg` condition value: `value` LL | #[cfg(target_vendor = "value")] | ^^^^^^^^^^^^^^^^^^^^^^^ | - = note: expected values for `target_vendor` are: `amd`, `apple`, `espressif`, `fortanix`, `ibm`, `kmc`, `mti`, `nintendo`, `nvidia`, `pc`, `risc0`, `sony`, `sun`, `unikraft`, `unknown`, `uwp`, `win7`, and `wrs` + = note: expected values for `target_vendor` are: `amd`, `apple`, `espressif`, `fortanix`, `ibm`, `kmc`, `mti`, `nintendo`, `nvidia`, `pc`, `risc0`, `sony`, `succinct`, `sun`, `unikraft`, `unknown`, `uwp`, `win7`, and `wrs` = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg.html> for more information about checking conditional configuration warning: unexpected `cfg` condition value: `unk` diff --git a/tests/ui/check-cfg/well-known-values.stderr b/tests/ui/check-cfg/well-known-values.stderr index ba1900fcddb2d..39e0fb675d86d 100644 --- a/tests/ui/check-cfg/well-known-values.stderr +++ b/tests/ui/check-cfg/well-known-values.stderr @@ -201,7 +201,7 @@ warning: unexpected `cfg` condition value: `_UNEXPECTED_VALUE` LL | target_os = "_UNEXPECTED_VALUE", | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | - = note: expected values for `target_os` are: `aix`, `amdhsa`, `android`, `cuda`, `cygwin`, `dragonfly`, `emscripten`, `espidf`, `freebsd`, `fuchsia`, `haiku`, `hermit`, `horizon`, `hurd`, `illumos`, `ios`, `l4re`, `linux`, `macos`, `netbsd`, `none`, `nto`, `nuttx`, `openbsd`, `psp`, `psx`, `redox`, `rtems`, `solaris`, `solid_asp3`, `teeos`, `trusty`, `tvos`, `uefi`, `unknown`, `visionos`, `vita`, `vxworks`, `wasi`, `watchos`, `windows`, `xous`, and `zkvm` + = note: expected values for `target_os` are: `aix`, `amdhsa`, `android`, `cuda`, `cygwin`, `dragonfly`, `emscripten`, `espidf`, `freebsd`, `fuchsia`, `haiku`, `hermit`, `horizon`, `hurd`, `illumos`, `ios`, `l4re`, `linux`, `macos`, `netbsd`, `none`, `nto`, `nuttx`, `openbsd`, `psp`, `psx`, `redox`, `rtems`, `solaris`, `solid_asp3`, `succinct-zkvm`, `teeos`, `trusty`, `tvos`, `uefi`, `unknown`, `visionos`, `vita`, `vxworks`, `wasi`, `watchos`, `windows`, `xous`, and `zkvm` = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg.html> for more information about checking conditional configuration warning: unexpected `cfg` condition value: `_UNEXPECTED_VALUE` @@ -230,7 +230,7 @@ warning: unexpected `cfg` condition value: `_UNEXPECTED_VALUE` LL | target_vendor = "_UNEXPECTED_VALUE", | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | - = note: expected values for `target_vendor` are: `amd`, `apple`, `espressif`, `fortanix`, `ibm`, `kmc`, `mti`, `nintendo`, `nvidia`, `pc`, `risc0`, `sony`, `sun`, `unikraft`, `unknown`, `uwp`, `win7`, and `wrs` + = note: expected values for `target_vendor` are: `amd`, `apple`, `espressif`, `fortanix`, `ibm`, `kmc`, `mti`, `nintendo`, `nvidia`, `pc`, `risc0`, `sony`, `succinct`, `sun`, `unikraft`, `unknown`, `uwp`, `win7`, and `wrs` = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg.html> for more information about checking conditional configuration warning: unexpected `cfg` condition value: `_UNEXPECTED_VALUE` @@ -274,7 +274,7 @@ LL | #[cfg(target_os = "linuz")] // testing that we suggest `linux` | | | help: there is a expected value with a similar name: `"linux"` | - = note: expected values for `target_os` are: `aix`, `amdhsa`, `android`, `cuda`, `cygwin`, `dragonfly`, `emscripten`, `espidf`, `freebsd`, `fuchsia`, `haiku`, `hermit`, `horizon`, `hurd`, `illumos`, `ios`, `l4re`, `linux`, `macos`, `netbsd`, `none`, `nto`, `nuttx`, `openbsd`, `psp`, `psx`, `redox`, `rtems`, `solaris`, `solid_asp3`, `teeos`, `trusty`, `tvos`, `uefi`, `unknown`, `visionos`, `vita`, `vxworks`, `wasi`, `watchos`, `windows`, `xous`, and `zkvm` + = note: expected values for `target_os` are: `aix`, `amdhsa`, `android`, `cuda`, `cygwin`, `dragonfly`, `emscripten`, `espidf`, `freebsd`, `fuchsia`, `haiku`, `hermit`, `horizon`, `hurd`, `illumos`, `ios`, `l4re`, `linux`, `macos`, `netbsd`, `none`, `nto`, `nuttx`, `openbsd`, `psp`, `psx`, `redox`, `rtems`, `solaris`, `solid_asp3`, `succinct-zkvm`, `teeos`, `trusty`, `tvos`, `uefi`, `unknown`, `visionos`, `vita`, `vxworks`, `wasi`, `watchos`, `windows`, `xous`, and `zkvm` = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg.html> for more information about checking conditional configuration warning: 28 warnings emitted From 53916e1e1a3507bfabf04984b324e29f2ab3cdbf Mon Sep 17 00:00:00 2001 From: nhtyy <n@push0.dev> Date: Tue, 18 Mar 2025 15:15:42 -0700 Subject: [PATCH 7/7] fix: add platform support top level docs --- src/doc/rustc/src/platform-support.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/doc/rustc/src/platform-support.md b/src/doc/rustc/src/platform-support.md index c74a9e9849686..3de5b3b00043e 100644 --- a/src/doc/rustc/src/platform-support.md +++ b/src/doc/rustc/src/platform-support.md @@ -367,6 +367,7 @@ target | std | host | notes `riscv32gc-unknown-linux-gnu` | ✓ | | RISC-V Linux (kernel 5.4, glibc 2.33) `riscv32gc-unknown-linux-musl` | ? | | RISC-V Linux (kernel 5.4, musl 1.2.3 + RISCV32 support patches) [`riscv32im-risc0-zkvm-elf`](platform-support/riscv32im-risc0-zkvm-elf.md) | ? | | RISC Zero's zero-knowledge Virtual Machine (RV32IM ISA) +[`riscv32im-succinct-elf`](platform-support/riscv32im-succinct-elf.md) | | | [`riscv32ima-unknown-none-elf`](platform-support/riscv32-unknown-none-elf.md) | * | | Bare RISC-V (RV32IMA ISA) [`riscv32imac-esp-espidf`](platform-support/esp-idf.md) | ✓ | | RISC-V ESP-IDF [`riscv32imac-unknown-nuttx-elf`](platform-support/nuttx.md) | ✓ | | RISC-V 32bit with NuttX