Message ID | 20230727143627.3718496-8-alex@linutronix.de |
---|---|
State | Accepted, archived |
Commit | b4b94acef1e2c5e5f1185ae165969c8a66038b17 |
Headers | show |
Series | [01/21] meta: add missing summaries for image recipes | expand |
On 7/27/23 7:36 AM, Alexander Kanavin wrote: > Unset LDFLAGS as the standard ones do not work when linking EFI binaries > (the new version of gnu-efi adds various apps). > curious about which ldflags are problematic from OE env. > Signed-off-by: Alexander Kanavin <alex@linutronix.de> > --- > .../gnu-efi/{gnu-efi_3.0.15.bb => gnu-efi_3.0.17.bb} | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > rename meta/recipes-bsp/gnu-efi/{gnu-efi_3.0.15.bb => gnu-efi_3.0.17.bb} (93%) > > diff --git a/meta/recipes-bsp/gnu-efi/gnu-efi_3.0.15.bb b/meta/recipes-bsp/gnu-efi/gnu-efi_3.0.17.bb > similarity index 93% > rename from meta/recipes-bsp/gnu-efi/gnu-efi_3.0.15.bb > rename to meta/recipes-bsp/gnu-efi/gnu-efi_3.0.17.bb > index 5ae6f391ae9..547c469d19f 100644 > --- a/meta/recipes-bsp/gnu-efi/gnu-efi_3.0.15.bb > +++ b/meta/recipes-bsp/gnu-efi/gnu-efi_3.0.17.bb > @@ -17,7 +17,7 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/files/${BP}.tar.bz2 \ > file://gnu-efi-3.0.9-fix-clang-build.patch \ > " > > -SRC_URI[sha256sum] = "931a257b9c5c1ba65ff519f18373c438a26825f2db7866b163e96d1b168f20ea" > +SRC_URI[sha256sum] = "7807e903349343a7a142ebb934703a2872235e89688cf586c032b0a1087bcaf4" > > COMPATIBLE_HOST = "(x86_64.*|i.86.*|aarch64.*|arm.*|riscv64.*)-linux" > COMPATIBLE_HOST:armv4 = 'null' > @@ -34,6 +34,10 @@ def gnu_efi_arch(d): > return "ia32" > return tarch > > +do_compile:prepend() { > + unset LDFLAGS > +} > + > EXTRA_OEMAKE = "'ARCH=${@gnu_efi_arch(d)}' 'CC=${CC}' 'AS=${AS}' 'LD=${LD}' 'AR=${AR}' \ > 'RANLIB=${RANLIB}' 'OBJCOPY=${OBJCOPY}' 'PREFIX=${prefix}' 'LIBDIR=${libdir}' \ > " > @@ -46,7 +50,7 @@ do_install() { > oe_runmake install INSTALLROOT="${D}" > } > > -FILES:${PN} += "${libdir}/*.lds" > +FILES:${PN} += "${libdir}/*.lds ${libdir}/gnuefi/apps" Do you think if there is any positives of these be packaged separately? > > # 64-bit binaries are expected for EFI when targeting X32 > INSANE_SKIP:${PN}-dev:append:linux-gnux32 = " arch" > > > > -=-=-=-=-=-=-=-=-=-=-=- > Links: You receive all messages sent to this group. > View/Reply Online (#184948): https://lists.openembedded.org/g/openembedded-core/message/184948 > Mute This Topic: https://lists.openembedded.org/mt/100391609/1997914 > Group Owner: openembedded-core+owner@lists.openembedded.org > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [raj.khem@gmail.com] > -=-=-=-=-=-=-=-=-=-=-=- >
On Thu, 27 Jul 2023 at 18:09, Khem Raj <raj.khem@gmail.com> wrote: > > On 7/27/23 7:36 AM, Alexander Kanavin wrote: > > Unset LDFLAGS as the standard ones do not work when linking EFI binaries > > (the new version of gnu-efi adds various apps). > > > > curious about which ldflags are problematic from OE env. | x86_64-poky-linux-ld --sysroot=/srv/storage/alex/yocto/build-64-alt/tmp/work/core2-64-poky-linux/gnu-efi/3.0.17-r0/recipe-sysroot -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -fcanon-prefix-map -fmacro-prefix-map=/srv/storage/alex/yocto/build-64-alt/tmp/work/core2-64-poky-linux/gnu-efi/3.0.17-r0/gnu-efi-3.0.17=/usr/src/debug/gnu-efi/3.0.17-r0 -fdebug-prefix-map=/srv/storage/alex/yocto/build-64-alt/tmp/work/core2-64-poky-linux/gnu-efi/3.0.17-r0/gnu-efi-3.0.17=/usr/src/debug/gnu-efi/3.0.17-r0 -fmacro-prefix-map=/srv/storage/alex/yocto/build-64-alt/tmp/work/core2-64-poky-linux/gnu-efi/3.0.17-r0/gnu-efi-3.0.17=/usr/src/debug/gnu-efi/3.0.17-r0 -fdebug-prefix-map=/srv/storage/alex/yocto/build-64-alt/tmp/work/core2-64-poky-linux/gnu-efi/3.0.17-r0/gnu-efi-3.0.17=/usr/src/debug/gnu-efi/3.0.17-r0 -fdebug-prefix-map=/srv/storage/alex/yocto/build-64-alt/tmp/work/core2-64-poky-linux/gnu-efi/3.0.17-r0/recipe-sysroot= -fmacro-prefix-map=/srv/storage/alex/yocto/build-64-alt/tmp/work/core2-64-poky-linux/gnu-efi/3.0.17-r0/recipe-sysroot= -fdebug-prefix-map=/srv/storage/alex/yocto/build-64-alt/tmp/work/core2-64-poky-linux/gnu-efi/3.0.17-r0/recipe-sysroot-native= -Wl,-z,relro,-z,now -nostdlib --warn-common --no-undefined --fatal-warnings --build-id=sha1 -nostdlib --warn-common --no-undefined --fatal-warnings --build-id=sha1 -shared -Bsymbolic -L../lib -L../gnuefi ../gnuefi/crt0-efi-x86_64.o ctors_test.o ctors_fns.o -o ctors_test.so -lefi -lgnuefi /srv/storage/alex/yocto/build-64-alt/tmp/work/core2-64-poky-linux/gnu-efi/3.0.17-r0/recipe-sysroot/usr/lib/../lib/x86_64-poky-linux/13.1.1/libgcc.a -T /srv/storage/alex/yocto/build-64-alt/tmp/work/core2-64-poky-linux/gnu-efi/3.0.17-r0/gnu-efi-3.0.17//apps/../gnuefi/elf_x86_64_efi.lds | x86_64-poky-linux-ld: unrecognized option '-Wl,-O1' | x86_64-poky-linux-ld: use the --help option for usage information > > -FILES:${PN} += "${libdir}/*.lds" > > +FILES:${PN} += "${libdir}/*.lds ${libdir}/gnuefi/apps" > > Do you think if there is any positives of these be packaged separately? Not really. gnu-efi is a static library that consumers (e.g. systemd-boot) link with at build time, so the main package has nothing other than these apps, and one small .lds file. If there's a better way, it should be done by someone who's an expert in it. Alex
On Fri, Jul 28, 2023 at 3:57 AM Alexander Kanavin <alex.kanavin@gmail.com> wrote: > > On Thu, 27 Jul 2023 at 18:09, Khem Raj <raj.khem@gmail.com> wrote: > > > > On 7/27/23 7:36 AM, Alexander Kanavin wrote: > > > Unset LDFLAGS as the standard ones do not work when linking EFI binaries > > > (the new version of gnu-efi adds various apps). > > > > > > > curious about which ldflags are problematic from OE env. > > | x86_64-poky-linux-ld > --sysroot=/srv/storage/alex/yocto/build-64-alt/tmp/work/core2-64-poky-linux/gnu-efi/3.0.17-r0/recipe-sysroot > -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -fcanon-prefix-map > -fmacro-prefix-map=/srv/storage/alex/yocto/build-64-alt/tmp/work/core2-64-poky-linux/gnu-efi/3.0.17-r0/gnu-efi-3.0.17=/usr/src/debug/gnu-efi/3.0.17-r0 > -fdebug-prefix-map=/srv/storage/alex/yocto/build-64-alt/tmp/work/core2-64-poky-linux/gnu-efi/3.0.17-r0/gnu-efi-3.0.17=/usr/src/debug/gnu-efi/3.0.17-r0 > -fmacro-prefix-map=/srv/storage/alex/yocto/build-64-alt/tmp/work/core2-64-poky-linux/gnu-efi/3.0.17-r0/gnu-efi-3.0.17=/usr/src/debug/gnu-efi/3.0.17-r0 > -fdebug-prefix-map=/srv/storage/alex/yocto/build-64-alt/tmp/work/core2-64-poky-linux/gnu-efi/3.0.17-r0/gnu-efi-3.0.17=/usr/src/debug/gnu-efi/3.0.17-r0 > -fdebug-prefix-map=/srv/storage/alex/yocto/build-64-alt/tmp/work/core2-64-poky-linux/gnu-efi/3.0.17-r0/recipe-sysroot= > -fmacro-prefix-map=/srv/storage/alex/yocto/build-64-alt/tmp/work/core2-64-poky-linux/gnu-efi/3.0.17-r0/recipe-sysroot= > -fdebug-prefix-map=/srv/storage/alex/yocto/build-64-alt/tmp/work/core2-64-poky-linux/gnu-efi/3.0.17-r0/recipe-sysroot-native= > -Wl,-z,relro,-z,now -nostdlib --warn-common --no-undefined > --fatal-warnings --build-id=sha1 -nostdlib --warn-common > --no-undefined --fatal-warnings --build-id=sha1 -shared -Bsymbolic > -L../lib -L../gnuefi ../gnuefi/crt0-efi-x86_64.o ctors_test.o > ctors_fns.o -o ctors_test.so -lefi -lgnuefi > /srv/storage/alex/yocto/build-64-alt/tmp/work/core2-64-poky-linux/gnu-efi/3.0.17-r0/recipe-sysroot/usr/lib/../lib/x86_64-poky-linux/13.1.1/libgcc.a > -T /srv/storage/alex/yocto/build-64-alt/tmp/work/core2-64-poky-linux/gnu-efi/3.0.17-r0/gnu-efi-3.0.17//apps/../gnuefi/elf_x86_64_efi.lds > | x86_64-poky-linux-ld: unrecognized option '-Wl,-O1' > | x86_64-poky-linux-ld: use the --help option for usage information > I see, OE LDFLAGS assume compiler driver to call linker and thats why bunch of -Wl, options are used but here, bare ld is called. Does it make sense to use CCLD as linker instead of bare LD in these makefiles. Some options like prefix map etc might be useful for removing build time paths and hash-style is also important one. > > > > -FILES:${PN} += "${libdir}/*.lds" > > > +FILES:${PN} += "${libdir}/*.lds ${libdir}/gnuefi/apps" > > > > Do you think if there is any positives of these be packaged separately? > > Not really. gnu-efi is a static library that consumers (e.g. > systemd-boot) link with at build time, so the main package has nothing > other than these apps, and one small .lds file. If there's a better > way, it should be done by someone who's an expert in it. > > Alex
Maybe. My goal is only to update the version; if you can experiment with CCLD vs LD and send a followup I'd appreaciate. (I don't even know what the difference is). The update passed a-full, so it doesn't cause obvious problems at least. Alex On Fri, 28 Jul 2023 at 16:44, Khem Raj <raj.khem@gmail.com> wrote: > > On Fri, Jul 28, 2023 at 3:57 AM Alexander Kanavin > <alex.kanavin@gmail.com> wrote: > > > > On Thu, 27 Jul 2023 at 18:09, Khem Raj <raj.khem@gmail.com> wrote: > > > > > > On 7/27/23 7:36 AM, Alexander Kanavin wrote: > > > > Unset LDFLAGS as the standard ones do not work when linking EFI binaries > > > > (the new version of gnu-efi adds various apps). > > > > > > > > > > curious about which ldflags are problematic from OE env. > > > > | x86_64-poky-linux-ld > > --sysroot=/srv/storage/alex/yocto/build-64-alt/tmp/work/core2-64-poky-linux/gnu-efi/3.0.17-r0/recipe-sysroot > > -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -fcanon-prefix-map > > -fmacro-prefix-map=/srv/storage/alex/yocto/build-64-alt/tmp/work/core2-64-poky-linux/gnu-efi/3.0.17-r0/gnu-efi-3.0.17=/usr/src/debug/gnu-efi/3.0.17-r0 > > -fdebug-prefix-map=/srv/storage/alex/yocto/build-64-alt/tmp/work/core2-64-poky-linux/gnu-efi/3.0.17-r0/gnu-efi-3.0.17=/usr/src/debug/gnu-efi/3.0.17-r0 > > -fmacro-prefix-map=/srv/storage/alex/yocto/build-64-alt/tmp/work/core2-64-poky-linux/gnu-efi/3.0.17-r0/gnu-efi-3.0.17=/usr/src/debug/gnu-efi/3.0.17-r0 > > -fdebug-prefix-map=/srv/storage/alex/yocto/build-64-alt/tmp/work/core2-64-poky-linux/gnu-efi/3.0.17-r0/gnu-efi-3.0.17=/usr/src/debug/gnu-efi/3.0.17-r0 > > -fdebug-prefix-map=/srv/storage/alex/yocto/build-64-alt/tmp/work/core2-64-poky-linux/gnu-efi/3.0.17-r0/recipe-sysroot= > > -fmacro-prefix-map=/srv/storage/alex/yocto/build-64-alt/tmp/work/core2-64-poky-linux/gnu-efi/3.0.17-r0/recipe-sysroot= > > -fdebug-prefix-map=/srv/storage/alex/yocto/build-64-alt/tmp/work/core2-64-poky-linux/gnu-efi/3.0.17-r0/recipe-sysroot-native= > > -Wl,-z,relro,-z,now -nostdlib --warn-common --no-undefined > > --fatal-warnings --build-id=sha1 -nostdlib --warn-common > > --no-undefined --fatal-warnings --build-id=sha1 -shared -Bsymbolic > > -L../lib -L../gnuefi ../gnuefi/crt0-efi-x86_64.o ctors_test.o > > ctors_fns.o -o ctors_test.so -lefi -lgnuefi > > /srv/storage/alex/yocto/build-64-alt/tmp/work/core2-64-poky-linux/gnu-efi/3.0.17-r0/recipe-sysroot/usr/lib/../lib/x86_64-poky-linux/13.1.1/libgcc.a > > -T /srv/storage/alex/yocto/build-64-alt/tmp/work/core2-64-poky-linux/gnu-efi/3.0.17-r0/gnu-efi-3.0.17//apps/../gnuefi/elf_x86_64_efi.lds > > | x86_64-poky-linux-ld: unrecognized option '-Wl,-O1' > > | x86_64-poky-linux-ld: use the --help option for usage information > > > > I see, OE LDFLAGS assume compiler driver to call linker and thats why > bunch of -Wl, options are used but here, bare ld is called. Does it > make sense to use CCLD > as linker instead of bare LD in these makefiles. Some options like > prefix map etc might be useful for removing build time paths and > hash-style is also important one. > > > > > > > -FILES:${PN} += "${libdir}/*.lds" > > > > +FILES:${PN} += "${libdir}/*.lds ${libdir}/gnuefi/apps" > > > > > > Do you think if there is any positives of these be packaged separately? > > > > Not really. gnu-efi is a static library that consumers (e.g. > > systemd-boot) link with at build time, so the main package has nothing > > other than these apps, and one small .lds file. If there's a better > > way, it should be done by someone who's an expert in it. > > > > Alex
On Fri, Jul 28, 2023 at 7:47 AM Alexander Kanavin <alex.kanavin@gmail.com> wrote: > > Maybe. My goal is only to update the version; if you can experiment > with CCLD vs LD and send a followup I'd appreaciate. (I don't even > know what the difference is). The update passed a-full, so it doesn't > cause obvious problems at least. yeah, something that should be discussed upstream first perhaps. > > Alex > > On Fri, 28 Jul 2023 at 16:44, Khem Raj <raj.khem@gmail.com> wrote: > > > > On Fri, Jul 28, 2023 at 3:57 AM Alexander Kanavin > > <alex.kanavin@gmail.com> wrote: > > > > > > On Thu, 27 Jul 2023 at 18:09, Khem Raj <raj.khem@gmail.com> wrote: > > > > > > > > On 7/27/23 7:36 AM, Alexander Kanavin wrote: > > > > > Unset LDFLAGS as the standard ones do not work when linking EFI binaries > > > > > (the new version of gnu-efi adds various apps). > > > > > > > > > > > > > curious about which ldflags are problematic from OE env. > > > > > > | x86_64-poky-linux-ld > > > --sysroot=/srv/storage/alex/yocto/build-64-alt/tmp/work/core2-64-poky-linux/gnu-efi/3.0.17-r0/recipe-sysroot > > > -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -fcanon-prefix-map > > > -fmacro-prefix-map=/srv/storage/alex/yocto/build-64-alt/tmp/work/core2-64-poky-linux/gnu-efi/3.0.17-r0/gnu-efi-3.0.17=/usr/src/debug/gnu-efi/3.0.17-r0 > > > -fdebug-prefix-map=/srv/storage/alex/yocto/build-64-alt/tmp/work/core2-64-poky-linux/gnu-efi/3.0.17-r0/gnu-efi-3.0.17=/usr/src/debug/gnu-efi/3.0.17-r0 > > > -fmacro-prefix-map=/srv/storage/alex/yocto/build-64-alt/tmp/work/core2-64-poky-linux/gnu-efi/3.0.17-r0/gnu-efi-3.0.17=/usr/src/debug/gnu-efi/3.0.17-r0 > > > -fdebug-prefix-map=/srv/storage/alex/yocto/build-64-alt/tmp/work/core2-64-poky-linux/gnu-efi/3.0.17-r0/gnu-efi-3.0.17=/usr/src/debug/gnu-efi/3.0.17-r0 > > > -fdebug-prefix-map=/srv/storage/alex/yocto/build-64-alt/tmp/work/core2-64-poky-linux/gnu-efi/3.0.17-r0/recipe-sysroot= > > > -fmacro-prefix-map=/srv/storage/alex/yocto/build-64-alt/tmp/work/core2-64-poky-linux/gnu-efi/3.0.17-r0/recipe-sysroot= > > > -fdebug-prefix-map=/srv/storage/alex/yocto/build-64-alt/tmp/work/core2-64-poky-linux/gnu-efi/3.0.17-r0/recipe-sysroot-native= > > > -Wl,-z,relro,-z,now -nostdlib --warn-common --no-undefined > > > --fatal-warnings --build-id=sha1 -nostdlib --warn-common > > > --no-undefined --fatal-warnings --build-id=sha1 -shared -Bsymbolic > > > -L../lib -L../gnuefi ../gnuefi/crt0-efi-x86_64.o ctors_test.o > > > ctors_fns.o -o ctors_test.so -lefi -lgnuefi > > > /srv/storage/alex/yocto/build-64-alt/tmp/work/core2-64-poky-linux/gnu-efi/3.0.17-r0/recipe-sysroot/usr/lib/../lib/x86_64-poky-linux/13.1.1/libgcc.a > > > -T /srv/storage/alex/yocto/build-64-alt/tmp/work/core2-64-poky-linux/gnu-efi/3.0.17-r0/gnu-efi-3.0.17//apps/../gnuefi/elf_x86_64_efi.lds > > > | x86_64-poky-linux-ld: unrecognized option '-Wl,-O1' > > > | x86_64-poky-linux-ld: use the --help option for usage information > > > > > > > I see, OE LDFLAGS assume compiler driver to call linker and thats why > > bunch of -Wl, options are used but here, bare ld is called. Does it > > make sense to use CCLD > > as linker instead of bare LD in these makefiles. Some options like > > prefix map etc might be useful for removing build time paths and > > hash-style is also important one. > > > > > > > > > > -FILES:${PN} += "${libdir}/*.lds" > > > > > +FILES:${PN} += "${libdir}/*.lds ${libdir}/gnuefi/apps" > > > > > > > > Do you think if there is any positives of these be packaged separately? > > > > > > Not really. gnu-efi is a static library that consumers (e.g. > > > systemd-boot) link with at build time, so the main package has nothing > > > other than these apps, and one small .lds file. If there's a better > > > way, it should be done by someone who's an expert in it. > > > > > > Alex
diff --git a/meta/recipes-bsp/gnu-efi/gnu-efi_3.0.15.bb b/meta/recipes-bsp/gnu-efi/gnu-efi_3.0.17.bb similarity index 93% rename from meta/recipes-bsp/gnu-efi/gnu-efi_3.0.15.bb rename to meta/recipes-bsp/gnu-efi/gnu-efi_3.0.17.bb index 5ae6f391ae9..547c469d19f 100644 --- a/meta/recipes-bsp/gnu-efi/gnu-efi_3.0.15.bb +++ b/meta/recipes-bsp/gnu-efi/gnu-efi_3.0.17.bb @@ -17,7 +17,7 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/files/${BP}.tar.bz2 \ file://gnu-efi-3.0.9-fix-clang-build.patch \ " -SRC_URI[sha256sum] = "931a257b9c5c1ba65ff519f18373c438a26825f2db7866b163e96d1b168f20ea" +SRC_URI[sha256sum] = "7807e903349343a7a142ebb934703a2872235e89688cf586c032b0a1087bcaf4" COMPATIBLE_HOST = "(x86_64.*|i.86.*|aarch64.*|arm.*|riscv64.*)-linux" COMPATIBLE_HOST:armv4 = 'null' @@ -34,6 +34,10 @@ def gnu_efi_arch(d): return "ia32" return tarch +do_compile:prepend() { + unset LDFLAGS +} + EXTRA_OEMAKE = "'ARCH=${@gnu_efi_arch(d)}' 'CC=${CC}' 'AS=${AS}' 'LD=${LD}' 'AR=${AR}' \ 'RANLIB=${RANLIB}' 'OBJCOPY=${OBJCOPY}' 'PREFIX=${prefix}' 'LIBDIR=${libdir}' \ " @@ -46,7 +50,7 @@ do_install() { oe_runmake install INSTALLROOT="${D}" } -FILES:${PN} += "${libdir}/*.lds" +FILES:${PN} += "${libdir}/*.lds ${libdir}/gnuefi/apps" # 64-bit binaries are expected for EFI when targeting X32 INSANE_SKIP:${PN}-dev:append:linux-gnux32 = " arch"
Unset LDFLAGS as the standard ones do not work when linking EFI binaries (the new version of gnu-efi adds various apps). Signed-off-by: Alexander Kanavin <alex@linutronix.de> --- .../gnu-efi/{gnu-efi_3.0.15.bb => gnu-efi_3.0.17.bb} | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) rename meta/recipes-bsp/gnu-efi/{gnu-efi_3.0.15.bb => gnu-efi_3.0.17.bb} (93%)