public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] kbuild: only clean objtool on mrproper
@ 2026-02-25 11:26 Michal Suchanek
  2026-02-25 20:04 ` Nathan Chancellor
  0 siblings, 1 reply; 8+ messages in thread
From: Michal Suchanek @ 2026-02-25 11:26 UTC (permalink / raw)
  To: linux-kbuild
  Cc: Michal Suchanek, Nathan Chancellor, Nicolas Schier,
	Masahiro Yamada, Miguel Ojeda, Thomas Weißschuh,
	Tamir Duberstein, Steven Rostedt, Josh Poimboeuf, linux-kernel,
	Jiri Slaby

For packaging purposes I want to be able to grab the tool binaries
without the .o files

Fixes: 68b4fe32d737 ("kbuild: Add objtool to top-level clean target")
Signed-off-by: Michal Suchanek <msuchanek@suse.de>
---
 Makefile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Makefile b/Makefile
index e944c6e71e81..e9b8811a02f5 100644
--- a/Makefile
+++ b/Makefile
@@ -1675,7 +1675,7 @@ vmlinuxclean:
 	$(Q)$(CONFIG_SHELL) $(srctree)/scripts/link-vmlinux.sh clean
 	$(Q)$(if $(ARCH_POSTLINK), $(MAKE) -f $(ARCH_POSTLINK) clean)
 
-clean: archclean vmlinuxclean resolve_btfids_clean objtool_clean
+clean: archclean vmlinuxclean resolve_btfids_clean
 
 # mrproper - Delete all generated files, including .config
 #
@@ -1686,7 +1686,7 @@ PHONY += $(mrproper-dirs) mrproper
 $(mrproper-dirs):
 	$(Q)$(MAKE) $(clean)=$(patsubst _mrproper_%,%,$@)
 
-mrproper: clean $(mrproper-dirs)
+mrproper: clean objtool_clean $(mrproper-dirs)
 	$(call cmd,rmfiles)
 	@find . $(RCS_FIND_IGNORE) \
 		\( -name '*.rmeta' \) \
-- 
2.51.0


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH] kbuild: only clean objtool on mrproper
  2026-02-25 11:26 [PATCH] kbuild: only clean objtool on mrproper Michal Suchanek
@ 2026-02-25 20:04 ` Nathan Chancellor
  2026-02-25 20:23   ` Michal Suchánek
  0 siblings, 1 reply; 8+ messages in thread
From: Nathan Chancellor @ 2026-02-25 20:04 UTC (permalink / raw)
  To: Michal Suchanek, Josh Poimboeuf
  Cc: linux-kbuild, Nicolas Schier, Masahiro Yamada, Miguel Ojeda,
	Thomas Weißschuh, Tamir Duberstein, Steven Rostedt,
	linux-kernel, Jiri Slaby

On Wed, Feb 25, 2026 at 12:26:29PM +0100, Michal Suchanek wrote:
> For packaging purposes I want to be able to grab the tool binaries
> without the .o files
> 
> Fixes: 68b4fe32d737 ("kbuild: Add objtool to top-level clean target")
> Signed-off-by: Michal Suchanek <msuchanek@suse.de>

Wouldn't resolve_btfids need the same treatment? Why is objtool special
here? Also, what's the use case? Running 'make clean' then copying what
is left? Josh, thoughts on this change?

> ---
>  Makefile | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/Makefile b/Makefile
> index e944c6e71e81..e9b8811a02f5 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -1675,7 +1675,7 @@ vmlinuxclean:
>  	$(Q)$(CONFIG_SHELL) $(srctree)/scripts/link-vmlinux.sh clean
>  	$(Q)$(if $(ARCH_POSTLINK), $(MAKE) -f $(ARCH_POSTLINK) clean)
>  
> -clean: archclean vmlinuxclean resolve_btfids_clean objtool_clean
> +clean: archclean vmlinuxclean resolve_btfids_clean
>  
>  # mrproper - Delete all generated files, including .config
>  #
> @@ -1686,7 +1686,7 @@ PHONY += $(mrproper-dirs) mrproper
>  $(mrproper-dirs):
>  	$(Q)$(MAKE) $(clean)=$(patsubst _mrproper_%,%,$@)
>  
> -mrproper: clean $(mrproper-dirs)
> +mrproper: clean objtool_clean $(mrproper-dirs)
>  	$(call cmd,rmfiles)
>  	@find . $(RCS_FIND_IGNORE) \
>  		\( -name '*.rmeta' \) \
> -- 
> 2.51.0
> 

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] kbuild: only clean objtool on mrproper
  2026-02-25 20:04 ` Nathan Chancellor
@ 2026-02-25 20:23   ` Michal Suchánek
  2026-02-25 20:37     ` Josh Poimboeuf
  2026-02-25 21:21     ` Nathan Chancellor
  0 siblings, 2 replies; 8+ messages in thread
From: Michal Suchánek @ 2026-02-25 20:23 UTC (permalink / raw)
  To: Nathan Chancellor
  Cc: Josh Poimboeuf, linux-kbuild, Nicolas Schier, Masahiro Yamada,
	Miguel Ojeda, Thomas Weißschuh, Tamir Duberstein,
	Steven Rostedt, linux-kernel, Jiri Slaby

On Wed, Feb 25, 2026 at 01:04:17PM -0700, Nathan Chancellor wrote:
> On Wed, Feb 25, 2026 at 12:26:29PM +0100, Michal Suchanek wrote:
> > For packaging purposes I want to be able to grab the tool binaries
> > without the .o files
> > 
> > Fixes: 68b4fe32d737 ("kbuild: Add objtool to top-level clean target")
> > Signed-off-by: Michal Suchanek <msuchanek@suse.de>
> 
> Wouldn't resolve_btfids need the same treatment?

No, make clean runs the clean target for resolve_btfids but the tool
remains.

> Why is objtool special here?

That's what I would like to know as well.

> Also, what's the use case? Running 'make clean' then copying what
> is left?

Yes, that's what my build script has been doing for at least a decade,
possibly mutiple decades when it was somebody else's build script.

Thanks

Michal

> Josh, thoughts on this change?
> 
> > ---
> >  Makefile | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> > 
> > diff --git a/Makefile b/Makefile
> > index e944c6e71e81..e9b8811a02f5 100644
> > --- a/Makefile
> > +++ b/Makefile
> > @@ -1675,7 +1675,7 @@ vmlinuxclean:
> >  	$(Q)$(CONFIG_SHELL) $(srctree)/scripts/link-vmlinux.sh clean
> >  	$(Q)$(if $(ARCH_POSTLINK), $(MAKE) -f $(ARCH_POSTLINK) clean)
> >  
> > -clean: archclean vmlinuxclean resolve_btfids_clean objtool_clean
> > +clean: archclean vmlinuxclean resolve_btfids_clean
> >  
> >  # mrproper - Delete all generated files, including .config
> >  #
> > @@ -1686,7 +1686,7 @@ PHONY += $(mrproper-dirs) mrproper
> >  $(mrproper-dirs):
> >  	$(Q)$(MAKE) $(clean)=$(patsubst _mrproper_%,%,$@)
> >  
> > -mrproper: clean $(mrproper-dirs)
> > +mrproper: clean objtool_clean $(mrproper-dirs)
> >  	$(call cmd,rmfiles)
> >  	@find . $(RCS_FIND_IGNORE) \
> >  		\( -name '*.rmeta' \) \
> > -- 
> > 2.51.0
> > 

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] kbuild: only clean objtool on mrproper
  2026-02-25 20:23   ` Michal Suchánek
@ 2026-02-25 20:37     ` Josh Poimboeuf
  2026-03-03 16:22       ` Michal Suchánek
  2026-02-25 21:21     ` Nathan Chancellor
  1 sibling, 1 reply; 8+ messages in thread
From: Josh Poimboeuf @ 2026-02-25 20:37 UTC (permalink / raw)
  To: Michal Suchánek
  Cc: Nathan Chancellor, linux-kbuild, Nicolas Schier, Masahiro Yamada,
	Miguel Ojeda, Thomas Weißschuh, Tamir Duberstein,
	Steven Rostedt, linux-kernel, Jiri Slaby

On Wed, Feb 25, 2026 at 09:23:09PM +0100, Michal Suchánek wrote:
> On Wed, Feb 25, 2026 at 01:04:17PM -0700, Nathan Chancellor wrote:
> > On Wed, Feb 25, 2026 at 12:26:29PM +0100, Michal Suchanek wrote:
> > > For packaging purposes I want to be able to grab the tool binaries
> > > without the .o files
> > > 
> > > Fixes: 68b4fe32d737 ("kbuild: Add objtool to top-level clean target")
> > > Signed-off-by: Michal Suchanek <msuchanek@suse.de>
> > 
> > Wouldn't resolve_btfids need the same treatment?
> 
> No, make clean runs the clean target for resolve_btfids but the tool
> remains.
> 
> > Why is objtool special here?
> 
> That's what I would like to know as well.
> 
> > Also, what's the use case? Running 'make clean' then copying what
> > is left?
> 
> Yes, that's what my build script has been doing for at least a decade,
> possibly mutiple decades when it was somebody else's build script.

Why is the build script doing that?

-- 
Josh

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] kbuild: only clean objtool on mrproper
  2026-02-25 20:23   ` Michal Suchánek
  2026-02-25 20:37     ` Josh Poimboeuf
@ 2026-02-25 21:21     ` Nathan Chancellor
  2026-02-28  5:53       ` Nathan Chancellor
  2026-03-03 16:27       ` Michal Suchánek
  1 sibling, 2 replies; 8+ messages in thread
From: Nathan Chancellor @ 2026-02-25 21:21 UTC (permalink / raw)
  To: Michal Suchánek
  Cc: Josh Poimboeuf, linux-kbuild, Nicolas Schier, Masahiro Yamada,
	Miguel Ojeda, Thomas Weißschuh, Tamir Duberstein,
	Steven Rostedt, linux-kernel, Jiri Slaby

On Wed, Feb 25, 2026 at 09:23:09PM +0100, Michal Suchánek wrote:
> On Wed, Feb 25, 2026 at 01:04:17PM -0700, Nathan Chancellor wrote:
> > Wouldn't resolve_btfids need the same treatment?
> 
> No, make clean runs the clean target for resolve_btfids but the tool
> remains.

That does not reproduce for me personally:

  $ cat kernel/configs/btf.config
  CONFIG_BPF_SYSCALL=y
  # CONFIG_DEBUG_INFO_NONE is not set
  CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y
  CONFIG_DEBUG_INFO_BTF=y

  $ make -skj"$(nproc)" ARCH=x86_64 O=build mrproper defconfig btf.config prepare

  $ ls -al build/tools/{bpf/resolve_btfids/resolve_btfids,objtool/objtool}
  -rwxr-xr-x 1 nathan nathan 2224456 Feb 25 13:33 build/tools/bpf/resolve_btfids/resolve_btfids
  -rwxr-xr-x 1 nathan nathan 4046296 Feb 25 13:33 build/tools/objtool/objtool

  $ make -skj"$(nproc)" ARCH=x86_64 O=build clean

  $ ls -al build/tools/{bpf/resolve_btfids/resolve_btfids,objtool/objtool}
  "build/tools/bpf/resolve_btfids/resolve_btfids": No such file or directory (os error 2)
  "build/tools/objtool/objtool": No such file or directory (os error 2)

I guess resolve_btfids is not strictly required for external module
builds because vmlinux may not be present and cmd_btf_ko handles that
gracefully.

> > Also, what's the use case? Running 'make clean' then copying what
> > is left?
> 
> Yes, that's what my build script has been doing for at least a decade,
> possibly mutiple decades when it was somebody else's build script.

I guess that is one way to ensure 'make clean' upholds its promise of
leaving just enough to build external modules. I had missed that in
review of this change.

Another option would be splitting tools/objtool's clean target into
clean and mrproper like the main kernel and mirroring what that does so
that objtool the binary can remain around while all its objects get
cleaned up.

Cheers,
Nathan

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] kbuild: only clean objtool on mrproper
  2026-02-25 21:21     ` Nathan Chancellor
@ 2026-02-28  5:53       ` Nathan Chancellor
  2026-03-03 16:27       ` Michal Suchánek
  1 sibling, 0 replies; 8+ messages in thread
From: Nathan Chancellor @ 2026-02-28  5:53 UTC (permalink / raw)
  To: Michal Suchánek
  Cc: Josh Poimboeuf, linux-kbuild, Nicolas Schier, Masahiro Yamada,
	Miguel Ojeda, Thomas Weißschuh, Tamir Duberstein,
	Steven Rostedt, linux-kernel, Jiri Slaby

On Wed, Feb 25, 2026 at 02:21:05PM -0700, Nathan Chancellor wrote:
> On Wed, Feb 25, 2026 at 09:23:09PM +0100, Michal Suchánek wrote:
> > On Wed, Feb 25, 2026 at 01:04:17PM -0700, Nathan Chancellor wrote:
> > > Wouldn't resolve_btfids need the same treatment?
> > 
> > No, make clean runs the clean target for resolve_btfids but the tool
> > remains.
> 
> That does not reproduce for me personally:
> 
>   $ cat kernel/configs/btf.config
>   CONFIG_BPF_SYSCALL=y
>   # CONFIG_DEBUG_INFO_NONE is not set
>   CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y
>   CONFIG_DEBUG_INFO_BTF=y
> 
>   $ make -skj"$(nproc)" ARCH=x86_64 O=build mrproper defconfig btf.config prepare
> 
>   $ ls -al build/tools/{bpf/resolve_btfids/resolve_btfids,objtool/objtool}
>   -rwxr-xr-x 1 nathan nathan 2224456 Feb 25 13:33 build/tools/bpf/resolve_btfids/resolve_btfids
>   -rwxr-xr-x 1 nathan nathan 4046296 Feb 25 13:33 build/tools/objtool/objtool
> 
>   $ make -skj"$(nproc)" ARCH=x86_64 O=build clean
> 
>   $ ls -al build/tools/{bpf/resolve_btfids/resolve_btfids,objtool/objtool}
>   "build/tools/bpf/resolve_btfids/resolve_btfids": No such file or directory (os error 2)
>   "build/tools/objtool/objtool": No such file or directory (os error 2)
> 
> I guess resolve_btfids is not strictly required for external module
> builds because vmlinux may not be present and cmd_btf_ko handles that
> gracefully.

To close the loop here, 'make clean' removes vmlinux and resolve_btfids
at the same time and the check in cmd_btf_ko prevents that from becoming
a hard error. So technically no problem but a little fragile.

> > > Also, what's the use case? Running 'make clean' then copying what
> > > is left?
> > 
> > Yes, that's what my build script has been doing for at least a decade,
> > possibly mutiple decades when it was somebody else's build script.
> 
> I guess that is one way to ensure 'make clean' upholds its promise of
> leaving just enough to build external modules. I had missed that in
> review of this change.
> 
> Another option would be splitting tools/objtool's clean target into
> clean and mrproper like the main kernel and mirroring what that does so
> that objtool the binary can remain around while all its objects get
> cleaned up.

FWIW, I sent this as an alternative since I think it adheres a little
more to Kbuild's contract that 'make clean' leaves enough around for
external module builds while removing all unneeded generated files:

  https://lore.kernel.org/20260227-avoid-objtool-binary-removal-clean-v1-1-122f3e55eae9@kernel.org/

Cheers,
Nathan

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] kbuild: only clean objtool on mrproper
  2026-02-25 20:37     ` Josh Poimboeuf
@ 2026-03-03 16:22       ` Michal Suchánek
  0 siblings, 0 replies; 8+ messages in thread
From: Michal Suchánek @ 2026-03-03 16:22 UTC (permalink / raw)
  To: Josh Poimboeuf
  Cc: Nathan Chancellor, linux-kbuild, Nicolas Schier, Masahiro Yamada,
	Miguel Ojeda, Thomas Weißschuh, Tamir Duberstein,
	Steven Rostedt, linux-kernel, Jiri Slaby

On Wed, Feb 25, 2026 at 12:37:58PM -0800, Josh Poimboeuf wrote:
> On Wed, Feb 25, 2026 at 09:23:09PM +0100, Michal Suchánek wrote:
> > On Wed, Feb 25, 2026 at 01:04:17PM -0700, Nathan Chancellor wrote:
> > > On Wed, Feb 25, 2026 at 12:26:29PM +0100, Michal Suchanek wrote:
> > > > For packaging purposes I want to be able to grab the tool binaries
> > > > without the .o files
> > > > 
> > > > Fixes: 68b4fe32d737 ("kbuild: Add objtool to top-level clean target")
> > > > Signed-off-by: Michal Suchanek <msuchanek@suse.de>
> > > 
> > > Wouldn't resolve_btfids need the same treatment?
> > 
> > No, make clean runs the clean target for resolve_btfids but the tool
> > remains.
> > 
> > > Why is objtool special here?
> > 
> > That's what I would like to know as well.
> > 
> > > Also, what's the use case? Running 'make clean' then copying what
> > > is left?
> > 
> > Yes, that's what my build script has been doing for at least a decade,
> > possibly mutiple decades when it was somebody else's build script.
> 
> Why is the build script doing that?

To clollect the generated files, primarily for building modules.

Thanks

Michal

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] kbuild: only clean objtool on mrproper
  2026-02-25 21:21     ` Nathan Chancellor
  2026-02-28  5:53       ` Nathan Chancellor
@ 2026-03-03 16:27       ` Michal Suchánek
  1 sibling, 0 replies; 8+ messages in thread
From: Michal Suchánek @ 2026-03-03 16:27 UTC (permalink / raw)
  To: Nathan Chancellor
  Cc: Josh Poimboeuf, linux-kbuild, Nicolas Schier, Masahiro Yamada,
	Miguel Ojeda, Thomas Weißschuh, Tamir Duberstein,
	Steven Rostedt, linux-kernel, Jiri Slaby

On Wed, Feb 25, 2026 at 02:21:05PM -0700, Nathan Chancellor wrote:
> On Wed, Feb 25, 2026 at 09:23:09PM +0100, Michal Suchánek wrote:
> > On Wed, Feb 25, 2026 at 01:04:17PM -0700, Nathan Chancellor wrote:
> > > Wouldn't resolve_btfids need the same treatment?
> > 
> > No, make clean runs the clean target for resolve_btfids but the tool
> > remains.
> 
> That does not reproduce for me personally:
> 
>   $ cat kernel/configs/btf.config
>   CONFIG_BPF_SYSCALL=y
>   # CONFIG_DEBUG_INFO_NONE is not set
>   CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y
>   CONFIG_DEBUG_INFO_BTF=y
> 
>   $ make -skj"$(nproc)" ARCH=x86_64 O=build mrproper defconfig btf.config prepare
> 
>   $ ls -al build/tools/{bpf/resolve_btfids/resolve_btfids,objtool/objtool}
>   -rwxr-xr-x 1 nathan nathan 2224456 Feb 25 13:33 build/tools/bpf/resolve_btfids/resolve_btfids
>   -rwxr-xr-x 1 nathan nathan 4046296 Feb 25 13:33 build/tools/objtool/objtool
> 
>   $ make -skj"$(nproc)" ARCH=x86_64 O=build clean
> 
>   $ ls -al build/tools/{bpf/resolve_btfids/resolve_btfids,objtool/objtool}
>   "build/tools/bpf/resolve_btfids/resolve_btfids": No such file or directory (os error 2)
>   "build/tools/objtool/objtool": No such file or directory (os error 2)
> 
> I guess resolve_btfids is not strictly required for external module
> builds because vmlinux may not be present and cmd_btf_ko handles that
> gracefully.

Yes, you are right. The reason why this was not a problem with
resolve_btfids is that missing resolve_btfids is not an error. Or
possibly it's not an error when vmlinux is not in a location where the
build can find it.

resolve_btfids should probably also be preserved but it was not reported
as a bug so far because the case when it would be a problem is fairly
unlikely.

Thanks

Michal

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2026-03-03 16:27 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-25 11:26 [PATCH] kbuild: only clean objtool on mrproper Michal Suchanek
2026-02-25 20:04 ` Nathan Chancellor
2026-02-25 20:23   ` Michal Suchánek
2026-02-25 20:37     ` Josh Poimboeuf
2026-03-03 16:22       ` Michal Suchánek
2026-02-25 21:21     ` Nathan Chancellor
2026-02-28  5:53       ` Nathan Chancellor
2026-03-03 16:27       ` Michal Suchánek

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox