Re: linux-next failing build due to missing cubictcp_state symbol
From: Jiri Olsa <hidden>
Date: 2021-05-06 13:16:55
Also in:
bpf, lkml
On Wed, May 05, 2021 at 10:31:52PM -0700, Martin KaFai Lau wrote:
On Tue, May 04, 2021 at 08:41:47AM +0200, Jiri Slaby wrote:quoted
On 03. 05. 21, 12:08, Jiri Olsa wrote:quoted
On Mon, May 03, 2021 at 10:59:44AM +0200, Jiri Slaby wrote:quoted
CCing pahole people. On 03. 05. 21, 9:59, Jiri Slaby wrote:quoted
On 03. 05. 21, 8:11, Jiri Slaby wrote:quoted
quoted
quoted
quoted
quoted
quoted
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:quoted
#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}, {...quoted
name = 0x7ffff68e0808 ".stream_open", addr = 65824, size = 72, sh_addr = 65536, generated = false}, {...quoted
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...Well, .vfs_truncate is in .text (and contains an ._mcount call). And vfs_truncate is in .opd (w/o an ._mcount call). Since setup_functions excludes all functions without the ._mcount call, is_ftrace_func later returns false for such functions and they are filtered before the BTF processing. Technically, get_vmlinux_addrs looks at a list of functions between __start_mcount_loc and __stop_mcount_loc and considers only the listed. I don't know what the correct fix is (exclude .opd functions from the filter?). Neither why cross compiler doesn't fail, nor why ebi v2 avoids this too.Attaching a patch for pahole which fixes the issue, but I have no idea whether it is the right fix at all.hi, we're considering to disable ftrace filter completely, I guess that would solve this issue for ppc as well https://lore.kernel.org/bpf/20210501001653.x3b4rk4vk4iqv3n7@kafai-mbp.dhcp.thefacebook.com/ (local)Right, the attached patch fixes it for me too.Ah, I just noticed the attachment while replying an earlier message in this thread. Please feel free to add SOB to mine or repost yours and toss mine. Either way works for me.
I think this patch is missing the same removal I just commented on your patch.. either way is ok for me jirka