On Fri, Nov 19, 2021 at 7:33 PM Alexei Starovoitov <alexei.starovoitov@xxxxxxxxx> wrote: > > From: Alexei Starovoitov <ast@xxxxxxxxxx> > > struct bpf_core_relo is generated by llvm and processed by libbpf. > It's a de-facto uapi. > With CO-RE in the kernel the struct bpf_core_relo becomes uapi de-jure. > Add an ability to pass a set of 'struct bpf_core_relo' to prog_load command > and let the kernel perform CO-RE relocations. > > Note the struct bpf_line_info and struct bpf_func_info have the same > layout when passed from LLVM to libbpf and from libbpf to the kernel > except "insn_off" fields means "byte offset" when LLVM generates it. > Then libbpf converts it to "insn index" to pass to the kernel. > The struct bpf_core_relo's "insn_off" field is always "byte offset". > > Signed-off-by: Alexei Starovoitov <ast@xxxxxxxxxx> > --- Acked-by: Andrii Nakryiko <andrii@xxxxxxxxxx> > include/linux/bpf.h | 11 +++++ > include/uapi/linux/bpf.h | 59 +++++++++++++++++++++++++- > kernel/bpf/btf.c | 10 +++++ > kernel/bpf/syscall.c | 2 +- > kernel/bpf/verifier.c | 77 ++++++++++++++++++++++++++++++++++ > tools/include/uapi/linux/bpf.h | 59 +++++++++++++++++++++++++- > tools/lib/bpf/relo_core.h | 53 ----------------------- > 7 files changed, 215 insertions(+), 56 deletions(-) > [...]