From: Greg Kroah-Hartman Date: Sat, 12 Sep 2015 15:58:47 +0000 (-0700) Subject: 4.1-stable patches X-Git-Tag: v3.10.88~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=54884ec4ed1d4208547f40e97e6ca0dcea1de985;p=thirdparty%2Fkernel%2Fstable-queue.git 4.1-stable patches added patches: arm-8405-1-vdso-fix-regression-with-toolchains-lacking-ld.bfd-executable.patch --- diff --git a/queue-4.1/arm-8405-1-vdso-fix-regression-with-toolchains-lacking-ld.bfd-executable.patch b/queue-4.1/arm-8405-1-vdso-fix-regression-with-toolchains-lacking-ld.bfd-executable.patch new file mode 100644 index 00000000000..70d1d4c61dd --- /dev/null +++ b/queue-4.1/arm-8405-1-vdso-fix-regression-with-toolchains-lacking-ld.bfd-executable.patch @@ -0,0 +1,69 @@ +From 3473f26592c1c365d376aee29433d7db75f14d1e Mon Sep 17 00:00:00 2001 +From: Nathan Lynch +Date: Fri, 17 Jul 2015 21:40:28 +0100 +Subject: ARM: 8405/1: VDSO: fix regression with toolchains lacking ld.bfd executable +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Nathan Lynch + +commit 3473f26592c1c365d376aee29433d7db75f14d1e upstream. + +The Sourcery CodeBench Lite 2014.05 toolchain (gcc 4.8.3, binutils +2.24.51) has a GCC which implements -fuse-ld, and it doesn't include +the gold linker, but it lacks an ld.bfd executable in its +installation. This means that passing -fuse-ld=bfd fails with: + + VDSO arch/arm/vdso/vdso.so.raw + collect2: fatal error: cannot find 'ld' + +Arguably this is a deficiency in the toolchain, but I suspect it's +commonly used enough that it's worth accommodating: just use + +cc-ldoption (to cause a link attempt) instead of cc-option to test +whether we can use -fuse-ld. So -fuse-ld=bfd won't be used with this +toolchain, but the build will rightly succeed, just as it does for +toolchains which don't implement -fuse-ld (and don't use gold as the +default linker). + +Note: this will change the failure mode for a corner case I was trying +to handle in d2b30cd4b722, where the toolchain defaults to the gold +linker and the BFD linker is not found in PATH, from: + + VDSO arch/arm/vdso/vdso.so.raw + collect2: fatal error: cannot find 'ld' + +i.e. the BFD linker is not found, to: + + OBJCOPY arch/arm/vdso/vdso.so + BFD: arch/arm/vdso/vdso.so: Not enough room for program headers, try + linking with -N + +that is, we fail to prevent gold from being used as the linker, and it +produces an object that objcopy can't digest. + +Reported-by: Baruch Siach +Tested-by: Baruch Siach +Tested-by: Raphaël Poggi +Fixes: d2b30cd4b722 ("ARM: 8384/1: VDSO: force use of BFD linker") +Cc: stable@vger.kernel.org +Signed-off-by: Nathan Lynch +Signed-off-by: Russell King +Signed-off-by: Greg Kroah-Hartman + +--- + arch/arm/vdso/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/arm/vdso/Makefile ++++ b/arch/arm/vdso/Makefile +@@ -14,7 +14,7 @@ VDSO_LDFLAGS += -Wl,-z,max-page-size=409 + VDSO_LDFLAGS += -nostdlib -shared + VDSO_LDFLAGS += $(call cc-ldoption, -Wl$(comma)--hash-style=sysv) + VDSO_LDFLAGS += $(call cc-ldoption, -Wl$(comma)--build-id) +-VDSO_LDFLAGS += $(call cc-option, -fuse-ld=bfd) ++VDSO_LDFLAGS += $(call cc-ldoption, -fuse-ld=bfd) + + obj-$(CONFIG_VDSO) += vdso.o + extra-$(CONFIG_VDSO) += vdso.lds diff --git a/queue-4.1/series b/queue-4.1/series index a09d2941b05..2953adf3eba 100644 --- a/queue-4.1/series +++ b/queue-4.1/series @@ -76,3 +76,4 @@ arm64-perf-fix-unassigned-cpu_pmu-plat_device-when-probing-pmu-ppis.patch x86-xen-make-config_xen-depend-on-config_x86_local_apic.patch x86-apic-fix-fallout-from-x2apic-cleanup.patch x86-idle-restore-trace_cpu_idle-to-mwait_idle-calls.patch +arm-8405-1-vdso-fix-regression-with-toolchains-lacking-ld.bfd-executable.patch