Commit 86556392 authored by Nicolas Pitre's avatar Nicolas Pitre Committed by Linus Torvalds

kbuild: fix building bzImage with CONFIG_TRIM_UNUSED_KSYMS enabled

When building a specific target such as bzImage, modules aren't normally
built.  However if CONFIG_TRIM_UNUSED_KSYMS is enabled, no built modules
means none of the exported symbols are used and therefore they will all
be trimmed away from the final kernel.  A subsequent "make modules" will
fail because modpost cannot find the needed symbols for those modules in
the kernel binary.

Let's make sure modules are also built whenever CONFIG_TRIM_UNUSED_KSYMS
is enabled and that the kernel binary is properly rebuilt accordingly.
Signed-off-by: default avatarNicolas Pitre <nico@linaro.org>
Tested-by: default avatarJarod Wilson <jarod@redhat.com>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 8dc0f265
...@@ -607,6 +607,13 @@ else ...@@ -607,6 +607,13 @@ else
include/config/auto.conf: ; include/config/auto.conf: ;
endif # $(dot-config) endif # $(dot-config)
# For the kernel to actually contain only the needed exported symbols,
# we have to build modules as well to determine what those symbols are.
# (this can be evaluated only once include/config/auto.conf has been included)
ifdef CONFIG_TRIM_UNUSED_KSYMS
KBUILD_MODULES := 1
endif
# The all: target is the default when no target is given on the # The all: target is the default when no target is given on the
# command line. # command line.
# This allow a user to issue only 'make' to build a kernel including modules # This allow a user to issue only 'make' to build a kernel including modules
...@@ -944,7 +951,7 @@ ifdef CONFIG_GDB_SCRIPTS ...@@ -944,7 +951,7 @@ ifdef CONFIG_GDB_SCRIPTS
endif endif
ifdef CONFIG_TRIM_UNUSED_KSYMS ifdef CONFIG_TRIM_UNUSED_KSYMS
$(Q)$(CONFIG_SHELL) $(srctree)/scripts/adjust_autoksyms.sh \ $(Q)$(CONFIG_SHELL) $(srctree)/scripts/adjust_autoksyms.sh \
"$(MAKE) KBUILD_MODULES=1 -f $(srctree)/Makefile vmlinux_prereq" "$(MAKE) -f $(srctree)/Makefile vmlinux"
endif endif
# standalone target for easier testing # standalone target for easier testing
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment