diff --git a/Cargo.lock b/Cargo.lock index 1b6b83b3ce2..3e8bdb00e7a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -508,9 +508,9 @@ dependencies = [ [[package]] name = "cranelift" -version = "0.120.2" +version = "0.126.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28bda640bdb33597583178887b25582520457258590a979344f3137a1e64a282" +checksum = "68971376deb1edf5e9c0ac77ef00479d740ce7a60e6181adb0648afe1dc7b8f4" dependencies = [ "cranelift-codegen", "cranelift-frontend", @@ -519,42 +519,42 @@ dependencies = [ [[package]] name = "cranelift-assembler-x64" -version = "0.120.2" +version = "0.126.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5023e06632d8f351c2891793ccccfe4aef957954904392434038745fb6f1f68" +checksum = "30054f4aef4d614d37f27d5b77e36e165f0b27a71563be348e7c9fcfac41eed8" dependencies = [ "cranelift-assembler-x64-meta", ] [[package]] name = "cranelift-assembler-x64-meta" -version = "0.120.2" +version = "0.126.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1c4012b4c8c1f6eb05c0a0a540e3e1ee992631af51aa2bbb3e712903ce4fd65" +checksum = "0beab56413879d4f515e08bcf118b1cb85f294129bb117057f573d37bfbb925a" dependencies = [ "cranelift-srcgen", ] [[package]] name = "cranelift-bforest" -version = "0.120.2" +version = "0.126.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d6d883b4942ef3a7104096b8bc6f2d1a41393f159ac8de12aed27b25d67f895" +checksum = "6d054747549a69b264d5299c8ca1b0dd45dc6bd0ee43f1edfcc42a8b12952c7a" dependencies = [ "cranelift-entity", ] [[package]] name = "cranelift-bitset" -version = "0.120.2" +version = "0.126.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db7b2ee9eec6ca8a716d900d5264d678fb2c290c58c46c8da7f94ee268175d17" +checksum = "98b92d481b77a7dc9d07c96e24a16f29e0c9c27d042828fdf7e49e54ee9819bf" [[package]] name = "cranelift-codegen" -version = "0.120.2" +version = "0.126.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aeda0892577afdce1ac2e9a983a55f8c5b87a59334e1f79d8f735a2d7ba4f4b4" +checksum = "6eeccfc043d599b0ef1806942707fc51cdd1c3965c343956dc975a55d82a920f" dependencies = [ "bumpalo", "cranelift-assembler-x64", @@ -573,48 +573,50 @@ dependencies = [ "serde", "smallvec", "target-lexicon", + "wasmtime-internal-math", ] [[package]] name = "cranelift-codegen-meta" -version = "0.120.2" +version = "0.126.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e461480d87f920c2787422463313326f67664e68108c14788ba1676f5edfcd15" +checksum = "1174cdb9d9d43b2bdaa612a07ed82af13db9b95526bc2c286c2aec4689bcc038" dependencies = [ "cranelift-assembler-x64-meta", "cranelift-codegen-shared", "cranelift-srcgen", + "heck 0.5.0", ] [[package]] name = "cranelift-codegen-shared" -version = "0.120.2" +version = "0.126.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "976584d09f200c6c84c4b9ff7af64fc9ad0cb64dffa5780991edd3fe143a30a1" +checksum = "7d572be73fae802eb115f45e7e67a9ed16acb4ee683b67c4086768786545419a" [[package]] name = "cranelift-control" -version = "0.120.2" +version = "0.126.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46d43d70f4e17c545aa88dbf4c84d4200755d27c6e3272ebe4de65802fa6a955" +checksum = "e1587465cc84c5cc793b44add928771945f3132bbf6b3621ee9473c631a87156" dependencies = [ "arbitrary", ] [[package]] name = "cranelift-entity" -version = "0.120.2" +version = "0.126.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d75418674520cb400c8772bfd6e11a62736c78fc1b6e418195696841d1bf91f1" +checksum = "063b83448b1343e79282c3c7cbda7ed5f0816f0b763a4c15f7cecb0a17d87ea6" dependencies = [ "cranelift-bitset", ] [[package]] name = "cranelift-frontend" -version = "0.120.2" +version = "0.126.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c8b1a91c86687a344f3c52dd6dfb6e50db0dfa7f2e9c7711b060b3623e1fdeb" +checksum = "aa4461c2d2ca48bc72883f5f5c3129d9aefac832df1db824af9db8db3efee109" dependencies = [ "cranelift-codegen", "log", @@ -624,15 +626,15 @@ dependencies = [ [[package]] name = "cranelift-isle" -version = "0.120.2" +version = "0.126.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711baa4e3432d4129295b39ec2b4040cc1b558874ba0a37d08e832e857db7285" +checksum = "acd811b25e18f14810d09c504e06098acc1d9dbfa24879bf0d6b6fb44415fc66" [[package]] name = "cranelift-jit" -version = "0.120.2" +version = "0.126.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86eece6be06ba68ed88ea8acb59a528deffe9cee09f08f2a422bfec554e82995" +checksum = "01527663ba63c10509d7c87fd1f8495d21170ba35bf714f57271495689d8fde5" dependencies = [ "anyhow", "cranelift-codegen", @@ -644,15 +646,15 @@ dependencies = [ "log", "region", "target-lexicon", - "wasmtime-jit-icache-coherence", - "windows-sys 0.59.0", + "wasmtime-internal-jit-icache-coherence", + "windows-sys 0.60.2", ] [[package]] name = "cranelift-module" -version = "0.120.2" +version = "0.126.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0065b75e59fcd32cfb50f754d6daf56235a2914eecb29e61aa2b4250a095c4c" +checksum = "72328edb49aeafb1655818c91c476623970cb7b8a89ffbdadd82ce7d13dedc1d" dependencies = [ "anyhow", "cranelift-codegen", @@ -661,9 +663,9 @@ dependencies = [ [[package]] name = "cranelift-native" -version = "0.120.2" +version = "0.126.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41c83e8666e3bcc5ffeaf6f01f356f0e1f9dcd69ce5511a1efd7ca5722001a3f" +checksum = "2417046989d8d6367a55bbab2e406a9195d176f4779be4aa484d645887217d37" dependencies = [ "cranelift-codegen", "libc", @@ -672,9 +674,9 @@ dependencies = [ [[package]] name = "cranelift-srcgen" -version = "0.120.2" +version = "0.126.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02e3f4d783a55c64266d17dc67d2708852235732a100fc40dd9f1051adc64d7b" +checksum = "8d039de901c8d928222b8128e1b9a9ab27b82a7445cb749a871c75d9cb25c57d" [[package]] name = "crc32fast" @@ -1129,9 +1131,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.31.1" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" +checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" dependencies = [ "fallible-iterator", "indexmap", @@ -1344,9 +1346,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.176" +version = "0.2.178" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58f929b4d672ea937a23a1ab494143d968337a5f47e56d0815df1e0890ddf174" +checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091" [[package]] name = "libloading" @@ -1358,6 +1360,12 @@ dependencies = [ "windows-link 0.2.0", ] +[[package]] +name = "libm" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" + [[package]] name = "libredox" version = "0.1.10" @@ -2179,9 +2187,9 @@ dependencies = [ [[package]] name = "regalloc2" -version = "0.12.2" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5216b1837de2149f8bc8e6d5f88a9326b63b8c836ed58ce4a0a29ec736a59734" +checksum = "4e249c660440317032a71ddac302f25f1d5dff387667bcc3978d1f77aa31ac34" dependencies = [ "allocator-api2", "bumpalo", @@ -3322,15 +3330,24 @@ dependencies = [ ] [[package]] -name = "wasmtime-jit-icache-coherence" -version = "33.0.2" +name = "wasmtime-internal-jit-icache-coherence" +version = "39.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7af0e940cb062a45c0b3f01a926f77da5947149e99beb4e3dd9846d5b8f11619" +checksum = "b97ccd36e25390258ce6720add639ffe5a7d81a5c904350aa08f5bbc60433d22" dependencies = [ "anyhow", "cfg-if", "libc", - "windows-sys 0.59.0", + "windows-sys 0.60.2", +] + +[[package]] +name = "wasmtime-internal-math" +version = "39.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd1b856e1bbf0230ab560ba4204e944b141971adc4e6cdf3feb6979c1a7b7953" +dependencies = [ + "libm", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 0919b8a54ad..f707b1ca97b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -34,10 +34,10 @@ capstone = "0.13" cfg-if = "1.0.4" comfy-table = "7.2.1" const_format = "0.2" -cranelift = "0.120.2" -cranelift-jit = "0.120.1" -cranelift-module = "0.120.1" -cranelift-native = "0.120.2" +cranelift = "0.126.1" +cranelift-jit = "0.126.1" +cranelift-module = "0.126.1" +cranelift-native = "0.126.1" ed25519-dalek = "2.2.0" elf = "0.8.0" enum-tag = "0.3.0" diff --git a/durable-storage/src/merkle_layer/tree.rs b/durable-storage/src/merkle_layer/tree.rs index ca206c9ac1c..55efa505082 100644 --- a/durable-storage/src/merkle_layer/tree.rs +++ b/durable-storage/src/merkle_layer/tree.rs @@ -48,7 +48,7 @@ impl Avl { } /// Creates an in order iterator for the nodes in the tree - pub(super) fn iter(&self) -> AvlIterator { + pub(super) fn iter(&self) -> AvlIterator<'_> { match &self.root { None => AvlIterator { stack: vec![], diff --git a/kernels/rust-toolchain.toml b/kernels/rust-toolchain.toml index e1b5c96429c..c96b18eb6a0 100644 --- a/kernels/rust-toolchain.toml +++ b/kernels/rust-toolchain.toml @@ -1,4 +1,4 @@ [toolchain] -channel = "1.88.0" +channel = "1.89.0" components = ["rustfmt", "clippy"] targets = ["riscv64gc-unknown-linux-musl"] diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 7855e6d557c..908d2ecba8c 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,3 +1,3 @@ [toolchain] -channel = "1.88.0" +channel = "1.89.0" components = ["rustfmt", "clippy"] diff --git a/src/riscv/lib/src/jit/builder/sequence.rs b/src/riscv/lib/src/jit/builder/sequence.rs index 5f5dd720e2e..1e1298786bf 100644 --- a/src/riscv/lib/src/jit/builder/sequence.rs +++ b/src/riscv/lib/src/jit/builder/sequence.rs @@ -16,7 +16,6 @@ use cranelift::codegen::Context; use cranelift::codegen::ir::BlockArg; use cranelift::prelude::AbiParam; use cranelift::prelude::Block; -use cranelift::prelude::EntityRef; use cranelift::prelude::FunctionBuilder; use cranelift::prelude::FunctionBuilderContext; use cranelift::prelude::InstBuilder; @@ -49,8 +48,6 @@ use crate::parser::instruction::InstrWidth; use crate::state_context::StateContext; use crate::state_context::projection::MachineCoreProjection; -const STEPS_REMAINING_VAR_ID: usize = 0; - /// Builder for an instruction sequence pub struct SequenceBuilder<'jit, MC: MemoryConfig> { /// Target configuration for the JIT module @@ -151,8 +148,7 @@ impl<'jit, MC: MemoryConfig> SequenceBuilder<'jit, MC> { Pointer::::from_raw(raw_value) }; - let steps_remaining = Variable::new(STEPS_REMAINING_VAR_ID); - builder.declare_var(steps_remaining, I64); + let steps_remaining = builder.declare_var(I64); // Assign the passed in `max_steps` to the `steps_remaining` variable. builder.def_var(steps_remaining, max_steps_param.to_value()); diff --git a/src/riscv/lib/src/jit/state_access/stack.rs b/src/riscv/lib/src/jit/state_access/stack.rs index ff6ca4c015b..81a363802cd 100644 --- a/src/riscv/lib/src/jit/state_access/stack.rs +++ b/src/riscv/lib/src/jit/state_access/stack.rs @@ -74,6 +74,7 @@ pub(crate) trait StackAddressable { kind: StackSlotKind::ExplicitSlot, size: Self::SIZE, align_shift: Self::ALIGN_SHIFT, + key: None, }; } diff --git a/src/riscv/lib/src/program.rs b/src/riscv/lib/src/program.rs index e68779b5cb4..4a63b9f868b 100644 --- a/src/riscv/lib/src/program.rs +++ b/src/riscv/lib/src/program.rs @@ -42,13 +42,13 @@ impl kernel_loader::Memory for Program<'_, MC> { // If there is a chunk before [paddr] then we need to check if that // chunk potentially overlaps with the location we want to write. - if let Some((&prev_paddr, prev_bytes)) = self.segments.range_mut(..paddr).last() { - if (paddr as usize) < (prev_paddr as usize) + prev_bytes.len() { - // If there is an overlap, we simply shrink the existing chunk. - // This eliminates the overlap on the left side given we would - // have overridden that section anyway. - prev_bytes.to_mut().resize((paddr - prev_paddr) as usize, 0); - } + if let Some((&prev_paddr, prev_bytes)) = self.segments.range_mut(..paddr).last() + && (paddr as usize) < (prev_paddr as usize) + prev_bytes.len() + { + // If there is an overlap, we simply shrink the existing chunk. + // This eliminates the overlap on the left side given we would + // have overridden that section anyway. + prev_bytes.to_mut().resize((paddr - prev_paddr) as usize, 0); } // If there is a chunk at or after [paddr] then we need to check if that @@ -80,18 +80,18 @@ impl kernel_loader::Memory for Program<'_, MC> { // This means there either is or isn't a chunk to be written to at the // exact address `paddr` and no overlaps would occur. - if let Some(chunk) = self.segments.get_mut(&paddr) { - if chunk.len() >= bytes.len() { - // There is a chunk at this exact address, and it has space to - // be written to. - chunk.to_mut()[..bytes.len()].copy_from_slice(bytes); - return Ok(()); - } - - // We don't need an else case here because the code below deals with - // overriding the entire chunk already. + if let Some(chunk) = self.segments.get_mut(&paddr) + && chunk.len() >= bytes.len() + { + // There is a chunk at this exact address, and it has space to + // be written to. + chunk.to_mut()[..bytes.len()].copy_from_slice(bytes); + return Ok(()); } + // We don't need an else case here because the code below deals with + // overriding the entire chunk already. + self.segments.insert(paddr, Cow::Owned(bytes.to_owned())); Ok(()) diff --git a/src/riscv/lib/src/state_backend/proof_backend/proof/deserialise_owned.rs b/src/riscv/lib/src/state_backend/proof_backend/proof/deserialise_owned.rs index 567ae7f82df..9da8facbbdc 100644 --- a/src/riscv/lib/src/state_backend/proof_backend/proof/deserialise_owned.rs +++ b/src/riscv/lib/src/state_backend/proof_backend/proof/deserialise_owned.rs @@ -173,14 +173,14 @@ impl<'t> DeserialiserNode for OwnedBranchComb> { } fn done(self, value: T) -> Result<::Suspended> { - if let Partial::Present(branches) = self.node_data { - if !branches.is_empty() { - let length = branches.len(); - return Err(ProofError::BadNumberOfBranches { - expected: 0, - got: length, - }); - } + if let Partial::Present(branches) = self.node_data + && !branches.is_empty() + { + let length = branches.len(); + return Err(ProofError::BadNumberOfBranches { + expected: 0, + got: length, + }); } Ok(OwnedParserComb { diff --git a/tools/sandbox/src/commands/gdb.rs b/tools/sandbox/src/commands/gdb.rs index 355f43f69f8..e99facb49c6 100644 --- a/tools/sandbox/src/commands/gdb.rs +++ b/tools/sandbox/src/commands/gdb.rs @@ -167,13 +167,13 @@ impl Target for RiscvGdb<'_, S> { type Arch = gdbstub_arch::riscv::Riscv64; #[inline(always)] - fn base_ops(&mut self) -> BaseOps { + fn base_ops(&mut self) -> BaseOps<'_, Self::Arch, Self::Error> { BaseOps::SingleThread(self) } // opt-in to support for setting/removing breakpoints #[inline(always)] - fn support_breakpoints(&mut self) -> Option> { + fn support_breakpoints(&mut self) -> Option> { Some(self) } @@ -223,7 +223,7 @@ impl SingleThreadBase for RiscvGdb<'_, S> { } #[inline(always)] - fn support_resume(&mut self) -> Option> { + fn support_resume(&mut self) -> Option> { Some(self) } } @@ -260,7 +260,7 @@ impl Breakpoints for RiscvGdb<'_, S> { // We implement support for Software Breakpoints, in a similar fashion to // the debugger. #[inline(always)] - fn support_sw_breakpoint(&mut self) -> Option> { + fn support_sw_breakpoint(&mut self) -> Option> { Some(self) } }