• Kumar Kartikeya Dwivedi's avatar
    libbpf: Update gen_loader to emit BTF_KIND_FUNC relocations · 18f4fccb
    Kumar Kartikeya Dwivedi authored
    This change updates the BPF syscall loader to relocate BTF_KIND_FUNC
    relocations, with support for weak kfunc relocations. The general idea
    is to move map_fds to loader map, and also use the data for storing
    kfunc BTF fds. Since both reuse the fd_array parameter, they need to be
    kept together.
    
    For map_fds, we reserve MAX_USED_MAPS slots in a region, and for kfunc,
    we reserve MAX_KFUNC_DESCS. This is done so that insn->off has more
    chances of being <= INT16_MAX than treating data map as a sparse array
    and adding fd as needed.
    
    When the MAX_KFUNC_DESCS limit is reached, we fall back to the sparse
    array model, so that as long as it does remain <= INT16_MAX, we pass an
    index relative to the start of fd_array.
    
    We store all ksyms in an array where we try to avoid calling the
    bpf_btf_find_by_name_kind helper, and also reuse the BTF fd that was
    already stored. This also speeds up the loading process compared to
    emitting calls in all cases, in later tes...
    18f4fccb
bpf_gen_internal.h 1.49 KB