forked from luck/tmp_suning_uos_patched
btf: add BTF types deduplication algorithm
This patch implements BTF types deduplication algorithm. It allows to greatly compress typical output of pahole's DWARF-to-BTF conversion or LLVM's compilation output by detecting and collapsing identical types emitted in isolation per compilation unit. Algorithm also resolves struct/union forward declarations into concrete BTF types representing referenced struct/union. If undesired, this resolution can be disabled through specifying corresponding options. Algorithm itself and its application to Linux kernel's BTF types is described in details at: https://facebookmicrosites.github.io/bpf/blog/2018/11/14/btf-enhancement.html Signed-off-by: Andrii Nakryiko <andriin@fb.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
This commit is contained in:
parent
69eaab04c6
commit
d5caef5b56
1741
tools/lib/bpf/btf.c
1741
tools/lib/bpf/btf.c
File diff suppressed because it is too large
Load Diff
|
@ -84,6 +84,13 @@ LIBBPF_API int btf_ext__reloc_line_info(const struct btf *btf,
|
||||||
LIBBPF_API __u32 btf_ext__func_info_rec_size(const struct btf_ext *btf_ext);
|
LIBBPF_API __u32 btf_ext__func_info_rec_size(const struct btf_ext *btf_ext);
|
||||||
LIBBPF_API __u32 btf_ext__line_info_rec_size(const struct btf_ext *btf_ext);
|
LIBBPF_API __u32 btf_ext__line_info_rec_size(const struct btf_ext *btf_ext);
|
||||||
|
|
||||||
|
struct btf_dedup_opts {
|
||||||
|
bool dont_resolve_fwds;
|
||||||
|
};
|
||||||
|
|
||||||
|
LIBBPF_API int btf__dedup(struct btf *btf, struct btf_ext *btf_ext,
|
||||||
|
const struct btf_dedup_opts *opts);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
} /* extern "C" */
|
} /* extern "C" */
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -133,6 +133,7 @@ LIBBPF_0.0.2 {
|
||||||
bpf_map_lookup_elem_flags;
|
bpf_map_lookup_elem_flags;
|
||||||
bpf_object__find_map_fd_by_name;
|
bpf_object__find_map_fd_by_name;
|
||||||
bpf_get_link_xdp_id;
|
bpf_get_link_xdp_id;
|
||||||
|
btf__dedup;
|
||||||
btf__get_map_kv_tids;
|
btf__get_map_kv_tids;
|
||||||
btf_ext__free;
|
btf_ext__free;
|
||||||
btf_ext__func_info_rec_size;
|
btf_ext__func_info_rec_size;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user