|
@@ -612,7 +612,7 @@ quiet_cmd_vmlinux__ ?= LD $@
|
|
|
cmd_vmlinux__ ?= $(LD) $(LDFLAGS) $(LDFLAGS_vmlinux) -o $@ \
|
|
|
-T $(vmlinux-lds) $(vmlinux-init) \
|
|
|
--start-group $(vmlinux-main) --end-group \
|
|
|
- $(filter-out $(vmlinux-lds) $(vmlinux-init) $(vmlinux-main) FORCE ,$^)
|
|
|
+ $(filter-out $(vmlinux-lds) $(vmlinux-init) $(vmlinux-main) vmlinux.o FORCE ,$^)
|
|
|
|
|
|
# Generate new vmlinux version
|
|
|
quiet_cmd_vmlinux_version = GEN .version
|
|
@@ -736,15 +736,31 @@ debug_kallsyms: .tmp_map$(last_kallsyms)
|
|
|
|
|
|
endif # ifdef CONFIG_KALLSYMS
|
|
|
|
|
|
+# Do modpost on a prelinked vmlinux. The finally linked vmlinux has
|
|
|
+# relevant sections renamed as per the linker script.
|
|
|
+quiet_cmd_vmlinux-modpost = LD $@
|
|
|
+ cmd_vmlinux-modpost = $(LD) $(LDFLAGS) -r -o $@ \
|
|
|
+ $(vmlinux-init) --start-group $(vmlinux-main) --end-group \
|
|
|
+ $(filter-out $(vmlinux-init) $(vmlinux-main) $(vmlinux-lds) FORCE ,$^)
|
|
|
+define rule_vmlinux-modpost
|
|
|
+ :
|
|
|
+ +$(call cmd,vmlinux-modpost)
|
|
|
+ $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost $@
|
|
|
+ $(Q)echo 'cmd_$@ := $(cmd_vmlinux-modpost)' > $(dot-target).cmd
|
|
|
+endef
|
|
|
+
|
|
|
# vmlinux image - including updated kernel symbols
|
|
|
-vmlinux: $(vmlinux-lds) $(vmlinux-init) $(vmlinux-main) $(kallsyms.o) FORCE
|
|
|
+vmlinux: $(vmlinux-lds) $(vmlinux-init) $(vmlinux-main) $(kallsyms.o) vmlinux.o FORCE
|
|
|
ifdef CONFIG_HEADERS_CHECK
|
|
|
$(Q)$(MAKE) -f $(srctree)/Makefile headers_check
|
|
|
endif
|
|
|
+ $(call vmlinux-modpost)
|
|
|
$(call if_changed_rule,vmlinux__)
|
|
|
- $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost $@
|
|
|
$(Q)rm -f .old_version
|
|
|
|
|
|
+vmlinux.o: $(vmlinux-lds) $(vmlinux-init) $(vmlinux-main) $(kallsyms.o) FORCE
|
|
|
+ $(call if_changed_rule,vmlinux-modpost)
|
|
|
+
|
|
|
# The actual objects are generated when descending,
|
|
|
# make sure no implicit rule kicks in
|
|
|
$(sort $(vmlinux-init) $(vmlinux-main)) $(vmlinux-lds): $(vmlinux-dirs) ;
|