| From foo@baz Sun Jun 17 12:07:33 CEST 2018 |
| From: Aurelien Jarno <aurelien@aurel32.net> |
| Date: Wed, 21 Mar 2018 22:26:31 +0100 |
| Subject: RISC-V: build vdso-dummy.o with -no-pie |
| |
| From: Aurelien Jarno <aurelien@aurel32.net> |
| |
| [ Upstream commit 85602bea297fc4e5223adbf7006dcce9aa694f17 ] |
| |
| Debian toolcahin defaults to PIE, and I guess that will also be the case |
| of most distributions. This causes the following build failure: |
| |
| AS arch/riscv/kernel/vdso/getcpu.o |
| AS arch/riscv/kernel/vdso/flush_icache.o |
| VDSOLD arch/riscv/kernel/vdso/vdso.so.dbg |
| OBJCOPY arch/riscv/kernel/vdso/vdso.so |
| AS arch/riscv/kernel/vdso/vdso.o |
| VDSOLD arch/riscv/kernel/vdso/vdso-dummy.o |
| LD arch/riscv/kernel/vdso/vdso-syms.o |
| riscv64-linux-gnu-ld: attempted static link of dynamic object `arch/riscv/kernel/vdso/vdso-dummy.o' |
| make[2]: *** [arch/riscv/kernel/vdso/Makefile:43: arch/riscv/kernel/vdso/vdso-syms.o] Error 1 |
| make[1]: *** [scripts/Makefile.build:575: arch/riscv/kernel/vdso] Error 2 |
| make: *** [Makefile:1018: arch/riscv/kernel] Error 2 |
| |
| While the root Makefile correctly passes "-fno-PIE" to build individual |
| object files, the RISC-V kernel also builds vdso-dummy.o as an |
| executable, which is therefore linked as PIE. Fix that by updating this |
| specific link rule to also include "-no-pie". |
| |
| Signed-off-by: Aurelien Jarno <aurelien@aurel32.net> |
| Signed-off-by: Palmer Dabbelt <palmer@sifive.com> |
| Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| arch/riscv/kernel/vdso/Makefile | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/arch/riscv/kernel/vdso/Makefile |
| +++ b/arch/riscv/kernel/vdso/Makefile |
| @@ -52,7 +52,7 @@ $(obj)/%.so: $(obj)/%.so.dbg FORCE |
| # Add -lgcc so rv32 gets static muldi3 and lshrdi3 definitions. |
| # Make sure only to export the intended __vdso_xxx symbol offsets. |
| quiet_cmd_vdsold = VDSOLD $@ |
| - cmd_vdsold = $(CC) $(KCFLAGS) -nostdlib $(SYSCFLAGS_$(@F)) \ |
| + cmd_vdsold = $(CC) $(KCFLAGS) $(call cc-option, -no-pie) -nostdlib $(SYSCFLAGS_$(@F)) \ |
| -Wl,-T,$(filter-out FORCE,$^) -o $@.tmp -lgcc && \ |
| $(CROSS_COMPILE)objcopy \ |
| $(patsubst %, -G __vdso_%, $(vdso-syms)) $@.tmp $@ |