If CONFIG_TRIM_UNUSED_KSYMS is enabled and the kernel is built from a pristine state, the vmlinux is linked twice. Commit 3fdc7d3fe4c0 ("kbuild: link vmlinux only once for CONFIG_TRIM_UNUSED_KSYMS") explains why this happens, but it did not fix the issue at all. Now I realized I had applied a wrong patch. In v1 patch [1], the autoksyms_recursive target correctly recurses to "$(MAKE) -f $(srctree)/Makefile autoksyms_recursive". In v2 patch [2], I accidentally dropped the diff line, and it recurses to "$(MAKE) -f $(srctree)/Makefile vmlinux". Restore the code I intended in v1. [1]: https://lore.kernel.org/linux-kbuild/1521045861-22418-8-git-send-email-yamada.masahiro@socionext.com/ [2]: https://lore.kernel.org/linux-kbuild/1521166725-24157-8-git-send-email-yamada.masahiro@socionext.com/
Unified · Split
| @@ -1141,7 +1141,7 @@ KBUILD_MODULES := 1 · 1140 unmodified lines | ||
| 1141 | 1141 | |
| 1142 | 1142 | autoksyms_recursive: descend modules.order |
| 1143 | 1143 | $(Q)$(CONFIG_SHELL) $(srctree)/scripts/adjust_autoksyms.sh \ |
| 1144 | − "$(MAKE) -f $(srctree)/Makefile vmlinux" | |
| 1144 | + "$(MAKE) -f $(srctree)/Makefile autoksyms_recursive" | |
| 1145 | 1145 | endif |
| 1146 | 1146 | |
| 1147 | 1147 | autoksyms_h := $(if $(CONFIG_TRIM_UNUSED_KSYMS), include/generated/autoksyms.h) |