| From 60210a3d86dc57ce4a76a366e7841dda746a33f7 Mon Sep 17 00:00:00 2001 |
| From: Fangrui Song <maskray@google.com> |
| Date: Mon, 21 Mar 2022 18:26:17 -0700 |
| Subject: riscv module: remove (NOLOAD) |
| |
| From: Fangrui Song <maskray@google.com> |
| |
| commit 60210a3d86dc57ce4a76a366e7841dda746a33f7 upstream. |
| |
| On ELF, (NOLOAD) sets the section type to SHT_NOBITS[1]. It is conceptually |
| inappropriate for .plt, .got, and .got.plt sections which are always |
| SHT_PROGBITS. |
| |
| In GNU ld, if PLT entries are needed, .plt will be SHT_PROGBITS anyway |
| and (NOLOAD) will be essentially ignored. In ld.lld, since |
| https://reviews.llvm.org/D118840 ("[ELF] Support (TYPE=<value>) to |
| customize the output section type"), ld.lld will report a `section type |
| mismatch` error (later changed to a warning). Just remove (NOLOAD) to |
| fix the warning. |
| |
| [1] https://lld.llvm.org/ELF/linker_script.html As of today, "The |
| section should be marked as not loadable" on |
| https://sourceware.org/binutils/docs/ld/Output-Section-Type.html is |
| outdated for ELF. |
| |
| Link: https://github.com/ClangBuiltLinux/linux/issues/1597 |
| Fixes: ab1ef68e5401 ("RISC-V: Add sections of PLT and GOT for kernel module") |
| Reported-by: Nathan Chancellor <nathan@kernel.org> |
| Signed-off-by: Fangrui Song <maskray@google.com> |
| Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| arch/riscv/include/asm/module.lds.h | 6 +++--- |
| 1 file changed, 3 insertions(+), 3 deletions(-) |
| |
| --- a/arch/riscv/include/asm/module.lds.h |
| +++ b/arch/riscv/include/asm/module.lds.h |
| @@ -2,8 +2,8 @@ |
| /* Copyright (C) 2017 Andes Technology Corporation */ |
| #ifdef CONFIG_MODULE_SECTIONS |
| SECTIONS { |
| - .plt (NOLOAD) : { BYTE(0) } |
| - .got (NOLOAD) : { BYTE(0) } |
| - .got.plt (NOLOAD) : { BYTE(0) } |
| + .plt : { BYTE(0) } |
| + .got : { BYTE(0) } |
| + .got.plt : { BYTE(0) } |
| } |
| #endif |