Re: [PATCH] systemd-boot: use ld.bfd as efi-ld when gold is being used by default with ld-is-gold


Andre McCurdy
 

On Tue, Aug 3, 2021 at 12:04 PM Martin Jansa <Martin.Jansa@...> wrote:

* since the upgrade to 249.1 in:
https://git.openembedded.org/openembedded-core/commit/?id=323ec445dfe22860cd450c303db5ed8fcb4e791c
the builds with ld-is-gold are failing with:

[17/21] Generating linuxx64.elf.stub with a custom command
FAILED: src/boot/efi/linuxx64.elf.stub
/OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/systemd-boot/249.1-r0/recipe-sysroot-native/usr/bin/x86_64-oe-linux/x86_64-oe-linux-ld -o src/boot/efi/linuxx64.elf.stub -T /OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/systemd-boot/249.1-r0/recipe-sysroot/usr/lib/elf_x86_64_efi.lds -shared -Bsymbolic -nostdlib -znocombreloc --build-id=sha1 -L /OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/systemd-boot/249.1-r0/recipe-sysroot/usr/lib /OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/systemd-boot/249.1-r0/recipe-sysroot/usr/lib/crt0-efi-x86_64.o src/boot/efi/string-util-fundamental.c.o src/boot/efi/disk.c.o src/boot/efi/graphics.c.o src/boot/efi/measure.c.o src/boot/efi/pe.c.o src/boot/efi/secure-boot.c.o src/boot/efi/util.c.o src/boot/efi/linux.c.o src/boot/efi/splash.c.o src/boot/efi/stub.c.o -lefi -lgnuefi /OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/systemd-boot/249.1-r0/recipe-sysroot/usr/lib/../lib/x86_64-oe-linux/11.2.0/libgcc.a
/OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/systemd-boot/249.1-r0/recipe-sysroot-native/usr/bin/x86_64-oe-linux/x86_64-oe-linux-ld: internal error in segment_precedes, at ../../gold/layout.cc:3721
[18/21] Generating boot.c.o with a custom command
ninja: build stopped: subcommand failed.
WARNING: exit code 1 from a shell command.

as reported in:
https://lists.openembedded.org/g/openembedded-core/message/154246

work around this by using ld.bfd when ld-is-gold is in DISTRO_FEATURES

Signed-off-by: Martin Jansa <Martin.Jansa@...>
---
meta/recipes-core/systemd/systemd-boot_249.1.bb | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/meta/recipes-core/systemd/systemd-boot_249.1.bb b/meta/recipes-core/systemd/systemd-boot_249.1.bb
index d767b5bf8d..18f4fe55ce 100644
--- a/meta/recipes-core/systemd/systemd-boot_249.1.bb
+++ b/meta/recipes-core/systemd/systemd-boot_249.1.bb
@@ -19,11 +19,13 @@ objcopy = ${@meson_array('OBJCOPY', d)}
EOF
}

+EFI_LD = "${@d.getVar('LD').split()[0]}"
+
EXTRA_OEMESON += "-Defi=true \
-Dgnu-efi=true \
-Defi-includedir=${STAGING_INCDIR}/efi \
-Defi-libdir=${STAGING_LIBDIR} \
- -Defi-ld=${@ d.getVar('LD').split()[0]} \
+ -Defi-ld=${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', 'ld.bfd', '${EFI_LD}', d)} \
Could this just be set to ld.bfd in all cases?

Join openembedded-core@lists.openembedded.org to automatically receive all group messages.