From b62f2f7f12a381c2e8d4aeb9562b6dfc87728589 Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Sun, 18 Aug 2024 00:02:06 +0200 Subject: [PATCH] package/gnu-efi: mark as not supported on ARM soft-float lib/print.c in gnu-efi contains some floating point computation. On ARM soft-float configurations, these floating point operations generate calls to __eabi_*() functions that are provided by gcc. However, gnu-efi builds some freestanding code, so it doesn't link with libgcc, and therefore the build fails with: arm-buildroot-linux-gnueabi-ld: /output-1/build/gnu-efi-3.0.18//lib/print.c:1431:(.text+0x78c): undefined reference to `__aeabi_i2d' arm-buildroot-linux-gnueabi-ld: /output-1/build/gnu-efi-3.0.18//lib/print.c:1431:(.text+0x7a0): undefined reference to `__aeabi_dsub' arm-buildroot-linux-gnueabi-ld: /output-1/build/gnu-efi-3.0.18//lib/print.c:1431:(.text+0x7a4): undefined reference to `__aeabi_d2f' arm-buildroot-linux-gnueabi-ld: /output-1/build/gnu-efi-3.0.18//lib/print.c:1432:(.text+0x7b4): undefined reference to `__aeabi_fcmplt' arm-buildroot-linux-gnueabi-ld: /output-1/build/gnu-efi-3.0.18//lib/print.c:1438:(.text+0x7c8): undefined reference to `__aeabi_fmul' arm-buildroot-linux-gnueabi-ld: /output-1/build/gnu-efi-3.0.18//lib/print.c:1440:(.text+0x7d4): undefined reference to `__aeabi_fcmpeq' arm-buildroot-linux-gnueabi-ld: /output-1/build/gnu-efi-3.0.18//lib/print.c:1444:(.text+0x7f8): undefined reference to `__aeabi_fmul' arm-buildroot-linux-gnueabi-ld: /output-1/build/gnu-efi-3.0.18//lib/print.c:1440:(.text+0x808): undefined reference to `__aeabi_fcmpeq' arm-buildroot-linux-gnueabi-ld: /output-1/build/gnu-efi-3.0.18//lib/print.c:1440:(.text+0x818): undefined reference to `__aeabi_f2iz' arm-buildroot-linux-gnueabi-ld: /output-1/build/gnu-efi-3.0.18//lib/print.c:1451:(.text+0x834): undefined reference to `__aeabi_i2f' arm-buildroot-linux-gnueabi-ld: /output-1/build/gnu-efi-3.0.18//lib/print.c:1451:(.text+0x840): undefined reference to `__aeabi_fcmpeq' arm-buildroot-linux-gnueabi-ld: /output-1/build/gnu-efi-3.0.18//lib/print.c:1453:(.text+0x858): undefined reference to `__aeabi_fmul' arm-buildroot-linux-gnueabi-ld: /output-1/build/gnu-efi-3.0.18//lib/print.c:1451:(.text+0x860): undefined reference to `__aeabi_f2iz' arm-buildroot-linux-gnueabi-ld: /output-1/build/gnu-efi-3.0.18//lib/print.c:1451:(.text+0x868): undefined reference to `__aeabi_i2f' arm-buildroot-linux-gnueabi-ld: /output-1/build/gnu-efi-3.0.18//lib/print.c:1451:(.text+0x870): undefined reference to `__aeabi_fcmpeq' arm-buildroot-linux-gnueabi-ld: /output-1/build/gnu-efi-3.0.18//lib/print.c:1451:(.text+0x89c): undefined reference to `__aeabi_f2iz' Since we don't care about gnu-efi support on ARM soft-float configurations, let's disable such configurations. Note that we have chosen to use BR2_ARM_SOFT_FLOAT as we're for now making this specific to ARM as we're not sure what is the situation on other CPU architectures (for example RISC-V without FPU maybe). This can be revisited once we get more data on the behavior on other CPU architectures that can support soft-float. Fixes: http://autobuild.buildroot.net/results/98d955fd2fcf4a3db1ab46e4f553447031a23b92/ Signed-off-by: Thomas Petazzoni Signed-off-by: Yann E. MORIN --- package/gnu-efi/Config.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/gnu-efi/Config.in b/package/gnu-efi/Config.in index 2c4b78b794..35446876f6 100644 --- a/package/gnu-efi/Config.in +++ b/package/gnu-efi/Config.in @@ -1,6 +1,6 @@ config BR2_PACKAGE_GNU_EFI_ARCH_SUPPORTS bool - default y if BR2_arm && BR2_ARM_CPU_HAS_ARM + default y if BR2_arm && BR2_ARM_CPU_HAS_ARM && !BR2_ARM_SOFT_FLOAT default y if BR2_RISCV_64 default y if BR2_aarch64 default y if BR2_i386