[RFC PATCH v2 2/3] kbuild: Add objtool integration for PowerPC feature fixups

Sathvika Vasireddy sv at linux.ibm.com
Mon Oct 13 12:07:42 AEDT 2025


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<masahiroy at kernel.org>
>> Signed-off-by: Sathvika Vasireddy<sv at linux.ibm.com>
>> ---
>>   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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ozlabs.org/pipermail/linuxppc-dev/attachments/20251013/ca5350ed/attachment.htm>


More information about the Linuxppc-dev mailing list