From 1e2db28895917ae1dedb1bda3b8f688580f64ffa Mon Sep 17 00:00:00 2001 From: Nick Spinale Date: Sat, 6 Jan 2024 10:28:44 +0000 Subject: [PATCH 1/8] Make panicking lang items more consistent Signed-off-by: Nick Spinale --- crates/sel4-kernel-loader/src/rt.rs | 2 +- crates/sel4-panicking/src/strategy/abort/mod.rs | 2 +- hacking/nix/rust-utils/crate-utils.nix | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/crates/sel4-kernel-loader/src/rt.rs b/crates/sel4-kernel-loader/src/rt.rs index b8738e65b..ad24991f3 100644 --- a/crates/sel4-kernel-loader/src/rt.rs +++ b/crates/sel4-kernel-loader/src/rt.rs @@ -9,7 +9,7 @@ use core::panic::PanicInfo; use crate::arch::{Arch, ArchImpl}; #[panic_handler] -extern "C" fn panic_handler(info: &PanicInfo) -> ! { +fn panic_handler(info: &PanicInfo) -> ! { log::error!("{}", info); ArchImpl::idle() } diff --git a/crates/sel4-panicking/src/strategy/abort/mod.rs b/crates/sel4-panicking/src/strategy/abort/mod.rs index 26e3926c7..8d53a9c07 100644 --- a/crates/sel4-panicking/src/strategy/abort/mod.rs +++ b/crates/sel4-panicking/src/strategy/abort/mod.rs @@ -21,6 +21,6 @@ pub(crate) fn start_panic(_payload: Payload) -> i32 { #[cfg(panic = "unwind")] #[lang = "eh_personality"] -extern "C" fn personality() -> ! { +fn eh_personality() -> ! { abort!("unexpected call to eh_personality") } diff --git a/hacking/nix/rust-utils/crate-utils.nix b/hacking/nix/rust-utils/crate-utils.nix index ee481c887..50ab11721 100644 --- a/hacking/nix/rust-utils/crate-utils.nix +++ b/hacking/nix/rust-utils/crate-utils.nix @@ -59,13 +59,13 @@ rec { #[cfg(target_os = "none")] #[panic_handler] - extern fn panic_handler(_: &core::panic::PanicInfo) -> ! { + fn panic_handler(_: &core::panic::PanicInfo) -> ! { core::intrinsics::abort() } #[cfg(target_os = "none")] #[lang = "eh_personality"] - extern fn eh_personality() { + fn eh_personality() { } #[cfg(not(target_os = "none"))] From e6082f2cf94a075a3ded83748e171c214d69a1de Mon Sep 17 00:00:00 2001 From: Nick Spinale Date: Sat, 6 Jan 2024 10:04:01 +0000 Subject: [PATCH 2/8] Bump Rust toolchain Signed-off-by: Nick Spinale --- hacking/kani/docker/Dockerfile | 2 +- hacking/nix/scope/default.nix | 4 ++-- rust-toolchain.toml | 2 +- support/targets/aarch64-sel4-microkit-minimal.json | 8 ++++++-- support/targets/aarch64-sel4-microkit.json | 8 ++++++-- support/targets/aarch64-sel4-minimal.json | 8 ++++++-- support/targets/aarch64-sel4.json | 8 ++++++-- support/targets/riscv32imac-sel4-minimal.json | 3 ++- support/targets/riscv32imac-sel4.json | 3 ++- support/targets/riscv64gc-sel4-minimal.json | 3 ++- support/targets/riscv64gc-sel4.json | 3 ++- support/targets/riscv64imac-sel4-minimal.json | 3 ++- support/targets/riscv64imac-sel4.json | 3 ++- support/targets/x86_64-sel4-minimal.json | 10 +++------- support/targets/x86_64-sel4.json | 10 +++------- 15 files changed, 46 insertions(+), 32 deletions(-) diff --git a/hacking/kani/docker/Dockerfile b/hacking/kani/docker/Dockerfile index 95fd38ea5..c848bbba4 100644 --- a/hacking/kani/docker/Dockerfile +++ b/hacking/kani/docker/Dockerfile @@ -42,7 +42,7 @@ RUN set -eux; \ USER $UID # Optimize by matching rust-toolchain.toml -ENV DEFAULT_TOOLCHAIN=nightly-2023-08-02 +ENV DEFAULT_TOOLCHAIN=nightly-2024-01-06 RUN curl -sSf -L https://sh.rustup.rs | \ bash -s -- -y --no-modify-path --default-toolchain $DEFAULT_TOOLCHAIN diff --git a/hacking/nix/scope/default.nix b/hacking/nix/scope/default.nix index c5adfa773..5685fc962 100644 --- a/hacking/nix/scope/default.nix +++ b/hacking/nix/scope/default.nix @@ -37,8 +37,8 @@ let rustToolchainParams = { channel = "nightly"; - date = "2023-08-02"; - sha256 = "sha256-LMK50izxGqjJVPhVG+C2VosDHvDYNXhaOFSb8fwGf/Y="; + date = "2024-01-06"; + sha256 = "sha256-f/bfc14czb37QltdurN3BOFER6MxOpHOB82lI7Pj9ys="; }; mkRustToolchain = target: fenix.targets.${target}.toolchainOf rustToolchainParams; diff --git a/rust-toolchain.toml b/rust-toolchain.toml index a0cd8fe5b..26c3b2bd1 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -5,6 +5,6 @@ # [toolchain] -channel = "nightly-2023-08-02" +channel = "nightly-2024-01-06" targets = [ "x86_64-unknown-linux-musl", "aarch64-unknown-linux-musl" ] components = [ "rustfmt", "rust-src", "rustc-dev", "llvm-tools-preview" ] diff --git a/support/targets/aarch64-sel4-microkit-minimal.json b/support/targets/aarch64-sel4-microkit-minimal.json index b82f70a24..06a8a3986 100644 --- a/support/targets/aarch64-sel4-microkit-minimal.json +++ b/support/targets/aarch64-sel4-microkit-minimal.json @@ -1,5 +1,6 @@ { "arch": "aarch64", + "crt-objects-fallback": "false", "data-layout": "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128", "disable-redzone": true, "eh-frame-header": false, @@ -8,17 +9,20 @@ "features": "+v8a,+strict-align,+neon,+fp-armv8", "link-script": "__sel4_ipc_buffer_obj = (_end + 4096 - 1) & ~(4096 - 1);", "linker": "rust-lld", - "linker-flavor": "ld.lld", + "linker-flavor": "gnu-lld", "llvm-target": "aarch64-none-elf", "max-atomic-width": 128, "panic-strategy": "abort", "pre-link-args": { - "ld.lld": [ + "gnu-lld": [ "-z", "max-page-size=4096" ] }, "relocation-model": "static", + "stack-probes": { + "kind": "inline" + }, "supported-sanitizers": [ "kcfi", "kernel-address" diff --git a/support/targets/aarch64-sel4-microkit.json b/support/targets/aarch64-sel4-microkit.json index 268e2938b..31e627877 100644 --- a/support/targets/aarch64-sel4-microkit.json +++ b/support/targets/aarch64-sel4-microkit.json @@ -1,5 +1,6 @@ { "arch": "aarch64", + "crt-objects-fallback": "false", "data-layout": "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128", "disable-redzone": true, "env": "sel4", @@ -8,16 +9,19 @@ "has-thread-local": true, "link-script": "__sel4_ipc_buffer_obj = (_end + 4096 - 1) & ~(4096 - 1);", "linker": "rust-lld", - "linker-flavor": "ld.lld", + "linker-flavor": "gnu-lld", "llvm-target": "aarch64-none-elf", "max-atomic-width": 128, "pre-link-args": { - "ld.lld": [ + "gnu-lld": [ "-z", "max-page-size=4096" ] }, "relocation-model": "static", + "stack-probes": { + "kind": "inline" + }, "supported-sanitizers": [ "kcfi", "kernel-address" diff --git a/support/targets/aarch64-sel4-minimal.json b/support/targets/aarch64-sel4-minimal.json index 779786220..c90cff02e 100644 --- a/support/targets/aarch64-sel4-minimal.json +++ b/support/targets/aarch64-sel4-minimal.json @@ -1,5 +1,6 @@ { "arch": "aarch64", + "crt-objects-fallback": "false", "data-layout": "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128", "disable-redzone": true, "eh-frame-header": false, @@ -7,17 +8,20 @@ "exe-suffix": ".elf", "features": "+v8a,+strict-align,+neon,+fp-armv8", "linker": "rust-lld", - "linker-flavor": "ld.lld", + "linker-flavor": "gnu-lld", "llvm-target": "aarch64-none-elf", "max-atomic-width": 128, "panic-strategy": "abort", "pre-link-args": { - "ld.lld": [ + "gnu-lld": [ "-z", "max-page-size=4096" ] }, "relocation-model": "static", + "stack-probes": { + "kind": "inline" + }, "supported-sanitizers": [ "kcfi", "kernel-address" diff --git a/support/targets/aarch64-sel4.json b/support/targets/aarch64-sel4.json index 939b6207e..86d2032d6 100644 --- a/support/targets/aarch64-sel4.json +++ b/support/targets/aarch64-sel4.json @@ -1,5 +1,6 @@ { "arch": "aarch64", + "crt-objects-fallback": "false", "data-layout": "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128", "disable-redzone": true, "env": "sel4", @@ -7,16 +8,19 @@ "features": "+v8a,+strict-align,+neon,+fp-armv8", "has-thread-local": true, "linker": "rust-lld", - "linker-flavor": "ld.lld", + "linker-flavor": "gnu-lld", "llvm-target": "aarch64-none-elf", "max-atomic-width": 128, "pre-link-args": { - "ld.lld": [ + "gnu-lld": [ "-z", "max-page-size=4096" ] }, "relocation-model": "static", + "stack-probes": { + "kind": "inline" + }, "supported-sanitizers": [ "kcfi", "kernel-address" diff --git a/support/targets/riscv32imac-sel4-minimal.json b/support/targets/riscv32imac-sel4-minimal.json index 6053db70e..5e410eedb 100644 --- a/support/targets/riscv32imac-sel4-minimal.json +++ b/support/targets/riscv32imac-sel4-minimal.json @@ -1,6 +1,7 @@ { "arch": "riscv32", "cpu": "generic-rv32", + "crt-objects-fallback": "false", "data-layout": "e-m:e-p:32:32-i64:64-n32-S128", "eh-frame-header": false, "emit-debug-gdb-scripts": false, @@ -8,7 +9,7 @@ "exe-suffix": ".elf", "features": "+m,+a,+c", "linker": "rust-lld", - "linker-flavor": "ld.lld", + "linker-flavor": "gnu-lld", "llvm-target": "riscv32", "max-atomic-width": 32, "panic-strategy": "abort", diff --git a/support/targets/riscv32imac-sel4.json b/support/targets/riscv32imac-sel4.json index 0170c5445..943440623 100644 --- a/support/targets/riscv32imac-sel4.json +++ b/support/targets/riscv32imac-sel4.json @@ -1,6 +1,7 @@ { "arch": "riscv32", "cpu": "generic-rv32", + "crt-objects-fallback": "false", "data-layout": "e-m:e-p:32:32-i64:64-n32-S128", "emit-debug-gdb-scripts": false, "env": "sel4", @@ -8,7 +9,7 @@ "features": "+m,+a,+c", "has-thread-local": true, "linker": "rust-lld", - "linker-flavor": "ld.lld", + "linker-flavor": "gnu-lld", "llvm-target": "riscv32", "max-atomic-width": 32, "relocation-model": "static", diff --git a/support/targets/riscv64gc-sel4-minimal.json b/support/targets/riscv64gc-sel4-minimal.json index 46c62711b..338245518 100644 --- a/support/targets/riscv64gc-sel4-minimal.json +++ b/support/targets/riscv64gc-sel4-minimal.json @@ -2,6 +2,7 @@ "arch": "riscv64", "code-model": "medium", "cpu": "generic-rv64", + "crt-objects-fallback": "false", "data-layout": "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128", "eh-frame-header": false, "emit-debug-gdb-scripts": false, @@ -9,7 +10,7 @@ "exe-suffix": ".elf", "features": "+m,+a,+f,+d,+c", "linker": "rust-lld", - "linker-flavor": "ld.lld", + "linker-flavor": "gnu-lld", "llvm-abiname": "lp64d", "llvm-target": "riscv64", "max-atomic-width": 64, diff --git a/support/targets/riscv64gc-sel4.json b/support/targets/riscv64gc-sel4.json index 328820b2a..c8d8d1aa1 100644 --- a/support/targets/riscv64gc-sel4.json +++ b/support/targets/riscv64gc-sel4.json @@ -2,6 +2,7 @@ "arch": "riscv64", "code-model": "medium", "cpu": "generic-rv64", + "crt-objects-fallback": "false", "data-layout": "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128", "emit-debug-gdb-scripts": false, "env": "sel4", @@ -9,7 +10,7 @@ "features": "+m,+a,+f,+d,+c", "has-thread-local": true, "linker": "rust-lld", - "linker-flavor": "ld.lld", + "linker-flavor": "gnu-lld", "llvm-abiname": "lp64d", "llvm-target": "riscv64", "max-atomic-width": 64, diff --git a/support/targets/riscv64imac-sel4-minimal.json b/support/targets/riscv64imac-sel4-minimal.json index 12b2f06bd..3a823aad1 100644 --- a/support/targets/riscv64imac-sel4-minimal.json +++ b/support/targets/riscv64imac-sel4-minimal.json @@ -2,6 +2,7 @@ "arch": "riscv64", "code-model": "medium", "cpu": "generic-rv64", + "crt-objects-fallback": "false", "data-layout": "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128", "eh-frame-header": false, "emit-debug-gdb-scripts": false, @@ -9,7 +10,7 @@ "exe-suffix": ".elf", "features": "+m,+a,+c", "linker": "rust-lld", - "linker-flavor": "ld.lld", + "linker-flavor": "gnu-lld", "llvm-target": "riscv64", "max-atomic-width": 64, "panic-strategy": "abort", diff --git a/support/targets/riscv64imac-sel4.json b/support/targets/riscv64imac-sel4.json index 4249ceabc..da02680ed 100644 --- a/support/targets/riscv64imac-sel4.json +++ b/support/targets/riscv64imac-sel4.json @@ -2,6 +2,7 @@ "arch": "riscv64", "code-model": "medium", "cpu": "generic-rv64", + "crt-objects-fallback": "false", "data-layout": "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128", "emit-debug-gdb-scripts": false, "env": "sel4", @@ -9,7 +10,7 @@ "features": "+m,+a,+c", "has-thread-local": true, "linker": "rust-lld", - "linker-flavor": "ld.lld", + "linker-flavor": "gnu-lld", "llvm-target": "riscv64", "max-atomic-width": 64, "relocation-model": "static", diff --git a/support/targets/x86_64-sel4-minimal.json b/support/targets/x86_64-sel4-minimal.json index 252ec6521..a773fe908 100644 --- a/support/targets/x86_64-sel4-minimal.json +++ b/support/targets/x86_64-sel4-minimal.json @@ -2,6 +2,7 @@ "arch": "x86_64", "code-model": "small", "cpu": "x86-64", + "crt-objects-fallback": "false", "data-layout": "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128", "disable-redzone": true, "eh-frame-header": false, @@ -9,19 +10,14 @@ "exe-suffix": ".elf", "features": "-mmx,-sse,-sse2,-sse3,-ssse3,-sse4.1,-sse4.2,-3dnow,-3dnowa,-avx,-avx2,+soft-float", "linker": "rust-lld", - "linker-flavor": "ld.lld", + "linker-flavor": "gnu-lld", "llvm-target": "x86_64-unknown-none-elf", "max-atomic-width": 64, "panic-strategy": "abort", "plt-by-default": false, "relro-level": "full", "stack-probes": { - "kind": "inline-or-call", - "min-llvm-version-for-inline": [ - 16, - 0, - 0 - ] + "kind": "inline" }, "supported-sanitizers": [ "kcfi", diff --git a/support/targets/x86_64-sel4.json b/support/targets/x86_64-sel4.json index b0848fad2..ccf91ba02 100644 --- a/support/targets/x86_64-sel4.json +++ b/support/targets/x86_64-sel4.json @@ -2,6 +2,7 @@ "arch": "x86_64", "code-model": "small", "cpu": "x86-64", + "crt-objects-fallback": "false", "data-layout": "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128", "disable-redzone": true, "env": "sel4", @@ -9,18 +10,13 @@ "features": "-mmx,-sse,-sse2,-sse3,-ssse3,-sse4.1,-sse4.2,-3dnow,-3dnowa,-avx,-avx2,+soft-float", "has-thread-local": true, "linker": "rust-lld", - "linker-flavor": "ld.lld", + "linker-flavor": "gnu-lld", "llvm-target": "x86_64-unknown-none-elf", "max-atomic-width": 64, "plt-by-default": false, "relro-level": "full", "stack-probes": { - "kind": "inline-or-call", - "min-llvm-version-for-inline": [ - 16, - 0, - 0 - ] + "kind": "inline" }, "supported-sanitizers": [ "kcfi", From f683a059680644d1ed207e7ff895a84cbd41069b Mon Sep 17 00:00:00 2001 From: Nick Spinale Date: Sat, 6 Jan 2024 23:28:10 +0000 Subject: [PATCH 3/8] nix: Fix dummy crate source for new Rust toolchain Signed-off-by: Nick Spinale --- hacking/nix/rust-utils/crate-utils.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/hacking/nix/rust-utils/crate-utils.nix b/hacking/nix/rust-utils/crate-utils.nix index 50ab11721..eb018563a 100644 --- a/hacking/nix/rust-utils/crate-utils.nix +++ b/hacking/nix/rust-utils/crate-utils.nix @@ -52,6 +52,7 @@ rec { dummyMainWithOrWithoutStd = dummyMainOrLibWithOrWithoutStd; dummyMainOrLibWithOrWithoutStd = writeText "main_or_lib.rs" '' + #![allow(internal_features)] #![cfg_attr(target_os = "none", no_std)] #![cfg_attr(target_os = "none", no_main)] #![cfg_attr(target_os = "none", feature(lang_items))] From 4b9c4965386039b0f18b3ac5d0a5cd50ec66545c Mon Sep 17 00:00:00 2001 From: Nick Spinale Date: Sat, 6 Jan 2024 23:37:16 +0000 Subject: [PATCH 4/8] Fixes throughout for bumped Rust toolchain Signed-off-by: Nick Spinale --- .../http-server/helpers/virtio-hal-impl/src/lib.rs | 1 + .../microkit/http-server/pds/server/core/src/lib.rs | 2 +- .../examples/microkit/http-server/pds/server/src/main.rs | 1 - crates/private/support/sel4-simple-task/runtime/src/lib.rs | 2 ++ crates/sel4-async/block-io/fat/src/lib.rs | 1 - crates/sel4-async/block-io/src/lib.rs | 7 ++++++- crates/sel4-capdl-initializer/core/src/lib.rs | 1 + crates/sel4-capdl-initializer/core/src/memory.rs | 2 +- crates/sel4-capdl-initializer/src/main.rs | 2 +- crates/sel4-externally-shared/src/lib.rs | 1 + crates/sel4-initialize-tls-on-stack/src/lib.rs | 2 +- .../embed-page-tables/runtime/src/lib.rs | 2 -- crates/sel4-kernel-loader/payload-types/src/lib.rs | 1 + crates/sel4-kernel-loader/src/main.rs | 4 ++-- crates/sel4-microkit/src/entry.rs | 2 +- crates/sel4-microkit/src/env.rs | 2 -- crates/sel4-panicking/env/src/lib.rs | 1 + crates/sel4-panicking/src/lib.rs | 1 + crates/sel4-runtime-common/src/start.rs | 2 +- crates/sel4-shared-ring-buffer/block-io/src/lib.rs | 2 -- crates/sel4-shared-ring-buffer/bookkeeping/src/lib.rs | 2 -- crates/sel4/sys/src/fault/arch/mod.rs | 2 -- 22 files changed, 22 insertions(+), 21 deletions(-) diff --git a/crates/examples/microkit/http-server/helpers/virtio-hal-impl/src/lib.rs b/crates/examples/microkit/http-server/helpers/virtio-hal-impl/src/lib.rs index 530a5e6ec..255e7bf9d 100644 --- a/crates/examples/microkit/http-server/helpers/virtio-hal-impl/src/lib.rs +++ b/crates/examples/microkit/http-server/helpers/virtio-hal-impl/src/lib.rs @@ -5,6 +5,7 @@ // #![no_std] +#![feature(exposed_provenance)] #![feature(ptr_metadata)] #![feature(slice_ptr_get)] #![feature(strict_provenance)] diff --git a/crates/examples/microkit/http-server/pds/server/core/src/lib.rs b/crates/examples/microkit/http-server/pds/server/core/src/lib.rs index 3a7ecee89..4b390461f 100644 --- a/crates/examples/microkit/http-server/pds/server/core/src/lib.rs +++ b/crates/examples/microkit/http-server/pds/server/core/src/lib.rs @@ -36,7 +36,7 @@ const HTTP_PORT: u16 = 80; const HTTPS_PORT: u16 = 443; pub async fn run_server< - T: BlockIO + Clone, + T: BlockIO + Clone + 'static, >( _timers_ctx: TimerManager, network_ctx: ManagedInterface, diff --git a/crates/examples/microkit/http-server/pds/server/src/main.rs b/crates/examples/microkit/http-server/pds/server/src/main.rs index bb1b24ce5..9a9d79472 100644 --- a/crates/examples/microkit/http-server/pds/server/src/main.rs +++ b/crates/examples/microkit/http-server/pds/server/src/main.rs @@ -6,7 +6,6 @@ #![no_std] #![no_main] -#![feature(async_fn_in_trait)] #![feature(int_roundings)] #![feature(never_type)] #![feature(pattern)] diff --git a/crates/private/support/sel4-simple-task/runtime/src/lib.rs b/crates/private/support/sel4-simple-task/runtime/src/lib.rs index 4684d28ea..59ee0e6e6 100644 --- a/crates/private/support/sel4-simple-task/runtime/src/lib.rs +++ b/crates/private/support/sel4-simple-task/runtime/src/lib.rs @@ -9,12 +9,14 @@ #![feature(c_size_t)] #![feature(const_trait_impl)] #![feature(core_intrinsics)] +#![feature(exposed_provenance)] #![feature(lang_items)] #![feature(linkage)] #![feature(never_type)] #![feature(strict_provenance)] #![feature(thread_local)] #![feature(unwrap_infallible)] +#![allow(internal_features)] #[cfg(feature = "alloc")] extern crate alloc; diff --git a/crates/sel4-async/block-io/fat/src/lib.rs b/crates/sel4-async/block-io/fat/src/lib.rs index ccb22ca8d..321d9440e 100644 --- a/crates/sel4-async/block-io/fat/src/lib.rs +++ b/crates/sel4-async/block-io/fat/src/lib.rs @@ -5,7 +5,6 @@ // #![no_std] -#![feature(async_fn_in_trait)] #![feature(never_type)] pub use embedded_fat::*; diff --git a/crates/sel4-async/block-io/src/lib.rs b/crates/sel4-async/block-io/src/lib.rs index c73bf5728..ce326abfd 100644 --- a/crates/sel4-async/block-io/src/lib.rs +++ b/crates/sel4-async/block-io/src/lib.rs @@ -6,7 +6,6 @@ #![no_std] #![feature(associated_type_bounds)] -#![feature(async_fn_in_trait)] #![feature(const_option)] #![feature(int_roundings)] #![feature(never_type)] @@ -47,12 +46,14 @@ pub trait BlockIOLayout { } pub trait BlockIO: BlockIOLayout { + #[allow(async_fn_in_trait)] async fn read_or_write_blocks( &self, start_block_idx: u64, operation: Operation<'_, A>, ) -> Result<(), Self::Error>; + #[allow(async_fn_in_trait)] async fn read_blocks(&self, start_block_idx: u64, buf: &mut [u8]) -> Result<(), Self::Error> where A: ReadAccess, @@ -67,6 +68,7 @@ pub trait BlockIO: BlockIOLayout { .await } + #[allow(async_fn_in_trait)] async fn write_blocks(&self, start_block_idx: u64, buf: &[u8]) -> Result<(), Self::Error> where A: WriteAccess, @@ -342,12 +344,14 @@ pub trait ByteIOLayout { } pub trait ByteIO: ByteIOLayout { + #[allow(async_fn_in_trait)] async fn read_or_write( &self, offset: u64, operation: Operation<'_, A>, ) -> Result<(), Self::Error>; + #[allow(async_fn_in_trait)] async fn read(&self, offset: u64, buf: &mut [u8]) -> Result<(), Self::Error> where A: ReadAccess, @@ -355,6 +359,7 @@ pub trait ByteIO: ByteIOLayout { self.read_or_write(offset, Operation::read(buf)).await } + #[allow(async_fn_in_trait)] async fn write(&self, offset: u64, buf: &[u8]) -> Result<(), Self::Error> where A: WriteAccess, diff --git a/crates/sel4-capdl-initializer/core/src/lib.rs b/crates/sel4-capdl-initializer/core/src/lib.rs index 414ad99cf..2f5bdc52a 100644 --- a/crates/sel4-capdl-initializer/core/src/lib.rs +++ b/crates/sel4-capdl-initializer/core/src/lib.rs @@ -7,6 +7,7 @@ #![no_std] #![feature(array_try_from_fn)] #![feature(const_trait_impl)] +#![feature(exposed_provenance)] #![feature(int_roundings)] #![feature(never_type)] #![feature(pointer_is_aligned)] diff --git a/crates/sel4-capdl-initializer/core/src/memory.rs b/crates/sel4-capdl-initializer/core/src/memory.rs index cfd90a580..888540f26 100644 --- a/crates/sel4-capdl-initializer/core/src/memory.rs +++ b/crates/sel4-capdl-initializer/core/src/memory.rs @@ -11,7 +11,7 @@ use sel4::SizedFrameType; use super::frame_types; #[repr(align(4096))] -struct SmallPagePlaceHolder([u8; frame_types::FrameType0::FRAME_SIZE.bytes()]); +struct SmallPagePlaceHolder(#[allow(dead_code)] [u8; frame_types::FrameType0::FRAME_SIZE.bytes()]); static SMALL_PAGE_PLACEHOLDER: SmallPagePlaceHolder = SmallPagePlaceHolder([0; frame_types::FrameType0::FRAME_SIZE.bytes()]); diff --git a/crates/sel4-capdl-initializer/src/main.rs b/crates/sel4-capdl-initializer/src/main.rs index 936ac04bb..250d45259 100644 --- a/crates/sel4-capdl-initializer/src/main.rs +++ b/crates/sel4-capdl-initializer/src/main.rs @@ -7,8 +7,8 @@ #![no_std] #![no_main] #![feature(const_trait_impl)] +#![feature(exposed_provenance)] #![feature(int_roundings)] -#![feature(pointer_byte_offsets)] #![feature(strict_provenance)] extern crate alloc; diff --git a/crates/sel4-externally-shared/src/lib.rs b/crates/sel4-externally-shared/src/lib.rs index 89f02d53a..c104de376 100644 --- a/crates/sel4-externally-shared/src/lib.rs +++ b/crates/sel4-externally-shared/src/lib.rs @@ -8,6 +8,7 @@ #![feature(cfg_target_has_atomic_equal_alignment)] #![feature(concat_idents)] #![feature(core_intrinsics)] +#![allow(internal_features)] use core::ptr::NonNull; diff --git a/crates/sel4-initialize-tls-on-stack/src/lib.rs b/crates/sel4-initialize-tls-on-stack/src/lib.rs index d19a2d3a5..a3ddf4cc4 100644 --- a/crates/sel4-initialize-tls-on-stack/src/lib.rs +++ b/crates/sel4-initialize-tls-on-stack/src/lib.rs @@ -5,8 +5,8 @@ // #![no_std] +#![feature(exposed_provenance)] #![feature(int_roundings)] -#![feature(strict_provenance)] use core::arch::{asm, global_asm}; use core::ffi::c_void; diff --git a/crates/sel4-kernel-loader/embed-page-tables/runtime/src/lib.rs b/crates/sel4-kernel-loader/embed-page-tables/runtime/src/lib.rs index e62a2f218..8f7b00c8d 100644 --- a/crates/sel4-kernel-loader/embed-page-tables/runtime/src/lib.rs +++ b/crates/sel4-kernel-loader/embed-page-tables/runtime/src/lib.rs @@ -5,8 +5,6 @@ // #![no_std] -#![feature(const_pointer_byte_offsets)] -#![feature(pointer_byte_offsets)] use core::marker::PhantomData; diff --git a/crates/sel4-kernel-loader/payload-types/src/lib.rs b/crates/sel4-kernel-loader/payload-types/src/lib.rs index ee28f2ebc..4a2631229 100644 --- a/crates/sel4-kernel-loader/payload-types/src/lib.rs +++ b/crates/sel4-kernel-loader/payload-types/src/lib.rs @@ -5,6 +5,7 @@ // #![no_std] +#![feature(exposed_provenance)] #![feature(strict_provenance)] #![deny(unsafe_op_in_unsafe_fn)] #![allow(clippy::useless_conversion)] diff --git a/crates/sel4-kernel-loader/src/main.rs b/crates/sel4-kernel-loader/src/main.rs index bc5beb5fc..325ccc697 100644 --- a/crates/sel4-kernel-loader/src/main.rs +++ b/crates/sel4-kernel-loader/src/main.rs @@ -8,13 +8,13 @@ #![no_main] #![feature(associated_type_bounds)] #![feature(atomic_from_mut)] -#![feature(const_pointer_byte_offsets)] #![feature(const_trait_impl)] #![feature(exclusive_wrapper)] -#![feature(pointer_byte_offsets)] +#![feature(exposed_provenance)] #![feature(proc_macro_hygiene)] #![feature(strict_provenance)] #![feature(stdsimd)] +#![cfg_attr(any(target_arch = "riscv32", target_arch = "riscv64"), feature(riscv_ext_intrinsics))] #![allow(dead_code)] #![allow(unreachable_code)] #![allow(clippy::reversed_empty_ranges)] diff --git a/crates/sel4-microkit/src/entry.rs b/crates/sel4-microkit/src/entry.rs index 11fc52648..8bc874982 100644 --- a/crates/sel4-microkit/src/entry.rs +++ b/crates/sel4-microkit/src/entry.rs @@ -5,7 +5,7 @@ // pub use sel4_panicking::catch_unwind; -pub use sel4_panicking_env::{abort, debug_print, debug_println}; +pub use sel4_panicking_env::abort; use crate::env::get_ipc_buffer; use crate::handler::{run_handler, Handler}; diff --git a/crates/sel4-microkit/src/env.rs b/crates/sel4-microkit/src/env.rs index fada7847f..1c9bedc03 100644 --- a/crates/sel4-microkit/src/env.rs +++ b/crates/sel4-microkit/src/env.rs @@ -57,5 +57,3 @@ macro_rules! var { $symbol.get() }}; } - -pub use var; diff --git a/crates/sel4-panicking/env/src/lib.rs b/crates/sel4-panicking/env/src/lib.rs index 24433b888..5ab80e643 100644 --- a/crates/sel4-panicking/env/src/lib.rs +++ b/crates/sel4-panicking/env/src/lib.rs @@ -7,6 +7,7 @@ #![no_std] #![feature(core_intrinsics)] #![feature(linkage)] +#![allow(internal_features)] use core::fmt; use core::panic::Location; diff --git a/crates/sel4-panicking/src/lib.rs b/crates/sel4-panicking/src/lib.rs index 1ac486923..599392ed0 100644 --- a/crates/sel4-panicking/src/lib.rs +++ b/crates/sel4-panicking/src/lib.rs @@ -12,6 +12,7 @@ #![feature(panic_can_unwind)] #![feature(panic_info_message)] #![feature(thread_local)] +#![allow(internal_features)] #[cfg(feature = "alloc")] extern crate alloc; diff --git a/crates/sel4-runtime-common/src/start.rs b/crates/sel4-runtime-common/src/start.rs index ab37fe726..1abc648a1 100644 --- a/crates/sel4-runtime-common/src/start.rs +++ b/crates/sel4-runtime-common/src/start.rs @@ -26,7 +26,7 @@ impl Stack { } #[repr(transparent)] -pub struct StackTop(Exclusive<*mut u8>); +pub struct StackTop(#[allow(dead_code)] Exclusive<*mut u8>); #[macro_export] macro_rules! declare_stack { diff --git a/crates/sel4-shared-ring-buffer/block-io/src/lib.rs b/crates/sel4-shared-ring-buffer/block-io/src/lib.rs index 80e936fb0..b035a59bb 100644 --- a/crates/sel4-shared-ring-buffer/block-io/src/lib.rs +++ b/crates/sel4-shared-ring-buffer/block-io/src/lib.rs @@ -5,8 +5,6 @@ // #![no_std] -#![feature(async_fn_in_trait)] -#![feature(return_position_impl_trait_in_trait)] #![allow(clippy::useless_conversion)] extern crate alloc; diff --git a/crates/sel4-shared-ring-buffer/bookkeeping/src/lib.rs b/crates/sel4-shared-ring-buffer/bookkeeping/src/lib.rs index 112bca915..c7e856f5a 100644 --- a/crates/sel4-shared-ring-buffer/bookkeeping/src/lib.rs +++ b/crates/sel4-shared-ring-buffer/bookkeeping/src/lib.rs @@ -7,8 +7,6 @@ #![no_std] #![feature(associated_type_bounds)] #![feature(associated_type_defaults)] -#![feature(async_fn_in_trait)] -#![feature(return_position_impl_trait_in_trait)] extern crate alloc; diff --git a/crates/sel4/sys/src/fault/arch/mod.rs b/crates/sel4/sys/src/fault/arch/mod.rs index 2f57d35c6..6c76e3a3b 100644 --- a/crates/sel4/sys/src/fault/arch/mod.rs +++ b/crates/sel4/sys/src/fault/arch/mod.rs @@ -21,5 +21,3 @@ sel4_cfg_if! { mod imp; } } - -pub use imp::*; From d86eade5872c1d3b708f2c5f752dd600da181eef Mon Sep 17 00:00:00 2001 From: Nick Spinale Date: Sun, 7 Jan 2024 00:30:46 +0000 Subject: [PATCH 5/8] Rust rustfmt after toolchain bump Signed-off-by: Nick Spinale --- .../embed-spec/src/lib.rs | 4 +- .../src/smoltcp/phy/handler.rs | 76 ++++++++++--------- crates/sel4-kernel-loader/src/main.rs | 5 +- crates/sel4/sys/src/syscalls/helpers/mod.rs | 4 +- 4 files changed, 49 insertions(+), 40 deletions(-) diff --git a/crates/sel4-capdl-initializer/embed-spec/src/lib.rs b/crates/sel4-capdl-initializer/embed-spec/src/lib.rs index 9f2da4a9e..f68a8d3f8 100644 --- a/crates/sel4-capdl-initializer/embed-spec/src/lib.rs +++ b/crates/sel4-capdl-initializer/embed-spec/src/lib.rs @@ -123,7 +123,9 @@ impl<'a> Embedding<'a> { fn patch_field(&self, expr_struct: &mut syn::ExprStruct, field_name: &str, value: syn::Expr) { for field in expr_struct.fields.iter_mut() { - if let syn::Member::Named(ident) = &field.member && ident == field_name { + if let syn::Member::Named(ident) = &field.member + && ident == field_name + { field.expr = value.clone(); } } diff --git a/crates/sel4-hal-adapters/src/smoltcp/phy/handler.rs b/crates/sel4-hal-adapters/src/smoltcp/phy/handler.rs index 58b131d90..6d0452d70 100644 --- a/crates/sel4-hal-adapters/src/smoltcp/phy/handler.rs +++ b/crates/sel4-hal-adapters/src/smoltcp/phy/handler.rs @@ -82,25 +82,26 @@ impl Handler for PhyDeviceHandler let mut notify_rx = false; while !self.rx_ring_buffers.free().is_empty() - && let Some((rx_tok, _tx_tok)) = self.dev.receive(Instant::ZERO) { - let desc = self.rx_ring_buffers.free_mut().dequeue().unwrap(); - let desc_len = usize::try_from(desc.len()).unwrap(); - - rx_tok.consume(|rx_buf| { - assert!(desc_len >= rx_buf.len()); - let buf_range = { - let start = desc.encoded_addr() - self.client_region_paddr; - start..start + rx_buf.len() - }; - self.client_region - .as_mut_ptr() - .index(buf_range) - .copy_from_slice(&rx_buf); - }); - - self.rx_ring_buffers.used_mut().enqueue(desc).unwrap(); - notify_rx = true; - } + && let Some((rx_tok, _tx_tok)) = self.dev.receive(Instant::ZERO) + { + let desc = self.rx_ring_buffers.free_mut().dequeue().unwrap(); + let desc_len = usize::try_from(desc.len()).unwrap(); + + rx_tok.consume(|rx_buf| { + assert!(desc_len >= rx_buf.len()); + let buf_range = { + let start = desc.encoded_addr() - self.client_region_paddr; + start..start + rx_buf.len() + }; + self.client_region + .as_mut_ptr() + .index(buf_range) + .copy_from_slice(&rx_buf); + }); + + self.rx_ring_buffers.used_mut().enqueue(desc).unwrap(); + notify_rx = true; + } if notify_rx { self.rx_ring_buffers.notify().unwrap(); @@ -109,24 +110,25 @@ impl Handler for PhyDeviceHandler let mut notify_tx = false; while !self.tx_ring_buffers.free().is_empty() - && let Some(tx_tok) = self.dev.transmit(Instant::ZERO) { - let desc = self.tx_ring_buffers.free_mut().dequeue().unwrap(); - let tx_len = usize::try_from(desc.len()).unwrap(); - - tx_tok.consume(tx_len, |tx_buf| { - let buf_range = { - let start = desc.encoded_addr() - self.client_region_paddr; - start..start + tx_len - }; - self.client_region - .as_ptr() - .index(buf_range) - .copy_into_slice(tx_buf); - }); - - self.tx_ring_buffers.used_mut().enqueue(desc).unwrap(); - notify_tx = true; - } + && let Some(tx_tok) = self.dev.transmit(Instant::ZERO) + { + let desc = self.tx_ring_buffers.free_mut().dequeue().unwrap(); + let tx_len = usize::try_from(desc.len()).unwrap(); + + tx_tok.consume(tx_len, |tx_buf| { + let buf_range = { + let start = desc.encoded_addr() - self.client_region_paddr; + start..start + tx_len + }; + self.client_region + .as_ptr() + .index(buf_range) + .copy_into_slice(tx_buf); + }); + + self.tx_ring_buffers.used_mut().enqueue(desc).unwrap(); + notify_tx = true; + } if notify_tx { self.tx_ring_buffers.notify().unwrap(); diff --git a/crates/sel4-kernel-loader/src/main.rs b/crates/sel4-kernel-loader/src/main.rs index 325ccc697..d71184e63 100644 --- a/crates/sel4-kernel-loader/src/main.rs +++ b/crates/sel4-kernel-loader/src/main.rs @@ -14,7 +14,10 @@ #![feature(proc_macro_hygiene)] #![feature(strict_provenance)] #![feature(stdsimd)] -#![cfg_attr(any(target_arch = "riscv32", target_arch = "riscv64"), feature(riscv_ext_intrinsics))] +#![cfg_attr( + any(target_arch = "riscv32", target_arch = "riscv64"), + feature(riscv_ext_intrinsics) +)] #![allow(dead_code)] #![allow(unreachable_code)] #![allow(clippy::reversed_empty_ranges)] diff --git a/crates/sel4/sys/src/syscalls/helpers/mod.rs b/crates/sel4/sys/src/syscalls/helpers/mod.rs index 210a928ec..8b6694255 100644 --- a/crates/sel4/sys/src/syscalls/helpers/mod.rs +++ b/crates/sel4/sys/src/syscalls/helpers/mod.rs @@ -22,7 +22,9 @@ impl seL4_MessageInfo { } pub(crate) fn msg_helper(&self, msg: Option, i: seL4_Word) -> seL4_Word { - if let Some(msg) = msg && i < self.get_length() { + if let Some(msg) = msg + && i < self.get_length() + { msg } else { 0 From 8089516b23492a7549ac388ea65d0c595150b8a1 Mon Sep 17 00:00:00 2001 From: Nick Spinale Date: Sun, 7 Jan 2024 01:01:52 +0000 Subject: [PATCH 6/8] Don't use volatile/very_unstable feature Signed-off-by: Nick Spinale --- crates/private/meta/Cargo.nix | 2 +- crates/private/meta/Cargo.toml | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/crates/private/meta/Cargo.nix b/crates/private/meta/Cargo.nix index 320825e3a..b986b6874 100644 --- a/crates/private/meta/Cargo.nix +++ b/crates/private/meta/Cargo.nix @@ -36,7 +36,7 @@ mk { sel4-sync ; - sel4-externally-shared = localCrates.sel4-externally-shared // { features = [ "unstable" "very_unstable" ]; }; + sel4-externally-shared = localCrates.sel4-externally-shared // { features = [ "unstable" ]; }; sel4-root-task = localCrates.sel4-root-task // { features = [ "full" ]; optional = true; }; sel4-microkit = localCrates.sel4-microkit // { features = [ "full" ]; optional = true; }; sel4-microkit-message = localCrates.sel4-microkit-message // { optional = true; }; diff --git a/crates/private/meta/Cargo.toml b/crates/private/meta/Cargo.toml index f45c75b3f..1427357c5 100644 --- a/crates/private/meta/Cargo.toml +++ b/crates/private/meta/Cargo.toml @@ -33,6 +33,7 @@ sel4-async-time = { path = "../../sel4-async/time" } sel4-async-unsync = { path = "../../sel4-async/unsync" } sel4-bounce-buffer-allocator = { path = "../../sel4-bounce-buffer-allocator" } sel4-config = { path = "../../sel4/config" } +sel4-externally-shared = { path = "../../sel4-externally-shared", features = ["unstable"] } sel4-immediate-sync-once-cell = { path = "../../sel4-immediate-sync-once-cell" } sel4-immutable-cell = { path = "../../sel4-immutable-cell" } sel4-logging = { path = "../../sel4-logging" } @@ -49,10 +50,6 @@ sel4-shared-ring-buffer-smoltcp = { path = "../../sel4-shared-ring-buffer/smoltc sel4-sync = { path = "../../sel4-sync" } sel4-sys = { path = "../../sel4/sys" } -[dependencies.sel4-externally-shared] -path = "../../sel4-externally-shared" -features = ["unstable", "very_unstable"] - [target."cfg(not(target_arch = \"x86_64\"))".dependencies] sel4-platform-info = { path = "../../sel4-platform-info", optional = true } From 2db61f6a31de1de64c6ac5c1061183132570a8a3 Mon Sep 17 00:00:00 2001 From: Nick Spinale Date: Sun, 7 Jan 2024 00:37:56 +0000 Subject: [PATCH 7/8] Address clippy lints Signed-off-by: Nick Spinale --- .../src/main.rs | 3 +- .../block-io/fat/src/block_io_wrapper.rs | 6 +-- .../types/src/with_symbolize.rs | 2 - crates/sel4-capdl-initializer/core/src/lib.rs | 4 +- crates/sel4-root-task/src/lib.rs | 5 ++- crates/sel4-runtime-common/src/phdrs/elf.rs | 2 +- crates/sel4-test-harness/src/lib.rs | 1 + crates/sel4/src/arch/arm/invocations.rs | 4 +- crates/sel4/src/arch/x86/mod.rs | 1 - crates/sel4/src/bootinfo.rs | 38 ++++--------------- crates/sel4/src/invocations.rs | 2 +- crates/sel4/sys/src/fault/arch/riscv.rs | 2 +- 12 files changed, 22 insertions(+), 48 deletions(-) diff --git a/crates/examples/root-task/example-root-task-without-runtime/src/main.rs b/crates/examples/root-task/example-root-task-without-runtime/src/main.rs index 01f8fa3c0..5bde92865 100644 --- a/crates/examples/root-task/example-root-task-without-runtime/src/main.rs +++ b/crates/examples/root-task/example-root-task-without-runtime/src/main.rs @@ -10,6 +10,7 @@ #![feature(exclusive_wrapper)] #![feature(never_type)] #![feature(unwrap_infallible)] +#![allow(internal_features)] use core::arch::global_asm; use core::sync::Exclusive; @@ -94,7 +95,7 @@ impl Stack { } #[repr(transparent)] -pub struct StackTop(Exclusive<*mut u8>); +pub struct StackTop(#[allow(dead_code)] Exclusive<*mut u8>); const STACK_SIZE: usize = 0x4000; diff --git a/crates/sel4-async/block-io/fat/src/block_io_wrapper.rs b/crates/sel4-async/block-io/fat/src/block_io_wrapper.rs index e3bb9d4e5..fcd6c6dec 100644 --- a/crates/sel4-async/block-io/fat/src/block_io_wrapper.rs +++ b/crates/sel4-async/block-io/fat/src/block_io_wrapper.rs @@ -41,8 +41,7 @@ impl, A: Access> f _reason: &str, ) -> Result<(), Self::Error> { future::join_all(blocks.iter_mut().enumerate().map(|(i, block)| async move { - let block_idx = u64::try_from(start_block_idx.0) - .unwrap() + let block_idx = u64::from(start_block_idx.0) .checked_add(i.try_into().unwrap()) .unwrap(); self.inner @@ -65,8 +64,7 @@ impl, A: Access> f start_block_idx: fat::BlockIdx, ) -> Result<(), Self::Error> { future::join_all(blocks.iter().enumerate().map(|(i, block)| async move { - let block_idx = u64::try_from(start_block_idx.0) - .unwrap() + let block_idx = u64::from(start_block_idx.0) .checked_add(i.try_into().unwrap()) .unwrap(); self.inner diff --git a/crates/sel4-backtrace/types/src/with_symbolize.rs b/crates/sel4-backtrace/types/src/with_symbolize.rs index 085555449..a6067e6d1 100644 --- a/crates/sel4-backtrace/types/src/with_symbolize.rs +++ b/crates/sel4-backtrace/types/src/with_symbolize.rs @@ -17,8 +17,6 @@ use addr2line::gimli::read::Reader; use addr2line::gimli::Error; use addr2line::Context; -pub use addr2line::object::File; - use crate::Backtrace; // TODO handle inlining better (see TODOs scattered throughout this file) diff --git a/crates/sel4-capdl-initializer/core/src/lib.rs b/crates/sel4-capdl-initializer/core/src/lib.rs index 2f5bdc52a..36d7c04f8 100644 --- a/crates/sel4-capdl-initializer/core/src/lib.rs +++ b/crates/sel4-capdl-initializer/core/src/lib.rs @@ -605,8 +605,8 @@ impl<'a, N: ObjectName, D: Content, M: GetEmbeddedFrame, B: BorrowMut<[PerObject let ipc_buffer_frame = self.orig_local_cptr(obj.ipc_buffer().object); let authority = BootInfo::init_thread_tcb(); - let max_prio = obj.extra.max_prio.try_into()?; - let prio = obj.extra.prio.try_into()?; + let max_prio = obj.extra.max_prio.into(); + let prio = obj.extra.prio.into(); #[allow(unused_variables)] let affinity: usize = obj.extra.affinity.try_into()?; diff --git a/crates/sel4-root-task/src/lib.rs b/crates/sel4-root-task/src/lib.rs index 9888f8ffc..90a56314c 100644 --- a/crates/sel4-root-task/src/lib.rs +++ b/crates/sel4-root-task/src/lib.rs @@ -84,10 +84,11 @@ pub unsafe fn run_main( T: Termination, T::Error: fmt::Debug, { - match panicking::catch_unwind(|| { + let result = panicking::catch_unwind(|| { let bootinfo = sel4::BootInfo::from_ptr(bootinfo); f(&bootinfo).report() - }) { + }); + match result { Ok(err) => abort!("main thread terminated with error: {err:?}"), Err(_) => abort!("main thread panicked"), } diff --git a/crates/sel4-runtime-common/src/phdrs/elf.rs b/crates/sel4-runtime-common/src/phdrs/elf.rs index 47b31c0af..9ea63c4b1 100644 --- a/crates/sel4-runtime-common/src/phdrs/elf.rs +++ b/crates/sel4-runtime-common/src/phdrs/elf.rs @@ -59,7 +59,7 @@ impl ElfHeader { .cast::() .offset(self.e_phoff.try_into().unwrap()) .cast::(); - slice::from_raw_parts(ptr, self.e_phnum.try_into().unwrap()) + slice::from_raw_parts(ptr, self.e_phnum.into()) } } } diff --git a/crates/sel4-test-harness/src/lib.rs b/crates/sel4-test-harness/src/lib.rs index 1d5081079..a2b9c012a 100644 --- a/crates/sel4-test-harness/src/lib.rs +++ b/crates/sel4-test-harness/src/lib.rs @@ -7,6 +7,7 @@ #![no_std] #![feature(lang_items)] #![feature(never_type)] +#![allow(internal_features)] extern crate alloc; diff --git a/crates/sel4/src/arch/arm/invocations.rs b/crates/sel4/src/arch/arm/invocations.rs index e378c0330..ae85d10c2 100644 --- a/crates/sel4/src/arch/arm/invocations.rs +++ b/crates/sel4/src/arch/arm/invocations.rs @@ -30,7 +30,7 @@ impl VCPU { let res = self.invoke(|cptr, ipc_buffer| { ipc_buffer .inner_mut() - .seL4_ARM_VCPU_ReadRegs(cptr.bits(), field.into_sys().try_into().unwrap()) + .seL4_ARM_VCPU_ReadRegs(cptr.bits(), field.into_sys().into()) }); Error::or(res.error, res.value) } @@ -40,7 +40,7 @@ impl VCPU { Error::wrap(self.invoke(|cptr, ipc_buffer| { ipc_buffer.inner_mut().seL4_ARM_VCPU_WriteRegs( cptr.bits(), - field.into_sys().try_into().unwrap(), + field.into_sys().into(), value, ) })) diff --git a/crates/sel4/src/arch/x86/mod.rs b/crates/sel4/src/arch/x86/mod.rs index 14c44b7a3..1b824c356 100644 --- a/crates/sel4/src/arch/x86/mod.rs +++ b/crates/sel4/src/arch/x86/mod.rs @@ -15,7 +15,6 @@ pub(crate) mod fault; pub(crate) mod top_level { pub use super::{ arch::top_level::*, - fault::Fault, object::{ObjectBlueprintArch, ObjectBlueprintX86, ObjectTypeArch, ObjectTypeX86}, vm_attributes::VMAttributes, NUM_FAST_MESSAGE_REGISTERS, diff --git a/crates/sel4/src/bootinfo.rs b/crates/sel4/src/bootinfo.rs index 0aa06e2e2..9e778df2d 100644 --- a/crates/sel4/src/bootinfo.rs +++ b/crates/sel4/src/bootinfo.rs @@ -120,51 +120,27 @@ impl BootInfo { } pub fn init_thread_cnode() -> CNode { - CNode::from_bits( - sys::seL4_RootCapSlot::seL4_CapInitThreadCNode - .try_into() - .unwrap(), - ) + CNode::from_bits(sys::seL4_RootCapSlot::seL4_CapInitThreadCNode.into()) } pub fn irq_control() -> IRQControl { - IRQControl::from_bits( - sys::seL4_RootCapSlot::seL4_CapIRQControl - .try_into() - .unwrap(), - ) + IRQControl::from_bits(sys::seL4_RootCapSlot::seL4_CapIRQControl.into()) } pub fn asid_control() -> ASIDControl { - ASIDControl::from_bits( - sys::seL4_RootCapSlot::seL4_CapASIDControl - .try_into() - .unwrap(), - ) + ASIDControl::from_bits(sys::seL4_RootCapSlot::seL4_CapASIDControl.into()) } pub fn init_thread_asid_pool() -> ASIDPool { - ASIDPool::from_bits( - sys::seL4_RootCapSlot::seL4_CapInitThreadASIDPool - .try_into() - .unwrap(), - ) + ASIDPool::from_bits(sys::seL4_RootCapSlot::seL4_CapInitThreadASIDPool.into()) } pub fn init_thread_vspace() -> VSpace { - VSpace::from_bits( - sys::seL4_RootCapSlot::seL4_CapInitThreadVSpace - .try_into() - .unwrap(), - ) + VSpace::from_bits(sys::seL4_RootCapSlot::seL4_CapInitThreadVSpace.into()) } pub fn init_thread_tcb() -> TCB { - TCB::from_bits( - sys::seL4_RootCapSlot::seL4_CapInitThreadTCB - .try_into() - .unwrap(), - ) + TCB::from_bits(sys::seL4_RootCapSlot::seL4_CapInitThreadTCB.into()) } pub fn init_cspace_cptr(slot: InitCSpaceSlot) -> CPtr { @@ -196,7 +172,7 @@ impl UntypedDesc { } pub fn size_bits(&self) -> usize { - self.inner().sizeBits.try_into().unwrap() + self.inner().sizeBits.into() } pub fn is_device(&self) -> bool { diff --git a/crates/sel4/src/invocations.rs b/crates/sel4/src/invocations.rs index ad8114f08..a586f69e4 100644 --- a/crates/sel4/src/invocations.rs +++ b/crates/sel4/src/invocations.rs @@ -36,7 +36,7 @@ impl Untyped { Error::wrap(self.invoke(|cptr, ipc_buffer| { ipc_buffer.inner_mut().seL4_Untyped_Retype( cptr.bits(), - blueprint.ty().into_sys().try_into().unwrap(), + blueprint.ty().into_sys().into(), blueprint.api_size_bits().unwrap_or(0).try_into().unwrap(), dst.root().bits(), dst.path().bits(), diff --git a/crates/sel4/sys/src/fault/arch/riscv.rs b/crates/sel4/sys/src/fault/arch/riscv.rs index 731c58914..d1a243669 100644 --- a/crates/sel4/sys/src/fault/arch/riscv.rs +++ b/crates/sel4/sys/src/fault/arch/riscv.rs @@ -11,7 +11,7 @@ use sel4_config::sel4_cfg_match; impl seL4_Fault { pub(crate) fn arch_get_with(label: seL4_Word, length: seL4_Word, f: impl Fn(core::ffi::c_ulong) -> seL4_Word) -> Option { - let f = |i: core::ffi::c_uint| f(i.try_into().unwrap()); + let f = |i: core::ffi::c_uint| f(i.into()); let length: core::ffi::c_uint = length.try_into().unwrap(); Some({ #[sel4_cfg_match] From 946348875133a4bf744fac2f260e5dbf419f8ec4 Mon Sep 17 00:00:00 2001 From: Nick Spinale Date: Sun, 7 Jan 2024 06:24:03 +0000 Subject: [PATCH 8/8] nix: Move note Signed-off-by: Nick Spinale --- hacking/nix/rust-utils/build-crate-in-layers.nix | 2 -- hacking/nix/rust-utils/build-sysroot.nix | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/hacking/nix/rust-utils/build-crate-in-layers.nix b/hacking/nix/rust-utils/build-crate-in-layers.nix index d8bfc7cdb..e56ecd3d1 100644 --- a/hacking/nix/rust-utils/build-crate-in-layers.nix +++ b/hacking/nix/rust-utils/build-crate-in-layers.nix @@ -259,5 +259,3 @@ in let })); in final - -# NOTE "-Z avoid-dev-deps" for deps of std diff --git a/hacking/nix/rust-utils/build-sysroot.nix b/hacking/nix/rust-utils/build-sysroot.nix index 4b84c3952..1dc7d96f3 100644 --- a/hacking/nix/rust-utils/build-sysroot.nix +++ b/hacking/nix/rust-utils/build-sysroot.nix @@ -105,3 +105,5 @@ runCommand "sysroot" { # d=$out/$rel # mkdir -p $d # ln -s ${rustToolchain}/$rel/* $d + +# NOTE "-Z avoid-dev-deps" for deps of std