Re: [RFC v3 00/13] linux: generalize sections, ranges and linker tables

From: Luis R. Rodriguez
Date: Wed Jul 27 2016 - 18:27:46 EST


On Fri, Jul 22, 2016 at 02:24:34PM -0700, Luis R. Rodriguez wrote:
<-- snip -->

> This all goes tested by 0-day... however since I found an issue with linker
> tables and blackfin this series remains as RFC -- I'll try to debug the
> issue with Steven Miao. The issue with blackfin is using a config that
> enables CONFIG_FW_LOADER=y and CONFIG_DYNAMIC_DEBUG=y [5] we end up with
> the following at final link time:
>
> LD init/built-in.o
> lib/built-in.o: In function `dynamic_debug_init':
> lib/dynamic_debug.c:(.init.text+0x156): undefined reference to `__verbose__end'
> lib/dynamic_debug.c:(.init.text+0x15a): undefined reference to `__verbose__end'
> lib/dynamic_debug.c:(.init.text+0x160): undefined reference to `__verbose'
> lib/dynamic_debug.c:(.init.text+0x164): undefined reference to `__verbose'
> lib/dynamic_debug.c:(.init.text+0x214): undefined reference to `__verbose__end'
> lib/dynamic_debug.c:(.init.text+0x218): undefined reference to `__verbose__end'
> lib/dynamic_debug.c:(.init.text+0x252): undefined reference to `__verbose__end'
> lib/dynamic_debug.c:(.init.text+0x258): undefined reference to `__verbose'
> lib/dynamic_debug.c:(.init.text+0x25c): undefined reference to `__verbose__end'
> lib/dynamic_debug.c:(.init.text+0x260): undefined reference to `__verbose'
> drivers/built-in.o: In function `release_firmware':
> (.text+0x22dc2): undefined reference to `builtin_fw'
> drivers/built-in.o: In function `release_firmware':
> (.text+0x22dc6): undefined reference to `builtin_fw__end'
> drivers/built-in.o: In function `release_firmware':
> (.text+0x22dca): undefined reference to `builtin_fw'
> drivers/built-in.o: In function `release_firmware':
> (.text+0x22dce): undefined reference to `builtin_fw__end'
> drivers/built-in.o: In function `fw_get_builtin_firmware':
> drivers/base/firmware_class.c:(.text+0x23008): undefined reference to `builtin_fw'
> drivers/base/firmware_class.c:(.text+0x2300c): undefined reference to `builtin_fw__end'
> drivers/base/firmware_class.c:(.text+0x23010): undefined reference to `builtin_fw'
> drivers/base/firmware_class.c:(.text+0x23014): undefined reference to `builtin_fw__end'
> Makefile:957: recipe for target 'vmlinux' failed
> make: *** [vmlinux] Error 1
>
> To reproduce then:
>
> wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
> chmod +x ~/bin/make.cross
> wget http://drvbp1.linux-foundation.org/~mcgrof/2016/07/22/blackfin-fw-dyndbg.config -o .config
> make.cross ARCH=blackfin
>
> [0] https://lkml.kernel.org/r/1455889559-9428-1-git-send-email-mcgrof@xxxxxxxxxx
> [1] https://git.kernel.org/cgit/linux/kernel/git/mcgrof/linker-tables.git/
> [2] https://git.kernel.org/cgit/linux/kernel/git/mcgrof/linux-next.git/log/?h=20160722-linker-table-v3-try2
> [3] https://lkml.kernel.org/r/87y44zhbiu.fsf@xxxxxxxxxxxxxxx
> [4] https://lkml.kernel.org/r/1467327207-14916-1-git-send-email-mcgrof@xxxxxxxxxx
> [5] http://drvbp1.linux-foundation.org/~mcgrof/2016/07/22/blackfin-fw-dyndbg.config

Steven, curious if you've had a chance to look into this. I cannot help but
suspect this is an issue of the blackfin linker as it only happens on blackfin.

Luis