2018-07-14 0:30 GMT+09:00 Olof Johansson <olof@xxxxxxxxx>: > Not all toolchains have the baremetal elf targets, RedHat/Fedora ones > in particular. So, probe for whether it's available and use the previous > (linux) targets if it isn't. > > Reported-by: Laura Abbott <labbott@xxxxxxxxxx> > Cc: Paul Kocialkowski <contact@xxxxxxxx> > Signed-off-by: Olof Johansson <olof@xxxxxxxxx> > --- > arch/arm64/Makefile | 9 +++++---- > scripts/Kbuild.include | 4 ++-- > 2 files changed, 7 insertions(+), 6 deletions(-) > > diff --git a/arch/arm64/Makefile b/arch/arm64/Makefile > index e7101b19d590..efe61a2e4b5e 100644 > --- a/arch/arm64/Makefile > +++ b/arch/arm64/Makefile > @@ -60,15 +60,16 @@ ifeq ($(CONFIG_CPU_BIG_ENDIAN), y) > KBUILD_CPPFLAGS += -mbig-endian > CHECKFLAGS += -D__AARCH64EB__ > AS += -EB > -# We must use the linux target here, since distributions don't tend to package > -# the ELF linker scripts with binutils, and this results in a build failure. > -LDFLAGS += -EB -maarch64linuxb > +# Prefer the baremetal ELF build target, but not all toolchains include > +# it so fall back to the standard linux version if needed. > +LDFLAGS += -EB $(call ld-option, -maarch64elfb, -maarch64linuxb) > UTS_MACHINE := aarch64_be > else > KBUILD_CPPFLAGS += -mlittle-endian > CHECKFLAGS += -D__AARCH64EL__ > AS += -EL > -LDFLAGS += -EL -maarch64linux # See comment above > +# Same as above, prefer ELF but fall back to linux target if needed. > +LDFLAGS += -EL $(call ld-option, -maarch64elf, -maarch64linux) > UTS_MACHINE := aarch64 > endif > > diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include > index c8156d61678c..1e13f502b42f 100644 > --- a/scripts/Kbuild.include > +++ b/scripts/Kbuild.include > @@ -163,8 +163,8 @@ cc-ldoption = $(call try-run,\ > $(CC) $(1) $(KBUILD_CPPFLAGS) $(CC_OPTION_CFLAGS) -nostdlib -x c /dev/null -o "$$TMP",$(1),$(2)) > > # ld-option > -# Usage: LDFLAGS += $(call ld-option, -X) > -ld-option = $(call try-run, $(LD) $(LDFLAGS) $(1) -v,$(1),$(2)) > +# Usage: LDFLAGS += $(call ld-option, -X, -Y) > +ld-option = $(call try-run, $(LD) $(LDFLAGS) $(1) -v,$(1),$(2),$(3)) > > # ar-option > # Usage: KBUILD_ARFLAGS := $(call ar-option,D) I guess this patch will go through the arm64 tree. I am fine with the change of scripts/Kbuild.include Acked-by: Masahiro Yamada <yamada.masahiro@xxxxxxxxxxxxx> -- Best Regards Masahiro Yamada -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html