• Masahiro Yamada's avatar
    kbuild: link symbol CRCs at final link, removing CONFIG_MODULE_REL_CRCS · 7b453719
    Masahiro Yamada authored
    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: default avatarMasahiro Yamada <masahiroy@kernel.org>
    Tested-by: default avatarNathan Chancellor <nathan@kernel.org>
    Tested-by: default avatarNicolas Schier <nicolas@fjasle.eu>
    Reviewed-by: default avatarNicolas Schier <nicolas@fjasle.eu>
    Tested-by: Sedat Dilek <sedat.dilek@gmail.com> # LLVM-14 (x86-64)
    7b453719
export.h 2.29 KB