• Masahiro Yamada's avatar
    modpost: generate vmlinux.symvers and reuse it for the second modpost · 269a535c
    Masahiro Yamada authored
    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: default avatarMasahiro Yamada <masahiroy@kernel.org>
    269a535c
Makefile 60.4 KB