• Andrii Nakryiko's avatar
    libbpf: Avoid joining .BTF.ext data with BPF programs by section name · 11d5daa8
    Andrii Nakryiko authored
    Instead of using ELF section names as a joining key between .BTF.ext and
    corresponding BPF programs, pre-build .BTF.ext section number to ELF
    section index mapping during bpf_object__open() and use it later for
    matching .BTF.ext information (func/line info or CO-RE relocations) to
    their respective BPF programs and subprograms.
    
    This simplifies corresponding joining logic and let's libbpf do
    manipulations with BPF program's ELF sections like dropping leading '?'
    character for non-autoloaded programs. Original joining logic in
    bpf_object__relocate_core() (see relevant comment that's now removed)
    was never elegant, so it's a good improvement regardless. But it also
    avoids unnecessary internal assumptions about preserving original ELF
    section name as BPF program's section name (which was broken when
    SEC("?abc") support was added).
    
    Fixes: a3820c48 ("libbpf: Support opting out from autoloading BPF programs declaratively")
    Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
    Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    Link: https://lore.kernel.org/bpf/20220426004511.2691730-5-andrii@kernel.org
    11d5daa8
btf.c 128 KB