arm64: build with baremetal linker target instead of Linux when available
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@redhat.com> Tested-by: Laura Abbott <labbott@redhat.com> Acked-by: Masahiro Yamada <yamada.masahiro@socionext.com> Cc: Paul Kocialkowski <contact@paulk.fr> Signed-off-by: Olof Johansson <olof@lixom.net> Signed-off-by: Will Deacon <will.deacon@arm.com>
This commit is contained in:
parent
14d6e289a8
commit
c931d34ea0
|
@ -60,15 +60,16 @@ ifeq ($(CONFIG_CPU_BIG_ENDIAN), y)
|
||||||
KBUILD_CPPFLAGS += -mbig-endian
|
KBUILD_CPPFLAGS += -mbig-endian
|
||||||
CHECKFLAGS += -D__AARCH64EB__
|
CHECKFLAGS += -D__AARCH64EB__
|
||||||
AS += -EB
|
AS += -EB
|
||||||
LD += -EB
|
# Prefer the baremetal ELF build target, but not all toolchains include
|
||||||
LDFLAGS += -maarch64linuxb
|
# it so fall back to the standard linux version if needed.
|
||||||
|
LDFLAGS += -EB $(call ld-option, -maarch64elfb, -maarch64linuxb)
|
||||||
UTS_MACHINE := aarch64_be
|
UTS_MACHINE := aarch64_be
|
||||||
else
|
else
|
||||||
KBUILD_CPPFLAGS += -mlittle-endian
|
KBUILD_CPPFLAGS += -mlittle-endian
|
||||||
CHECKFLAGS += -D__AARCH64EL__
|
CHECKFLAGS += -D__AARCH64EL__
|
||||||
AS += -EL
|
AS += -EL
|
||||||
LD += -EL
|
# Same as above, prefer ELF but fall back to linux target if needed.
|
||||||
LDFLAGS += -maarch64linux
|
LDFLAGS += -EL $(call ld-option, -maarch64elf, -maarch64linux)
|
||||||
UTS_MACHINE := aarch64
|
UTS_MACHINE := aarch64
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
|
@ -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))
|
$(CC) $(1) $(KBUILD_CPPFLAGS) $(CC_OPTION_CFLAGS) -nostdlib -x c /dev/null -o "$$TMP",$(1),$(2))
|
||||||
|
|
||||||
# ld-option
|
# ld-option
|
||||||
# Usage: LDFLAGS += $(call ld-option, -X)
|
# Usage: LDFLAGS += $(call ld-option, -X, -Y)
|
||||||
ld-option = $(call try-run, $(LD) $(LDFLAGS) $(1) -v,$(1),$(2))
|
ld-option = $(call try-run, $(LD) $(LDFLAGS) $(1) -v,$(1),$(2),$(3))
|
||||||
|
|
||||||
# ar-option
|
# ar-option
|
||||||
# Usage: KBUILD_ARFLAGS := $(call ar-option,D)
|
# Usage: KBUILD_ARFLAGS := $(call ar-option,D)
|
||||||
|
|
Loading…
Reference in New Issue