Re: [tip:x86/platform 1/1] platform_bt.c:undefined reference to `gpiod_add_lookup_table'

From: Andy Shevchenko
Date: Tue Apr 04 2017 - 11:27:11 EST


On Mon, 2017-04-03 at 12:44 +0300, Andy Shevchenko wrote:
> On Mon, Apr 3, 2017 at 12:36 PM, Andy Shevchenko
> <andy.shevchenko@xxxxxxxxx> wrote:
> > On Mon, Apr 3, 2017 at 12:31 PM, Arnd Bergmann <arnd@xxxxxxxx>
> > wrote:
> > > On Mon, Apr 3, 2017 at 10:13 AM, Andy Shevchenko
> > > <andy.shevchenko@xxxxxxxxx> wrote:
> > > > On Mon, Apr 3, 2017 at 2:23 AM, kbuild test robot
> > > > <fengguang.wu@xxxxxxxxx> wrote:
> > > > > ÂÂÂarch/x86/built-in.o: In function `tng_bt_sfi_setup':
> > > > > > > platform_bt.c:(.init.text+0x13a30): undefined reference to
> > > > > > > `gpiod_add_lookup_table'
> > >
> > > I'd guess it's a missing dependency on GPIOLIB
> >

+Cc: Linus.

> > Apparently not this one.
> >
> > The module is purely built whenever HCIUART_BCM is defined which is
> > a
> > consumer of GPIO.
> > And that one does not have a dependency.
>
> ...and they should not. So, there are two ways of fix this:
> - add a stub for gpiod_add_lookup_table() for !GPIOLIB case, or
> - add ifdeffery around this code here (with obvious increase of
> ugliness).

Linus, there is a (minor) issue with one of the user of
gpiod_add_lookup_table(), i.e. we have a code which is either built-in
or not compiled at all and it has some external dependency without
having an explicit Kconfig option. The external dependency considers
GPIOLIB as an optional, and thus some configurations might bring
unresolved symbols.

There are at least two solutions:
- add a stub for gpiod_add_lookup_table() for !GPIOLIB case, or
- add ifdeffery around this code here (with obvious increase of
ugliness).

What is your opinion on the case?

--
Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>
Intel Finland Oy