2021-04-25 15:07:12 +08:00
|
|
|
#!/bin/sh
|
|
|
|
|
|
|
|
set -e
|
|
|
|
|
|
|
|
# When you move, remove or rename generated files, you probably also update
|
|
|
|
# .gitignore and cleaning rules in the Makefile. This is the right thing
|
|
|
|
# to do. However, people usually do 'git pull', 'git bisect', etc. without
|
|
|
|
# running 'make clean'. Then, the stale generated files are left over, often
|
|
|
|
# causing build issues.
|
|
|
|
#
|
|
|
|
# Also, 'git status' shows such stale build artifacts as untracked files.
|
|
|
|
# What is worse, some people send a wrong patch to get them back to .gitignore
|
|
|
|
# without checking the commit history.
|
|
|
|
#
|
|
|
|
# So, when you (re)move generated files, please move the cleaning rules from
|
|
|
|
# the Makefile to this script. This is run before Kbuild starts building
|
|
|
|
# anything, so people will not be annoyed by such garbage files.
|
|
|
|
#
|
|
|
|
# This script is not intended to grow endlessly. Rather, it is a temporary scrap
|
|
|
|
# yard. Stale files stay in this file for a while (for some release cycles?),
|
|
|
|
# then will be really dead and removed from the code base entirely.
|
|
|
|
|
2022-07-25 09:56:19 +08:00
|
|
|
rm -f arch/powerpc/purgatory/kexec-purgatory.c
|
2022-06-26 06:34:37 +08:00
|
|
|
rm -f arch/riscv/purgatory/kexec-purgatory.c
|
2022-12-29 15:06:33 +08:00
|
|
|
rm -f arch/x86/purgatory/kexec-purgatory.c
|
2022-06-26 06:34:37 +08:00
|
|
|
|
2021-12-14 10:53:54 +08:00
|
|
|
rm -f scripts/extract-cert
|
2022-07-25 10:08:12 +08:00
|
|
|
|
2022-12-11 10:54:48 +08:00
|
|
|
rm -f scripts/kconfig/[gmnq]conf-cfg
|
2023-01-07 17:45:45 +08:00
|
|
|
|
|
|
|
rm -f rust/target.json
|
2023-01-19 15:12:15 +08:00
|
|
|
|
|
|
|
rm -f scripts/bin2c
|
2023-01-22 22:14:21 +08:00
|
|
|
|
|
|
|
rm -f .scmversion
|
kbuild: implement CONFIG_TRIM_UNUSED_KSYMS without recursion
When CONFIG_TRIM_UNUSED_KSYMS is enabled, Kbuild recursively traverses
the directory tree to determine which EXPORT_SYMBOL to trim. If an
EXPORT_SYMBOL turns out to be unused by anyone, Kbuild begins the
second traverse, where some source files are recompiled with their
EXPORT_SYMBOL() tuned into a no-op.
Linus stated negative opinions about this slowness in commits:
- 5cf0fd591f2e ("Kbuild: disable TRIM_UNUSED_KSYMS option")
- a555bdd0c58c ("Kbuild: enable TRIM_UNUSED_KSYMS again, with some guarding")
We can do this better now. The final data structures of EXPORT_SYMBOL
are generated by the modpost stage, so modpost can selectively emit
KSYMTAB entries that are really used by modules.
Commit f73edc8951b2 ("kbuild: unify two modpost invocations") is another
ground-work to do this in a one-pass algorithm. With the list of modules,
modpost sets sym->used if it is used by a module. modpost emits KSYMTAB
only for symbols with sym->used==true.
BTW, Nicolas explained why the trimming was implemented with recursion:
https://lore.kernel.org/all/2o2rpn97-79nq-p7s2-nq5-8p83391473r@syhkavp.arg/
Actually, we never achieved that level of optimization where the chain
reaction of trimming comes into play because:
- CONFIG_LTO_CLANG cannot remove any unused symbols
- CONFIG_LD_DEAD_CODE_DATA_ELIMINATION is enabled only for vmlinux,
but not modules
If deeper trimming is required, we need to revisit this, but I guess
that is unlikely to happen.
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
2023-06-11 23:50:57 +08:00
|
|
|
|
|
|
|
rm -rf include/ksym
|
|
|
|
|
|
|
|
find . -name '*.usyms' | xargs rm -f
|