mirror of
https://github.com/netdata/libbpf.git
synced 2026-04-02 22:59:07 +08:00
libbpf: Add getters for BTF.ext func and line info
Introducing new libbpf API getters for BTF.ext func and line info, namely: bpf_program__func_info bpf_program__func_info_cnt bpf_program__line_info bpf_program__line_info_cnt This change enables scenarios, when user needs to load bpf_program directly using `bpf_prog_load`, instead of higher-level `bpf_object__load`. Line and func info are required for checking BTF info in verifier; verification may fail without these fields if, for example, program calls `bpf_obj_new`. Signed-off-by: Mykyta Yatsenko <yatsenko@meta.com> Signed-off-by: Andrii Nakryiko <andrii@kernel.org> Link: https://lore.kernel.org/bpf/20250408234417.452565-2-mykyta.yatsenko5@gmail.com
This commit is contained in:
committed by
Andrii Nakryiko
parent
7a1388d55f
commit
abdb15bedd
24
src/libbpf.c
24
src/libbpf.c
@@ -9446,6 +9446,30 @@ int bpf_program__set_log_buf(struct bpf_program *prog, char *log_buf, size_t log
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct bpf_func_info *bpf_program__func_info(const struct bpf_program *prog)
|
||||
{
|
||||
if (prog->func_info_rec_size != sizeof(struct bpf_func_info))
|
||||
return libbpf_err_ptr(-EOPNOTSUPP);
|
||||
return prog->func_info;
|
||||
}
|
||||
|
||||
__u32 bpf_program__func_info_cnt(const struct bpf_program *prog)
|
||||
{
|
||||
return prog->func_info_cnt;
|
||||
}
|
||||
|
||||
struct bpf_line_info *bpf_program__line_info(const struct bpf_program *prog)
|
||||
{
|
||||
if (prog->line_info_rec_size != sizeof(struct bpf_line_info))
|
||||
return libbpf_err_ptr(-EOPNOTSUPP);
|
||||
return prog->line_info;
|
||||
}
|
||||
|
||||
__u32 bpf_program__line_info_cnt(const struct bpf_program *prog)
|
||||
{
|
||||
return prog->line_info_cnt;
|
||||
}
|
||||
|
||||
#define SEC_DEF(sec_pfx, ptype, atype, flags, ...) { \
|
||||
.sec = (char *)sec_pfx, \
|
||||
.prog_type = BPF_PROG_TYPE_##ptype, \
|
||||
|
||||
Reference in New Issue
Block a user