Re: [PATCH v2 2/2] kbuild: link lib-y objects to vmlinux forcibly when CONFIG_MODULES=y
From: Masahiro Yamada
Date: Thu Mar 19 2020 - 11:49:15 EST
Hi Thomas,
On Thu, Mar 12, 2020 at 5:40 PM Thomas Bogendoerfer
<tsbogend@xxxxxxxxxxxxxxxx> wrote:
>
> On Thu, Mar 12, 2020 at 03:12:28PM +0900, Masahiro Yamada wrote:
> > I got the following report from 0-day bot.
> > Please advise me how to fix it.
> >
> >
> > I am not sure how multi-platform works in MIPS.
> >
> > The cavium-octeon platform has its own implementation
> > of various functions.
> >
> > So, vmlinux links different library routines
> > depending on whether CONFIG_CAVIUM_OCTEON_SOC, correct?
>
> for cavium memcpy is directly linked in via octeon-memcpy.o, while for
> every other platform it's coming from lib/lib.a(memcpy.o).
>
> What have you changed, that this doesn't work anymore ?
>
> Thomas.
I want to change all objects from lib-y
to be linked to vmlinux (exactly like obj-y )
if CONFIG_MODULES is enabled.
https://patchwork.kernel.org/patch/11432969/
EXPORT_SYMBOL in libraries
must be linked to vmlinux all the time,
even if there is no call-site in vmlinux.
I believe this is a good simplification because
EXPORT_SYMBOL is interface to loadable modules.
As it turned out, lib-y is (ab)used to avoid
multiple definition errors.
The 0-day detected a bug of 32-bit sparc:
https://patchwork.kernel.org/patch/11432969/
And, another is this one.
MIPS relies on that
arch/mips/lib/lib.a is weaker than octeon ones.
So, annotating __weak is a good solution
(thanks Nick!).
If I send a patch, is it acceptable?
--
Best Regards
Masahiro Yamada