Re: [PATCH] staging: gpib: Fix allyesconfig build failures

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 12/17/24 7:19 AM, Steven Rostedt wrote:
> From: Steven Rostedt <rostedt@xxxxxxxxxxx>
> 
> My tests run an allyesconfig build and it failed with the following errors:
> 
>   LD [M]  samples/kfifo/dma-example.ko
> ld.lld: error: undefined symbol: nec7210_board_reset
>>>> referenced by fmh_gpib.c:1512 (/work/build/trace/nobackup/linux-test.git/drivers/staging/gpib/fmh_gpib/fmh_gpib.c:1512)
>>>>               vmlinux.o:(fmh_gpib_detach)
>>>> referenced by fmh_gpib.c:1637 (/work/build/trace/nobackup/linux-test.git/drivers/staging/gpib/fmh_gpib/fmh_gpib.c:1637)
>>>>               vmlinux.o:(fmh_gpib_pci_detach)
>>>> referenced by fmh_gpib.c:1342 (/work/build/trace/nobackup/linux-test.git/drivers/staging/gpib/fmh_gpib/fmh_gpib.c:1342)
>>>>               vmlinux.o:(fmh_gpib_init)
> 
> ld.lld: error: undefined symbol: nec7210_read
>>>> referenced by fmh_gpib.c:46 (/work/build/trace/nobackup/linux-test.git/drivers/staging/gpib/fmh_gpib/fmh_gpib.c:46)
>>>>               vmlinux.o:(fmh_gpib_read)
> 
> ld.lld: error: undefined symbol: nec7210_write
>>>> referenced by fmh_gpib.c:54 (/work/build/trace/nobackup/linux-test.git/drivers/staging/gpib/fmh_gpib/fmh_gpib.c:54)
>>>>               vmlinux.o:(fmh_gpib_write)
> 
> It appears that some modules call the function nec7210_board_reset() that
> is defined in nec7210.c. In an allyesconfig build, these other modules are
> built in. But the file that holds nec7210_board_reset() has:
> 
>   obj-m += nec7210.o
> 
> Where that "-m" means it only gets built as a module. With the other
> modules built in, they have no access to nec7210_board_reset() and the build
> fails.
> 
> This isn't the only function. After fixing that one, I hit another:
> 
> ld.lld: error: undefined symbol: push_gpib_event
>>>> referenced by fmh_gpib.c:1166 (/work/build/trace/nobackup/linux-test.git/drivers/staging/gpib/fmh_gpib/fmh_gpib.c:1166)
>>>>               vmlinux.o:(fmh_gpib_internal_interrupt)
>>>> referenced by nec7210.c:956 (/work/build/trace/nobackup/linux-test.git/drivers/staging/gpib/nec7210/nec7210.c:956)
>>>>               vmlinux.o:(nec7210_interrupt_have_status)
>>>> referenced by nec7210.c:962 (/work/build/trace/nobackup/linux-test.git/drivers/staging/gpib/nec7210/nec7210.c:962)
>>>>               vmlinux.o:(nec7210_interrupt_have_status)
> 
> ld.lld: error: undefined symbol: gpib_match_device_path
>>>> referenced by fmh_gpib.c:1370 (/work/build/trace/nobackup/linux-test.git/drivers/staging/gpib/fmh_gpib/fmh_gpib.c:1370)
>>>>               vmlinux.o:(fmh_gpib_device_match)
> 
> Where push_gpib_event() was also used outside of the file it was defined
> in, and that file too only was built as a module.
> 
> Since the directory that nec7210.c is only traversed when
> CONFIG_GPIB_NEC7210 is set, and the directory with gpib_common.c is only
> traversed when CONFIG_GPIB_COMMON is set, use those configs as the option to
> build those modules. When it is an allyesconfig, then they will both be
> built in and their functions will be available to the other modules that
> are also built in.
> 
> Fixes: 3ba84ac69b53e ("staging: gpib: Add nec7210 GPIB chip driver")
> Fixes: 9dde4559e9395 ("staging: gpib: Add GPIB common core driver")
> Signed-off-by: Steven Rostedt (Google) <rostedt@xxxxxxxxxxx>
> ---
>  drivers/staging/gpib/common/Makefile  | 2 +-
>  drivers/staging/gpib/nec7210/Makefile | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/staging/gpib/common/Makefile b/drivers/staging/gpib/common/Makefile
> index 0c4c77bea75b..460586edb574 100644
> --- a/drivers/staging/gpib/common/Makefile
> +++ b/drivers/staging/gpib/common/Makefile
> @@ -1,5 +1,5 @@
>  
> -obj-m += gpib_common.o
> +obj-$(CONFIG_GPIB_COMMON) += gpib_common.o
>  
>  gpib_common-objs := gpib_os.o iblib.o
>  
> diff --git a/drivers/staging/gpib/nec7210/Makefile b/drivers/staging/gpib/nec7210/Makefile
> index 8d4d90f21109..64330f2e89d1 100644
> --- a/drivers/staging/gpib/nec7210/Makefile
> +++ b/drivers/staging/gpib/nec7210/Makefile
> @@ -1,4 +1,4 @@
>  
> -obj-m += nec7210.o
> +obj-$(CONFIG_GPIB_NEC7210) += nec7210.o
>  
>  

I have the exact same patch. ;)

Reviewed-by: Randy Dunlap <rdunlap@xxxxxxxxxxxxx>

Thanks.
-- 
~Randy




[Index of Archives]     [Linux Driver Development]     [Linux Driver Backports]     [DMA Engine]     [Linux GPIO]     [Linux SPI]     [Video for Linux]     [Linux USB Devel]     [Linux Coverity]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux