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')