Message ID | 20230620-6-3-fix-got-relro-error-lld-v1-1-f3e71ec912d1@kernel.org (mailing list archive) |
---|---|
State | Handled Elsewhere |
Headers | show |
Series | [6.3] riscv: Link with '-z norelro' | expand |
Context | Check | Description |
---|---|---|
conchuod/tree_selection | fail | Failed to apply to next/pending-fixes, riscv/for-next or riscv/master |
On Tue, 20 Jun 2023 10:44:50 PDT (-0700), nathan@kernel.org wrote: > This patch fixes a stable only patch, so it has no direct upstream > equivalent. > > After a stable only patch to explicitly handle the '.got' section to > handle an orphan section warning from the linker, certain configurations > error when linking with ld.lld, which enables relro by default: > > ld.lld: error: section: .got is not contiguous with other relro sections > > This has come up with other architectures before, such as arm and arm64 > in commit 0cda9bc15dfc ("ARM: 9038/1: Link with '-z norelro'") and > commit 3b92fa7485eb ("arm64: link with -z norelro regardless of > CONFIG_RELOCATABLE"). Additionally, '-z norelro' is used unconditionally > for RISC-V upstream after commit 26e7aacb83df ("riscv: Allow to > downgrade paging mode from the command line"), which alluded to this > issue for the same reason. Bring 6.3 in line with mainline and link with > '-z norelro', which resolves the above link failure. > > Fixes: e6d1562dd4e9 ("riscv: vmlinux.lds.S: Explicitly handle '.got' section") > Reported-by: kernel test robot <lkp@intel.com> > Closes: https://lore.kernel.org/oe-kbuild-all/202306192231.DJmWr6BX-lkp@intel.com/ > Signed-off-by: Nathan Chancellor <nathan@kernel.org> > --- > arch/riscv/Makefile | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/riscv/Makefile b/arch/riscv/Makefile > index b05e833a022d..d46b6722710f 100644 > --- a/arch/riscv/Makefile > +++ b/arch/riscv/Makefile > @@ -7,7 +7,7 @@ > # > > OBJCOPYFLAGS := -O binary > -LDFLAGS_vmlinux := > +LDFLAGS_vmlinux := -z norelro > ifeq ($(CONFIG_DYNAMIC_FTRACE),y) > LDFLAGS_vmlinux := --no-relax > KBUILD_CPPFLAGS += -DCC_USING_PATCHABLE_FUNCTION_ENTRY > > --- > base-commit: f2427f9a3730e9a1a11b69f6b767f7f2fad87523 > change-id: 20230620-6-3-fix-got-relro-error-lld-397f3112860b > > Best regards, Acked-by: Palmer Dabbelt <palmer@rivosinc.com> Thanks!
diff --git a/arch/riscv/Makefile b/arch/riscv/Makefile index b05e833a022d..d46b6722710f 100644 --- a/arch/riscv/Makefile +++ b/arch/riscv/Makefile @@ -7,7 +7,7 @@ # OBJCOPYFLAGS := -O binary -LDFLAGS_vmlinux := +LDFLAGS_vmlinux := -z norelro ifeq ($(CONFIG_DYNAMIC_FTRACE),y) LDFLAGS_vmlinux := --no-relax KBUILD_CPPFLAGS += -DCC_USING_PATCHABLE_FUNCTION_ENTRY
This patch fixes a stable only patch, so it has no direct upstream equivalent. After a stable only patch to explicitly handle the '.got' section to handle an orphan section warning from the linker, certain configurations error when linking with ld.lld, which enables relro by default: ld.lld: error: section: .got is not contiguous with other relro sections This has come up with other architectures before, such as arm and arm64 in commit 0cda9bc15dfc ("ARM: 9038/1: Link with '-z norelro'") and commit 3b92fa7485eb ("arm64: link with -z norelro regardless of CONFIG_RELOCATABLE"). Additionally, '-z norelro' is used unconditionally for RISC-V upstream after commit 26e7aacb83df ("riscv: Allow to downgrade paging mode from the command line"), which alluded to this issue for the same reason. Bring 6.3 in line with mainline and link with '-z norelro', which resolves the above link failure. Fixes: e6d1562dd4e9 ("riscv: vmlinux.lds.S: Explicitly handle '.got' section") Reported-by: kernel test robot <lkp@intel.com> Closes: https://lore.kernel.org/oe-kbuild-all/202306192231.DJmWr6BX-lkp@intel.com/ Signed-off-by: Nathan Chancellor <nathan@kernel.org> --- arch/riscv/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- base-commit: f2427f9a3730e9a1a11b69f6b767f7f2fad87523 change-id: 20230620-6-3-fix-got-relro-error-lld-397f3112860b Best regards,