mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
libbpf: Add btf__type_cnt() and btf__raw_data() APIs
Add btf__type_cnt() and btf__raw_data() APIs and deprecate btf__get_nr_type() and btf__get_raw_data() since the old APIs don't follow the libbpf naming convention for getters which omit 'get' in the name (see [0]). btf__raw_data() is just an alias to the existing btf__get_raw_data(). btf__type_cnt() now returns the number of all types of the BTF object including 'void'. [0] Closes: https://github.com/libbpf/libbpf/issues/279 Signed-off-by: Hengqi Chen <hengqi.chen@gmail.com> Signed-off-by: Andrii Nakryiko <andrii@kernel.org> Link: https://lore.kernel.org/bpf/20211022130623.1548429-2-hengqi.chen@gmail.com
This commit is contained in:
parent
1000298c76
commit
6a886de070
6 changed files with 64 additions and 50 deletions
|
@ -920,7 +920,7 @@ static int check_btf_type_id(__u32 *type_id, void *ctx)
|
|||
{
|
||||
struct btf *btf = ctx;
|
||||
|
||||
if (*type_id > btf__get_nr_types(btf))
|
||||
if (*type_id >= btf__type_cnt(btf))
|
||||
return -EINVAL;
|
||||
|
||||
return 0;
|
||||
|
@ -947,8 +947,8 @@ static int linker_sanity_check_btf(struct src_obj *obj)
|
|||
if (!obj->btf)
|
||||
return 0;
|
||||
|
||||
n = btf__get_nr_types(obj->btf);
|
||||
for (i = 1; i <= n; i++) {
|
||||
n = btf__type_cnt(obj->btf);
|
||||
for (i = 1; i < n; i++) {
|
||||
t = btf_type_by_id(obj->btf, i);
|
||||
|
||||
err = err ?: btf_type_visit_type_ids(t, check_btf_type_id, obj->btf);
|
||||
|
@ -1658,8 +1658,8 @@ static int find_glob_sym_btf(struct src_obj *obj, Elf64_Sym *sym, const char *sy
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
n = btf__get_nr_types(obj->btf);
|
||||
for (i = 1; i <= n; i++) {
|
||||
n = btf__type_cnt(obj->btf);
|
||||
for (i = 1; i < n; i++) {
|
||||
t = btf__type_by_id(obj->btf, i);
|
||||
|
||||
/* some global and extern FUNCs and VARs might not be associated with any
|
||||
|
@ -2130,8 +2130,8 @@ static int linker_fixup_btf(struct src_obj *obj)
|
|||
if (!obj->btf)
|
||||
return 0;
|
||||
|
||||
n = btf__get_nr_types(obj->btf);
|
||||
for (i = 1; i <= n; i++) {
|
||||
n = btf__type_cnt(obj->btf);
|
||||
for (i = 1; i < n; i++) {
|
||||
struct btf_var_secinfo *vi;
|
||||
struct btf_type *t;
|
||||
|
||||
|
@ -2234,14 +2234,14 @@ static int linker_append_btf(struct bpf_linker *linker, struct src_obj *obj)
|
|||
if (!obj->btf)
|
||||
return 0;
|
||||
|
||||
start_id = btf__get_nr_types(linker->btf) + 1;
|
||||
n = btf__get_nr_types(obj->btf);
|
||||
start_id = btf__type_cnt(linker->btf);
|
||||
n = btf__type_cnt(obj->btf);
|
||||
|
||||
obj->btf_type_map = calloc(n + 1, sizeof(int));
|
||||
if (!obj->btf_type_map)
|
||||
return -ENOMEM;
|
||||
|
||||
for (i = 1; i <= n; i++) {
|
||||
for (i = 1; i < n; i++) {
|
||||
struct glob_sym *glob_sym = NULL;
|
||||
|
||||
t = btf__type_by_id(obj->btf, i);
|
||||
|
@ -2296,8 +2296,8 @@ static int linker_append_btf(struct bpf_linker *linker, struct src_obj *obj)
|
|||
}
|
||||
|
||||
/* remap all the types except DATASECs */
|
||||
n = btf__get_nr_types(linker->btf);
|
||||
for (i = start_id; i <= n; i++) {
|
||||
n = btf__type_cnt(linker->btf);
|
||||
for (i = start_id; i < n; i++) {
|
||||
struct btf_type *dst_t = btf_type_by_id(linker->btf, i);
|
||||
|
||||
if (btf_type_visit_type_ids(dst_t, remap_type_id, obj->btf_type_map))
|
||||
|
@ -2656,7 +2656,7 @@ static int finalize_btf(struct bpf_linker *linker)
|
|||
__u32 raw_sz;
|
||||
|
||||
/* bail out if no BTF data was produced */
|
||||
if (btf__get_nr_types(linker->btf) == 0)
|
||||
if (btf__type_cnt(linker->btf) == 1)
|
||||
return 0;
|
||||
|
||||
for (i = 1; i < linker->sec_cnt; i++) {
|
||||
|
@ -2693,7 +2693,7 @@ static int finalize_btf(struct bpf_linker *linker)
|
|||
}
|
||||
|
||||
/* Emit .BTF section */
|
||||
raw_data = btf__get_raw_data(linker->btf, &raw_sz);
|
||||
raw_data = btf__raw_data(linker->btf, &raw_sz);
|
||||
if (!raw_data)
|
||||
return -ENOMEM;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue