kbuild: link lib-y objects to vmlinux forcibly even when CONFIG_MODULES=n
authorMasahiro Yamada <masahiroy@kernel.org>
Mon, 26 May 2025 09:07:52 +0000 (18:07 +0900)
committerMasahiro Yamada <masahiroy@kernel.org>
Thu, 5 Jun 2025 20:40:24 +0000 (05:40 +0900)
commit41a77d43f36d3b897755a223b264c45131546b8b
tree234fe9215f3d9ea8a3700a7740812fbae92ec5f9
parent81a93bf93f0e5963d8695a3596ac50b5ceea87c3
kbuild: link lib-y objects to vmlinux forcibly even when CONFIG_MODULES=n

Since commit 7273ad2b08f8 ("kbuild: link lib-y objects to vmlinux
forcibly when CONFIG_MODULES=y"), all objects from lib-y have been
forcibly linked to vmlinux when CONFIG_MODULES=y.

To simplify future changes, this commit makes all objects from lib-y
be linked regardless of the CONFIG_MODULES setting.

Most use cases (CONFIG_MODULES=y) are not affected by this change.

The vmlinux size with ARCH=arm allnoconfig, where CONFIG_MODULES=n,
increases as follows:

   text    data     bss     dec     hex filename
1368644  835104  206288 2410036  24c634 vmlinux.before
1379440  837064  206288 2422792  24f808 vmlinux.after

We no longer benefit from using static libraries, but the impact is
mitigated by supporting CONFIG_LD_DEAD_CODE_DATA_ELIMINATION.

For example, the size of vmlinux remains almost the same with ARCH=arm
tinyconfig, where CONFIG_MODULES=n and
CONFIG_LD_DEAD_CODE_DATA_ELIMINATION=y.

   text    data     bss     dec     hex filename
 455316   93404   15472  564192   89be0 vmlinux.before
 455312   93404   15472  564188   89bdc vmlinux.after

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Makefile