* 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