From 8f0ae264daef809313719ec17440987d15844863 Mon Sep 17 00:00:00 2001 From: Artyom Pavlov Date: Wed, 5 Aug 2026 15:32:32 +0300 Subject: [PATCH 1/5] keccak: disable `aarch64_sha3` backend on targets with softfloat ABI --- keccak/src/lib.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/keccak/src/lib.rs b/keccak/src/lib.rs index 349979e..4c6b802 100644 --- a/keccak/src/lib.rs +++ b/keccak/src/lib.rs @@ -28,7 +28,7 @@ pub use types::*; /// Struct which handles switching between available backends. #[derive(Debug, Copy, Clone)] pub struct Keccak { - #[cfg(target_arch = "aarch64")] + #[cfg(all(target_arch = "aarch64", not(target_abi = "softfloat")))] armv8_sha3: armv8_sha3_intrinsics::InitToken, } @@ -36,7 +36,7 @@ impl Default for Keccak { #[inline] fn default() -> Self { Self { - #[cfg(target_arch = "aarch64")] + #[cfg(all(target_arch = "aarch64", not(target_abi = "softfloat")))] armv8_sha3: armv8_sha3_intrinsics::init(), } } @@ -65,6 +65,8 @@ impl Keccak { } else if #[cfg(keccak_backend = "aarch64_sha3")] { #[cfg(not(target_arch = "aarch64"))] compile_error!("aarch64_sha3 backend can be used only on AArch64 targets!"); + #[cfg(target_abi = "softfloat")] + compile_error!("aarch64_sha3 backend can not be used with softfloat ABI!"); #[cfg(not(target_feature = "sha3"))] compile_error!("aarch64_sha3 backend requires sha3 target feature to be enabled!"); @@ -74,7 +76,7 @@ impl Keccak { } ); - #[cfg(target_arch = "aarch64")] + #[cfg(all(target_arch = "aarch64", not(target_abi = "softfloat")))] if self.armv8_sha3.get() { #[target_feature(enable = "sha3")] unsafe fn aarch64_sha3_inner(f: impl BackendClosure) { From 853b5781396f73e2e2a1d98ca4cd3f3bb5054503 Mon Sep 17 00:00:00 2001 From: Artyom Pavlov Date: Wed, 5 Aug 2026 15:35:08 +0300 Subject: [PATCH 2/5] Fix cfg in backends.rs --- keccak/src/backends.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keccak/src/backends.rs b/keccak/src/backends.rs index 02e050b..c148ab8 100644 --- a/keccak/src/backends.rs +++ b/keccak/src/backends.rs @@ -4,7 +4,7 @@ use crate::types::*; #[cfg(feature = "parallel")] use hybrid_array::ArraySize; -#[cfg(target_arch = "aarch64")] +#[cfg(all(target_arch = "aarch64", not(target_abi = "softfloat")))] pub(crate) mod aarch64_sha3; #[cfg(any( keccak_backend = "simd128", From 1ae1311f93daffb4abcc26669595880dba6f94eb Mon Sep 17 00:00:00 2001 From: Artyom Pavlov Date: Wed, 5 Aug 2026 15:37:57 +0300 Subject: [PATCH 3/5] add TODO comment --- keccak/src/lib.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/keccak/src/lib.rs b/keccak/src/lib.rs index 4c6b802..e4a9715 100644 --- a/keccak/src/lib.rs +++ b/keccak/src/lib.rs @@ -28,6 +28,8 @@ pub use types::*; /// Struct which handles switching between available backends. #[derive(Debug, Copy, Clone)] pub struct Keccak { + // TODO: remove `not(target_abi = "softfloat")` after the compiler is improved, see: + // https://github.com/rust-lang/rust/issues/160301 #[cfg(all(target_arch = "aarch64", not(target_abi = "softfloat")))] armv8_sha3: armv8_sha3_intrinsics::InitToken, } From a7dd8be96b46a205abe9b5ceba2cee074218824b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D1=80=D1=82=D1=91=D0=BC=20=D0=9F=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=BE=D0=B2=20=5BArtyom=20Pavlov=5D?= Date: Wed, 5 Aug 2026 15:41:10 +0300 Subject: [PATCH 4/5] build for `aarch64-unknown-none-softfloat` --- .github/workflows/keccak.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/keccak.yml b/.github/workflows/keccak.yml index 73f6068..266fa13 100644 --- a/.github/workflows/keccak.yml +++ b/.github/workflows/keccak.yml @@ -32,6 +32,7 @@ jobs: - ${{needs.set-msrv.outputs.msrv}} - stable target: + - aarch64-unknown-none-softfloat - thumbv7em-none-eabi - wasm32-unknown-unknown steps: From ea692e492290aa19fa03c3777d4455fc82448092 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D1=80=D1=82=D1=91=D0=BC=20=D0=9F=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=BE=D0=B2=20=5BArtyom=20Pavlov=5D?= Date: Wed, 5 Aug 2026 15:46:45 +0300 Subject: [PATCH 5/5] Add changelog entry --- keccak/CHANGELOG.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/keccak/CHANGELOG.md b/keccak/CHANGELOG.md index 2839b51..5ed7fb7 100644 --- a/keccak/CHANGELOG.md +++ b/keccak/CHANGELOG.md @@ -5,8 +5,13 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## 0.2.0 (2026-03-16) +## 0.2.1 (UNRELEASED) +### Fixed +- Warning on softfloat AArch64 targets by not enabling `aarch64_sha3` backend on them ([#126]) +[#126]: https://github.com/RustCrypto/sponges/pull/126 + +## 0.2.0 (2026-03-16) ### Added - `keccak_backend` configuration parameter with `aarch64_sha3`, `simd128`, `simd256`, `simd512`, and `soft` values ([#105], [#106], [#113])