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

Reply via email to