• Masahiro Yamada's avatar
    fortify: refactor test_fortify Makefile to fix some build problems · 4e9903b0
    Masahiro Yamada authored
    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: default avatarMasahiro Yamada <masahiroy@kernel.org>
    Link: https://lore.kernel.org/r/20240727150302.1823750-2-masahiroy@kernel.orgSigned-off-by: default avatarKees Cook <kees@kernel.org>
    4e9903b0
remove-stale-files 1 KB