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: Nicolas Pitre <nico@linaro.org> Tested-by: Jarod Wilson <jarod@redhat.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
8dc0f265d3
commit
8655639240
9
Makefile
9
Makefile
@ -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
|
|||||||
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
|
||||||
|
Loading…
Reference in New Issue
Block a user