mirror of
https://github.com/netdata/libbpf.git
synced 2026-04-09 18:19:06 +08:00
libbpf: Cleanup struct bpf_core_cand.
Remove two redundant fields from struct bpf_core_cand. Signed-off-by: Andrii Nakryiko <andrii@kernel.org> Signed-off-by: Alexei Starovoitov <ast@kernel.org> Signed-off-by: Andrii Nakryiko <andrii@kernel.org> Link: https://lore.kernel.org/bpf/20211201181040.23337-8-alexei.starovoitov@gmail.com
This commit is contained in:
committed by
Andrii Nakryiko
parent
d785a21c71
commit
20e7ed521a
30
src/libbpf.c
30
src/libbpf.c
@@ -5179,15 +5179,18 @@ static int bpf_core_add_cands(struct bpf_core_cand *local_cand,
|
|||||||
struct bpf_core_cand_list *cands)
|
struct bpf_core_cand_list *cands)
|
||||||
{
|
{
|
||||||
struct bpf_core_cand *new_cands, *cand;
|
struct bpf_core_cand *new_cands, *cand;
|
||||||
const struct btf_type *t;
|
const struct btf_type *t, *local_t;
|
||||||
const char *targ_name;
|
const char *targ_name, *local_name;
|
||||||
size_t targ_essent_len;
|
size_t targ_essent_len;
|
||||||
int n, i;
|
int n, i;
|
||||||
|
|
||||||
|
local_t = btf__type_by_id(local_cand->btf, local_cand->id);
|
||||||
|
local_name = btf__str_by_offset(local_cand->btf, local_t->name_off);
|
||||||
|
|
||||||
n = btf__type_cnt(targ_btf);
|
n = btf__type_cnt(targ_btf);
|
||||||
for (i = targ_start_id; i < n; i++) {
|
for (i = targ_start_id; i < n; i++) {
|
||||||
t = btf__type_by_id(targ_btf, i);
|
t = btf__type_by_id(targ_btf, i);
|
||||||
if (btf_kind(t) != btf_kind(local_cand->t))
|
if (btf_kind(t) != btf_kind(local_t))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
targ_name = btf__name_by_offset(targ_btf, t->name_off);
|
targ_name = btf__name_by_offset(targ_btf, t->name_off);
|
||||||
@@ -5198,12 +5201,12 @@ static int bpf_core_add_cands(struct bpf_core_cand *local_cand,
|
|||||||
if (targ_essent_len != local_essent_len)
|
if (targ_essent_len != local_essent_len)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (strncmp(local_cand->name, targ_name, local_essent_len) != 0)
|
if (strncmp(local_name, targ_name, local_essent_len) != 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
pr_debug("CO-RE relocating [%d] %s %s: found target candidate [%d] %s %s in [%s]\n",
|
pr_debug("CO-RE relocating [%d] %s %s: found target candidate [%d] %s %s in [%s]\n",
|
||||||
local_cand->id, btf_kind_str(local_cand->t),
|
local_cand->id, btf_kind_str(local_t),
|
||||||
local_cand->name, i, btf_kind_str(t), targ_name,
|
local_name, i, btf_kind_str(t), targ_name,
|
||||||
targ_btf_name);
|
targ_btf_name);
|
||||||
new_cands = libbpf_reallocarray(cands->cands, cands->len + 1,
|
new_cands = libbpf_reallocarray(cands->cands, cands->len + 1,
|
||||||
sizeof(*cands->cands));
|
sizeof(*cands->cands));
|
||||||
@@ -5212,8 +5215,6 @@ static int bpf_core_add_cands(struct bpf_core_cand *local_cand,
|
|||||||
|
|
||||||
cand = &new_cands[cands->len];
|
cand = &new_cands[cands->len];
|
||||||
cand->btf = targ_btf;
|
cand->btf = targ_btf;
|
||||||
cand->t = t;
|
|
||||||
cand->name = targ_name;
|
|
||||||
cand->id = i;
|
cand->id = i;
|
||||||
|
|
||||||
cands->cands = new_cands;
|
cands->cands = new_cands;
|
||||||
@@ -5320,18 +5321,21 @@ bpf_core_find_cands(struct bpf_object *obj, const struct btf *local_btf, __u32 l
|
|||||||
struct bpf_core_cand local_cand = {};
|
struct bpf_core_cand local_cand = {};
|
||||||
struct bpf_core_cand_list *cands;
|
struct bpf_core_cand_list *cands;
|
||||||
const struct btf *main_btf;
|
const struct btf *main_btf;
|
||||||
|
const struct btf_type *local_t;
|
||||||
|
const char *local_name;
|
||||||
size_t local_essent_len;
|
size_t local_essent_len;
|
||||||
int err, i;
|
int err, i;
|
||||||
|
|
||||||
local_cand.btf = local_btf;
|
local_cand.btf = local_btf;
|
||||||
local_cand.t = btf__type_by_id(local_btf, local_type_id);
|
local_cand.id = local_type_id;
|
||||||
if (!local_cand.t)
|
local_t = btf__type_by_id(local_btf, local_type_id);
|
||||||
|
if (!local_t)
|
||||||
return ERR_PTR(-EINVAL);
|
return ERR_PTR(-EINVAL);
|
||||||
|
|
||||||
local_cand.name = btf__name_by_offset(local_btf, local_cand.t->name_off);
|
local_name = btf__name_by_offset(local_btf, local_t->name_off);
|
||||||
if (str_is_empty(local_cand.name))
|
if (str_is_empty(local_name))
|
||||||
return ERR_PTR(-EINVAL);
|
return ERR_PTR(-EINVAL);
|
||||||
local_essent_len = bpf_core_essential_name_len(local_cand.name);
|
local_essent_len = bpf_core_essential_name_len(local_name);
|
||||||
|
|
||||||
cands = calloc(1, sizeof(*cands));
|
cands = calloc(1, sizeof(*cands));
|
||||||
if (!cands)
|
if (!cands)
|
||||||
|
|||||||
@@ -8,8 +8,6 @@
|
|||||||
|
|
||||||
struct bpf_core_cand {
|
struct bpf_core_cand {
|
||||||
const struct btf *btf;
|
const struct btf *btf;
|
||||||
const struct btf_type *t;
|
|
||||||
const char *name;
|
|
||||||
__u32 id;
|
__u32 id;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user