]> git.baikalelectronics.ru Git - kernel.git/commit
powerpc/vmlinux.lds: Don't discard .rela* for relocatable builds
authorMichael Ellerman <mpe@ellerman.id.au>
Thu, 5 Jan 2023 11:28:36 +0000 (22:28 +1100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 25 Feb 2023 10:25:42 +0000 (11:25 +0100)
commitbb1a4f9f9a4dd9c785892d2e0291ff559d479d12
tree9f5559f7b9611e466a84bdb760452c0873a281b0
parentd49e9b944c3d0ada774daceae9e295fbb854f719
powerpc/vmlinux.lds: Don't discard .rela* for relocatable builds

commit 8da5d5380d3d970e7ba28491abe361b0b2581f53 upstream.

Relocatable kernels must not discard relocations, they need to be
processed at runtime. As such they are included for CONFIG_RELOCATABLE
builds in the powerpc linker script (line 340).

However they are also unconditionally discarded later in the
script (line 414). Previously that worked because the earlier inclusion
superseded the discard.

However commit fe15ce495a51 ("arch: fix broken BuildID for arm64 and
riscv") introduced an earlier use of DISCARD as part of the RO_DATA
macro (line 137). With binutils < 2.36 that causes the DISCARD
directives later in the script to be applied earlier, causing .rela* to
actually be discarded at link time, leading to build warnings and a
kernel that doesn't boot:

  ld: warning: discarding dynamic section .rela.init.rodata

Fix it by conditionally discarding .rela* only when CONFIG_RELOCATABLE
is disabled.

Fixes: fe15ce495a51 ("arch: fix broken BuildID for arm64 and riscv")
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20230105132349.384666-2-mpe@ellerman.id.au
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Tom Saeger <tom.saeger@oracle.com>
arch/powerpc/kernel/vmlinux.lds.S