All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.