| From 8ecee16045dbc1af009857c972b3471dce0d2a13 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Mon, 17 Jun 2019 13:29:19 +0100 |
| Subject: ARM: 8867/1: vdso: pass --be8 to linker if necessary |
| |
| From: Jason A. Donenfeld <Jason@zx2c4.com> |
| |
| [ Upstream commit c5d0e49e8d8f1a23034fdf8e935afc0c8f7ae27d ] |
| |
| The commit fe00e50b2db8 ("ARM: 8858/1: vdso: use $(LD) instead of $(CC) |
| to link VDSO") removed the passing of CFLAGS, since ld doesn't take |
| those directly. However, prior, big-endian ARM was relying on gcc to |
| translate its -mbe8 option into ld's --be8 option. Lacking this, ld |
| generated be32 code, making the VDSO generate SIGILL when called by |
| userspace. |
| |
| This commit passes --be8 if CONFIG_CPU_ENDIAN_BE8 is enabled. |
| |
| Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> |
| Cc: Masahiro Yamada <yamada.masahiro@socionext.com> |
| Cc: Arnd Bergmann <arnd@arndb.de> |
| Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> |
| Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| arch/arm/vdso/Makefile | 5 +++-- |
| 1 file changed, 3 insertions(+), 2 deletions(-) |
| |
| diff --git a/arch/arm/vdso/Makefile b/arch/arm/vdso/Makefile |
| index fadf554d93917..1f5ec9741e6d4 100644 |
| --- a/arch/arm/vdso/Makefile |
| +++ b/arch/arm/vdso/Makefile |
| @@ -10,9 +10,10 @@ obj-vdso := $(addprefix $(obj)/, $(obj-vdso)) |
| ccflags-y := -fPIC -fno-common -fno-builtin -fno-stack-protector |
| ccflags-y += -DDISABLE_BRANCH_PROFILING |
| |
| -ldflags-y = -Bsymbolic --no-undefined -soname=linux-vdso.so.1 \ |
| +ldflags-$(CONFIG_CPU_ENDIAN_BE8) := --be8 |
| +ldflags-y := -Bsymbolic --no-undefined -soname=linux-vdso.so.1 \ |
| -z max-page-size=4096 -z common-page-size=4096 \ |
| - -nostdlib -shared \ |
| + -nostdlib -shared $(ldflags-y) \ |
| $(call ld-option, --hash-style=sysv) \ |
| $(call ld-option, --build-id) \ |
| -T |
| -- |
| 2.25.1 |
| |