mirror of
https://github.com/torvalds/linux.git
synced 2024-11-22 12:11:40 +00:00
kbuild: detect objtool update without using .SECONDEXPANSION
Redo commit 8852c55240
("kbuild: Fix objtool dependency for
'OBJECT_FILES_NON_STANDARD_<obj> := n'") to add the objtool
dependency in a cleaner way.
Using .SECONDEXPANSION ends up with unreadable code due to escaped
dollars. Also, it is not efficient because the second half of
Makefile.build is parsed twice every time.
Append the objtool dependency to the *.cmd files at the build time.
This is what fixdep and gen_ksymdeps.sh already do. So, following the
same pattern seems a natural solution.
This allows us to drop $$(objtool_dep) entirely.
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Reviewed-by: Kees Cook <keescook@chromium.org>
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
Acked-by: Josh Poimboeuf <jpoimboe@redhat.com>
This commit is contained in:
parent
918a6b7f68
commit
ef62588c2c
@ -246,14 +246,11 @@ objtool-enabled = $(if $(filter-out y%, \
|
||||
$(OBJECT_FILES_NON_STANDARD_$(basetarget).o)$(OBJECT_FILES_NON_STANDARD)n),y)
|
||||
|
||||
cmd_objtool = $(if $(objtool-enabled), ; $(objtool) $(objtool_args) $@)
|
||||
objtool_obj = $(if $(objtool-enabled), $(objtool))
|
||||
cmd_gen_objtooldep = $(if $(objtool-enabled), { echo ; echo '$@: $$(wildcard $(objtool))' ; } >> $(dot-target).cmd)
|
||||
|
||||
endif # CONFIG_LTO_CLANG
|
||||
endif # CONFIG_STACK_VALIDATION
|
||||
|
||||
# Rebuild all objects when objtool changes
|
||||
objtool_dep = $(objtool_obj)
|
||||
|
||||
ifdef CONFIG_TRIM_UNUSED_KSYMS
|
||||
cmd_gen_ksymdeps = \
|
||||
$(CONFIG_SHELL) $(srctree)/scripts/gen_ksymdeps.sh $@ >> $(dot-target).cmd
|
||||
@ -267,6 +264,7 @@ define rule_cc_o_c
|
||||
$(call cmd,gen_ksymdeps)
|
||||
$(call cmd,checksrc)
|
||||
$(call cmd,checkdoc)
|
||||
$(call cmd,gen_objtooldep)
|
||||
$(call cmd,modversions_c)
|
||||
$(call cmd,record_mcount)
|
||||
endef
|
||||
@ -274,12 +272,12 @@ endef
|
||||
define rule_as_o_S
|
||||
$(call cmd_and_fixdep,as_o_S)
|
||||
$(call cmd,gen_ksymdeps)
|
||||
$(call cmd,gen_objtooldep)
|
||||
$(call cmd,modversions_S)
|
||||
endef
|
||||
|
||||
# Built-in and composite module parts
|
||||
.SECONDEXPANSION:
|
||||
$(obj)/%.o: $(src)/%.c $(recordmcount_source) $$(objtool_dep) FORCE
|
||||
$(obj)/%.o: $(src)/%.c $(recordmcount_source) FORCE
|
||||
$(call if_changed_rule,cc_o_c)
|
||||
$(call cmd,force_checksrc)
|
||||
|
||||
@ -380,7 +378,7 @@ cmd_modversions_S = \
|
||||
fi
|
||||
endif
|
||||
|
||||
$(obj)/%.o: $(src)/%.S $$(objtool_dep) FORCE
|
||||
$(obj)/%.o: $(src)/%.S FORCE
|
||||
$(call if_changed_rule,as_o_S)
|
||||
|
||||
targets += $(filter-out $(subdir-builtin), $(real-obj-y))
|
||||
|
Loading…
Reference in New Issue
Block a user