Linux kbuild/kconfig development
 help / color / mirror / Atom feed
* Re: linux-next: new objtool warnings
       [not found]               ` <20251105101010.GA4068168@noisy.programming.kicks-ass.net>
@ 2025-11-05 17:07                 ` Nathan Chancellor
  2025-11-05 19:16                   ` Peter Zijlstra
  0 siblings, 1 reply; 4+ messages in thread
From: Nathan Chancellor @ 2025-11-05 17:07 UTC (permalink / raw)
  To: Peter Zijlstra
  Cc: Stephen Rothwell, Josh Poimboeuf, Linux Next Mailing List,
	Linux Kernel Mailing List, linux-kbuild, Nicolas Schier

Hey Peter,

On Wed, Nov 05, 2025 at 11:10:10AM +0100, Peter Zijlstra wrote:
> + Nathan

Thanks for the heads up.

> On Wed, Nov 05, 2025 at 11:02:02AM +0100, Peter Zijlstra wrote:
> > Also, someone wrecked the build system.
> > 
> > vmlinux.o is no longer a valid build target, and the vmlinux target
> > seems to build a ton of module stuff :/

I tested the major stable releases (6.1, 6.6, and 6.12), long before
Nicolas and I took over Kbuild, and vmlinux.o does not work as a target
in any of them:

  $ make -skj"$(nproc)" ARCH=x86_64 mrproper
  $ make -skj"$(nproc)" ARCH=x86_64 defconfig
  $ make -skj"$(nproc)" ARCH=x86_64 vmlinux.o
  Makefile:1912: warning: overriding recipe for target 'vmlinux.o'
  Makefile:1150: warning: ignoring old recipe for target 'vmlinux.o'
  make[2]: *** No rule to make target 'vmlinux.o'.

When did this work? Is it configuration dependent? FWIW, it looks like
the 'vmlinux_o' targets does the right thing? I am not sure why it
exists instead of just vmlinux.o, Masahiro did that in commit
7a342e6c7735 ("kbuild: move modules.builtin(.modinfo) rules to
Makefile.vmlinux_o") in 6.1.

As for the second comment, if I build the vmlinux target, I see:

  AR      built-in.a
  AR      vmlinux.a
  LD      vmlinux.o
  MODPOST vmlinux.symvers
  CC      .vmlinux.export.o
  UPD     include/generated/utsversion.h
  CC      init/version-timestamp.o
  KSYMS   .tmp_vmlinux0.kallsyms.S
  AS      .tmp_vmlinux0.kallsyms.o
  LD      .tmp_vmlinux1
  NM      .tmp_vmlinux1.syms
  KSYMS   .tmp_vmlinux1.kallsyms.S
  AS      .tmp_vmlinux1.kallsyms.o
  LD      .tmp_vmlinux2
  NM      .tmp_vmlinux2.syms
  KSYMS   .tmp_vmlinux2.kallsyms.S
  AS      .tmp_vmlinux2.kallsyms.o
  LD      vmlinux.unstripped
  NM      System.map
  SORTTAB vmlinux.unstripped
  OBJCOPY vmlinux
  OBJCOPY modules.builtin.modinfo
  GEN     modules.builtin

at the end of the build with no instances of [M]. What "ton of module
stuff" are you seeing in your build? Also configuration dependent?

Cheers,
Nathan

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

* Re: linux-next: new objtool warnings
  2025-11-05 17:07                 ` linux-next: new objtool warnings Nathan Chancellor
@ 2025-11-05 19:16                   ` Peter Zijlstra
  2025-11-05 20:09                     ` Nathan Chancellor
  0 siblings, 1 reply; 4+ messages in thread
From: Peter Zijlstra @ 2025-11-05 19:16 UTC (permalink / raw)
  To: Nathan Chancellor
  Cc: Stephen Rothwell, Josh Poimboeuf, Linux Next Mailing List,
	Linux Kernel Mailing List, linux-kbuild, Nicolas Schier

On Wed, Nov 05, 2025 at 10:07:15AM -0700, Nathan Chancellor wrote:

>   $ make -skj"$(nproc)" ARCH=x86_64 vmlinux.o
>   Makefile:1912: warning: overriding recipe for target 'vmlinux.o'
>   Makefile:1150: warning: ignoring old recipe for target 'vmlinux.o'
>   make[2]: *** No rule to make target 'vmlinux.o'.
> 
> When did this work? 

Dunno, I have vague memories of it working. The only reason I tried
is that vmlinux seems to be misbehaving.

> As for the second comment, if I build the vmlinux target, I see:
> 
>   AR      built-in.a
>   AR      vmlinux.a
>   LD      vmlinux.o
>   MODPOST vmlinux.symvers
>   CC      .vmlinux.export.o
>   UPD     include/generated/utsversion.h
>   CC      init/version-timestamp.o
>   KSYMS   .tmp_vmlinux0.kallsyms.S
>   AS      .tmp_vmlinux0.kallsyms.o
>   LD      .tmp_vmlinux1
>   NM      .tmp_vmlinux1.syms
>   KSYMS   .tmp_vmlinux1.kallsyms.S
>   AS      .tmp_vmlinux1.kallsyms.o
>   LD      .tmp_vmlinux2
>   NM      .tmp_vmlinux2.syms
>   KSYMS   .tmp_vmlinux2.kallsyms.S
>   AS      .tmp_vmlinux2.kallsyms.o
>   LD      vmlinux.unstripped
>   NM      System.map
>   SORTTAB vmlinux.unstripped
>   OBJCOPY vmlinux
>   OBJCOPY modules.builtin.modinfo
>   GEN     modules.builtin

# make O=tmp-build clean
# make O=tmp-build allmodconfig
# make O=tmp-build -j64 vmlinux 2>&1 | grep "\[M\]"
  CC [M]  sound/sound_core.o
  CC [M]  virt/lib/irqbypass.o
  AS [M]  arch/x86/crypto/twofish-x86_64-asm_64.o
  CC [M]  arch/x86/crypto/twofish_glue.o
  CC [M]  samples/vfio-mdev/mtty.o
  CC [M]  sound/ac97_bus.o
  AS [M]  arch/x86/crypto/twofish-x86_64-asm_64-3way.o
  CC [M]  arch/x86/crypto/twofish_glue_3way.o

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

* Re: linux-next: new objtool warnings
  2025-11-05 19:16                   ` Peter Zijlstra
@ 2025-11-05 20:09                     ` Nathan Chancellor
  2025-11-06 11:48                       ` Peter Zijlstra
  0 siblings, 1 reply; 4+ messages in thread
From: Nathan Chancellor @ 2025-11-05 20:09 UTC (permalink / raw)
  To: Peter Zijlstra
  Cc: Stephen Rothwell, Josh Poimboeuf, Linux Next Mailing List,
	Linux Kernel Mailing List, linux-kbuild, Nicolas Schier

On Wed, Nov 05, 2025 at 08:16:13PM +0100, Peter Zijlstra wrote:
> # make O=tmp-build clean
> # make O=tmp-build allmodconfig
> # make O=tmp-build -j64 vmlinux 2>&1 | grep "\[M\]"
>   CC [M]  sound/sound_core.o
>   CC [M]  virt/lib/irqbypass.o
>   AS [M]  arch/x86/crypto/twofish-x86_64-asm_64.o
>   CC [M]  arch/x86/crypto/twofish_glue.o
>   CC [M]  samples/vfio-mdev/mtty.o
>   CC [M]  sound/ac97_bus.o
>   AS [M]  arch/x86/crypto/twofish-x86_64-asm_64-3way.o
>   CC [M]  arch/x86/crypto/twofish_glue_3way.o

Thanks, I bisected this to commit d2d5cba5d92c ("kbuild: remove EXPERT
and !COMPILE_TEST guarding from TRIM_UNUSED_KSYMS"), which explains
everything when looking at Makefile:

  ifdef CONFIG_TRIM_UNUSED_KSYMS
  # For the kernel to actually contain only the needed exported symbols,
  # we have to build modules as well to determine what those symbols are.
  KBUILD_MODULES := y
  endif

Maybe we want to restore the !COMPILE_TEST dependency?

Cheers,
Nathan

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

* Re: linux-next: new objtool warnings
  2025-11-05 20:09                     ` Nathan Chancellor
@ 2025-11-06 11:48                       ` Peter Zijlstra
  0 siblings, 0 replies; 4+ messages in thread
From: Peter Zijlstra @ 2025-11-06 11:48 UTC (permalink / raw)
  To: Nathan Chancellor
  Cc: Stephen Rothwell, Josh Poimboeuf, Linux Next Mailing List,
	Linux Kernel Mailing List, linux-kbuild, Nicolas Schier

On Wed, Nov 05, 2025 at 01:09:23PM -0700, Nathan Chancellor wrote:
> On Wed, Nov 05, 2025 at 08:16:13PM +0100, Peter Zijlstra wrote:
> > # make O=tmp-build clean
> > # make O=tmp-build allmodconfig
> > # make O=tmp-build -j64 vmlinux 2>&1 | grep "\[M\]"
> >   CC [M]  sound/sound_core.o
> >   CC [M]  virt/lib/irqbypass.o
> >   AS [M]  arch/x86/crypto/twofish-x86_64-asm_64.o
> >   CC [M]  arch/x86/crypto/twofish_glue.o
> >   CC [M]  samples/vfio-mdev/mtty.o
> >   CC [M]  sound/ac97_bus.o
> >   AS [M]  arch/x86/crypto/twofish-x86_64-asm_64-3way.o
> >   CC [M]  arch/x86/crypto/twofish_glue_3way.o
> 
> Thanks, I bisected this to commit d2d5cba5d92c ("kbuild: remove EXPERT
> and !COMPILE_TEST guarding from TRIM_UNUSED_KSYMS"), which explains
> everything when looking at Makefile:
> 
>   ifdef CONFIG_TRIM_UNUSED_KSYMS
>   # For the kernel to actually contain only the needed exported symbols,
>   # we have to build modules as well to determine what those symbols are.
>   KBUILD_MODULES := y
>   endif
> 
> Maybe we want to restore the !COMPILE_TEST dependency?

Urgh, yeah, I suppose we do want. This TRIM_UNUSED_KSYMS is cute if you
swing that way for a full build, but getting all modules built if you
just want a vmlinux is really somewhat unexpected.

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

end of thread, other threads:[~2025-11-06 11:48 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20251031111515.09c9a4ed@canb.auug.org.au>
     [not found] ` <20251103091006.GV3245006@noisy.programming.kicks-ass.net>
     [not found]   ` <20251103203256.5ac39302@canb.auug.org.au>
     [not found]     ` <20251103093804.GY3245006@noisy.programming.kicks-ass.net>
     [not found]       ` <20251105143027.214f491c@canb.auug.org.au>
     [not found]         ` <20251105085637.GO4067720@noisy.programming.kicks-ass.net>
     [not found]           ` <20251105100014.GY4068168@noisy.programming.kicks-ass.net>
     [not found]             ` <20251105100202.GZ4068168@noisy.programming.kicks-ass.net>
     [not found]               ` <20251105101010.GA4068168@noisy.programming.kicks-ass.net>
2025-11-05 17:07                 ` linux-next: new objtool warnings Nathan Chancellor
2025-11-05 19:16                   ` Peter Zijlstra
2025-11-05 20:09                     ` Nathan Chancellor
2025-11-06 11:48                       ` Peter Zijlstra

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