Re: [PATCH v2] MIPS: do not compile generic functions for CONFIG_CAVIUM_OCTEON_SOC

From: Thomas Bogendoerfer
Date: Wed Mar 25 2020 - 13:34:27 EST


On Wed, Mar 25, 2020 at 04:45:29PM +0900, Masahiro Yamada wrote:
> MIPS provides multiple definitions for the following functions:
>
> fw_init_cmdline
> __delay
> __udelay
> __ndelay
> memmove
> __rmemcpy
> memcpy
> __copy_user
>
> The generic ones are defined in lib-y objects, which are overridden by
> the Octeon ones when CONFIG_CAVIUM_OCTEON_SOC is enabled.
>
> The use of EXPORT_SYMBOL in static libraries potentially causes a
> problem for the llvm linker [1]. So, I want to forcibly link lib-y
> objects to vmlinux when CONFIG_MODULES=y.
>
> As a groundwork, we must fix multiple definitions that have previously
> been hidden by lib-y.
>
> If you look at lib/string.c, arch can define __HAVE_ARCH_* to opt out
> the generic implementation.
>
> Similarly, this commit adds CONFIG_HAVE_PLAT_* to allow a platform
> to opt out the MIPS generic code.
>
> [1]: https://github.com/ClangBuiltLinux/linux/issues/515
>
> Reported-by: kbuild test robot <lkp@xxxxxxxxx>
> Signed-off-by: Masahiro Yamada <masahiroy@xxxxxxxxxx>
> ---
>
> Changes in v2:
> - Use #ifdef instead of __weak. This avoids increasing image size.
>
> arch/mips/Kconfig | 12 ++++++++++++
> arch/mips/fw/lib/cmdline.c | 2 ++
> arch/mips/lib/delay.c | 4 ++++
> arch/mips/lib/memcpy.S | 3 +++
> 4 files changed, 21 insertions(+)

applied to mips-next.

Thomas.

--
Crap can work. Given enough thrust pigs will fly, but it's not necessarily a
good idea. [ RFC1925, 2.3 ]