diff --git a/btrfs-progs/03f41ac508d2c47fdfef08f0fd27ab154f7dcfd8.patch b/btrfs-progs/03f41ac508d2c47fdfef08f0fd27ab154f7dcfd8.patch new file mode 100644 index 0000000..e3a6465 --- /dev/null +++ b/btrfs-progs/03f41ac508d2c47fdfef08f0fd27ab154f7dcfd8.patch @@ -0,0 +1,150 @@ +From 03f41ac508d2c47fdfef08f0fd27ab154f7dcfd8 Mon Sep 17 00:00:00 2001 +From: David Sterba +Date: Tue, 12 Sep 2023 23:32:38 +0200 +Subject: [PATCH] btrfs-progs: detect PCLMUL CPU support for accelerated crc32c + +The accelerated crc32c needs to check for two CPU features, the crc32c +instructions is in SSE 4.2 and 'pclmulqdq' is a separate. There's still +old hardware used that does not have the PCLMUL instructions. Detect it +and make it the condition. + +The pclmul is not supported on old compilers so also add a +configure-time detection and leave the SSE 4.2 only implementation as +the accelerated one if possible. + +Issue: #676 +Signed-off-by: David Sterba +--- + common/cpu-utils.c | 5 +++++ + common/cpu-utils.h | 1 + + config/ax_gcc_builtin.m4 | 1 + + configure.ac | 1 + + crypto/crc32c.c | 9 +++------ + crypto/hash-speedtest.c | 2 +- + crypto/hash-vectest.c | 2 +- + 7 files changed, 13 insertions(+), 8 deletions(-) + +diff --git a/common/cpu-utils.c b/common/cpu-utils.c +index 3527a3cb01..568e3af55a 100644 +--- a/common/cpu-utils.c ++++ b/common/cpu-utils.c +@@ -54,6 +54,7 @@ void cpu_print_flags(void) { + FLAG(SSE2); + FLAG(SSSE3); + FLAG(SSE41); ++ FLAG(PCLMUL); + FLAG(SSE42); + FLAG(SHA); + FLAG(AVX); +@@ -76,6 +77,10 @@ void cpu_detect_flags(void) + __cpu_flags |= CPU_FLAG_SSSE3; + if (__builtin_cpu_supports("sse4.1")) + __cpu_flags |= CPU_FLAG_SSE41; ++#if HAVE___BUILTIN_CPU_SUPPORTS__PCLMUL ++ if (__builtin_cpu_supports("pclmul")) ++ __cpu_flags |= CPU_FLAG_PCLMUL; ++#endif + if (__builtin_cpu_supports("sse4.2")) + __cpu_flags |= CPU_FLAG_SSE42; + if (__builtin_cpu_supports("avx")) +diff --git a/common/cpu-utils.h b/common/cpu-utils.h +index e4a8641b05..014788f422 100644 +--- a/common/cpu-utils.h ++++ b/common/cpu-utils.h +@@ -33,6 +33,7 @@ enum cpu_feature { + ENUM_CPU_BIT(CPU_FLAG_SSE2), + ENUM_CPU_BIT(CPU_FLAG_SSSE3), + ENUM_CPU_BIT(CPU_FLAG_SSE41), ++ ENUM_CPU_BIT(CPU_FLAG_PCLMUL), + ENUM_CPU_BIT(CPU_FLAG_SSE42), + ENUM_CPU_BIT(CPU_FLAG_SHA), + ENUM_CPU_BIT(CPU_FLAG_AVX), +diff --git a/config/ax_gcc_builtin.m4 b/config/ax_gcc_builtin.m4 +index c89f89ec3d..224e824c1d 100644 +--- a/config/ax_gcc_builtin.m4 ++++ b/config/ax_gcc_builtin.m4 +@@ -124,6 +124,7 @@ AC_DEFUN([AX_GCC_BUILTIN], [ + [__builtin_cpu_init], [$1()], + [__builtin_cpu_is], [$1("intel")], + [__builtin_cpu_supports], [$1("sse")], ++ [__builtin_cpu_supports__pclmul], [__builtin_cpu_supports("pclmul")], + [__builtin_ctz], [$1(0)], + [__builtin_ctzl], [$1(0)], + [__builtin_ctzll], [$1(0)], +diff --git a/configure.ac b/configure.ac +index 1ef5f83cfe..1850048bbb 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -86,6 +86,7 @@ AC_SUBST([HAVE_GLIBC]) + AX_GCC_BUILTIN([__builtin_add_overflow]) + AX_GCC_BUILTIN([__builtin_sub_overflow]) + AX_GCC_BUILTIN([__builtin_mul_overflow]) ++AX_GCC_BUILTIN([__builtin_cpu_supports__pclmul]) + + AC_CHECK_HEADERS([linux/perf_event.h]) + AC_CHECK_HEADERS([linux/hw_breakpoint.h]) +diff --git a/crypto/crc32c.c b/crypto/crc32c.c +index 23cbb1a63d..0d540ef658 100644 +--- a/crypto/crc32c.c ++++ b/crypto/crc32c.c +@@ -25,7 +25,7 @@ static unsigned int crc32c_pcl(uint32_t crc, unsigned char const *data, uint32_t + return crc_pcl(data, len, crc); + } + +-#else ++#endif + + /* + * Based on a posting to lkml by Austin Zhang +@@ -86,8 +86,6 @@ static uint32_t crc32c_intel(uint32_t crc, unsigned char const *data, uint32_t l + return crc; + } + +-#endif +- + void crc32c_init_accel(void) + { + /* +@@ -96,14 +94,13 @@ void crc32c_init_accel(void) + */ + if (0) { + #ifdef __GLIBC__ +- } else if (cpu_has_feature(CPU_FLAG_SSE42)) { ++ } else if (cpu_has_feature(CPU_FLAG_PCLMUL)) { + /* printf("CRC32C: pcl\n"); */ + crc_function = crc32c_pcl; +-#else ++#endif + } else if (cpu_has_feature(CPU_FLAG_SSE42)) { + /* printf("CRC32c: intel\n"); */ + crc_function = crc32c_intel; +-#endif + } else { + /* printf("CRC32c: fallback\n"); */ + crc_function = __crc32c_le; +diff --git a/crypto/hash-speedtest.c b/crypto/hash-speedtest.c +index 2b02f6ae7f..88f9c9b17b 100644 +--- a/crypto/hash-speedtest.c ++++ b/crypto/hash-speedtest.c +@@ -190,7 +190,7 @@ int main(int argc, char **argv) { + { .name = "CRC32C-ref", .digest = hash_crc32c, .digest_size = 4, + .cpu_flag = CPU_FLAG_NONE }, + { .name = "CRC32C-NI", .digest = hash_crc32c, .digest_size = 4, +- .cpu_flag = CPU_FLAG_SSE42 }, ++ .cpu_flag = CPU_FLAG_PCLMUL }, + { .name = "XXHASH", .digest = hash_xxhash, .digest_size = 8 }, + { .name = "SHA256-ref", .digest = hash_sha256, .digest_size = 32, + .cpu_flag = CPU_FLAG_NONE, .backend = CRYPTOPROVIDER_BUILTIN + 1 }, +diff --git a/crypto/hash-vectest.c b/crypto/hash-vectest.c +index 2a00c02981..07a830fb59 100644 +--- a/crypto/hash-vectest.c ++++ b/crypto/hash-vectest.c +@@ -442,7 +442,7 @@ static const struct hash_testspec test_spec[] = { + .digest_size = 4, + .testvec = crc32c_tv, + .count = ARRAY_SIZE(crc32c_tv), +- .cpu_flag = CPU_FLAG_SSE42, ++ .cpu_flag = CPU_FLAG_PCLMUL, + .hash = hash_crc32c + }, { + .name = "XXHASH", diff --git a/btrfs-progs/839b2d587da9d691c2f2e7cdb5301eed23781d1d.patch b/btrfs-progs/839b2d587da9d691c2f2e7cdb5301eed23781d1d.patch new file mode 100644 index 0000000..307d167 --- /dev/null +++ b/btrfs-progs/839b2d587da9d691c2f2e7cdb5301eed23781d1d.patch @@ -0,0 +1,39 @@ +From 839b2d587da9d691c2f2e7cdb5301eed23781d1d Mon Sep 17 00:00:00 2001 +From: Ariadne Conill +Date: Tue, 5 Sep 2023 10:37:09 -0700 +Subject: [PATCH] btrfs-progs: crypto: fix readonly relocation of the jumptable + +Without this, the btrfs programs fail to link when build with -Wl,-z,relro, +due to the jumptable containing relocations. + +Pull-request: #675 +Signed-off-by: Ariadne Conill +Signed-off-by: David Sterba +--- + crypto/crc32c-pcl-intel-asm_64.S | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/crypto/crc32c-pcl-intel-asm_64.S b/crypto/crc32c-pcl-intel-asm_64.S +index 102566e51..5fab0e09f 100644 +--- a/crypto/crc32c-pcl-intel-asm_64.S ++++ b/crypto/crc32c-pcl-intel-asm_64.S +@@ -321,10 +321,10 @@ LABEL less_than_ %j # less_than_j: Length should be in + .size crc_pcl, .-crc_pcl + ###SYM_FUNC_END(crc_pcl) + +-.section .rodata, "a", @progbits + ################################################################ + ## jump table Table is 129 entries x 2 bytes each + ################################################################ ++.data + .align 4 + jump_table: + i=0 +@@ -340,6 +340,7 @@ JMPTBL_ENTRY %i + ## PCLMULQDQ tables + ## Table is 128 entries x 2 words (8 bytes) each + ################################################################ ++.section .rodata, "a", @progbits + .align 8 + K_table: + .long 0x493c7d27, 0x00000001 diff --git a/btrfs-progs/PKGBUILD b/btrfs-progs/PKGBUILD index d9bb32f..b806064 100644 --- a/btrfs-progs/PKGBUILD +++ b/btrfs-progs/PKGBUILD @@ -7,7 +7,7 @@ pkgname=btrfs-progs pkgver=6.5 -pkgrel=01 +pkgrel=02 pkgdesc='Btrfs filesystem utilities w/o systemd' makedepends=('git' 'asciidoc' 'xmlto' 'python' 'python-setuptools' 'e2fsprogs' 'reiserfsprogs' 'python-sphinx') depends=('glibc' 'util-linux-libs' 'lzo' 'zlib' 'zstd' 'libgcrypt') @@ -21,6 +21,8 @@ provides=('btrfs-progs-unstable') #options=(!staticlibs debug) ## uncomment this to have the debug pkg produced options=(!staticlibs) source=("https://www.kernel.org/pub/linux/kernel/people/kdave/btrfs-progs/btrfs-progs-v$pkgver.tar."{xz,sign} + "https://github.com/kdave/btrfs-progs/commit/839b2d587da9d691c2f2e7cdb5301eed23781d1d.patch" + "https://github.com/kdave/btrfs-progs/commit/03f41ac508d2c47fdfef08f0fd27ab154f7dcfd8.patch" 'initcpio-install-btrfs' 'initcpio-hook-btrfs') install=btrfs-progs.install @@ -72,7 +74,10 @@ validpgpkeys=('F2B41200C54EFB30380C1756C565D5F9D76D583B') sha256sums=(8f507a0cdf6a8b372d862dbe4943fe84c66dcb2088e3cfde2cfb3b176eac1c1c # btrfs-progs-v6.5.tar.xz 72e3f8f001d494ae9beb4db8289b862da71c7c6e0bee0924a8e2dcab6680ce74 # btrfs-progs-v6.5.tar.sign + 846db4fb24c23b570aab42924830222a6670f92505d1b7570e5c175301b59d00 # 839b2d587da9d691c2f2e7cdb5301eed23781d1d.patch + 426a81d82e7f5af6fd8e4f672fbbda850643a8fb6781f05ee6b2fcccb007efc9 # 03f41ac508d2c47fdfef08f0fd27ab154f7dcfd8.patch bbe60b35d1b1e2efc1308a8f54f1fdc6808240a81c5f5b4d75321b7ee86e41f4 # initcpio-install-btrfs 35efeee8590d6d60c711ae9cdc918e4841ab61d10cb02359e65e36ebff95ffc5) # initcpio-hook-btrfs -## bced6995619aacec49b14a501b7c9e851e8bf2103184da643bff9874d6b28e17 btrfs-progs-6.5-01-x86_64.pkg.tar.lz +## ef69c0b20a3aa65d778db517208099854477340ea89a471a2db1ac41cdfd955a btrfs-progs-6.5-02-x86_64.pkg.tar.lz + diff --git a/btrfs-progs/PKGBUILD-arch b/btrfs-progs/PKGBUILD-arch index e56f607..7dfde95 100644 --- a/btrfs-progs/PKGBUILD-arch +++ b/btrfs-progs/PKGBUILD-arch @@ -4,7 +4,7 @@ pkgname=btrfs-progs pkgver=6.5 -pkgrel=1 +pkgrel=2 pkgdesc='Btrfs filesystem utilities' arch=('x86_64') makedepends=('git' 'asciidoc' 'xmlto' 'systemd' 'python' 'python-setuptools' 'e2fsprogs' 'reiserfsprogs' 'python-sphinx') @@ -19,6 +19,8 @@ provides=('btrfs-progs-unstable') license=('GPL2') validpgpkeys=('F2B41200C54EFB30380C1756C565D5F9D76D583B') source=("https://www.kernel.org/pub/linux/kernel/people/kdave/btrfs-progs/btrfs-progs-v$pkgver.tar."{sign,xz} + https://github.com/kdave/btrfs-progs/commit/839b2d587da9d691c2f2e7cdb5301eed23781d1d.patch + https://github.com/kdave/btrfs-progs/commit/03f41ac508d2c47fdfef08f0fd27ab154f7dcfd8.patch 'initcpio-install-btrfs' 'initcpio-hook-btrfs' 'btrfs-scrub@.service' @@ -75,3 +77,11 @@ package() { } # vim:set ts=2 sw=2 ft=sh et: +sha256sums=('SKIP' + '8f507a0cdf6a8b372d862dbe4943fe84c66dcb2088e3cfde2cfb3b176eac1c1c' + '846db4fb24c23b570aab42924830222a6670f92505d1b7570e5c175301b59d00' + '426a81d82e7f5af6fd8e4f672fbbda850643a8fb6781f05ee6b2fcccb007efc9' + 'bbe60b35d1b1e2efc1308a8f54f1fdc6808240a81c5f5b4d75321b7ee86e41f4' + '35efeee8590d6d60c711ae9cdc918e4841ab61d10cb02359e65e36ebff95ffc5' + 'eaa7af92d28bfa8940bb551560fd7be777f9f175292eaa72b5f6ef00fb240252' + '9a0b6cc23f7bd97b83b6c38dd2b4e4373fead8bd3ccfb82a47c72971e9d6f8ad') diff --git a/btrfs-progs/time b/btrfs-progs/time index ba3702c..8cb4d7f 100644 --- a/btrfs-progs/time +++ b/btrfs-progs/time @@ -1,6 +1,6 @@ -real 0m42.561s -user 0m39.857s -sys 0m3.066s +real 0m57.023s +user 0m51.954s +sys 0m5.615s diff --git a/curl/PKGBUILD b/curl/PKGBUILD index 8e49dd4..2c80bb6 100644 --- a/curl/PKGBUILD +++ b/curl/PKGBUILD @@ -7,8 +7,8 @@ pkgbase=curl pkgname=(curl libcurl-compat libcurl-gnutls) -_tag='51ca9c12f959b7e97c1e67d0bebb33aa0d1f28b2' # git rev-parse v${_tag_name} -_tag_name='8_2_1' +_tag='8c537ee308eca91d0a240315b24025048ae54e61' # git rev-parse v${_tag_name} +_tag_name='8_3_0' pkgver="${_tag_name//_/.}" pkgrel=01 pkgdesc='command line tool and library for transferring data with URLs - w/o ipv6 & zstd' @@ -184,7 +184,8 @@ validpgpkeys=('27EDEAF22F3ABCEB50DB9A125CC908FDB71E12C2') # Daniel Stenberg sha256sums=(SKIP) -## fc3607344c33dc79bcb6e4ca2c834be79958225a196a6acd9479dae4d8d8ee02 curl-8.2.1-01-x86_64.pkg.tar.lz -## 8771cff3a886c27358c1650946bd9c7a9fea4410992ccabada052030a82bbbec libcurl-compat-8.2.1-01-x86_64.pkg.tar.lz -## 57b3a264c6f634896dabd622cca6c1233a2268ac11f4a55a416dc0cd0bbeb73e libcurl-gnutls-8.2.1-01-x86_64.pkg.tar.lz + +## f79fc9758652a19180ad6adc2b2bc94ccaa5403d90b7f9da0ddb4d10e6cb88da curl-8.3.0-01-x86_64.pkg.tar.lz +## c733628675c75c5233cd3a25cdcb2777292159790315d46b3235a2f234dff297 libcurl-compat-8.3.0-01-x86_64.pkg.tar.lz +## 2cdbd82eb6094bae1e2194ca07fc75fdb09571adafcfd11d6b3aab3bde6d8423 libcurl-gnutls-8.3.0-01-x86_64.pkg.tar.lz diff --git a/curl/PKGBUILD-arch b/curl/PKGBUILD-arch index b45aa82..5acf8cf 100644 --- a/curl/PKGBUILD-arch +++ b/curl/PKGBUILD-arch @@ -6,8 +6,8 @@ pkgbase=curl pkgname=(curl libcurl-compat libcurl-gnutls) -_tag='51ca9c12f959b7e97c1e67d0bebb33aa0d1f28b2' # git rev-parse v${_tag_name} -_tag_name='8_2_1' +_tag='8c537ee308eca91d0a240315b24025048ae54e61' # git rev-parse v${_tag_name} +_tag_name='8_3_0' pkgver="${_tag_name//_/.}" pkgrel=1 pkgdesc='command line tool and library for transferring data with URLs' diff --git a/groff/PKGBUILD b/groff/PKGBUILD index e86b5de..53d251a 100644 --- a/groff/PKGBUILD +++ b/groff/PKGBUILD @@ -7,7 +7,7 @@ pkgname=groff pkgver=1.23.0 -pkgrel=04 +pkgrel=05 pkgdesc='GNU troff text-formatting system' url='https://www.gnu.org/software/groff/groff.html' groups=( jobbot ) @@ -74,5 +74,4 @@ sha256sums=(6b9757f592b7518b4902eb6af7e54570bdccba37a871fddb2d30ae3863511c13 # 489bb32bbd1c7bced33bf187611219527914ae46ce05238fe80dc11c4b1bb909 # display-utc-times.patch cbcfe19bc1271b91e2c3bb8864813118863a3d8d10e6ca341f82c0ca5dc37dff) # site.tmac -## 27aed052864aab603587ce4924c8a76841663bf2ab5be0d95fa9641e9b479e41 groff-1.23.0-04-x86_64.pkg.tar.lz - +## 38dc02cfe44f976db07f406be11d491239d83c0854d49d0e5b6048e61f3e9f44 groff-1.23.0-05-x86_64.pkg.tar.lz diff --git a/groff/PKGBUILD-arch b/groff/PKGBUILD-arch index b87fdd1..38f76f9 100644 --- a/groff/PKGBUILD-arch +++ b/groff/PKGBUILD-arch @@ -2,7 +2,7 @@ pkgname=groff pkgver=1.23.0 -pkgrel=4 +pkgrel=5 pkgdesc='GNU troff text-formatting system' arch=('x86_64') url='https://www.gnu.org/software/groff/groff.html' @@ -59,3 +59,7 @@ package() { cat "$srcdir"/site.tmac >> \ "$pkgdir"/usr/share/groff/site-tmac/mdoc.local } +sha256sums=('6b9757f592b7518b4902eb6af7e54570bdccba37a871fddb2d30ae3863511c13' + 'SKIP' + '489bb32bbd1c7bced33bf187611219527914ae46ce05238fe80dc11c4b1bb909' + '94f28b32775bcfebf1a50231a2df9791a194d571c1651b465d4875bdea181f96')