summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Ellerman <mpe@ellerman.id.au>2015-04-23 17:27:12 +1000
committerJiri Slaby <jslaby@suse.cz>2017-05-09 08:19:40 +0200
commit3bd7a64caab850def8988a5f4ff5550b97bb1e93 (patch)
treead097bf20c21ccf2bc8fb396184b74ce2dbea901
parent36d08048a7d5b5c56d3f2f9d1b90997f5c44a25e (diff)
powerpc: Reject binutils 2.24 when building little endian
commit 60e065f70bdb0b0e916389024922ad40f3270c96 upstream. There is a bug in binutils 2.24 which causes miscompilation if we're building little endian and using weak symbols (which the kernel does). It is fixed in binutils commit 57fa7b8c7e59 "Correct elf_merge_st_other arguments for weak symbols", which is in binutils 2.25 and has been backported to the binutils 2.24 branch and has been picked up by most distros it seems. However if we're running stock 2.24 (no extra version) then the bug is present, so check for that and bail. Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Signed-off-by: Jiri Slaby <jslaby@suse.cz>
-rw-r--r--arch/powerpc/Makefile8
1 files changed, 8 insertions, 0 deletions
diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile
index 994337bb529c..f45f740d5ccc 100644
--- a/arch/powerpc/Makefile
+++ b/arch/powerpc/Makefile
@@ -289,6 +289,14 @@ checkbin:
echo 'disable kernel modules' ; \
false ; \
fi
+ @if test "x${CONFIG_CPU_LITTLE_ENDIAN}" = "xy" \
+ && $(LD) --version | head -1 | grep ' 2\.24$$' >/dev/null ; then \
+ echo -n '*** binutils 2.24 miscompiles weak symbols ' ; \
+ echo 'in some circumstances.' ; \
+ echo -n '*** Please use a different binutils version.' ; \
+ false ; \
+ fi
+
CLEAN_FILES += $(TOUT)