Re: [RFC PATCH v2 2/3] kbuild: Add objtool integration for PowerPC feature fixups
From: Sathvika Vasireddy <hidden>
Date: 2025-10-13 01:07:53
Hi Nicolas, Thank you for the review and suggestions! On 10/5/25 1:13 AM, Nicolas Schier wrote:
On Mon, Sep 29, 2025 at 01:34:55PM +0530, Sathvika Vasireddy wrote:quoted
Add build system support for PowerPC feature fixup processing: - Add HAVE_OBJTOOL_FTR_FIXUP config option for architectures that support build-time feature fixup processing - Integrate objtool feature fixup processing into vmlinux build Suggested-by: Masahiro Yamada<masahiroy@kernel.org> Signed-off-by: Sathvika Vasireddy<redacted> --- Makefile | 7 +++++++ arch/Kconfig | 3 +++ scripts/Makefile.lib | 5 +++-- scripts/Makefile.vmlinux | 13 ++++++++++++- 4 files changed, 25 insertions(+), 3 deletions(-)...quoted
diff --git a/arch/Kconfig b/arch/Kconfig index d1b4ffd6e085..d870aab17cba 100644 --- a/arch/Kconfig +++ b/arch/Kconfig@@ -1334,6 +1334,9 @@ config HAVE_UACCESS_VALIDATION bool select OBJTOOL +config HAVE_OBJTOOL_FTR_FIXUPFor me, FTR is not that natural to parse. Is there a reason for using FTR instead of FEATURE?
The naming comes from the PowerPC-specific section names (__ftr_alt_*) , and (*ftr_fixup) in vmlinux. However, I agree that FEATURE is more readable and I'll update all references to use FEATURE_FIXUP instead. Also, on a second thought, since feature fixup is PowerPC-specific and no other architecture has this mechanism (please correct me if I am wrong), I will move HAVE_OBJTOOL_FEATURE_FIXUP from arch/Kconfig to arch/powerpc/Kconfig in the next version.
...quoted
diff --git a/scripts/Makefile.vmlinux b/scripts/Makefile.vmlinux index b64862dc6f08..94cc2bba929a 100644 --- a/scripts/Makefile.vmlinux +++ b/scripts/Makefile.vmlinux@@ -84,7 +84,8 @@ ARCH_POSTLINK := $(wildcard $(srctree)/arch/$(SRCARCH)/Makefile.postlink) # Final link of vmlinux with optional arch pass after final link cmd_link_vmlinux = \ $< "$(LD)" "$(KBUILD_LDFLAGS)" "$(LDFLAGS_vmlinux)" "$@"; \ - $(if $(ARCH_POSTLINK), $(MAKE) -f $(ARCH_POSTLINK) $@, true) + $(if $(ARCH_POSTLINK), $(MAKE) -f $(ARCH_POSTLINK) $@, true) \ + $(cmd_objtool_vmlinux) targets += $(vmlinux-final) $(vmlinux-final): scripts/link-vmlinux.sh vmlinux.o $(KBUILD_LDS) FORCE@@ -131,3 +132,13 @@ existing-targets := $(wildcard $(sort $(targets))) -include $(foreach f,$(existing-targets),$(dir $(f)).$(notdir $(f)).cmd) .PHONY: $(PHONY) + +# objtool for vmlinux +# ---------------------------------- +# +# For feature fixup, objtool does not run on individual +# translation units. Run this on vmlinux instead. + +ifdef CONFIG_HAVE_OBJTOOL_FTR_FIXUP +cmd_objtool_vmlinux = ; $(objtool) --ftr-fixup --link $@This cmd_* definition is broken as $(call cmd,objtool_vmlinux) would be evaluated to '... ; ; ...' (shell syntax error). What about putting the objtool call right into cmd_link_vmlinux?
Sure, I will include the changes to put the objtool call into cmd_link_vmlinux as suggested, in the next version. Thanks, Sathvika