diff --git a/PKGBUILD b/PKGBUILD index f3414fccf..77239886e 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -2,8 +2,8 @@ # Contributor: Julian Droske pkgname=busybox -pkgver=1.37.0 -pkgrel=15 +pkgver=1.38.0 +pkgrel=1 pkgdesc="Utilities for rescue and embedded systems" arch=(x86_64 aarch64 riscv64 loongarch64) url="https://www.busybox.net" @@ -35,11 +35,10 @@ source=( "mdev-helper-storage-device" "mdev-helper-dev-bus-usb" "acpid.service" - "sha-ni.patch" - "sha256-aarch64-hwaccel.patch::https://github.com/ziyao233/busybox/commit/47c7f6291f10ad4a07f884d6baf22396885ec9a1.patch" + "sha256-aarch64-hwaccel.patch" ) -sha256sums=('3311dff32e746499f4df0d5df04d7eb396382d7e108bb9250e7b519b837043a4' - 'c4fb884a670d2a6ba936f92f4b74de5d2ba2668aefbdcecc99544fd4378524ab' +sha256sums=('34f9ea6ff8636f2c9241153b9114eefa9e65674a45318ae1ef95bb5f31c53bb2' + '6b394e2242f27fa4aa7c199c26c4b1f31837cac8622548287a7344a2ed342699' '204a0fc1dabe7cc02a8a18bdec4637d7ddb6547042c9ee1e5f9b71cd22de2f85' '644321e67516c8e6869dd1f09b9dfc06d6758dec91df0bdea3cb614419a1e0d3' '76b310d897b03efe753969e1b917fe2e3e36beb772e2145e67638af655fad04e' @@ -56,12 +55,10 @@ sha256sums=('3311dff32e746499f4df0d5df04d7eb396382d7e108bb9250e7b519b837043a4' 'f641a4d722dfaeb70e43ee87d8b1ce6ecadc0aec4ee21bdc28bbe4564dd743f4' '32c89049dfcb5de3b2591b1039b25aa8ad83f0af9b6782ef460ed4dde7a8493d' 'c1b9ddd15914bcac1dccc646aaf7b2dcbc51a574eeeff5af92839a5f206c989a' - 'e44e31f3beea7cc4cce72ad93834b9491da35ccce01fe6d16e321692bdeb988e' - 'b0145503b290f160debee4dd2f0dc74d5fcbea8ef804a4c9475b075bbe454624') + '46619fcf3b865adff41607f1c26396f0a012e56a58228d2d64e48aa1b14f5df1') prepare() { # remove_empty_dir: Fix eweOS/bugs/#2 - # sha-ni: Fix missing sha-NI guard _patch_ $pkgname-$pkgver cd "$srcdir/$pkgname-$pkgver" diff --git a/config b/config index 170568a6d..928eaaea9 100644 --- a/config +++ b/config @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit -# Busybox version: 1.37.0 -# Fri Nov 29 15:54:03 2024 +# Busybox version: 1.38.0 +# Mon May 25 15:24:55 2026 # CONFIG_HAVE_DOT_CONFIG=y @@ -27,6 +27,7 @@ CONFIG_PID_FILE_PATH="/run" CONFIG_BUSYBOX=y # CONFIG_FEATURE_SHOW_SCRIPT is not set CONFIG_FEATURE_INSTALLER=y +CONFIG_FEATURE_VERSION=y CONFIG_INSTALL_NO_USR=y CONFIG_FEATURE_SUID=y # CONFIG_FEATURE_SUID_CONFIG is not set @@ -197,6 +198,7 @@ CONFIG_FEATURE_UNZIP_BZIP2=y CONFIG_FEATURE_UNZIP_LZMA=y CONFIG_FEATURE_UNZIP_XZ=y # CONFIG_FEATURE_LZMA_FAST is not set +CONFIG_FEATURE_PATH_TRAVERSAL_PROTECTION=y # # Coreutils @@ -284,11 +286,12 @@ CONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y CONFIG_MD5SUM=y CONFIG_SHA1SUM=y CONFIG_SHA256SUM=y +CONFIG_SHA384SUM=y CONFIG_SHA512SUM=y CONFIG_SHA3SUM=y # -# Common options for md5sum, sha1sum, sha256sum, sha512sum, sha3sum +# Common options for md5sum, sha1sum, sha256sum, ..., sha3sum # CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y CONFIG_MKDIR=y @@ -530,6 +533,7 @@ CONFIG_FEATURE_SHADOWPASSWDS=y # CONFIG_USE_BB_SHADOW is not set CONFIG_USE_BB_CRYPT=y CONFIG_USE_BB_CRYPT_SHA=y +CONFIG_USE_BB_CRYPT_YES=y CONFIG_ADD_SHELL=y CONFIG_REMOVE_SHELL=y CONFIG_ADDGROUP=y @@ -548,13 +552,16 @@ CONFIG_DELGROUP=y CONFIG_FEATURE_DEL_USER_FROM_GROUP=y CONFIG_GETTY=y # CONFIG_LOGIN is not set -CONFIG_LOGIN_SESSION_AS_CHILD=y -CONFIG_LOGIN_SCRIPTS=y -CONFIG_FEATURE_NOLOGIN=y -CONFIG_FEATURE_SECURETTY=y +# CONFIG_LOGIN_SESSION_AS_CHILD is not set +# CONFIG_LOGIN_SCRIPTS is not set +# CONFIG_FEATURE_NOLOGIN is not set +# CONFIG_FEATURE_SECURETTY is not set CONFIG_PASSWD=y CONFIG_FEATURE_PASSWD_WEAK_CHECK=y # CONFIG_SU is not set +# CONFIG_FEATURE_SU_SYSLOG is not set +# CONFIG_FEATURE_SU_CHECKS_SHELLS is not set +# CONFIG_FEATURE_SU_BLANK_PW_NEEDS_SECURE_TTY is not set # CONFIG_SULOGIN is not set CONFIG_VLOCK=y @@ -604,10 +611,12 @@ CONFIG_ACPID=y # CONFIG_FEATURE_ACPID_COMPAT is not set # CONFIG_BLKDISCARD is not set # CONFIG_BLKID is not set +# CONFIG_FEATURE_BLKID_TYPE is not set # CONFIG_BLOCKDEV is not set # CONFIG_CAL is not set # CONFIG_CHRT is not set # CONFIG_DMESG is not set +# CONFIG_FEATURE_DMESG_PRETTY is not set # CONFIG_EJECT is not set # CONFIG_FEATURE_EJECT_SCSI is not set # CONFIG_FALLOCATE is not set @@ -618,6 +627,7 @@ CONFIG_ACPID=y # CONFIG_FDFORMAT is not set # CONFIG_FDISK is not set # CONFIG_FDISK_SUPPORT_LARGE_DISKS is not set +# CONFIG_FEATURE_FDISK_BLKSIZE is not set # CONFIG_FEATURE_FDISK_WRITABLE is not set # CONFIG_FEATURE_AIX_LABEL is not set # CONFIG_FEATURE_SGI_LABEL is not set @@ -633,16 +643,19 @@ CONFIG_ACPID=y # CONFIG_FSFREEZE is not set # CONFIG_FSTRIM is not set # CONFIG_GETOPT is not set +# CONFIG_FEATURE_GETOPT_LONG is not set # CONFIG_HEXDUMP is not set # CONFIG_HD is not set CONFIG_XXD=y # CONFIG_HWCLOCK is not set +# CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS is not set # CONFIG_IONICE is not set # CONFIG_IPCRM is not set # CONFIG_IPCS is not set # CONFIG_LAST is not set -CONFIG_FEATURE_LAST_FANCY=y +# CONFIG_FEATURE_LAST_FANCY is not set # CONFIG_LOSETUP is not set +# CONFIG_LSBLK is not set # CONFIG_LSPCI is not set CONFIG_LSUSB=y CONFIG_MDEV=y @@ -653,6 +666,7 @@ CONFIG_FEATURE_MDEV_EXEC=y CONFIG_FEATURE_MDEV_LOAD_FIRMWARE=y CONFIG_FEATURE_MDEV_DAEMON=y # CONFIG_MESG is not set +# CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP is not set # CONFIG_MKE2FS is not set # CONFIG_MKFS_EXT2 is not set # CONFIG_MKFS_MINIX is not set @@ -661,8 +675,18 @@ CONFIG_FEATURE_MDEV_DAEMON=y # CONFIG_MKDOSFS is not set # CONFIG_MKFS_VFAT is not set # CONFIG_MKSWAP is not set +# CONFIG_FEATURE_MKSWAP_UUID is not set # CONFIG_MORE is not set # CONFIG_MOUNT is not set +# CONFIG_FEATURE_MOUNT_FAKE is not set +# CONFIG_FEATURE_MOUNT_VERBOSE is not set +# CONFIG_FEATURE_MOUNT_HELPERS is not set +# CONFIG_FEATURE_MOUNT_LABEL is not set +# CONFIG_FEATURE_MOUNT_NFS is not set +# CONFIG_FEATURE_MOUNT_CIFS is not set +# CONFIG_FEATURE_MOUNT_FLAGS is not set +# CONFIG_FEATURE_MOUNT_FSTAB is not set +# CONFIG_FEATURE_MOUNT_OTHERTAB is not set # CONFIG_MOUNTPOINT is not set # CONFIG_NOLOGIN is not set # CONFIG_NOLOGIN_DEPENDENCIES is not set @@ -685,51 +709,50 @@ CONFIG_FEATURE_SETPRIV_CAPABILITIES=y CONFIG_FEATURE_SETPRIV_CAPABILITY_NAMES=y # CONFIG_SETSID is not set # CONFIG_SWAPON is not set +# CONFIG_FEATURE_SWAPON_DISCARD is not set +# CONFIG_FEATURE_SWAPON_PRI is not set # CONFIG_SWAPOFF is not set +# CONFIG_FEATURE_SWAPONOFF_LABEL is not set # CONFIG_SWITCH_ROOT is not set # CONFIG_TASKSET is not set +# CONFIG_FEATURE_TASKSET_FANCY is not set +# CONFIG_FEATURE_TASKSET_CPULIST is not set CONFIG_UEVENT=y # CONFIG_UMOUNT is not set +# CONFIG_FEATURE_UMOUNT_ALL is not set # CONFIG_UNSHARE is not set +# CONFIG_UUIDGEN is not set # CONFIG_WALL is not set - -# -# Common options for mount/umount -# -CONFIG_FEATURE_MOUNT_LOOP=y -CONFIG_FEATURE_MOUNT_LOOP_CREATE=y +# CONFIG_FEATURE_MOUNT_LOOP is not set +# CONFIG_FEATURE_MOUNT_LOOP_CREATE is not set # CONFIG_FEATURE_MTAB_SUPPORT is not set -CONFIG_VOLUMEID=y - -# -# Filesystem/Volume identification -# -CONFIG_FEATURE_VOLUMEID_BCACHE=y -CONFIG_FEATURE_VOLUMEID_BTRFS=y +# CONFIG_VOLUMEID is not set +# CONFIG_FEATURE_VOLUMEID_BCACHE is not set +# CONFIG_FEATURE_VOLUMEID_BTRFS is not set # CONFIG_FEATURE_VOLUMEID_CRAMFS is not set # CONFIG_FEATURE_VOLUMEID_EROFS is not set -CONFIG_FEATURE_VOLUMEID_EXFAT=y -CONFIG_FEATURE_VOLUMEID_EXT=y +# CONFIG_FEATURE_VOLUMEID_EXFAT is not set +# CONFIG_FEATURE_VOLUMEID_EXT is not set # CONFIG_FEATURE_VOLUMEID_F2FS is not set -CONFIG_FEATURE_VOLUMEID_FAT=y +# CONFIG_FEATURE_VOLUMEID_FAT is not set # CONFIG_FEATURE_VOLUMEID_HFS is not set -CONFIG_FEATURE_VOLUMEID_ISO9660=y +# CONFIG_FEATURE_VOLUMEID_ISO9660 is not set # CONFIG_FEATURE_VOLUMEID_JFS is not set # CONFIG_FEATURE_VOLUMEID_LFS is not set -CONFIG_FEATURE_VOLUMEID_LINUXRAID=y -CONFIG_FEATURE_VOLUMEID_LINUXSWAP=y -CONFIG_FEATURE_VOLUMEID_LUKS=y +# CONFIG_FEATURE_VOLUMEID_LINUXRAID is not set +# CONFIG_FEATURE_VOLUMEID_LINUXSWAP is not set +# CONFIG_FEATURE_VOLUMEID_LUKS is not set # CONFIG_FEATURE_VOLUMEID_MINIX is not set # CONFIG_FEATURE_VOLUMEID_NILFS is not set # CONFIG_FEATURE_VOLUMEID_NTFS is not set # CONFIG_FEATURE_VOLUMEID_OCFS2 is not set # CONFIG_FEATURE_VOLUMEID_REISERFS is not set -CONFIG_FEATURE_VOLUMEID_ROMFS=y +# CONFIG_FEATURE_VOLUMEID_ROMFS is not set # CONFIG_FEATURE_VOLUMEID_SQUASHFS is not set # CONFIG_FEATURE_VOLUMEID_SYSV is not set # CONFIG_FEATURE_VOLUMEID_UBIFS is not set # CONFIG_FEATURE_VOLUMEID_UDF is not set -CONFIG_FEATURE_VOLUMEID_XFS=y +# CONFIG_FEATURE_VOLUMEID_XFS is not set # # Miscellaneous Utilities @@ -948,6 +971,7 @@ CONFIG_FEATURE_FANCY_PING=y CONFIG_ROUTE=y # CONFIG_SLATTACH is not set CONFIG_SSL_CLIENT=y +CONFIG_SSL_SERVER=y # CONFIG_TC is not set # CONFIG_FEATURE_TC_INGRESS is not set # CONFIG_TCPSVD is not set @@ -957,6 +981,7 @@ CONFIG_FEATURE_TELNET_TTYPE=y CONFIG_FEATURE_TELNET_AUTOLOGIN=y CONFIG_FEATURE_TELNET_WIDTH=y # CONFIG_TELNETD is not set +# CONFIG_FEATURE_TELNETD_SELFTEST_DEBUG is not set # CONFIG_FEATURE_TELNETD_STANDALONE is not set CONFIG_FEATURE_TELNETD_PORT_DEFAULT=0 # CONFIG_FEATURE_TELNETD_INETD_WAIT is not set @@ -1075,6 +1100,7 @@ CONFIG_FEATURE_TOP_SMP_PROCESS=y CONFIG_FEATURE_TOPMEM=y CONFIG_UPTIME=y CONFIG_FEATURE_UPTIME_UTMP_SUPPORT=y +CONFIG_VMSTAT=y CONFIG_WATCH=y # @@ -1138,6 +1164,7 @@ CONFIG_ASH_CMDCMD=y # CONFIG_CTTYHACK is not set # CONFIG_HUSH is not set # CONFIG_SHELL_HUSH is not set +# CONFIG_HUSH_NEED_FOR_SPEED is not set # CONFIG_HUSH_BASH_COMPAT is not set # CONFIG_HUSH_BRACE_EXPANSION is not set # CONFIG_HUSH_BASH_SOURCE_CURDIR is not set @@ -1149,7 +1176,9 @@ CONFIG_ASH_CMDCMD=y # CONFIG_HUSH_IF is not set # CONFIG_HUSH_LOOPS is not set # CONFIG_HUSH_CASE is not set +# CONFIG_HUSH_ALIAS is not set # CONFIG_HUSH_FUNCTIONS is not set +# CONFIG_HUSH_FUNCTION_KEYWORD is not set # CONFIG_HUSH_LOCAL is not set # CONFIG_HUSH_RANDOM_SUPPORT is not set # CONFIG_HUSH_MODE_X is not set diff --git a/sha-ni.patch b/sha-ni.patch deleted file mode 100644 index add1d6115..000000000 --- a/sha-ni.patch +++ /dev/null @@ -1,43 +0,0 @@ -The ENABLE_SHA1_HWACCEL Kconfig symbol is meant to be archicture -agnostic, so can be enabled regardless of whether your build -architecture provides hardware acceleration or not. At the moment only -x86 implements this, so every piece of optimised code should be guarded -by both ENABLE_SHA1_HWACCEL and (__x86_64__ || __i386__). This is missing -at one place, so compiling for arm64 breaks when ENABLE_SHA1_HWACCEL is -enabled: -================================ -libbb/hash_md5_sha.c: In function ‘sha1_end’: -libbb/hash_md5_sha.c:1316:28: error: ‘sha1_process_block64_shaNI’ undeclared (first use in this function); did you mean ‘sha1_process_block64’? - 1316 | || ctx->process_block == sha1_process_block64_shaNI - | ^~~~~~~~~~~~~~~~~~~~~~~~~~ - | sha1_process_block64 -libbb/hash_md5_sha.c:1316:28: note: each undeclared identifier is reported only once for each function it appears in -make[1]: *** [scripts/Makefile.build:197: libbb/hash_md5_sha.o] Error 1 -make: *** [Makefile:744: libbb] Error 2 -================================ - -Add the missing guards around the call to sha1_process_block64_shaNI to -fix the build on other architectures with ENABLE_SHA1_HWACCEL enabled. - -Change-Id: I40bba388422625f4230abf15a5de23e1fdc654fc -Signed-off-by: Andre Przywara ---- - libbb/hash_md5_sha.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/libbb/hash_md5_sha.c b/libbb/hash_md5_sha.c -index 57a801459..75a61c32c 100644 ---- a/libbb/hash_md5_sha.c -+++ b/libbb/hash_md5_sha.c -@@ -1313,7 +1313,9 @@ unsigned FAST_FUNC sha1_end(sha1_ctx_t *ctx, void *resbuf) - hash_size = 8; - if (ctx->process_block == sha1_process_block64 - #if ENABLE_SHA1_HWACCEL -+# if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) - || ctx->process_block == sha1_process_block64_shaNI -+# endif - #endif - ) { - hash_size = 5; --- -2.25.1 diff --git a/sha256-aarch64-hwaccel.patch b/sha256-aarch64-hwaccel.patch index 480607bb2..d5dddc54d 100644 --- a/sha256-aarch64-hwaccel.patch +++ b/sha256-aarch64-hwaccel.patch @@ -1,16 +1,15 @@ -From 47c7f6291f10ad4a07f884d6baf22396885ec9a1 Mon Sep 17 00:00:00 2001 -From: Yao Zi -Date: Tue, 4 Feb 2025 16:43:01 +0000 +From ebd8cc322e3546cd9bd34a1f2399640f4cdd1f61 Mon Sep 17 00:00:00 2001 +From: JulianDroske +Date: Tue, 26 May 2026 02:58:42 +1000 Subject: [PATCH] libbb/sha256: support optional hardware acceleration -This adapts the SHA-256 implementation in Linux kernel, making use of -Armv8-a optionally supported crypto extension. We check hwcap and only -enable hardware acceleration if it's supported. +This patch has been edited to work on busybox 1.38.0. -On Cortex-A73, a 424% speedup is achieved on a large file, -compared to the software implementation. +Original patch: +https://github.com/ziyao233/busybox/commit/47c7f62.patch -Signed-off-by: Yao Zi +Co-authored-by: Yao Zi +Signed-off-by: Julian Droske --- libbb/Kbuild.src | 1 + libbb/hash_md5_sha.c | 15 +++- @@ -19,7 +18,7 @@ Signed-off-by: Yao Zi create mode 100644 libbb/hash_sha256_hwaccel_aarch64.S diff --git a/libbb/Kbuild.src b/libbb/Kbuild.src -index cb8d2c2ec..81b6d1577 100644 +index cb8d2c2..81b6d15 100644 --- a/libbb/Kbuild.src +++ b/libbb/Kbuild.src @@ -62,6 +62,7 @@ lib-y += hash_sha1_hwaccel_x86-64.o @@ -31,7 +30,7 @@ index cb8d2c2ec..81b6d1577 100644 #lib-y += hash_md5prime.o lib-y += messages.o diff --git a/libbb/hash_md5_sha.c b/libbb/hash_md5_sha.c -index 75a61c32c..e032e9942 100644 +index 9ebda23..c8478c6 100644 --- a/libbb/hash_md5_sha.c +++ b/libbb/hash_md5_sha.c @@ -8,12 +8,18 @@ @@ -45,7 +44,7 @@ index 75a61c32c..e032e9942 100644 #define STR1(s) #s #define STR(s) STR1(s) - #define NEED_SHA512 (ENABLE_SHA512SUM || ENABLE_USE_BB_CRYPT_SHA) + #define NEED_SHA512 (ENABLE_SHA512SUM || ENABLE_SHA384SUM || ENABLE_USE_BB_CRYPT_SHA) #if ENABLE_SHA1_HWACCEL || ENABLE_SHA256_HWACCEL +void FAST_FUNC sha1_process_block64_shaNI(sha1_ctx_t *ctx); @@ -67,7 +66,7 @@ index 75a61c32c..e032e9942 100644 struct ASM_expects_80_shaNI { char t[1 - 2*(offsetof(sha256_ctx_t, hash) != 80)]; }; # endif # endif -@@ -1251,6 +1255,11 @@ void FAST_FUNC sha256_begin(sha256_ctx_t *ctx) +@@ -1260,6 +1264,11 @@ void FAST_FUNC sha256_begin(sha256_ctx_t *ctx) if (ni > 0) ctx->process_block = sha256_process_block64_shaNI; } @@ -81,7 +80,7 @@ index 75a61c32c..e032e9942 100644 } diff --git a/libbb/hash_sha256_hwaccel_aarch64.S b/libbb/hash_sha256_hwaccel_aarch64.S new file mode 100644 -index 000000000..5b7530d8a +index 0000000..5b7530d --- /dev/null +++ b/libbb/hash_sha256_hwaccel_aarch64.S @@ -0,0 +1,134 @@ @@ -219,3 +218,6 @@ index 000000000..5b7530d8a + st1 {dgav.4s, dgbv.4s}, [x1] + ret +#endif +-- +2.52.0 +