Nicholas Piggin <npig...@gmail.com> writes: > The boot wrapper performs its own relocations and does not require > PT_INTERP segment. > > Without this option, binutils 2.28 and newer tries to create a program > header segment due to PT_INTERP, and the link fails because there is no > space for it.
2.28 is not released yet though is it? So can we just declare versions with that behaviour broken? > diff --git a/arch/powerpc/boot/wrapper b/arch/powerpc/boot/wrapper > index 404b3aa..cd941a8 100755 > --- a/arch/powerpc/boot/wrapper > +++ b/arch/powerpc/boot/wrapper > @@ -181,6 +181,13 @@ case "$elfformat" in > elf32-powerpc) format=elf32ppc ;; > esac > > +# Do not include PT_INTERP segment when linking pie. Non-pie linking > +# just ignores this option. > +LD_VERSION=$(${CROSS}ld --version | $srctree/scripts/ld-version.sh) > +LD_NO_DL_MIN_VERSION=$(echo 2.26 | $srctree/scripts/ld-version.sh) > +if [ "$LD_VERSION" -ge "$LD_NO_DL_MIN_VERSION" ] ; then > + nodl="--no-dynamic-linker" > +fi Some distros (RHEL at least?), ship the wrapper as a standalone script. So I don't think we can call things in $srctree. Or at least I don't know how that's supposed to work when it's shipped standalone. We're also basically reinventing ld-option, which is a PITA. cheers