• Andrii Nakryiko's avatar
    libbpf: Record subprog-resolved CO-RE relocations unconditionally · 185cfe83
    Andrii Nakryiko authored
    Previously, libbpf recorded CO-RE relocations with insns_idx resolved
    according to finalized subprog locations (which are appended at the end
    of entry BPF program) to simplify the job of light skeleton generator.
    
    This is necessary because once subprogs' instructions are appended to
    main entry BPF program all the subprog instruction indices are shifted
    and that shift is different for each entry (main) BPF program, so it's
    generally impossible to map final absolute insn_idx of the finalized BPF
    program to their original locations inside subprograms.
    
    This information is now going to be used not only during light skeleton
    generation, but also to map absolute instruction index to subprog's
    instruction and its corresponding CO-RE relocation. So start recording
    these relocations always, not just when obj->gen_loader is set.
    
    This information is going to be freed at the end of bpf_object__load()
    step, as before (but this can change in the future if there will be
    a need for this information post load step).
    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-7-andrii@kernel.org
    185cfe83
libbpf.c 333 KB