Thread (26 messages) 26 messages, 6 authors, 2022-08-20

Re: Build/boot problem with 7b4537199a4a (Re: [PATCH v6 02/10] kbuild: link symbol CRCs at final link, removing CONFIG_MODULE_REL_CRCS)

From: Christophe Leroy <hidden>
Date: 2022-08-20 14:15:32
Also in: linux-kbuild, linuxppc-dev, lkml, llvm


Le 20/08/2022 à 14:51, Masahiro Yamada a écrit :
On Sat, Aug 20, 2022 at 7:02 PM Christophe Leroy
[off-list ref] wrote:
quoted
Hi,

Le 13/05/2022 à 13:39, Masahiro Yamada a écrit :
quoted
include/{linux,asm-generic}/export.h defines a weak symbol, __crc_*
as a placeholder.

Genksyms writes the version CRCs into the linker script, which will be
used for filling the __crc_* symbols. The linker script format depends
on CONFIG_MODULE_REL_CRCS. If it is enabled, __crc_* holds the offset
to the reference of CRC.

It is time to get rid of this complexity.

Now that modpost parses text files (.*.cmd) to collect all the CRCs,
it can generate C code that will be linked to the vmlinux or modules.

Generate a new C file, .vmlinux.export.c, which contains the CRCs of
symbols exported by vmlinux. It is compiled and linked to vmlinux in
scripts/link-vmlinux.sh.

Put the CRCs of symbols exported by modules into the existing *.mod.c
files. No additional build step is needed for modules. As before,
*.mod.c are compiled and linked to *.ko in scripts/Makefile.modfinal.

No linker magic is used here. The new C implementation works in the
same way, whether CONFIG_RELOCATABLE is enabled or not.
CONFIG_MODULE_REL_CRCS is no longer needed.

Previously, Kbuild invoked additional $(LD) to update the CRCs in
objects, but this step is unneeded too.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Tested-by: Nathan Chancellor <nathan@kernel.org>
Tested-by: Nicolas Schier <redacted>
Reviewed-by: Nicolas Schier <redacted>
Problem with v6.0-rc1
Problem with v5.19
No problem with v5.18

Bisected to 7b4537199a4a ("kbuild: link symbol CRCs at final link,
removing CONFIG_MODULE_REL_CRCS")

The above patch leads to the following problem building
mpc85xx_defconfig + CONFIG_RELOCATABLE


Is this because the relocation implementation on ppc is incomplete?
(and is it the reason why relock_check.sh exists?)

arch/powerpc/kernel/reloc_32.S does not support R_PPC_UADDR32
Might be the reason.

Is it expected that your patch adds an unsupported relocation ?

Why was that relocation type unneeded before ?

Thanks
Christophe
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help