Thread (8 messages) 8 messages, 3 authors, 2025-10-13

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_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.
...
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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help