linux/Documentation
Masahiro Yamada 8b41fc4454 kbuild: create modules.builtin without Makefile.modbuiltin or tristate.conf
Commit bc081dd6e9 ("kbuild: generate modules.builtin") added
infrastructure to generate modules.builtin, the list of all
builtin modules.

Basically, it works like this:

  - Kconfig generates include/config/tristate.conf, the list of
    tristate CONFIG options with a value in a capital letter.

  - scripts/Makefile.modbuiltin makes Kbuild descend into
    directories to collect the information of builtin modules.

I am not a big fan of it because Kbuild ends up with traversing
the source tree twice.

I am not sure how perfectly it should work, but this approach cannot
avoid false positives; even if the relevant CONFIG option is tristate,
some Makefiles forces obj-m to obj-y.

Some examples are:

  arch/powerpc/platforms/powermac/Makefile:
    obj-$(CONFIG_NVRAM:m=y)         += nvram.o

  net/ipv6/Makefile:
    obj-$(subst m,y,$(CONFIG_IPV6)) += inet6_hashtables.o

  net/netlabel/Makefile:
    obj-$(subst m,y,$(CONFIG_IPV6)) += netlabel_calipso.o

Nobody has complained about (or noticed) it, so it is probably fine to
have false positives in modules.builtin.

This commit simplifies the implementation. Let's exploit the fact
that every module has MODULE_LICENSE(). (modpost shows a warning if
MODULE_LICENSE is missing. If so, 0-day bot would already have blocked
such a module.)

I added MODULE_FILE to <linux/module.h>. When the code is being compiled
as builtin, it will be filled with the file path of the module, and
collected into modules.builtin.info. Then, scripts/link-vmlinux.sh
extracts the list of builtin modules out of it.

This new approach fixes the false-positives above, but adds another
type of false-positives; non-modular code may have MODULE_LICENSE()
by mistake. This is not a big deal, it is just the code is always
orphan. We can clean it up if we like. You can see cleanup examples by:

  $ git log --grep='make.* explicitly non-modular'

To sum up, this commits deletes lots of code, but still produces almost
equivalent results. Please note it does not increase the vmlinux size at
all. As you can see in include/asm-generic/vmlinux.lds.h, the .modinfo
section is discarded in the link stage.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
2020-01-07 02:18:39 +09:00
..
ABI platform/mellanox: fix the mlx-bootctl sysfs 2019-12-20 19:00:50 +02:00
accounting
admin-guide Fixes for 5.5: 2019-12-22 10:59:06 -08:00
arm
arm64 arm64 updates for 5.5: 2019-11-25 15:39:19 -08:00
block block: add iostat counters for flush requests 2019-11-21 09:06:47 -07:00
bpf bpf: Add s390 testing documentation 2019-10-30 16:25:31 +01:00
cdrom
core-api powerpc updates for 5.5 #2 2019-12-06 13:36:31 -08:00
cpu-freq
crypto crypto: ablkcipher - remove deprecated and unused ablkcipher support 2019-11-17 09:02:49 +08:00
dev-tools kcov: fix struct layout for kcov_remote_arg 2020-01-04 13:55:09 -08:00
devicetree Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2019-12-22 09:54:33 -08:00
doc-guide kernel-doc: rename the kernel-doc directive 'functions' to 'identifiers' 2019-11-07 13:17:25 -07:00
driver-api Merge branch 'thermal/next' of git://git.kernel.org/pub/scm/linux/kernel/git/thermal/linux 2019-12-05 11:21:24 -08:00
EDID
fault-injection
fb
features riscv: gcov: enable gcov for RISC-V 2020-01-03 00:47:02 -08:00
filesystems overlayfs fixes for 5.5-rc2 2019-12-14 11:13:54 -08:00
firmware_class
firmware-guide ACPI: Documentation: Minor spelling fix in namespace.rst 2019-10-14 11:03:44 +02:00
fpga Documentation: fpga: dfl: add descriptions for thermal/power management interfaces 2019-10-16 19:18:26 -07:00
gpu drm/amdgpu: Improve RAS documentation (v2) 2019-11-06 16:27:48 -05:00
hid
hwmon Here's the main documentation changes for 5.5: 2019-12-02 11:51:02 -08:00
i2c Here's the main documentation changes for 5.5: 2019-12-02 11:51:02 -08:00
ia64
ide
iio
infiniband
input
isdn
kbuild kbuild: create modules.builtin without Makefile.modbuiltin or tristate.conf 2020-01-07 02:18:39 +09:00
kernel-hacking
leds
livepatch livepatch: Documentation of the new API for tracking system state changes 2019-11-01 13:08:24 +01:00
locking
m68k
maintainer docs: fix up the maintainer profile document 2019-11-25 08:42:12 -07:00
media media: Documentation: media: *_DEFAULT targets for subdevs 2019-11-10 17:49:27 +01:00
mic
mips docs: fix some broken references 2019-10-10 11:25:39 -06:00
misc-devices docs: misc: xilinx_sdfec: Actually add documentation 2019-10-11 10:01:27 -06:00
netlabel
networking Documentation: net: dsa: sja1105: Remove text about taprio base-time limitation 2019-12-30 20:14:27 -08:00
nios2
nvdimm libnvdimm, MAINTAINERS: Maintainer Entry Profile 2019-11-25 08:34:54 -07:00
openrisc
parisc
PCI
pcmcia
power pci-v5.5-changes 2019-12-03 13:58:22 -08:00
powerpc powerpc/fsl_booke/32: Document KASLR implementation 2019-11-13 19:27:58 +11:00
process Documentation: riscv: add patch acceptance guidelines 2020-01-04 21:49:01 -08:00
RCU Documentation: Rename rcu_node_context_switch() to rcu_note_context_switch() 2019-10-29 02:48:29 -07:00
riscv Documentation: riscv: add patch acceptance guidelines 2020-01-04 21:49:01 -08:00
s390
scheduler Documentation/scheduler: fix links in sched-stats 2019-10-29 04:35:41 -06:00
scsi scsi: smartpqi: Update attribute name to driver_version 2019-12-09 19:17:36 -05:00
security Documentation: security: core.rst: fix warnings 2019-11-22 10:01:47 -07:00
sh
sound ALSA: docs: Update about the new PCM sync_stop ops 2019-11-20 19:39:54 +01:00
sparc
sphinx docs, parallelism: Rearrange how jobserver reservations are made 2019-11-22 10:35:18 -07:00
sphinx-static doc-rst: Reduce CSS padding around Field 2019-10-02 10:03:06 -06:00
spi
target
timers
trace Here's the main documentation changes for 5.5: 2019-12-02 11:51:02 -08:00
translations treewide: Use sizeof_field() macro 2019-12-09 10:36:44 -08:00
usb USB: rio500: Remove Rio 500 kernel driver 2019-10-04 10:53:36 +02:00
userspace-api Here's the main documentation changes for 5.5: 2019-12-02 11:51:02 -08:00
virt KVM: Add support for secure guests under the Protected Execution 2019-11-29 19:20:08 +01:00
virtual
vm mm/hmm: remove hmm_mirror and related 2019-11-23 19:56:45 -04:00
w1 docs: w1: Fix SPDX-License-Identifier syntax 2019-10-18 09:45:56 -06:00
watchdog
x86 Merge branch 'x86-boot-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2019-11-26 08:40:20 -08:00
xtensa
.gitignore
asm-annotations.rst x86/ftrace: Get rid of function_hook 2019-10-25 10:52:22 +02:00
atomic_bitops.txt
atomic_t.txt
bus-virt-phys-mapping.txt
Changes
CodingStyle
conf.py doc-rst: Programmatically render MAINTAINERS into ReST 2019-10-02 10:03:17 -06:00
COPYING-logo
crc32.txt
debugging-modules.txt
debugging-via-ohci1394.txt
digsig.txt
DMA-API-HOWTO.txt
DMA-API.txt
DMA-attributes.txt dma-mapping: remove the DMA_ATTR_WRITE_BARRIER flag 2019-11-14 12:01:54 -04:00
DMA-ISA-LPC.txt
docutils.conf
dontdiff modpost: dump missing namespaces into a single modules.nsdeps file 2019-11-11 20:10:01 +09:00
futex-requeue-pi.txt
hwspinlock.txt
index.rst Here's the main documentation changes for 5.5: 2019-12-02 11:51:02 -08:00
io_ordering.txt
io-mapping.txt
IPMI.txt
IRQ-affinity.txt
IRQ-domain.txt
IRQ.txt
irqflags-tracing.txt
Kconfig
kobject.txt
kprobes.txt
kref.txt
logo.gif
lzo.txt
mailbox.txt
Makefile Kbuild updates for v5.5 2019-12-02 17:35:04 -08:00
memory-barriers.txt docs/memory-barriers.txt: Remove remaining references to mmiowb() 2019-11-22 10:00:46 -07:00
nommu-mmap.txt
padata.txt
percpu-rw-semaphore.txt
pi-futex.txt
preempt-locking.txt
rbtree.txt
remoteproc.txt
robust-futex-ABI.txt
robust-futexes.txt
rpmsg.txt
speculation.txt
static-keys.txt
SubmittingPatches
tee.txt
this_cpu_ops.txt
unaligned-memory-access.txt
xz.txt