From 06426297c4e50c3394d494b7cd907b9c84222d85 Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Sun, 23 Aug 2026 21:19:25 +0200 Subject: [PATCH] toolchain/Config.in: refine BR2_TOOLCHAIN_HAS_LIBQUADMATH definition In commit a2380157f6688c5c065fa19060a2c33145bab95b ("toolchain: enable libquadmath for PowerPC with VSX"), the definition of BR2_TOOLCHAIN_HAS_LIBQUADMATH has been extended to also be true when BR2_POWERPC_CPU_HAS_VSX. However, practical experiments show that when 64-bit VSX-capable cores are used in 32-bit mode, libquadmath is not built by GCC, causing build failures: cp: cannot stat '/home/autobuild/autobuild/instance-3/output-1/host/powerpc-buildroot-linux-musl/lib*/libquadmath*': No such file or directory We did an extensive testing, building the 27 combinations of: - GCC versions: 14, 15, 16 - C library: glibc, uclibc, musl - PowerPC 32-bit, PowerPC 64-bit, PowerPC 64-bit little endian This testing provides the following results: | gcc14 | powerpc64 | glibc | OK | | gcc14 | powerpc64le | glibc | OK | | gcc14 | powerpc64le | musl | OK | | gcc14 | powerpc64le | uclibc | SKIPPED | | gcc14 | powerpc64 | musl | OK | | gcc14 | powerpc64 | uclibc | SKIPPED | | gcc14 | powerpc | glibc | FAILED | | gcc14 | powerpc | musl | FAILED | | gcc14 | powerpc | uclibc | FAILED | | gcc15 | powerpc64 | glibc | OK | | gcc15 | powerpc64le | glibc | OK | | gcc15 | powerpc64le | musl | OK | | gcc15 | powerpc64le | uclibc | SKIPPED | | gcc15 | powerpc64 | musl | OK | | gcc15 | powerpc64 | uclibc | SKIPPED | | gcc15 | powerpc | glibc | FAILED | | gcc15 | powerpc | musl | FAILED | | gcc15 | powerpc | uclibc | FAILED | | gcc16 | powerpc64 | glibc | OK | | gcc16 | powerpc64le | glibc | OK | | gcc16 | powerpc64le | musl | OK | | gcc16 | powerpc64le | uclibc | SKIPPED | | gcc16 | powerpc64 | musl | OK | | gcc16 | powerpc64 | uclibc | SKIPPED | | gcc16 | powerpc | glibc | FAILED | | gcc16 | powerpc | musl | FAILED | | gcc16 | powerpc | uclibc | FAILED | The "SKIPPED" are when the configuration is not possible: uClibc doesn't support powerpc64 or powerpc64le. Then, as we can see, the build fails for all "powerpc" configuration. Our conclusion is therefore that libquadmath is not supported on PowerPC 32-bit. While we were not able to find direct evidence in the gcc code base, this practical experiment shows that is simply doesn't work on PowerPC 32-bit. So, we take the logical action of adjusting BR2_TOOLCHAIN_HAS_LIBQUADMATH so that it is true only on powerpc64/powerpc64le. Fixes: https://autobuild.buildroot.org/results/46d435c9f5086a8695f4f6cd4026bb0d194de13c/ Cc: Romain Naour Signed-off-by: Thomas Petazzoni Signed-off-by: Peter Korsgaard --- toolchain/Config.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/toolchain/Config.in b/toolchain/Config.in index 7762106bee..128f8faef2 100644 --- a/toolchain/Config.in +++ b/toolchain/Config.in @@ -989,12 +989,12 @@ config BR2_TOOLCHAIN_HAS_ATOMIC # - At least, libquadmath is available on: # - i*86 # - x86_64 -# - PowerPC with vector scalar (VSX) instruction set +# - PowerPC64 with vector scalar (VSX) instruction set # - When available, libquadmath requires wchar support. config BR2_TOOLCHAIN_HAS_LIBQUADMATH bool default y if BR2_i386 || BR2_x86_64 - default y if BR2_POWERPC_CPU_HAS_VSX + default y if (BR2_powerpc64 || BR2_powerpc64le) && BR2_POWERPC_CPU_HAS_VSX comment "Bare metal toolchain"