Re: [PATCH v5 11/17] kbuild: Add generic hook for architectures to use before the final vmlinux link
From: Masahiro Yamada <masahiroy@kernel.org>
Date: 2024-10-10 11:38:28
Also in:
bpf, linux-kbuild, linux-trace-kernel, lkml
On Thu, Oct 10, 2024 at 6:57 PM Hari Bathini [off-list ref] wrote:
On 09/10/24 8:53 pm, Masahiro Yamada wrote:quoted
On Mon, Sep 16, 2024 at 5:58 AM Hari Bathini [off-list ref] wrote:quoted
From: Naveen N Rao <naveen@kernel.org> On powerpc, we would like to be able to make a pass on vmlinux.o and generate a new object file to be linked into vmlinux. Add a generic pass in Makefile.vmlinux that architectures can use for this purpose. Architectures need to select CONFIG_ARCH_WANTS_PRE_LINK_VMLINUX and must provide arch/<arch>/tools/Makefile with .arch.vmlinux.o target, which will be invoked prior to the final vmlinux link step. Signed-off-by: Naveen N Rao <naveen@kernel.org> Signed-off-by: Hari Bathini <hbathini@linux.ibm.com> --- Changes in v5: * Intermediate files named .vmlinux.arch.* instead of .arch.vmlinux.* arch/Kconfig | 6 ++++++ scripts/Makefile.vmlinux | 7 +++++++ scripts/link-vmlinux.sh | 7 ++++++- 3 files changed, 19 insertions(+), 1 deletion(-)diff --git a/arch/Kconfig b/arch/Kconfig index 975dd22a2dbd..ef868ff8156a 100644 --- a/arch/Kconfig +++ b/arch/Kconfig@@ -1643,4 +1643,10 @@ config CC_HAS_SANE_FUNCTION_ALIGNMENT config ARCH_NEED_CMPXCHG_1_EMU bool +config ARCH_WANTS_PRE_LINK_VMLINUX + def_bool nRedundant default. This line should be "bool".quoted
+ help + An architecture can select this if it provides arch/<arch>/tools/Makefile + with .arch.vmlinux.o target to be linked into vmlinux. + endmenudiff --git a/scripts/Makefile.vmlinux b/scripts/Makefile.vmlinux index 49946cb96844..edf6fae8d960 100644 --- a/scripts/Makefile.vmlinux +++ b/scripts/Makefile.vmlinux@@ -22,6 +22,13 @@ targets += .vmlinux.export.o vmlinux: .vmlinux.export.o endif +ifdef CONFIG_ARCH_WANTS_PRE_LINK_VMLINUX +vmlinux: arch/$(SRCARCH)/tools/.vmlinux.arch.oIf you move this to arch/*/tools/, there is no reason to make it a hidden file.Thanks for reviewing and the detailed comments, Masahiro.quoted
vmlinux: arch/$(SRCARCH)/tools/vmlinux.arch.oquoted
+arch/$(SRCARCH)/tools/.vmlinux.arch.o: vmlinux.oFORCE is missing.I dropped FORCE as it was rebuilding vmlinux on every invocation of `make` irrespective of whether vmlinux.o changed or not..
It is because you did not add vmlinux.arch.S to 'targets' See my comment in 12/17. targets += vmlinux.arch.S
Just curious if the changes you suggested makes FORCE necessary or FORCE was expected even without the other changes you suggested?
FORCE is necessary. arch/powerpc/tools/Makefile must be checked every time. When arch/powerpc/tools/ftrace-gen-ool-stubs.sh is changed, vmlinux must be relinked.
Thanks Hari
-- Best Regards Masahiro Yamada