[PATCH 00/27] kbuild: yet another series of cleanups (modpost and LTO)

From: Masahiro Yamada
Date: Sun Apr 24 2022 - 15:12:40 EST

This is the third batch of cleanups in this development cycle.

This weekend, I wrote up the code I have been planning.

After a bunch of modpost refactoring, I got rid of the ugly code
in Makefiles.

With this, Kbuild will get back much simpler and cleaner.

Masahiro Yamada (27):
modpost: use snprintf() instead of sprintf() for safety
modpost: do not write out any file when error occurred
modpost: remove stale comment about sym_add_exported()
modpost: add a separate error for exported symbols without definition
modpost: retrieve the module dependency and CRCs in check_exports()
modpost: use bool type where appropriate
modpost: import include/linux/list.h
modpost: traverse modules in order
modpost: add sym_add_unresolved() helper
modpost: traverse unresolved symbols in order
modpost: use doubly linked list for dump_lists
modpost: move struct namespace_list to modpost.c
modpost: traverse the namespace_list in order
modpost: dump Module.symvers in the same order of modules.order
modpost: move static EXPORT_SYMBOL check to check_exports()
modpost: make multiple export error
modpost: make sym_add_exported() always allocate a new symbol
modpost: make sym_add_exported() a void function
modpost: use hlist for hash table implementation
modpost: mitigate false-negatives for static EXPORT_SYMBOL checks
kbuild: record symbol versions in *.cmd files
kbuild: generate a list of objects in vmlinux
modpost: retrieve symbol versions by parsing *.cmd files
modpost: generate linker script to collect symbol versions
kbuild: embed symbol versions at final link of vmlinux or modules
kbuild: stop generating *.symversions
kbuild: do not create *.prelink.o for Clang LTO or IBT

.gitignore | 1 +
Makefile | 1 +
scripts/Kbuild.include | 4 +
scripts/Makefile.build | 107 ++------
scripts/Makefile.lib | 7 -
scripts/Makefile.modfinal | 6 +-
scripts/Makefile.modpost | 9 +-
scripts/link-vmlinux.sh | 38 ++-
scripts/mod/file2alias.c | 2 -
scripts/mod/list.h | 336 ++++++++++++++++++++++++
scripts/mod/modpost.c | 529 +++++++++++++++++++++++---------------
scripts/mod/modpost.h | 27 +-
12 files changed, 731 insertions(+), 336 deletions(-)
create mode 100644 scripts/mod/list.h