mirror of
git://git.yoctoproject.org/linux-yocto.git
synced 2025-07-05 13:25:20 +02:00

There are some issues in the test_fortify Makefile code. Problem 1: cc-disable-warning invokes compiler dozens of times To see how many times the cc-disable-warning is evaluated, change this code: $(call cc-disable-warning,fortify-source) to: $(call cc-disable-warning,$(shell touch /tmp/fortify-$$$$)fortify-source) Then, build the kernel with CONFIG_FORTIFY_SOURCE=y. You will see a large number of '/tmp/fortify-<PID>' files created: $ ls -1 /tmp/fortify-* | wc 80 80 1600 This means the compiler was invoked 80 times just for checking the -Wno-fortify-source flag support. $(call cc-disable-warning,fortify-source) should be added to a simple variable instead of a recursive variable. Problem 2: do not recompile string.o when the test code is updated The test cases are independent of the kernel. However, when the test code is updated, $(obj)/string.o is rebuilt and vmlinux is relinked due to this dependency: $(obj)/string.o: $(obj)/$(TEST_FORTIFY_LOG) always-y is suitable for building the log files. Problem 3: redundant code clean-files += $(addsuffix .o, $(TEST_FORTIFY_LOGS)) ... is unneeded because the top Makefile globally cleans *.o files. This commit fixes these issues and makes the code readable. Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> Link: https://lore.kernel.org/r/20240727150302.1823750-2-masahiroy@kernel.org Signed-off-by: Kees Cook <kees@kernel.org>
1.0 KiB
Executable File
1.0 KiB
Executable File
#!/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.
rm -f *.spec
rm -f lib/test_fortify.log