From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id C0A2E388C03D; Mon, 5 Dec 2022 19:01:02 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org C0A2E388C03D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1670266862; bh=Ywuyi2NAmlr48Vg67FuG9JTA3tAKQBOKVad5bu4y5SY=; h=From:To:Subject:Date:In-Reply-To:References:From; b=Si2OMxJeNSH67xEDeQTvAZs/57DYGZfxofFvBTFyUm2SEETOf5bXe3fiShZ39nO6h LNEL1vPnmlLV9SWA2fC7ypLwu5qQuPpmSbvSxXTwajccF0tuDNw1ONGoM+rf0KrY7W tA+qgrkr9NPf+8UpYR4mUjFVDw4CuGyLoPNC+Y7o= From: "james.hilliard1 at gmail dot com" To: gcc-bugs@gcc.gnu.org Subject: [Bug target/106773] libbpf: failed to find BTF info for global/extern symbol 'bpf_link_fops' Date: Mon, 05 Dec 2022 19:01:02 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: target X-Bugzilla-Version: 13.0 X-Bugzilla-Keywords: wrong-debug X-Bugzilla-Severity: normal X-Bugzilla-Who: james.hilliard1 at gmail dot com X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 List-Id: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D106773 --- Comment #14 from James Hilliard --- (In reply to David Faust from comment #13) > Created attachment 54017 [details] > DATASEC entries for extern funcs >=20 > Applies on top of 54002: updated patch > Adds emission of DATASEC entries for extern funcs. Rough, needs cleanup. Seeing a regression in get_func_ip_test.c looks like: $ /home/buildroot/bpf-next/tools/testing/selftests/bpf/tools/sbin/bpftool --debug gen object /home/buildroot/bpf-next/tools/testing/selftests/bpf/bpf_gcc/get_func_ip_te= st.bpf.linked1.o /home/buildroot/bpf-next/tools/testing/selftests/bpf/bpf_gcc/get_func_ip_te= st.bpf.o libbpf: linker: adding object file '/home/buildroot/bpf-next/tools/testing/selftests/bpf/bpf_gcc/get_func_ip_t= est.bpf.o'... libbpf: Invalid BTF total size: 25303 libbpf: failed to parse .BTF from /home/buildroot/bpf-next/tools/testing/selftests/bpf/bpf_gcc/get_func_ip_te= st.bpf.o: -22 Error: failed to link '/home/buildroot/bpf-next/tools/testing/selftests/bpf/bpf_gcc/get_func_ip_t= est.bpf.o': Invalid argument (22) Broken GCC BTF dump: $ /home/buildroot/bpf-next/tools/testing/selftests/bpf/tools/sbin/bpftool --debug btf dump file /home/buildroot/bpf-next/tools/testing/selftests/bpf/bpf_gcc/get_func_ip_te= st.bpf.o format raw libbpf: Invalid BTF total size: 25303 Error: failed to load BTF from /home/buildroot/bpf-next/tools/testing/selftests/bpf/bpf_gcc/get_func_ip_te= st.bpf.o: Invalid argument Working LLVM btf dump: $ /home/buildroot/bpf-next/tools/testing/selftests/bpf/tools/sbin/bpftool --debug btf dump file /home/buildroot/bpf-next/tools/testing/selftests/bpf/get_func_ip_test.bpf.o format raw [1] FUNC_PROTO '(anon)' ret_type_id=3D2 vlen=3D0 [2] INT 'int' size=3D4 bits_offset=3D0 nr_bits=3D32 encoding=3DSIGNED [3] FUNC 'unused' type_id=3D1 linkage=3Dglobal [4] PTR '(anon)' type_id=3D5 [5] INT 'unsigned long long' size=3D8 bits_offset=3D0 nr_bits=3D64 encoding= =3D(none) [6] FUNC_PROTO '(anon)' ret_type_id=3D2 vlen=3D1 'ctx' type_id=3D4 [7] FUNC 'test1' type_id=3D6 linkage=3Dglobal [8] FUNC_PROTO '(anon)' ret_type_id=3D2 vlen=3D1 'ctx' type_id=3D4 [9] FUNC 'test2' type_id=3D8 linkage=3Dglobal [10] PTR '(anon)' type_id=3D11 [11] FWD 'pt_regs' fwd_kind=3Dstruct [12] FUNC_PROTO '(anon)' ret_type_id=3D2 vlen=3D1 'ctx' type_id=3D10 [13] FUNC 'test3' type_id=3D12 linkage=3Dglobal [14] FUNC_PROTO '(anon)' ret_type_id=3D2 vlen=3D1 'ctx' type_id=3D10 [15] FUNC 'test4' type_id=3D14 linkage=3Dglobal [16] FUNC_PROTO '(anon)' ret_type_id=3D2 vlen=3D1 'ctx' type_id=3D4 [17] FUNC 'test5' type_id=3D16 linkage=3Dglobal [18] FUNC_PROTO '(anon)' ret_type_id=3D2 vlen=3D1 'ctx' type_id=3D10 [19] FUNC 'test6' type_id=3D18 linkage=3Dglobal [20] INT 'char' size=3D1 bits_offset=3D0 nr_bits=3D8 encoding=3DSIGNED [21] ARRAY '(anon)' type_id=3D20 index_type_id=3D22 nr_elems=3D4 [22] INT '__ARRAY_SIZE_TYPE__' size=3D4 bits_offset=3D0 nr_bits=3D32 encodi= ng=3D(none) [23] VAR '_license' type_id=3D21, linkage=3Dglobal [24] INT '_Bool' size=3D1 bits_offset=3D0 nr_bits=3D8 encoding=3DBOOL [25] VAR 'CONFIG_X86_KERNEL_IBT' type_id=3D24, linkage=3Dextern [26] TYPEDEF '__u64' type_id=3D5 [27] VAR 'test1_result' type_id=3D26, linkage=3Dglobal [28] VAR 'test2_result' type_id=3D26, linkage=3Dglobal [29] VAR 'test3_result' type_id=3D26, linkage=3Dglobal [30] CONST '(anon)' type_id=3D0 [31] VAR 'bpf_fentry_test3' type_id=3D30, linkage=3Dextern [32] VAR 'test4_result' type_id=3D26, linkage=3Dglobal [33] VAR 'test5_result' type_id=3D26, linkage=3Dglobal [34] VAR 'test6_result' type_id=3D26, linkage=3Dglobal [35] VAR 'bpf_fentry_test1' type_id=3D30, linkage=3Dextern [36] VAR 'bpf_fentry_test2' type_id=3D30, linkage=3Dextern [37] VAR 'bpf_fentry_test4' type_id=3D30, linkage=3Dextern [38] VAR 'bpf_modify_return_test' type_id=3D30, linkage=3Dextern [39] DATASEC '.bss' size=3D0 vlen=3D6 type_id=3D27 offset=3D0 size=3D8 (VAR 'test1_result') type_id=3D28 offset=3D0 size=3D8 (VAR 'test2_result') type_id=3D29 offset=3D0 size=3D8 (VAR 'test3_result') type_id=3D32 offset=3D0 size=3D8 (VAR 'test4_result') type_id=3D33 offset=3D0 size=3D8 (VAR 'test5_result') type_id=3D34 offset=3D0 size=3D8 (VAR 'test6_result') [40] DATASEC '.kconfig' size=3D0 vlen=3D1 type_id=3D25 offset=3D0 size=3D1 (VAR 'CONFIG_X86_KERNEL_IBT') [41] DATASEC '.ksyms' size=3D0 vlen=3D5 type_id=3D31 offset=3D0 size=3D1 (VAR 'bpf_fentry_test3') type_id=3D35 offset=3D0 size=3D1 (VAR 'bpf_fentry_test1') type_id=3D36 offset=3D0 size=3D1 (VAR 'bpf_fentry_test2') type_id=3D37 offset=3D0 size=3D1 (VAR 'bpf_fentry_test4') type_id=3D38 offset=3D0 size=3D1 (VAR 'bpf_modify_return_test') [42] DATASEC 'license' size=3D0 vlen=3D1 type_id=3D23 offset=3D0 size=3D4 (VAR '_license')=