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:
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<[email protected]>
Signed-off-by: Sathvika Vasireddy<[email protected]>
---
Makefile | 7 +++++++
arch/Kconfig | 3 +++
scripts/Makefile.lib | 5 +++--
scripts/Makefile.vmlinux | 13 ++++++++++++-
4 files changed, 25 insertions(+), 3 deletions(-)
...
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_FIXUP
For 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.
...
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