https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109255
Bug ID: 109255
Summary: libbpf: global 'input_data1': section mismatch 4 vs 5
Product: gcc
Version: 13.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: james.hilliard1 at gmail dot com
Target Milestone: ---
I'm seeing this gen object error which does not occur in llvm for a bpf
test(which uses both linked_vars1.c and linked_vars2.c) in bpf-next.
GCC gen object failure:
$ /home/buildroot/bpf-next/tools/testing/selftests/bpf/tools/sbin/bpftool
--debug gen object
/home/buildroot/bpf-next/tools/testing/selftests/bpf/bpf_gcc/linked_vars.linked1.o
/home/buildroot/bpf-next/tools/testing/selftests/bpf/bpf_gcc/linked_vars1.bpf.o
/home/buildroot/bpf-next/tools/testing/selftests/bpf/bpf_gcc/linked_vars2.bpf.o
libbpf: linker: adding object file
'/home/buildroot/bpf-next/tools/testing/selftests/bpf/bpf_gcc/linked_vars1.bpf.o'...
libbpf: linker: adding object file
'/home/buildroot/bpf-next/tools/testing/selftests/bpf/bpf_gcc/linked_vars2.bpf.o'...
libbpf: global 'input_data1': section mismatch 4 vs 5
Error: failed to link
'/home/buildroot/bpf-next/tools/testing/selftests/bpf/bpf_gcc/linked_vars2.bpf.o':
Invalid argument (22)
In broken GCC linked_vars1.bpf.o BTF I see:
[6900] VAR 'input_data1' type_id=8, linkage=global
[7129] DATASEC '.data' size=0 vlen=2
type_id=7020 offset=0 size=4 (VAR 'input_data_weak')
type_id=6900 offset=0 size=4 (VAR 'input_data1')
In broken GCC linked_vars2.bpf.o BTF I see:
[7068] VAR 'input_data1' type_id=8, linkage=extern
[7126] DATASEC '.bss' size=0 vlen=8
type_id=7068 offset=0 size=4 (VAR 'input_data1')
type_id=6921 offset=0 size=4 (VAR 'input_bss1')
type_id=6912 offset=0 size=4 (VAR 'output_sink2')
type_id=7092 offset=0 size=4 (VAR 'output_rodata2')
type_id=7006 offset=0 size=4 (VAR 'output_data2')
type_id=6899 offset=0 size=4 (VAR 'output_bss2')
type_id=6919 offset=0 size=4 (VAR 'input_bss_weak')
type_id=6979 offset=0 size=4 (VAR 'input_bss2')
In working LLVM linked_vars1.bpf.o BTF I see:
[8] VAR 'input_data1' type_id=4, linkage=global
[36] DATASEC '.data' size=0 vlen=2
type_id=8 offset=0 size=4 (VAR 'input_data1')
type_id=12 offset=0 size=4 (VAR 'input_data_weak')
In working LLVM linked_vars2.bpf.o BTF I see:
[31] VAR 'input_data1' type_id=4, linkage=extern
In working LLVM linked_vars.linked1.o(output of gen object) BTF I see:
[8] VAR 'input_data1' type_id=4, linkage=global
[42] DATASEC '.data' size=16 vlen=3
type_id=8 offset=0 size=4 (VAR 'input_data1')
type_id=12 offset=4 size=4 (VAR 'input_data_weak')
type_id=32 offset=8 size=4 (VAR 'input_data2')