Re: WARNING: lib/test_bitmap.o(.text.unlikely+0x5c): Section mismatch in reference from the function bitmap_copy_clear_tail() to the variable .init.rodata:clump_exp

From: Andy Shevchenko
Date: Fri Dec 13 2019 - 16:19:05 EST


On Fri, Dec 13, 2019 at 01:08:08PM -0800, Max Filippov wrote:
> On Fri, Dec 13, 2019 at 3:16 AM Andy Shevchenko
> <andriy.shevchenko@xxxxxxxxxxxxxxx> wrote:
> > On Tue, Dec 10, 2019 at 04:17:03AM +0800, kbuild test robot wrote:
> >
> > +Cc: Max for xtensa matters, perhaps he has an idea.
> >
> > > tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> > > head: e42617b825f8073569da76dc4510bfa019b1c35a
> > > commit: 30544ed5de431fe25d3793e4dd5a058d877c4d77 lib/bitmap: introduce bitmap_replace() helper
> > > date: 5 days ago
> > > config: xtensa-randconfig-a001-20191209 (attached as .config)
> > > compiler: xtensa-linux-gcc (GCC) 7.5.0
> > > reproduce:
> > > wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> > > chmod +x ~/bin/make.cross
> > > git checkout 30544ed5de431fe25d3793e4dd5a058d877c4d77
> > > # save the attached .config to linux build tree
> > > GCC_VERSION=7.5.0 make.cross ARCH=xtensa
> > >
> > > If you fix the issue, kindly add following tag
> > > Reported-by: kbuild test robot <lkp@xxxxxxxxx>
> > >
> > > All warnings (new ones prefixed by >>):
> >
> > I'm not sure I got this (esp. relation to my patch).
> > The mentioned code definitely compiled for 32-bit (since only then mentioned
> > bitmap API is in use). I have tried to reproduce on i386 compilation (gcc 9.x),
> > but can't.
>
> I was able to reproduce it on xtensa with gcc-9.
> The issue comes from the test "test_replace", specifically
> from the following call:
> bitmap_replace(bmap, &exp2[0], &exp2[1], exp2_to_exp3_mask, nbits);
>
> An invariable part of the call sequence used here is instantiated in
> the section .text.unlikely with a reference to exp2_to_exp3_mask built
> into it and it's called from the test_replace. It looks like a compiler bug
> to me, I'd expect this code to be emitted to the .init.text, i.e the same
> section where the function it was hoisted from resides.
> And why "unlikely"? This code is definitely executed.
>
> I'll file a bug against gcc.

Thanks for an analysis and quick response!

--
With Best Regards,
Andy Shevchenko