Centos-kernel-stream-9/include/linux/export-internal.h

18 lines
464 B
C
Raw Normal View History

kbuild: link symbol CRCs at final link, removing CONFIG_MODULE_REL_CRCS JIRA: https://issues.redhat.com/browse/RHEL-28063 Conflicts: Minor ordering in patch-diff listing, but content the same. Well, after the objtool update, cs9 05c520e6c27d backport of upstream 5d45950dffb and cs9 b206f546c7f3 backport of upstream b42d230650241 were applied out of order. Maintain those changes by dropping 3 shell functions. commit 7b4537199a4a8480b8c3ba37a2d44765ce76cd9b Author: Masahiro Yamada <masahiroy@kernel.org> Date: Fri May 13 20:39:22 2022 +0900 kbuild: link symbol CRCs at final link, removing CONFIG_MODULE_REL_CRCS 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 <nicolas@fjasle.eu> Reviewed-by: Nicolas Schier <nicolas@fjasle.eu> Tested-by: Sedat Dilek <sedat.dilek@gmail.com> # LLVM-14 (x86-64) Signed-off-by: Donald Dutile <ddutile@redhat.com>
2024-05-09 05:53:48 +00:00
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Please do not include this explicitly.
* This is used by C files generated by modpost.
*/
#ifndef __LINUX_EXPORT_INTERNAL_H__
#define __LINUX_EXPORT_INTERNAL_H__
#include <linux/compiler.h>
#include <linux/types.h>
/* __used is needed to keep __crc_* for LTO */
#define SYMBOL_CRC(sym, crc, sec) \
u32 __section("___kcrctab" sec "+" #sym) __used __crc_##sym = crc
#endif /* __LINUX_EXPORT_INTERNAL_H__ */