]> git.baikalelectronics.ru Git - kernel.git/commit
modpost: generate vmlinux.symvers and reuse it for the second modpost
authorMasahiro Yamada <masahiroy@kernel.org>
Mon, 1 Jun 2020 05:57:11 +0000 (14:57 +0900)
committerMasahiro Yamada <masahiroy@kernel.org>
Sat, 6 Jun 2020 14:38:12 +0000 (23:38 +0900)
commit61c95a6d0d763f5ac45d7c4ace8c4a4db5f21e51
treec611f2b2d48fd1f79ba0b58ea2295af297222db1
parent7a566f559fa0bc5960ad19c165957b07f8687ac6
modpost: generate vmlinux.symvers and reuse it for the second modpost

The full build runs modpost twice, first for vmlinux.o and second for
modules.

The first pass dumps all the vmlinux symbols into Module.symvers, but
the second pass parses vmlinux again instead of reusing the dump file,
presumably because it needs to avoid accumulating stale symbols.

Loading symbol info from a dump file is faster than parsing an ELF object.
Besides, modpost deals with various issues to parse vmlinux in the second
pass.

A solution is to make the first pass dumps symbols into a separate file,
vmlinux.symvers. The second pass reads it, and parses module .o files.
The merged symbol information is dumped into Module.symvers in the same
way as before.

This makes further modpost cleanups possible.

Also, it fixes the problem of 'make vmlinux', which previously overwrote
Module.symvers, throwing away module symbols.

I slightly touched scripts/link-vmlinux.sh so that vmlinux is re-linked
when you cross this commit. Otherwise, vmlinux.symvers would not be
generated.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
.gitignore
Documentation/dontdiff
Makefile
scripts/Makefile.modpost
scripts/link-vmlinux.sh