Re: drivers/bluetooth/hci_vhci.o: error: objtool: vhci_coredump_hdr(): STT_FUNC at end of section

From: Nathan Chancellor
Date: Mon Apr 14 2025 - 20:32:09 EST


Hi Josh,

On Mon, Apr 14, 2025 at 05:18:08PM -0700, Josh Poimboeuf wrote:
> On Sun, Apr 13, 2025 at 06:16:42AM +0800, kernel test robot wrote:
> > ::::::
> > :::::: Manual check reason: "only suspicious fbc files changed"
> > ::::::
> >
> > BCC: lkp@xxxxxxxxx
> > CC: llvm@xxxxxxxxxxxxxxx
> > CC: oe-kbuild-all@xxxxxxxxxxxxxxx
> > CC: linux-kernel@xxxxxxxxxxxxxxx
> > TO: Josh Poimboeuf <jpoimboe@xxxxxxxxxx>
> > CC: Ingo Molnar <mingo@xxxxxxxxxx>
> >
> > tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> > head: b676ac484f847bbe5c7d29603f41475b64fefe55
> > commit: 3e7be635937d19b91bab70695328214a3d789d51 objtool: Change "warning:" to "error: " for fatal errors
> > date: 12 days ago
> > :::::: branch date: 2 hours ago
> > :::::: commit date: 12 days ago
> > config: x86_64-buildonly-randconfig-001-20250413 (https://download.01.org/0day-ci/archive/20250413/202504130652.o7UWcPMe-lkp@xxxxxxxxx/config)
> > compiler: clang version 20.1.2 (https://github.com/llvm/llvm-project 58df0ef89dd64126512e4ee27b4ac3fd8ddf6247)
> > rustc: rustc 1.78.0 (9b00956e5 2024-04-29)
> > reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250413/202504130652.o7UWcPMe-lkp@xxxxxxxxx/reproduce)
> >
> > If you fix the issue in a separate patch/commit (i.e. not just a new version of
> > the same patch/commit), kindly add following tags
> > | Reported-by: kernel test robot <lkp@xxxxxxxxx>
> > | Closes: https://lore.kernel.org/r/202504130652.o7UWcPMe-lkp@xxxxxxxxx/
> >
> > All errors (new ones prefixed by >>):
> >
> > >> drivers/bluetooth/hci_vhci.o: error: objtool: vhci_coredump_hdr(): STT_FUNC at end of section
>
> This is looking like a Clang bug to me. .text.vhci_coredump_hdr has
> zero bytes, and its zero-length vhci_coredump_hdr() function is
> referenced by force_devcd_write() as a function pointer. I wasn't able
> to find any undefined behavior that might trigger that somehow.

Indeed, this is https://github.com/ClangBuiltLinux/linux/issues/2073,
which does have a fix in LLVM 21 now:
https://github.com/llvm/llvm-project/commit/ea2e66aa8b6e363b89df66dc44275a0d7ecd70ce

I forgot to request a backport for LLVM 20 but I am not really sure I
want to draw more attention to the patch (since the Clang folks will be
asked to ack a backport) since it had some contention in the LLVM issue
after it was merged:
https://github.com/llvm/llvm-project/issues/130649#issuecomment-2719119408

Kees, do you have any thoughts on requesting a backport for that?

Regardless of it being fixed in LLVM 20, the warning impacts all
supported clang versions IIRC, so we should probably submit Kees's patch
to just use a 'const char *' with the string literals instead of calling
snprintf() on the 80 character array.

Cheers,
Nathan