modpost: do not set ->preloaded for symbols from Module.symvers
authorMasahiro Yamada <yamada.masahiro@socionext.com>
Thu, 14 Nov 2019 17:42:25 +0000 (02:42 +0900)
committerMasahiro Yamada <yamada.masahiro@socionext.com>
Sat, 23 Nov 2019 06:46:42 +0000 (15:46 +0900)
commite4b26c9f75e48b5ef9e31ac6c8a445d4479b469c
treea7223567f9f1fcf61772c76b0acc09c2443dc73f
parent1743694eb2357b47cd9951079f9ab0d728c916bf
modpost: do not set ->preloaded for symbols from Module.symvers

Now that there is no overwrap between symbols from ELF files and
ones from Module.symvers.

So, the 'exported twice' warning should be reported irrespective
of where the symbol in question came from.

The exceptional case is external module; in some cases, we build
an external module to provide a different version/variant of the
corresponding in-kernel module, overriding the same set of exported
symbols.

You can see this use-case in upstream; tools/testing/nvdimm/libnvdimm.ko
replaces drivers/nvdimm/libnvdimm.ko in order to link it against mocked
version of core kernel symbols.

So, let's relax the 'exported twice' warning when building external
modules. The multiple export from external modules is warned only
when the previous one is from vmlinux or itself.

With this refactoring, the ugly preloading goes away.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
scripts/mod/modpost.c