libbpf: Allow WEAK and GLOBAL bindings during BTF fixup
authorAndrii Nakryiko <andrii@kernel.org>
Thu, 7 Apr 2022 23:04:46 +0000 (16:04 -0700)
committerAlexei Starovoitov <ast@kernel.org>
Fri, 8 Apr 2022 16:16:09 +0000 (09:16 -0700)
commit3a06ec0a996dc8c4bc518f0b6bedc3587dd15169
tree2dc7e9d66f73b6e47cd0b6fae2799298a974be5b
parent3c0dfe6e4c43ea0cf252ff4cb7a332423866d488
libbpf: Allow WEAK and GLOBAL bindings during BTF fixup

During BTF fix up for global variables, global variable can be global
weak and will have STB_WEAK binding in ELF. Support such global
variables in addition to non-weak ones.

This is not the problem when using BPF static linking, as BPF static
linker "fixes up" BTF during generation so that libbpf doesn't have to
do it anymore during bpf_object__open(), which led to this not being
noticed for a while, along with a pretty rare (currently) use of __weak
variables and maps.

Reported-by: Hengqi Chen <hengqi.chen@gmail.com>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/20220407230446.3980075-2-andrii@kernel.org
tools/lib/bpf/libbpf.c