On Wed, 2017-07-26 at 13:18:31 UTC, Michael Ellerman wrote: > In commit efe0160cfd40 ("powerpc/64: Linker on-demand sfpr functions > for modules"), we added an ld version check early in the powerpc > top-level Makefile. > > Because the Makefile runs before the kernel config is setup, the > checks for CONFIG_CPU_LITTLE_ENDIAN etc. all take the default case. So > we end up configuring ld for 32-bit big endian. > > That would be OK, except that for historical (or perhaps no) reason, > we use 'override LD' to add the endian flags to the LD variable > itself, rather than the normal approach of adding them to LDFLAGS. > > The end result is that when we check the ld version we run it as: > > $(CROSS_COMPILE)ld -EB -m elf32ppc --version > > This often works, unless you are using a 64-bit only and/or little > endian only, toolchain. In which case you see something like: > > $ make defconfig > powerpc64le-linux-ld: unrecognised emulation mode: elf32ppc > Supported emulations: elf64lppc elf32lppc elf32lppclinux elf32lppcsim > /bin/sh: 1: [: -ge: unexpected operator > > The proper fix is to stop using 'override LD', but that will require a > fair bit of testing. Instead we can fix it for now just by reordering > the Makefile to do the version check earlier. > > Fixes: efe0160cfd40 ("powerpc/64: Linker on-demand sfpr functions for > modules") > Signed-off-by: Michael Ellerman <m...@ellerman.id.au>
Applied to powerpc fixes. https://git.kernel.org/powerpc/c/b40b2386bce982ad97f3683b2b34e5 cheers