On Thu, Nov 12, 2020 at 7:05 AM Jiri Olsa <jolsa@xxxxxxxxxx> wrote: > > We will use generate_func from another place in following change. > > Signed-off-by: Jiri Olsa <jolsa@xxxxxxxxxx> > --- > btf_encoder.c | 28 ++++++++++++++++++---------- > 1 file changed, 18 insertions(+), 10 deletions(-) > > diff --git a/btf_encoder.c b/btf_encoder.c > index d531651b1e9e..efc4f48dbc5a 100644 > --- a/btf_encoder.c > +++ b/btf_encoder.c > @@ -351,6 +351,23 @@ static struct btf_elf *btfe; > static uint32_t array_index_id; > static bool has_index_type; > > +static int generate_func(struct btf_elf *btfe, struct cu *cu, > + struct function *fn, uint32_t type_id_off) > +{ > + int btf_fnproto_id, btf_fn_id, err = 0; btf_ prefix for these variables don't contribute anything, I'd just drop them here > + const char *name; > + > + btf_fnproto_id = btf_elf__add_func_proto(btfe, cu, &fn->proto, type_id_off); > + name = dwarves__active_loader->strings__ptr(cu, fn->name); > + btf_fn_id = btf_elf__add_ref_type(btfe, BTF_KIND_FUNC, btf_fnproto_id, name, false); > + if (btf_fnproto_id < 0 || btf_fn_id < 0) { > + err = -1; > + printf("error: failed to encode function '%s'\n", function__name(fn, cu)); return -1; > + } > + > + return err; return 0; drop err variable. > +} > + > int btf_encoder__encode() > { > int err; > @@ -608,9 +625,6 @@ int cu__encode_btf(struct cu *cu, int verbose, bool force, > } > > cu__for_each_function(cu, core_id, fn) { > - int btf_fnproto_id, btf_fn_id; > - const char *name; > - > /* > * The functions_cnt != 0 means we parsed all necessary > * kernel symbols and we are using ftrace location filter > @@ -634,14 +648,8 @@ int cu__encode_btf(struct cu *cu, int verbose, bool force, > continue; > } > > - btf_fnproto_id = btf_elf__add_func_proto(btfe, cu, &fn->proto, type_id_off); > - name = dwarves__active_loader->strings__ptr(cu, fn->name); > - btf_fn_id = btf_elf__add_ref_type(btfe, BTF_KIND_FUNC, btf_fnproto_id, name, false); > - if (btf_fnproto_id < 0 || btf_fn_id < 0) { > - err = -1; > - printf("error: failed to encode function '%s'\n", function__name(fn, cu)); > + if (generate_func(btfe, cu, fn, type_id_off)) > goto out; > - } > } > > if (skip_encoding_vars) > -- > 2.26.2 >