Re: [PATCH -next] fbdev: c2p: Fix link failure on non-inlining
From: Geert Uytterhoeven <geert@linux-m68k.org>
Date: 2019-09-26 11:43:30
Also in:
dri-devel, lkml
Hi Yamada-san, On Thu, Sep 26, 2019 at 12:45 PM Masahiro Yamada [off-list ref] wrote:
On Thu, Sep 26, 2019 at 7:13 PM Geert Uytterhoeven [off-list ref] wrote:quoted
When the compiler decides not to inline the Chunky-to-Planar core functions, the build fails with: c2p_planar.c:(.text+0xd6): undefined reference to `c2p_unsupported' c2p_planar.c:(.text+0x1dc): undefined reference to `c2p_unsupported' c2p_iplan2.c:(.text+0xc4): undefined reference to `c2p_unsupported' c2p_iplan2.c:(.text+0x150): undefined reference to `c2p_unsupported' Fix this by marking the functions __always_inline. Reported-by: noreply@ellerman.id.au Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org> --- Fixes: 025f072e5823947c ("compiler: enable CONFIG_OPTIMIZE_INLINING forcibly") As this is a patch in akpm's tree, the commit ID in the Fixes tag is not stable.BTW, that Fixes tag is incorrect. Irrespective of 025f072e5823947c, you could manually enable CONFIG_OPTIMIZE_INLINING from menuconfig etc.
Merely enabling that doesn't help.
You also need CONFIG_CC_OPTIMIZE_FOR_SIZE=y, while the
default is CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y.
Which is why my all{mod,yes}config builds never caught that :-(
So, this build error would have been found much earlier if somebody had been running randconfig tests on m68k.
It's been a while I did that... BTW, does randconfig randomize choices these days? I remember it didn't use to do that.
It is impossible to detect this error on other architectures
because the driver config options are guarded by
'depends on ATARI' or 'depends on AMIGA'.
The correct tag is:
Fixes: 9012d011660e ("compiler: allow all arches to enable
CONFIG_OPTIMIZE_INLINING")
The commit id is stable.Thanks, will update.
As an additional work, depends on (AMIGA || COMPILE_TEST) would be nice unless this driver contains m68k-specific code.
The Amiga and Atari frame buffer drivers need <asm/{amiga,atari}hw.h>,
and the Atari driver contains inline asm.
The C2P code could be put behind its own Kconfig symbol, I guess.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds