* [Buildroot] [PATCH 1/3] package/gnu-efi: disable on ARM and AArch64 big-endian
@ 2024-08-17 22:02 Thomas Petazzoni via buildroot
2024-08-17 22:02 ` [Buildroot] [PATCH 2/3] package/gnu-efi: only supported on MMU-capable platforms Thomas Petazzoni via buildroot
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Thomas Petazzoni via buildroot @ 2024-08-17 22:02 UTC (permalink / raw)
To: buildroot; +Cc: Thomas Petazzoni
Since the bump of gnu-efi to version 3.0.17 in Buildroot commit
fa9893ad8fb94278d7e8b80cd3e795469223faf0, the build of gnu-efi fails
on ARM big endian and AArch64 big endian.
Indeed, since that bump, gnu-efi builds some "apps", using a special
linker file part of gnu-efi that explicitly sets the architecture:
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
OUTPUT_FORMAT("elf64-littleaarch64", "elf64-littleaarch64", "elf64-littleaarch64")
Due to this, big endian builds are now failing:
armeb-buildroot-linux-gnueabi-ld: ../gnuefi/crt0-efi-arm.o: compiled for a big endian system and target is little endian
armeb-buildroot-linux-gnueabi-ld: failed to merge target specific data of file ../gnuefi/crt0-efi-arm.o
Since we are not really interested in supporting gnu-efi on ARM big
endian and AArch64 big endian and it is not supported upstream, let's
disabled on those architectures.
Fixes:
http://autobuild.buildroot.org/results/4d385d6759346e19664d0bded1e419f004f82b47/ (ARM big endian)
http://autobuild.buildroot.net/results/b6df43408ca4cd469962c96d49d9ac7935b6dbe9/ (AArch64 big endian)
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
---
package/gnu-efi/Config.in | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/package/gnu-efi/Config.in b/package/gnu-efi/Config.in
index 4f44cf9f64..012324712c 100644
--- a/package/gnu-efi/Config.in
+++ b/package/gnu-efi/Config.in
@@ -1,9 +1,8 @@
config BR2_PACKAGE_GNU_EFI_ARCH_SUPPORTS
bool
- default y if BR2_ARM_CPU_HAS_ARM
+ default y if BR2_arm && BR2_ARM_CPU_HAS_ARM
default y if BR2_RISCV_64
default y if BR2_aarch64
- default y if BR2_aarch64_be
default y if BR2_i386
default y if BR2_x86_64
--
2.46.0
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [Buildroot] [PATCH 2/3] package/gnu-efi: only supported on MMU-capable platforms
2024-08-17 22:02 [Buildroot] [PATCH 1/3] package/gnu-efi: disable on ARM and AArch64 big-endian Thomas Petazzoni via buildroot
@ 2024-08-17 22:02 ` Thomas Petazzoni via buildroot
2024-08-17 22:02 ` [Buildroot] [PATCH 3/3] package/gnu-efi: mark as not supported on ARM soft-float Thomas Petazzoni via buildroot
2024-08-18 7:20 ` [Buildroot] [PATCH 1/3] package/gnu-efi: disable on ARM and AArch64 big-endian Yann E. MORIN
2 siblings, 0 replies; 4+ messages in thread
From: Thomas Petazzoni via buildroot @ 2024-08-17 22:02 UTC (permalink / raw)
To: buildroot; +Cc: Thomas Petazzoni
Since commit
1f7c58145497ed01d566e08734a62feef1696807 ("package/gnu-efi: enable on
RISC-V 64-bit"), we allow building on RISC-V... and that includes
noMMU RISC-V. This unfortunately fails badly with:
/home/autobuild/autobuild/instance-2/output-1/host/bin/../riscv64-buildroot-linux-uclibc/bin/ld.real: unrecognized option '-Wl,-elf2flt=-r'
/home/autobuild/autobuild/instance-2/output-1/host/bin/../riscv64-buildroot-linux-uclibc/bin/ld.real: use the --help option for usage information
Since we're anyway not interested in gnu-efi on noMMU platforms, let's
not even spend time on trying to fix this and make MMU support a
requirement for gnu-efi.
Fixes:
http://autobuild.buildroot.net/results/8b4a503939bdbe773ceee69e01a3ea16873a75fa/
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
---
package/gnu-efi/Config.in | 1 +
1 file changed, 1 insertion(+)
diff --git a/package/gnu-efi/Config.in b/package/gnu-efi/Config.in
index 012324712c..2c4b78b794 100644
--- a/package/gnu-efi/Config.in
+++ b/package/gnu-efi/Config.in
@@ -5,6 +5,7 @@ config BR2_PACKAGE_GNU_EFI_ARCH_SUPPORTS
default y if BR2_aarch64
default y if BR2_i386
default y if BR2_x86_64
+ depends on BR2_USE_MMU
config BR2_PACKAGE_GNU_EFI
bool "gnu-efi"
--
2.46.0
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [Buildroot] [PATCH 3/3] package/gnu-efi: mark as not supported on ARM soft-float
2024-08-17 22:02 [Buildroot] [PATCH 1/3] package/gnu-efi: disable on ARM and AArch64 big-endian Thomas Petazzoni via buildroot
2024-08-17 22:02 ` [Buildroot] [PATCH 2/3] package/gnu-efi: only supported on MMU-capable platforms Thomas Petazzoni via buildroot
@ 2024-08-17 22:02 ` Thomas Petazzoni via buildroot
2024-08-18 7:20 ` [Buildroot] [PATCH 1/3] package/gnu-efi: disable on ARM and AArch64 big-endian Yann E. MORIN
2 siblings, 0 replies; 4+ messages in thread
From: Thomas Petazzoni via buildroot @ 2024-08-17 22:02 UTC (permalink / raw)
To: buildroot; +Cc: Thomas Petazzoni
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>
---
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
--
2.46.0
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [Buildroot] [PATCH 1/3] package/gnu-efi: disable on ARM and AArch64 big-endian
2024-08-17 22:02 [Buildroot] [PATCH 1/3] package/gnu-efi: disable on ARM and AArch64 big-endian Thomas Petazzoni via buildroot
2024-08-17 22:02 ` [Buildroot] [PATCH 2/3] package/gnu-efi: only supported on MMU-capable platforms Thomas Petazzoni via buildroot
2024-08-17 22:02 ` [Buildroot] [PATCH 3/3] package/gnu-efi: mark as not supported on ARM soft-float Thomas Petazzoni via buildroot
@ 2024-08-18 7:20 ` Yann E. MORIN
2 siblings, 0 replies; 4+ messages in thread
From: Yann E. MORIN @ 2024-08-18 7:20 UTC (permalink / raw)
To: Thomas Petazzoni; +Cc: buildroot
Thomas, All,
On 2024-08-18 00:02 +0200, Thomas Petazzoni via buildroot spake thusly:
> Since the bump of gnu-efi to version 3.0.17 in Buildroot commit
> fa9893ad8fb94278d7e8b80cd3e795469223faf0, the build of gnu-efi fails
> on ARM big endian and AArch64 big endian.
>
> Indeed, since that bump, gnu-efi builds some "apps", using a special
> linker file part of gnu-efi that explicitly sets the architecture:
>
> OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
>
> OUTPUT_FORMAT("elf64-littleaarch64", "elf64-littleaarch64", "elf64-littleaarch64")
>
> Due to this, big endian builds are now failing:
>
> armeb-buildroot-linux-gnueabi-ld: ../gnuefi/crt0-efi-arm.o: compiled for a big endian system and target is little endian
> armeb-buildroot-linux-gnueabi-ld: failed to merge target specific data of file ../gnuefi/crt0-efi-arm.o
>
> Since we are not really interested in supporting gnu-efi on ARM big
> endian and AArch64 big endian and it is not supported upstream, let's
> disabled on those architectures.
>
> Fixes:
>
> http://autobuild.buildroot.org/results/4d385d6759346e19664d0bded1e419f004f82b47/ (ARM big endian)
> http://autobuild.buildroot.net/results/b6df43408ca4cd469962c96d49d9ac7935b6dbe9/ (AArch64 big endian)
>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Whole series of three patches applied to master, thanks.
Regards,
Yann E. MORIN.
> ---
> package/gnu-efi/Config.in | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/package/gnu-efi/Config.in b/package/gnu-efi/Config.in
> index 4f44cf9f64..012324712c 100644
> --- a/package/gnu-efi/Config.in
> +++ b/package/gnu-efi/Config.in
> @@ -1,9 +1,8 @@
> config BR2_PACKAGE_GNU_EFI_ARCH_SUPPORTS
> bool
> - default y if BR2_ARM_CPU_HAS_ARM
> + default y if BR2_arm && BR2_ARM_CPU_HAS_ARM
> default y if BR2_RISCV_64
> default y if BR2_aarch64
> - default y if BR2_aarch64_be
> default y if BR2_i386
> default y if BR2_x86_64
>
> --
> 2.46.0
>
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2024-08-18 7:21 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-08-17 22:02 [Buildroot] [PATCH 1/3] package/gnu-efi: disable on ARM and AArch64 big-endian Thomas Petazzoni via buildroot
2024-08-17 22:02 ` [Buildroot] [PATCH 2/3] package/gnu-efi: only supported on MMU-capable platforms Thomas Petazzoni via buildroot
2024-08-17 22:02 ` [Buildroot] [PATCH 3/3] package/gnu-efi: mark as not supported on ARM soft-float Thomas Petazzoni via buildroot
2024-08-18 7:20 ` [Buildroot] [PATCH 1/3] package/gnu-efi: disable on ARM and AArch64 big-endian Yann E. MORIN
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.