On Tue, Feb 1, 2022 at 3:57 PM Quentin Monnet <quentin@xxxxxxxxxxxxx> wrote: > > 2022-01-28 17:33 UTC-0500 ~ Mauricio Vásquez <mauricio@xxxxxxxxxx> > > btfgen() receives the path of a source and destination BTF files and a > > list of BPF objects. This function records the relocations for all > > objects and then generates the BTF file by calling btfgen_get_btf() > > (implemented in the following commits). > > > > btfgen_record_obj() loads the BTF and BTF.ext sections of the BPF > > objects and loops through all CO-RE relocations. It uses > > bpf_core_calc_relo_insn() from libbpf and passes the target spec to > > btfgen_record_reloc() that saves the types involved in such relocation. > > > > Signed-off-by: Mauricio Vásquez <mauricio@xxxxxxxxxx> > > Signed-off-by: Rafael David Tinoco <rafael.tinoco@xxxxxxxxxxx> > > Signed-off-by: Lorenzo Fontana <lorenzo.fontana@xxxxxxxxxx> > > Signed-off-by: Leonardo Di Donato <leonardo.didonato@xxxxxxxxxx> > > --- > > tools/bpf/bpftool/Makefile | 8 +- > > tools/bpf/bpftool/gen.c | 221 ++++++++++++++++++++++++++++++++++++- > > 2 files changed, 223 insertions(+), 6 deletions(-) > > > > diff --git a/tools/bpf/bpftool/Makefile b/tools/bpf/bpftool/Makefile > > index 83369f55df61..97d447135536 100644 > > --- a/tools/bpf/bpftool/Makefile > > +++ b/tools/bpf/bpftool/Makefile > > @@ -34,10 +34,10 @@ LIBBPF_BOOTSTRAP_INCLUDE := $(LIBBPF_BOOTSTRAP_DESTDIR)/include > > LIBBPF_BOOTSTRAP_HDRS_DIR := $(LIBBPF_BOOTSTRAP_INCLUDE)/bpf > > LIBBPF_BOOTSTRAP := $(LIBBPF_BOOTSTRAP_OUTPUT)libbpf.a > > > > -# We need to copy hashmap.h and nlattr.h which is not otherwise exported by > > -# libbpf, but still required by bpftool. > > -LIBBPF_INTERNAL_HDRS := $(addprefix $(LIBBPF_HDRS_DIR)/,hashmap.h nlattr.h) > > -LIBBPF_BOOTSTRAP_INTERNAL_HDRS := $(addprefix $(LIBBPF_BOOTSTRAP_HDRS_DIR)/,hashmap.h) > > +# We need to copy hashmap.h, nlattr.h, relo_core.h and libbpf_internal.h > > +# which are not otherwise exported by libbpf, but still required by bpftool. > > +LIBBPF_INTERNAL_HDRS := $(addprefix $(LIBBPF_HDRS_DIR)/,hashmap.h nlattr.h relo_core.h libbpf_internal.h) > > +LIBBPF_BOOTSTRAP_INTERNAL_HDRS := $(addprefix $(LIBBPF_BOOTSTRAP_HDRS_DIR)/,hashmap.h relo_core.h libbpf_internal.h) > > Do you directly call functions from relo_core.h, or is it only required > to compile libbpf_internal.h? (Asking because I'm wondering if there > would be a way to have one fewer header copied). bpf_core_calc_relo_insn() and bpf_core_calc_relo_insn() are used.