linux/init
Linus Torvalds 5cf0fd591f Kbuild: disable TRIM_UNUSED_KSYMS option
The removal of EXPORT_UNUSED_SYMBOL() in commit 367948220f looks like
(and was sold as) a no-op, but it actually had a rather serious and
subtle side effect: the UNUSED_SYMBOLS option not only enabled the
removed (unused) functionality, it also _disabled_ the TRIM_UNUSED_KSYMS
functionality.

And it turns out that TRIM_UNUSED_KSYMS is a huge time waste, and takes
up a third of the kernel build time for me.  For no actual upside, since
no distro is likely to ever be able to enable it (because they all
support external kernel modules).

Rather than re-enable EXPORT_UNUSED_SYMBOL, this just disables the
TRIM_UNUSED_KSYMS option by marking it broken.  I'm tempted to just
remove the support entirely, but maybe somebody has a use-case and can
fix the behavior of it.

I could have just disabled it for COMPILE_TEST, but it really smells
like the TRIM_UNUSED_KSYMS option is badly done and not really useful,
so this takes the more direct approach - let's see if anybody ever
actually notices or complains.

Cc: Miroslav Benes <mbenes@suse.cz>
Cc: Emil Velikov <emil.l.velikov@gmail.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Jessica Yu <jeyu@kernel.org>
Fixes: 367948220f ("module: remove EXPORT_UNUSED_SYMBOL*")
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2021-02-23 12:21:58 -08:00
..
calibrate.c
do_mounts_initrd.c
do_mounts_rd.c
do_mounts.c block: merge struct block_device and struct hd_struct 2020-12-01 14:53:40 -07:00
do_mounts.h
init_task.c fgraph: Initialize tracing_graph_pause at task creation 2021-01-29 15:07:32 -05:00
initramfs.c initramfs: fix clang build failure 2020-12-11 14:02:14 -08:00
Kconfig Kbuild: disable TRIM_UNUSED_KSYMS option 2021-02-23 12:21:58 -08:00
main.c init/gcov: allow CONFIG_CONSTRUCTORS on UML to fix module gcov 2021-02-05 11:03:47 -08:00
Makefile
noinitramfs.c
version.c uts: Use generic ns_common::count 2020-08-19 14:13:20 +02:00