Re: BTFIDS: FAILED unresolved symbol udp6_sock
From: Arnaldo Carvalho de Melo <acme@kernel.org>
Date: 2020-12-30 14:20:15
Also in:
bpf, lkml
Em Wed, Dec 30, 2020 at 02:28:52PM +0100, Jiri Olsa escreveu:
On Wed, Dec 30, 2020 at 02:28:02PM +0100, Jiri Olsa wrote:quoted
On Wed, Dec 30, 2020 at 10:03:37AM +0100, Jiri Olsa wrote:quoted
On Tue, Dec 29, 2020 at 11:28:35PM +0000, Qais Yousef wrote:quoted
Hi Jiri On 12/29/20 18:34, Jiri Olsa wrote:quoted
On Tue, Dec 29, 2020 at 03:13:52PM +0000, Qais Yousef wrote:quoted
Hi When I enable CONFIG_DEBUG_INFO_BTF I get the following error in the BTFIDS stage FAILED unresolved symbol udp6_sock I cross compile for arm64. My .config is attached. I managed to reproduce the problem on v5.9 and v5.10. Plus 5.11-rc1. Have you seen this before? I couldn't find a specific report about this problem. Let me know if you need more info.hi, this looks like symptom of the gcc DWARF bug we were dealing with recently: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97060 https://lore.kernel.org/lkml/CAE1WUT75gu9G62Q9uAALGN6vLX=o7vZ9uhqtVWnbUV81DgmFPw@mail.gmail.com/#r (local) what pahole/gcc version are you using?I'm on gcc 9.3.0 aarch64-linux-gnu-gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0 I was on pahole v1.17. I moved to v1.19 but I still see the same problem.
There are some changes post v1.19 in the git repo: [acme@five pahole]$ git log --oneline v1.19.. b688e35970600c15 (HEAD -> master) btf_encoder: fix skipping per-CPU variables at offset 0 8c009d6ce762dfc9 btf_encoder: fix BTF variable generation for kernel modules b94e97e015a94e6b dwarves: Fix compilation on 32-bit architectures 17df51c700248f02 btf_encoder: Detect kernel module ftrace addresses 06ca639505fc56c6 btf_encoder: Use address size based on ELF's class aff60970d16b909e btf_encoder: Factor filter_functions function 1e6a3fed6e52d365 (quaco/master) rpm: Fix changelog date [acme@five pahole]$ But I think these won't matter in this case :-\ - Arnaldo
quoted
quoted
I can reproduce with your .config, but make 'defconfig' works, so I guess it's some config option issue, I'll check later todayso your .config has CONFIG_CRYPTO_DEV_BCM_SPU=y and that defines 'struct device_private' which clashes with the same struct defined in drivers/base/base.h so several networking structs will be doubled, like net_device: $ bpftool btf dump file ../vmlinux.config | grep net_device\' | grep STRUCT [2731] STRUCT 'net_device' size=2240 vlen=133 [113981] STRUCT 'net_device' size=2240 vlen=133 each is using different 'struct device_private' when it's unwinded and that will confuse BTFIDS logic, becase we have multiple structs with the same name, and we can't be sure which one to pick perhaps we should check on this in pahole and warn earlier with better error message.. I'll check, but I'm not sure if pahole can survive another hastab ;-) Andrii, any ideas on this? ;-) easy fix is the patch below that renames the bcm's structs, it makes the kernel to compile.. but of course the new name is probably wrong and we should push this through that code authorsalso another quick fix is to switch it to module jirka
-- - Arnaldo