From 39fccf829dfef027ddb2a4d1c9cffd28f10369b1 Mon Sep 17 00:00:00 2001 From: "Cliff L. Biffle" Date: Mon, 6 May 2024 13:54:26 -0700 Subject: [PATCH] Bump toolchain to 2024-09-17 This commit contains some code changes that have to be made atomically with the toolchain, to avoid angering our warnings check in the build: - Removed now-stable asm_const feature - Fixed some addr_of instances that are now safe (woo!) --- Cargo.lock | 41 ++++++++++++++++++----------- Cargo.toml | 2 +- lib/lpc55-rot-startup/src/images.rs | 8 ++---- rust-toolchain.toml | 2 +- sys/kern/src/lib.rs | 1 - sys/kern/src/startup.rs | 5 +--- sys/userlib/src/lib.rs | 1 - 7 files changed, 31 insertions(+), 29 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e39d70374..59d164595 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1049,7 +1049,7 @@ dependencies = [ "gnarle", "idol", "idol-runtime", - "num-derive", + "num-derive 0.4.2", "num-traits", "ringbuf", "serde", @@ -1153,7 +1153,7 @@ dependencies = [ "derive-idol-err", "drv-i2c-api", "drv-onewire", - "num-derive", + "num-derive 0.4.2", "num-traits", "pmbus", "ringbuf", @@ -1171,7 +1171,7 @@ dependencies = [ "derive-idol-err", "enum-kinds", "hubpack", - "num-derive", + "num-derive 0.4.2", "num-traits", "serde", ] @@ -1199,7 +1199,7 @@ dependencies = [ "drv-fpga-api", "idol", "idol-runtime", - "num-derive", + "num-derive 0.4.2", "num-traits", "serde", "static_assertions", @@ -1723,7 +1723,7 @@ dependencies = [ "drv-transceivers-api", "gnarle", "idol", - "num-derive", + "num-derive 0.4.2", "num-traits", "ringbuf", "transceiver-messages", @@ -1748,7 +1748,7 @@ dependencies = [ "drv-ignition-api", "gnarle", "idol", - "num-derive", + "num-derive 0.4.2", "num-traits", "serde", "serde_json", @@ -2772,7 +2772,7 @@ dependencies = [ "fletcher", "gateway-messages", "hubpack", - "num-derive", + "num-derive 0.4.2", "num-traits", "oxide-barcode", "serde", @@ -3144,7 +3144,7 @@ name = "lpc55-puf" version = "0.1.0" dependencies = [ "lpc55-pac", - "num-derive", + "num-derive 0.4.2", "num-traits", "unwrap-lite", ] @@ -3232,7 +3232,7 @@ dependencies = [ "cfg-if", "lpc55-pac", "lpc55-rom-data", - "num-derive", + "num-derive 0.4.2", "num-traits", ] @@ -3419,6 +3419,17 @@ dependencies = [ "syn 1.0.94", ] +[[package]] +name = "num-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.52", +] + [[package]] name = "num-integer" version = "0.1.44" @@ -3453,9 +3464,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.15" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", "libm", @@ -3693,7 +3704,7 @@ dependencies = [ "anyhow", "convert_case", "libm", - "num-derive", + "num-derive 0.3.3", "num-traits", "ron", "serde", @@ -4299,7 +4310,7 @@ name = "spd" version = "0.1.0" source = "git+https://github.com/oxidecomputer/spd#e37e79f6d7d4805b8a6a8c4d37699c4bd60222ea" dependencies = [ - "num-derive", + "num-derive 0.3.3", "num-traits", ] @@ -5131,7 +5142,7 @@ dependencies = [ "hubpack", "idol", "idol-runtime", - "num-derive", + "num-derive 0.4.2", "num-traits", "serde", "userlib", @@ -5754,7 +5765,7 @@ dependencies = [ "cfg-if", "cortex-m", "critical-section", - "num-derive", + "num-derive 0.4.2", "num-traits", "paste", "serde", diff --git a/Cargo.toml b/Cargo.toml index 07149b4c8..92239ce44 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -76,7 +76,7 @@ memoffset = { version = "0.6.5", default-features = false } multimap = { version = "0.8.3", default-features = false } nb = { version = "1", default-features = false } num = { version = "0.4", default-features = false } -num-derive = { version = "0.3.3", default-features = false, features = ["full-syntax"] } +num-derive = { version = "0.4", default-features = false } num-traits = { version = "0.2.12", default-features = false } p256 = { version = "0.13.2", default-features = false, features = ["ecdsa"] } panic-halt = { version = "0.2.0", default-features = false } diff --git a/lib/lpc55-rot-startup/src/images.rs b/lib/lpc55-rot-startup/src/images.rs index 1164aea43..226ceb9bc 100644 --- a/lib/lpc55-rot-startup/src/images.rs +++ b/lib/lpc55-rot-startup/src/images.rs @@ -173,7 +173,7 @@ impl Image { ) -> Result { // Make sure we can access the page where the vectors live. // Safety: Link time constants from our own image. - let vector_size = unsafe { core::ptr::addr_of!(__vector_size) as u32 }; + let vector_size = core::ptr::addr_of!(__vector_size) as u32; if !slot.is_span_programmed(slot.start(), vector_size) { return Err(ImageError::FirstPageErased); } @@ -248,11 +248,7 @@ impl Image { // Note that it may not be present if the image // is corrupted or is a bootloader. fn get_header_ptr(&self) -> *const ImageHeader { - // Safety: This is generated by the linker script which we trust - // Note that this is generated from _this_ image's linker script - // as opposed to the _image_ linker script but those two _must_ - // be the same value! - let vector_size = unsafe { core::ptr::addr_of!(__vector_size) as u32 }; + let vector_size = core::ptr::addr_of!(__vector_size) as u32; (self.get_img_start() + vector_size) as *const ImageHeader } diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 38cefdfc1..e703c8812 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,5 +1,5 @@ [toolchain] -channel = "nightly-2024-04-04" +channel = "nightly-2024-09-17" targets = [ "thumbv6m-none-eabi", "thumbv7em-none-eabihf", "thumbv8m.main-none-eabihf" ] profile = "minimal" components = [ "rustfmt" ] diff --git a/sys/kern/src/lib.rs b/sys/kern/src/lib.rs index e71d0b48e..e6558756a 100644 --- a/sys/kern/src/lib.rs +++ b/sys/kern/src/lib.rs @@ -28,7 +28,6 @@ #![cfg_attr(target_os = "none", no_std)] #![feature(naked_functions)] -#![feature(asm_const)] // Require an unsafe block even in an unsafe fn, because unsafe fns are about // contract, not implementation. #![forbid(unsafe_op_in_unsafe_fn)] diff --git a/sys/kern/src/startup.rs b/sys/kern/src/startup.rs index b4a9a01e8..4bc1edd8f 100644 --- a/sys/kern/src/startup.rs +++ b/sys/kern/src/startup.rs @@ -101,11 +101,8 @@ pub(crate) fn with_task_table(body: impl FnOnce(&mut [Task]) -> R) -> R { if TASK_TABLE_IN_USE.swap_polyfill(true, Ordering::Acquire) { panic!(); // recursive use of with_task_table } - // Safety: tbh it's never been clear to me why addr_of_mut is unsafe when it - // produces a raw pointer, but, see the Safety justification on the - // derefrence below for the full argument on why we can do this. let task_table: *mut MaybeUninit<[Task; HUBRIS_TASK_COUNT]> = - unsafe { core::ptr::addr_of_mut!(HUBRIS_TASK_TABLE_SPACE) }; + core::ptr::addr_of_mut!(HUBRIS_TASK_TABLE_SPACE); // Pointer cast valid as MaybeUninit<[T; N]> and [MaybeUninit; N] have // same in-memory representation. At the time of this writing // MaybeUninit::transpose is not yet stable. diff --git a/sys/userlib/src/lib.rs b/sys/userlib/src/lib.rs index 37e873e99..99632049f 100644 --- a/sys/userlib/src/lib.rs +++ b/sys/userlib/src/lib.rs @@ -25,7 +25,6 @@ //! See: https://github.com/rust-lang/rust/issues/73450#issuecomment-650463347 #![no_std] -#![feature(asm_const)] #![feature(naked_functions)] #![forbid(clippy::wildcard_imports)]