diff options
Diffstat (limited to 'meta/recipes-bsp/u-boot/files/v3-0001-Makefile-scripts-Makefile.lib-fix-_efi.so-depende.patch')
| -rw-r--r-- | meta/recipes-bsp/u-boot/files/v3-0001-Makefile-scripts-Makefile.lib-fix-_efi.so-depende.patch | 136 |
1 files changed, 0 insertions, 136 deletions
diff --git a/meta/recipes-bsp/u-boot/files/v3-0001-Makefile-scripts-Makefile.lib-fix-_efi.so-depende.patch b/meta/recipes-bsp/u-boot/files/v3-0001-Makefile-scripts-Makefile.lib-fix-_efi.so-depende.patch deleted file mode 100644 index e8253a67b2..0000000000 --- a/meta/recipes-bsp/u-boot/files/v3-0001-Makefile-scripts-Makefile.lib-fix-_efi.so-depende.patch +++ /dev/null | |||
| @@ -1,136 +0,0 @@ | |||
| 1 | From 2e7c1321bb44cc6af4ee4b1026a52e1a0aa7e336 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Mikko Rapeli <mikko.rapeli@linaro.org> | ||
| 3 | Date: Thu, 10 Jul 2025 14:24:07 +0000 | ||
| 4 | Subject: [PATCH v3 1/2] Makefile scripts/Makefile.lib: fix *_efi.so dependency | ||
| 5 | to PLATFORM_LIBGCC | ||
| 6 | |||
| 7 | When PLATFORM_LIBGCC was added to linker command it was not | ||
| 8 | added to the dependency of the .so and other rules. Thus a build can | ||
| 9 | try to link *_efi.so files before lib.a from PLATFORM_LIBGCC is available. | ||
| 10 | This was seen in yocto autobuilder builds with u-boot 2025.07 | ||
| 11 | update, see https://lists.openembedded.org/g/openembedded-core/message/220004 | ||
| 12 | |||
| 13 | https://autobuilder.yoctoproject.org/valkyrie/api/v2/logs/2914600/raw_inline | ||
| 14 | |||
| 15 | | 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/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_path_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_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_loader/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_file.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_conformance.o | ||
| 16 | | 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-3119200/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 lib/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 | ||
| 17 | | arm-poky-linux-gnueabi-ld.bfd: cannot find arch/arm/lib/lib.a: No such file or directory | ||
| 18 | | make[3]: *** [scripts/Makefile.lib:512: lib/efi_loader/helloworld_efi.so] Error 1 | ||
| 19 | |||
| 20 | The issue is hard to reproduce but this change can artificially trigger it: | ||
| 21 | |||
| 22 | a/scripts/Makefile.build | ||
| 23 | b/scripts/Makefile.build | ||
| 24 | @@ -353,7 +353,7 @@ $(modorder-target): $(subdir-ym) FORCE | ||
| 25 | # | ||
| 26 | ifdef lib-target | ||
| 27 | quiet_cmd_link_l_target = AR $@ | ||
| 28 | -cmd_link_l_target = rm -f $@; $(AR) cDPrsT$(KBUILD_ARFLAGS) $@ $(lib-y) | ||
| 29 | +cmd_link_l_target = rm -f $@ && echo "HACK, delaying build!" && sleep 60 && $(AR) cDPrsT$(KBUILD_ARFLAGS) $@ $(lib-y) | ||
| 30 | |||
| 31 | $(lib-target): $(lib-y) FORCE | ||
| 32 | $(call if_changed,link_l_target) | ||
| 33 | |||
| 34 | Then run a rebuild with: | ||
| 35 | |||
| 36 | $ rm -f $( find build/ -name lib.a -or -name helloworld_efi.so ) && \ | ||
| 37 | make | ||
| 38 | ... | ||
| 39 | arm-poky-linux-gnueabi-ld.bfd -nostdlib -zexecstack -znocombreloc -znorelro --no-warn-rwx-segments -L /home/mcfrisk/src/base/repo/poky/build_bea | ||
| 40 | glebone/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 lib/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 | ||
| 41 | arm-poky-linux-gnueabi-ld.bfd: cannot find arch/arm/lib/lib.a: No such file or directory | ||
| 42 | make[3]: *** [scripts/Makefile.lib:512: lib/efi_loader/helloworld_efi.so] Error 1 | ||
| 43 | |||
| 44 | Fix by introducing PLATFORM_LIBGCC_LIBA variable with only lib.a | ||
| 45 | filename which is then used to add the dependency in rules which use | ||
| 46 | PLATFORM_LIBGCC. This should not impact builds which don't set | ||
| 47 | PLATFORM_LIBGCC_LIBA and PLATFORM_LIBGCC usage stays as is. | ||
| 48 | |||
| 49 | Fixes: 43d43241d1c9 ("scripts/Makefile.lib: add PLATFORM_LIBGCC to efi linking") | ||
| 50 | |||
| 51 | Cc: Adriano Cordova <adrianox@gmail.com> | ||
| 52 | Cc: Fabio Estevam <festevam@gmail.com> | ||
| 53 | Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org> | ||
| 54 | --- | ||
| 55 | Makefile | 4 +++- | ||
| 56 | examples/standalone/Makefile | 2 +- | ||
| 57 | scripts/Makefile.lib | 2 +- | ||
| 58 | scripts/Makefile.xpl | 3 ++- | ||
| 59 | 4 files changed, 7 insertions(+), 4 deletions(-) | ||
| 60 | |||
| 61 | Upstream-Status: Submitted [https://lists.denx.de/pipermail/u-boot/2025-July/594581.html] | ||
| 62 | |||
| 63 | v3: added "export PLATFORM_LIBGCC_LIBA" like PLATFORM_LIBGCC, not sure | ||
| 64 | how testing worked without this before | ||
| 65 | |||
| 66 | v2: introduced PLATFORM_LIBGCC_LIBA variable with just lib.a filename, | ||
| 67 | PLATFORM_LIBGCC can have other flags too | ||
| 68 | https://lists.denx.de/pipermail/u-boot/2025-July/594034.html | ||
| 69 | |||
| 70 | v1: https://lists.denx.de/pipermail/u-boot/2025-July/593982.html | ||
| 71 | |||
| 72 | diff --git a/Makefile b/Makefile | ||
| 73 | index 1a5c77d7caf0..a0797f36f7f6 100644 | ||
| 74 | --- a/Makefile | ||
| 75 | +++ b/Makefile | ||
| 76 | @@ -911,7 +911,8 @@ u-boot-main := $(libs-y) | ||
| 77 | |||
| 78 | # Add GCC lib | ||
| 79 | ifeq ($(CONFIG_USE_PRIVATE_LIBGCC),y) | ||
| 80 | -PLATFORM_LIBGCC = arch/$(ARCH)/lib/lib.a | ||
| 81 | +PLATFORM_LIBGCC_LIBA = arch/$(ARCH)/lib/lib.a | ||
| 82 | +PLATFORM_LIBGCC = $(PLATFORM_LIBGCC_LIBA) | ||
| 83 | else | ||
| 84 | ifndef CONFIG_CC_IS_CLANG | ||
| 85 | PLATFORM_LIBGCC := -L $(shell dirname `$(CC) $(c_flags) -print-libgcc-file-name`) -lgcc | ||
| 86 | @@ -926,6 +927,7 @@ endif | ||
| 87 | |||
| 88 | export PLATFORM_LIBS | ||
| 89 | export PLATFORM_LIBGCC | ||
| 90 | +export PLATFORM_LIBGCC_LIBA | ||
| 91 | |||
| 92 | # Special flags for CPP when processing the linker script. | ||
| 93 | # Pass the version down so we can handle backwards compatibility | ||
| 94 | diff --git a/examples/standalone/Makefile b/examples/standalone/Makefile | ||
| 95 | index 9b57f1c0c66c..aa9e3121cf9a 100644 | ||
| 96 | --- a/examples/standalone/Makefile | ||
| 97 | +++ b/examples/standalone/Makefile | ||
| 98 | @@ -64,7 +64,7 @@ quiet_cmd_link_elf = LD $@ | ||
| 99 | cmd_link_elf = $(LD) $(KBUILD_LDFLAGS) $(LDFLAGS_STANDALONE) -g \ | ||
| 100 | -o $@ -e $(SYM_PREFIX)$(@F) $< $(LIB) $(PLATFORM_LIBGCC) | ||
| 101 | |||
| 102 | -$(ELF): $(obj)/%: $(obj)/%.o $(LIB) FORCE | ||
| 103 | +$(ELF): $(obj)/%: $(obj)/%.o $(LIB) $(PLATFORM_LIBGCC_LIBA) FORCE | ||
| 104 | $(call if_changed,link_elf) | ||
| 105 | |||
| 106 | $(obj)/%.srec: OBJCOPYFLAGS += -O srec | ||
| 107 | diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib | ||
| 108 | index e89a4a51b74d..cef3863dfdc4 100644 | ||
| 109 | --- a/scripts/Makefile.lib | ||
| 110 | +++ b/scripts/Makefile.lib | ||
| 111 | @@ -508,7 +508,7 @@ $(obj)/efi_reloc.o: $(srctree)/arch/$(ARCH)/lib/$(EFI_RELOC:.o=.c) $(recordmcoun | ||
| 112 | $(call cmd,force_checksrc) | ||
| 113 | $(call if_changed_rule,cc_o_c) | ||
| 114 | |||
| 115 | -$(obj)/%_efi.so: $(obj)/%.o $(obj)/efi_crt0.o $(obj)/efi_reloc.o $(obj)/efi_freestanding.o | ||
| 116 | +$(obj)/%_efi.so: $(PLATFORM_LIBGCC_LIBA) $(obj)/%.o $(obj)/efi_crt0.o $(obj)/efi_reloc.o $(obj)/efi_freestanding.o | ||
| 117 | $(call cmd,efi_ld) | ||
| 118 | |||
| 119 | targets += $(obj)/efi_crt0.o $(obj)/efi_reloc.o $(obj)/efi_freestanding.o | ||
| 120 | diff --git a/scripts/Makefile.xpl b/scripts/Makefile.xpl | ||
| 121 | index 43f27874f9fe..68c88293f0d9 100644 | ||
| 122 | --- a/scripts/Makefile.xpl | ||
| 123 | +++ b/scripts/Makefile.xpl | ||
| 124 | @@ -139,7 +139,8 @@ libs-y := $(patsubst %/, %/built-in.o, $(libs-y)) | ||
| 125 | |||
| 126 | # Add GCC lib | ||
| 127 | ifeq ($(CONFIG_USE_PRIVATE_LIBGCC),y) | ||
| 128 | -PLATFORM_LIBGCC = arch/$(ARCH)/lib/lib.a | ||
| 129 | +PLATFORM_LIBGCC_LIBA = arch/$(ARCH)/lib/lib.a | ||
| 130 | +PLATFORM_LIBGCC = $(PLATFORM_LIBGCC_LIBA) | ||
| 131 | PLATFORM_LIBS := $(filter-out %/lib.a, $(filter-out -lgcc, $(PLATFORM_LIBS))) $(PLATFORM_LIBGCC) | ||
| 132 | endif | ||
| 133 | |||
| 134 | -- | ||
| 135 | 2.43.0 | ||
| 136 | |||
