Skip to contentSkip to conversation

Patch "ARM: 8405/1: VDSO: fix regression with toolchains lacking ld.bfd executable" has been added to the 4.1-stable tree

PATCH [email protected] 1 participant 1 message Sep 12, 2015

Subsystems (2)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

This is a note to let you know that I've just added the patch titled

ARM: 8405/1: VDSO: fix regression with toolchains lacking ld.bfd executable

to the 4.1-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
arm-8405-1-vdso-fix-regression-with-toolchains-lacking-ld.bfd-executable.patch
and it can be found in the queue-4.1 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

Quoted 1 line

From 3473f26592c1c365d376aee29433d7db75f14d1e Mon Sep 17 00:00:00 2001

From: Nathan Lynch <[email protected]>
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 <[email protected]>

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.

---
 arch/arm/vdso/Makefile |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm/vdso/Makefile +1 -1
@@ -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

Patches currently in stable-queue which might be from [email protected] are

queue-4.1/arm-8384-1-vdso-force-use-of-bfd-linker.patch queue-4.1/arm-8385-1-vdso-group-link-options.patch queue-4.1/arm-8405-1-vdso-fix-regression-with-toolchains-lacking-ld.bfd-executable.patch