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 <thomas.petazzoni@bootlin.com> Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr> (cherry picked from commit b62f2f7f12a381c2e8d4aeb9562b6dfc87728589) Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
17 lines
489 B
Plaintext
17 lines
489 B
Plaintext
config BR2_PACKAGE_GNU_EFI_ARCH_SUPPORTS
|
|
bool
|
|
default y if BR2_arm && BR2_ARM_CPU_HAS_ARM && !BR2_ARM_SOFT_FLOAT
|
|
default y if BR2_aarch64
|
|
default y if BR2_i386
|
|
default y if BR2_x86_64
|
|
|
|
config BR2_PACKAGE_GNU_EFI
|
|
bool "gnu-efi"
|
|
depends on BR2_PACKAGE_GNU_EFI_ARCH_SUPPORTS
|
|
help
|
|
Develop EFI applications for ARM-64, ARM-32, x86_64, IA-64
|
|
(IPF), IA-32 (x86), and MIPS platforms using the GNU toolchain
|
|
and the EFI development environment.
|
|
|
|
http://gnu-efi.sourceforge.net/
|