2021-04-25 10:07:12 +03: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 04:56:19 +03:00
rm -f arch/powerpc/purgatory/kexec-purgatory.c
2022-06-26 01:34:37 +03:00
rm -f arch/riscv/purgatory/kexec-purgatory.c
2022-12-29 10:06:33 +03:00
rm -f arch/x86/purgatory/kexec-purgatory.c
2022-06-26 01:34:37 +03:00
2021-12-14 05:53:54 +03:00
rm -f scripts/extract-cert
2022-07-25 05:08:12 +03:00
2022-12-11 05:54:48 +03:00
rm -f scripts/kconfig/[gmnq]conf-cfg
2023-01-07 12:45:45 +03:00
rm -f rust/target.json
2023-01-19 10:12:15 +03:00
rm -f scripts/bin2c
2023-01-22 17:14:21 +03: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 18:50:57 +03:00
rm -rf include/ksym
find . -name '*.usyms' | xargs rm -f
2023-07-22 07:48:03 +03:00
2023-09-30 13:38:47 +03:00
rm -f *.spec