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).