summaryrefslogtreecommitdiffstats
path: root/meta/recipes-bsp/u-boot/files/0001-Makefile-add-dependency-from-lib-to-arch-ARCH-lib.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-bsp/u-boot/files/0001-Makefile-add-dependency-from-lib-to-arch-ARCH-lib.patch')
-rw-r--r--meta/recipes-bsp/u-boot/files/0001-Makefile-add-dependency-from-lib-to-arch-ARCH-lib.patch81
1 files changed, 81 insertions, 0 deletions
diff --git a/meta/recipes-bsp/u-boot/files/0001-Makefile-add-dependency-from-lib-to-arch-ARCH-lib.patch b/meta/recipes-bsp/u-boot/files/0001-Makefile-add-dependency-from-lib-to-arch-ARCH-lib.patch
new file mode 100644
index 0000000000..06fdaf5b0a
--- /dev/null
+++ b/meta/recipes-bsp/u-boot/files/0001-Makefile-add-dependency-from-lib-to-arch-ARCH-lib.patch
@@ -0,0 +1,81 @@
1From d0075e2d730a4fa48aa763a669e5edbc02c33a22 Mon Sep 17 00:00:00 2001
2From: Mikko Rapeli <mikko.rapeli@linaro.org>
3Date: Thu, 31 Jul 2025 14:52:48 +0300
4Subject: [PATCH] Makefile: add dependency from lib to arch/$(ARCH)/lib
5
6Top level Makefile starts separate "make" processes for each each
7subdirectory. lib/efi_loader apps now depend on lib.a from
8arch/$(ARCH)/lib if CONFIG_USE_PRIVATE_LIBGCC is enabled which creates
9a race conditions since dependency from lib/efi_loader EFI apps to
10arch/$(ARCH)/lib/lib.a is not explicit:
11
12arm-poky-linux-gnueabi-ld.bfd: cannot find arch/arm/lib/lib.a: No such file or directory
13make[3]: *** [scripts/Makefile.lib:512: lib/efi_loader/testapp_efi.so] Error 1
14
15This error was seen on yocto/OE-core CI builds after u-boot 2025.07 update:
16
17https://lists.openembedded.org/g/openembedded-core/message/220004
18
19https://autobuilder.yoctoproject.org/valkyrie/api/v2/logs/2914600/raw_inline
20
21 | rm -f lib/efi_loader/built-in.o; arm-poky-linux-gnueabi-ar cDPrsT lib/efi_loader/built-in.o lib/efi_loader/efi_bootmgr.o lib/efi_loader/efi_bootbin.o lib/efi_loader
22/efi_boottime.o lib/efi_loader/efi_helper.o lib/efi_loader/efi_console.o lib/efi_loader/efi_device_path.o lib/efi_loader/efi_device_path_to_text.o lib/efi_loader/efi_device_
23path_utilities.o lib/efi_loader/efi_dt_fixup.o lib/efi_loader/efi_fdt.o lib/efi_loader/efi_file.o lib/efi_loader/efi_hii.o lib/efi_loader/efi_hii_config.o lib/efi_loader/efi
24_image_loader.o lib/efi_loader/efi_load_options.o lib/efi_loader/efi_memory.o lib/efi_loader/efi_root_node.o lib/efi_loader/efi_runtime.o lib/efi_loader/efi_setup.o lib/efi_
25loader/efi_string.o lib/efi_loader/efi_unicode_collation.o lib/efi_loader/efi_var_common.o lib/efi_loader/efi_var_mem.o lib/efi_loader/efi_variable.o lib/efi_loader/efi_var_
26file.o lib/efi_loader/efi_watchdog.o lib/efi_loader/efi_disk.o lib/efi_loader/efi_net.o lib/efi_loader/efi_smbios.o lib/efi_loader/efi_load_initrd.o lib/efi_loader/efi_confo
27rmance.o
28 | arm-poky-linux-gnueabi-ld.bfd -nostdlib -zexecstack -znocombreloc -znorelro --no-warn-rwx-segments -L /srv/pokybuild/yocto-worker/oe-selftest-armhost/build/build-st-
293119200/tmp/work/beaglebone_yocto-poky-linux-gnueabi/u-boot/2025.07/sources/u-boot-2025.07 -T arch/arm/lib/elf_arm_efi.lds -shared -Bsymbolic -s lib/efi_loader/helloworld.o
30lib/efi_loader/efi_crt0.o lib/efi_loader/efi_reloc.o lib/efi_loader/efi_freestanding.o arch/arm/lib/lib.a -o lib/efi_loader/helloworld_efi.so
31 | arm-poky-linux-gnueabi-ld.bfd: cannot find arch/arm/lib/lib.a: No such file or directory
32 | make[3]: *** [scripts/Makefile.lib:512: lib/efi_loader/helloworld_efi.so] Error 1
33
34The different "make" processes share common scripts/Makefile.build
35and scripts/Makefile.libs but since they are separate processes
36the Makefile rules can't add a dependency from lib/uefi_loader targets
37to arch/$(ARCH)/lib/lib.a. Or the file level dependency can be added but
38then "make" produces a too sparse error message which does not mention
39that one of the dependencies like arch/$(ARCH)/lib/lib.a was not found:
40
41make[3]: *** No rule to make target 'lib/efi_loader/helloworld.efi', needed by '__build'. Stop.
42
43Fix this dependency problem by building arch/$(ARCH)/lib before lib
44if CONFIG_USE_PRIVATE_LIBGCC was enabled.
45
46To reproduce the race condition more reliably, add a "sleep 10" delay
47before linker command cmd_link_l_target with 2025.07
48or to $(lib-target): target in scripts/Makefile.build with master branch
49after Kbuild update.
50
51Fixes: 43d43241d1c9 ("scripts/Makefile.lib: add PLATFORM_LIBGCC to efi linking")
52
53Cc: Adriano Cordova <adrianox@gmail.com>
54Cc: Fabio Estevam <festevam@gmail.com>
55Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org>
56Reviewed-by: Fabio Estevam <festevam@gmail.com>
57---
58 Makefile | 5 +++++
59 1 file changed, 5 insertions(+)
60
61Upstream-Status: Backport
62
63diff --git a/Makefile b/Makefile
64index c31bf7ecea97..b03f87a93fb9 100644
65--- a/Makefile
66+++ b/Makefile
67@@ -2131,6 +2131,11 @@ $(filter-out tools, $(u-boot-dirs)): tools
68 # is "yes"), so compile examples after U-Boot is compiled.
69 examples: $(filter-out examples, $(u-boot-dirs))
70
71+ifeq ($(CONFIG_USE_PRIVATE_LIBGCC),y)
72+# lib/efi_loader apps depend on arch/$(ARCH)/lib for lib.a
73+lib: $(filter arch/$(ARCH)/lib, $(u-boot-dirs))
74+endif
75+
76 # The setlocalversion script comes from linux and expects a
77 # KERNELVERSION variable in the environment for figuring out which
78 # annotated tags are relevant. Pass UBOOTVERSION.
79--
802.43.0
81