mirror of
https://github.com/armbian/linux-cix.git
synced 2026-01-06 12:30:45 -08:00
bpf: Add resolve_btfids tool to resolve BTF IDs in ELF object
The resolve_btfids tool scans elf object for .BTF_ids section and resolves its symbols with BTF ID values. It will be used to during linking time to resolve arrays of BTF ID values used in verifier, so these IDs do not need to be resolved in runtime. The expected layout of .BTF_ids section is described in main.c header. Related kernel changes are coming in following changes. Build issue reported by 0-DAY CI Kernel Test Service. Signed-off-by: Jiri Olsa <jolsa@kernel.org> Signed-off-by: Alexei Starovoitov <ast@kernel.org> Link: https://lore.kernel.org/bpf/20200711215329.41165-2-jolsa@kernel.org
This commit is contained in:
committed by
Alexei Starovoitov
parent
eef8a42d6c
commit
fbbb68de80
10
tools/bpf/resolve_btfids/Build
Normal file
10
tools/bpf/resolve_btfids/Build
Normal file
@@ -0,0 +1,10 @@
|
||||
resolve_btfids-y += main.o
|
||||
resolve_btfids-y += rbtree.o
|
||||
resolve_btfids-y += zalloc.o
|
||||
resolve_btfids-y += string.o
|
||||
resolve_btfids-y += ctype.o
|
||||
resolve_btfids-y += str_error_r.o
|
||||
|
||||
$(OUTPUT)%.o: ../../lib/%.c FORCE
|
||||
$(call rule_mkdir)
|
||||
$(call if_changed_dep,cc_o_c)
|
||||
77
tools/bpf/resolve_btfids/Makefile
Normal file
77
tools/bpf/resolve_btfids/Makefile
Normal file
@@ -0,0 +1,77 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
include ../../scripts/Makefile.include
|
||||
|
||||
ifeq ($(srctree),)
|
||||
srctree := $(patsubst %/,%,$(dir $(CURDIR)))
|
||||
srctree := $(patsubst %/,%,$(dir $(srctree)))
|
||||
srctree := $(patsubst %/,%,$(dir $(srctree)))
|
||||
endif
|
||||
|
||||
ifeq ($(V),1)
|
||||
Q =
|
||||
msg =
|
||||
else
|
||||
Q = @
|
||||
msg = @printf ' %-8s %s%s\n' "$(1)" "$(notdir $(2))" "$(if $(3), $(3))";
|
||||
MAKEFLAGS=--no-print-directory
|
||||
endif
|
||||
|
||||
OUTPUT ?= $(srctree)/tools/bpf/resolve_btfids/
|
||||
|
||||
LIBBPF_SRC := $(srctree)/tools/lib/bpf/
|
||||
SUBCMD_SRC := $(srctree)/tools/lib/subcmd/
|
||||
|
||||
BPFOBJ := $(OUTPUT)/libbpf.a
|
||||
SUBCMDOBJ := $(OUTPUT)/libsubcmd.a
|
||||
|
||||
BINARY := $(OUTPUT)/resolve_btfids
|
||||
BINARY_IN := $(BINARY)-in.o
|
||||
|
||||
all: $(BINARY)
|
||||
|
||||
$(OUTPUT):
|
||||
$(call msg,MKDIR,,$@)
|
||||
$(Q)mkdir -p $(OUTPUT)
|
||||
|
||||
$(SUBCMDOBJ): fixdep FORCE
|
||||
$(Q)$(MAKE) -C $(SUBCMD_SRC) OUTPUT=$(OUTPUT)
|
||||
|
||||
$(BPFOBJ): $(wildcard $(LIBBPF_SRC)/*.[ch] $(LIBBPF_SRC)/Makefile) | $(OUTPUT)
|
||||
$(Q)$(MAKE) $(submake_extras) -C $(LIBBPF_SRC) OUTPUT=$(abspath $(dir $@))/ $(abspath $@)
|
||||
|
||||
CFLAGS := -g \
|
||||
-I$(srctree)/tools/include \
|
||||
-I$(srctree)/tools/include/uapi \
|
||||
-I$(LIBBPF_SRC) \
|
||||
-I$(SUBCMD_SRC)
|
||||
|
||||
LIBS = -lelf -lz
|
||||
|
||||
export srctree OUTPUT CFLAGS Q
|
||||
include $(srctree)/tools/build/Makefile.include
|
||||
|
||||
$(BINARY_IN): fixdep FORCE
|
||||
$(Q)$(MAKE) $(build)=resolve_btfids
|
||||
|
||||
$(BINARY): $(BPFOBJ) $(SUBCMDOBJ) $(BINARY_IN)
|
||||
$(call msg,LINK,$@)
|
||||
$(Q)$(CC) $(BINARY_IN) $(LDFLAGS) -o $@ $(BPFOBJ) $(SUBCMDOBJ) $(LIBS)
|
||||
|
||||
libsubcmd-clean:
|
||||
$(Q)$(MAKE) -C $(SUBCMD_SRC) OUTPUT=$(OUTPUT) clean
|
||||
|
||||
libbpf-clean:
|
||||
$(Q)$(MAKE) -C $(LIBBPF_SRC) OUTPUT=$(OUTPUT) clean
|
||||
|
||||
clean: libsubcmd-clean libbpf-clean fixdep-clean
|
||||
$(call msg,CLEAN,$(BINARY))
|
||||
$(Q)$(RM) -f $(BINARY); \
|
||||
find $(if $(OUTPUT),$(OUTPUT),.) -name \*.o -or -name \*.o.cmd -or -name \*.o.d | xargs $(RM)
|
||||
|
||||
tags:
|
||||
$(call msg,GEN,,tags)
|
||||
$(Q)ctags -R . $(LIBBPF_SRC) $(SUBCMD_SRC)
|
||||
|
||||
FORCE:
|
||||
|
||||
.PHONY: all FORCE clean tags
|
||||
721
tools/bpf/resolve_btfids/main.c
Normal file
721
tools/bpf/resolve_btfids/main.c
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user