Dear Christophe,
Am 11.08.21 um 16:10 schrieb Christophe Leroy:
Le 10/08/2021 à 20:38, Paul Menzel a écrit :
Am 29.07.21 um 10:23 schrieb Paul Menzel:
I just wanted to make you aware that building Linux for ppc64le with
clang/lld.ld fails with [1]:
ld.lld: error: can't create dynamic relocation R_PPC64_ADDR64
against symbol: empty_zero_page in readonly segment; recompile object
files with -fPIC or pass '-Wl,-z,notext' to allow text relocations in
the output
>>> defined in arch/powerpc/kernel/head_64.o
>>> referenced by
arch/powerpc/kernel/head_64.o:(___ksymtab+empty_zero_page+0x0)
The patch below from one of the comments [2] fixes it.
--- i/arch/powerpc/Makefile
+++ w/arch/powerpc/Makefile
@@ -122,7 +122,7 @@ cflags-$(CONFIG_STACKPROTECTOR) +=
-mstack-protector-guard-reg=r2
endif
LDFLAGS_vmlinux-y := -Bstatic
-LDFLAGS_vmlinux-$(CONFIG_RELOCATABLE) := -pie
+LDFLAGS_vmlinux-$(CONFIG_RELOCATABLE) := -pie -z notext
LDFLAGS_vmlinux := $(LDFLAGS_vmlinux-y)
LDFLAGS_vmlinux += $(call ld-option,--orphan-handling=warn)
Any comments, if this is the right fix? Current Linux master branch
still fails to build with `LLVM=1` on Ubuntu 21.04 without this change.
Which kernel version are you building ?
Since
https://github.com/linuxppc/linux/commit/45b30fafe528601f1a4449c9d68d8ebe7bbc39ad
, empty_zero_page[] is in arch/powerpc/mm/mem.c not in
arch/powerpc/kernel/head_64.o
Do you still have the issue with kernel 5.14 ?
Yes, before sending the message, I reproduced it with
$ git describe
v5.14-rc5-2-g9a73fa375d58
containing the commit you mentioned.
Kind regards,
Paul