Messages in this thread Patch in this message | | | Date | Fri, 13 Aug 2021 13:05:11 -0700 | Subject | [PATCH v2] ppc: add "-z notext" flag to disable diagnostic | From | Bill Wendling <> |
| |
From: Fangrui Song <maskray@google.com>
Object files used to link .tmp_vmlinux.kallsyms1 have many R_PPC64_ADDR64 relocations in non-SHF_WRITE sections. There are many text relocations (e.g. in .rela___ksymtab_gpl+* and .rela__mcount_loc sections) in a -pie link and are disallowed by LLD:
ld.lld: error: can't create dynamic relocation R_PPC64_ADDR64 against local symbol 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:(__restart_table+0x10)
Newer GNU ld configured with "--enable-textrel-check=error" will report an error as well:
$ ld-new -EL -m elf64lppc -pie ... -o .tmp_vmlinux.kallsyms1 ... ld-new: read-only segment has dynamic relocations
Add "-z notext" to suppress the errors. Non-CONFIG_RELOCATABLE builds use the default -no-pie mode and thus R_PPC64_ADDR64 relocations can be resolved at link-time.
Link: https://github.com/ClangBuiltLinux/linux/issues/811 Signed-off-by: Fangrui Song <maskray@google.com> Co-developed-by: Bill Wendling <morbo@google.com> Signed-off-by: Bill Wendling <morbo@google.com> Reported-by: Itaru Kitayama <itaru.kitayama@riken.jp> Reviewed-by: Nick Desaulniers <ndesaulniers@google.com> --- v2: - Assign "Fangrui Song" as the proper author. - Improve the commit message to add more context. - Appending tags from original patch's review. --- arch/powerpc/Makefile | 1 + 1 file changed, 1 insertion(+)
diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile index 6505d66f1193..17a9fbf9b789 100644 --- a/arch/powerpc/Makefile +++ b/arch/powerpc/Makefile @@ -122,6 +122,7 @@ endif LDFLAGS_vmlinux-y := -Bstatic LDFLAGS_vmlinux-$(CONFIG_RELOCATABLE) := -pie +LDFLAGS_vmlinux-$(CONFIG_RELOCATABLE) += -z notext LDFLAGS_vmlinux := $(LDFLAGS_vmlinux-y) ifdef CONFIG_PPC64 -- 2.33.0.rc1.237.g0d66db33f3-goog
| |