Re: linux-next failing build due to missing cubictcp_state symbol

From: Jiri Slaby
Date: Mon May 03 2021 - 02:11:59 EST


On 01. 05. 21, 8:45, Jiri Slaby wrote:
On 30. 04. 21, 19:47, Michal Suchánek wrote:
CC another Jiri

On Tue, Apr 27, 2021 at 02:12:37PM +0200, Michal Suchánek wrote:
On Mon, Apr 26, 2021 at 09:16:36PM +0200, Jiri Olsa wrote:
On Mon, Apr 26, 2021 at 06:03:19PM +0200, Jiri Olsa wrote:
On Mon, Apr 26, 2021 at 08:41:49AM -0700, Yonghong Song wrote:


On 4/26/21 5:14 AM, Michal Suchánek wrote:
On Mon, Apr 26, 2021 at 02:12:20PM +0200, Michal Suchánek wrote:
On Mon, Apr 26, 2021 at 01:32:15PM +0200, Michal Suchánek wrote:
On Sun, Apr 25, 2021 at 01:15:45PM +0200, Michal Suchánek wrote:
On Fri, Apr 23, 2021 at 07:55:28PM +0200, Michal Suchánek wrote:
On Fri, Apr 23, 2021 at 07:41:29AM -0700, Yonghong Song wrote:


On 4/23/21 6:05 AM, Michal Suchánek wrote:
Hello,

I see this build error in linux-next (config attached).

[ 4939s]   LD      vmlinux
[ 4959s]   BTFIDS  vmlinux
[ 4959s] FAILED unresolved symbol cubictcp_state
[ 4960s] make[1]: ***
[/home/abuild/rpmbuild/BUILD/kernel-vanilla-5.12~rc8.next.20210422/linux-5.12-rc8-next-20210422/Makefile:1277:
vmlinux] Error 255
[ 4960s] make: *** [../Makefile:222: __sub-make] Error 2

this one was reported by Jesper and was fixed by upgrading pahole
that contains the new function generation fixes (v1.19)


Looks like you have DYNAMIC_FTRACE config option enabled already.
Could you try a later version of pahole?

Is this requireent new?

I have pahole 1.20, and master does build without problems.

If newer version is needed can a check be added?

With dwarves 1.21 some architectures are fixed and some report other
missing symbol. Definitely an improvenent.

I see some new type support was added so it makes sense if that type is
used the new dwarves are needed.

Ok, here is the current failure with dwarves 1.21 on 5.12:

[ 2548s]   LD      vmlinux
[ 2557s]   BTFIDS  vmlinux
[ 2557s] FAILED unresolved symbol vfs_truncate
[ 2558s] make[1]: ***
[/home/abuild/rpmbuild/BUILD/kernel-kvmsmall-5.12.0/linux-5.12/Makefile:1213:
vmlinux] Error 255

This is PPC64, from attached config:
   CONFIG_PPC64=y
I don't have environment to cross-compile for PPC64.
Jiri, could you take a look? Thanks!

looks like vfs_truncate did not get into BTF data,
I'll try to reproduce

_None_ of the functions are generated by pahole -J from debuginfo on ppc64. debuginfo appears to be correct. Neither pahole -J fs/open.o works correctly. collect_functions in dwarves seems to be defunct on ppc64... "functions" array is bogus (so find_function -- the bsearch -- fails).

It's not that bogus. I forgot an asterisk:
#0 find_function (btfe=0x100269f80, name=0x10024631c "stream_open") at /usr/src/debug/dwarves-1.21-1.1.ppc64/btf_encoder.c:350
(gdb) p (*functions)@84
$5 = {{name = 0x7ffff68e0922 ".__se_compat_sys_ftruncate", addr = 75232, size = 72, sh_addr = 65536, generated = false}, {
name = 0x7ffff68e019e ".__se_compat_sys_open", addr = 80592, size = 216, sh_addr = 65536, generated = false}, {
name = 0x7ffff68e0076 ".__se_compat_sys_openat", addr = 80816, size = 232, sh_addr = 65536, generated = false}, {
name = 0x7ffff68e0908 ".__se_compat_sys_truncate", addr = 74304, size = 100, sh_addr = 65536, generated = false}, {
...
name = 0x7ffff68e0808 ".stream_open", addr = 65824, size = 72, sh_addr = 65536, generated = false}, {
...
name = 0x7ffff68e0751 ".vfs_truncate", addr = 73392, size = 544, sh_addr = 65536, generated = false}}

The dot makes the difference, of course. The question is why is it there? I keep looking into it. Only if someone has an immediate idea...

thanks,
--
js
suse labs