Thread (5 messages) 5 messages, 3 authors, 2021-08-12

clang/ld.lld build fails with `can't create dynamic relocation R_PPC64_ADDR64 against local symbol in readonly segment`

flat view

From: Paul Menzel <hidden>
Date: 2021-07-29 08:23:59

Dear Linux folks,


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)

Kind regards,

Paul


[1]: https://github.com/ClangBuiltLinux/linux/issues/811
[2]: https://github.com/ClangBuiltLinux/linux/issues/811#issuecomment-568316320
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help