If LD or AS is specified on the command line using "make LD=<my-ld>", the endianness flag will not be added. Depending on the toolchain used, this can result in endianness mismatch errors, such as
aarch64-cros-linux-gnu/binutils-bin/2.27.0/ld.bfd.real: arch/arm64/crypto/.tmp_aes-ce-cipher.o: compiled for a big endian system and target is little endian The problem was observed when using the Chrome OS build system (which sets LD on the command line) for an arm64:allmodconfig build. Use the override flag for both LD and AS to ensure that the endianness flag is always set. Cc: Douglas Anderson <diand...@chromium.org> Signed-off-by: Guenter Roeck <li...@roeck-us.net> --- arch/arm64/Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/arch/arm64/Makefile b/arch/arm64/Makefile index 939b310913cf..d780d00bea9c 100644 --- a/arch/arm64/Makefile +++ b/arch/arm64/Makefile @@ -56,15 +56,15 @@ KBUILD_AFLAGS += $(call cc-option,-mabi=lp64) ifeq ($(CONFIG_CPU_BIG_ENDIAN), y) KBUILD_CPPFLAGS += -mbig-endian CHECKFLAGS += -D__AARCH64EB__ -AS += -EB -LD += -EB +override AS += -EB +override LD += -EB LDFLAGS += -maarch64linuxb UTS_MACHINE := aarch64_be else KBUILD_CPPFLAGS += -mlittle-endian CHECKFLAGS += -D__AARCH64EL__ -AS += -EL -LD += -EL +override AS += -EL +override LD += -EL LDFLAGS += -maarch64linux UTS_MACHINE := aarch64 endif -- 2.7.4