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 17:51:50
Also in:
linux-kbuild, linuxppc-dev, lkml, llvm
Le 20/08/2022 à 19:01, Masahiro Yamada a écrit :
On Sat, Aug 20, 2022 at 11:15 PM Christophe Leroy [off-list ref] wrote:quoted
Le 20/08/2022 à 14:51, Masahiro Yamada a écrit :quoted
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_RELOCATABLEIs 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_UADDR32Might be the reason. Is it expected that your patch adds an unsupported relocation ? Why was that relocation type unneeded before ? Thanks ChristopheI posted a patch (although I believe my commit is innocent). https://lore.kernel.org/lkml/20220820165129.1147589-1-masahiroy@kernel.org/T/#u (local) The relocs_check.sh warnings are gone. Please do a boot test. Thanks.
Yes it works, many Thanks.
The fixes tag should probably be c857c43b34ec ("powerpc: Don't use a
function descriptor for system call table")
Christophe