kbuild: rebuild multi-object modules when objtool is updated
When CONFIG_LTO_CLANG or CONFIG_X86_KERNEL_IBT is enabled, objtool for multi-object modules is postponed until the objects are linked together. Make sure to re-run objtool and re-link multi-object modules when objtool is updated. Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> Reviewed-by: Kees Cook <keescook@chromium.org> Acked-by: Josh Poimboeuf <jpoimboe@redhat.com> Tested-by: Nathan Chancellor <nathan@kernel.org> Reviewed-by: Nicolas Schier <n.schier@avm.de> Tested-by: Sedat Dilek <sedat.dilek@gmail.com> # LLVM-14 (x86-64)
This commit is contained in:
parent
ebd191b38c
commit
f6b66ca4f3
|
@ -413,13 +413,18 @@ $(obj)/modules.order: $(obj-m) FORCE
|
||||||
$(obj)/lib.a: $(lib-y) FORCE
|
$(obj)/lib.a: $(lib-y) FORCE
|
||||||
$(call if_changed,ar)
|
$(call if_changed,ar)
|
||||||
|
|
||||||
quiet_cmd_link_multi-m = LD [M] $@
|
quiet_cmd_ld_multi_m = LD [M] $@
|
||||||
cmd_link_multi-m = $(LD) $(ld_flags) -r -o $@ @$(patsubst %.o,%.mod,$@) $(cmd_objtool)
|
cmd_ld_multi_m = $(LD) $(ld_flags) -r -o $@ @$(patsubst %.o,%.mod,$@) $(cmd_objtool)
|
||||||
|
|
||||||
|
define rule_ld_multi_m
|
||||||
|
$(call cmd_and_savecmd,ld_multi_m)
|
||||||
|
$(call cmd,gen_objtooldep)
|
||||||
|
endef
|
||||||
|
|
||||||
$(multi-obj-m): objtool-enabled := $(delay-objtool)
|
$(multi-obj-m): objtool-enabled := $(delay-objtool)
|
||||||
$(multi-obj-m): part-of-module := y
|
$(multi-obj-m): part-of-module := y
|
||||||
$(multi-obj-m): %.o: %.mod FORCE
|
$(multi-obj-m): %.o: %.mod FORCE
|
||||||
$(call if_changed,link_multi-m)
|
$(call if_changed_rule,ld_multi_m)
|
||||||
$(call multi_depend, $(multi-obj-m), .o, -objs -y -m)
|
$(call multi_depend, $(multi-obj-m), .o, -objs -y -m)
|
||||||
|
|
||||||
targets := $(filter-out $(PHONY), $(targets))
|
targets := $(filter-out $(PHONY), $(targets))
|
||||||
|
|
Loading…
Reference in New Issue