On Wed, Feb 08, 2023 at 11:43:18AM -0300, Arnaldo Carvalho de Melo wrote: > Em Wed, Feb 08, 2023 at 02:19:20PM +0100, Jiri Olsa escreveu: > > On Tue, Feb 07, 2023 at 05:14:59PM +0000, Alan Maguire wrote: > > > > SNIP > > > > > + > > > /* > > > * This corresponds to the same macro defined in > > > * include/linux/kallsyms.h > > > @@ -818,6 +901,11 @@ static int functions_cmp(const void *_a, const void *_b) > > > const struct elf_function *a = _a; > > > const struct elf_function *b = _b; > > > > > > + /* if search key allows prefix match, verify target has matching > > > + * prefix len and prefix matches. > > > + */ > > > + if (a->prefixlen && a->prefixlen == b->prefixlen) > > > + return strncmp(a->name, b->name, b->prefixlen); > > > return strcmp(a->name, b->name); > > > } > > > > > > @@ -850,14 +938,22 @@ static int btf_encoder__collect_function(struct btf_encoder *encoder, GElf_Sym * > > > } > > > > > > encoder->functions.entries[encoder->functions.cnt].name = name; > > > + if (strchr(name, '.')) { > > > + const char *suffix = strchr(name, '.'); > > > + > > > + encoder->functions.suffix_cnt++; > > > + encoder->functions.entries[encoder->functions.cnt].prefixlen = suffix - name; > > > + } > > > encoder->functions.entries[encoder->functions.cnt].generated = false; > > > + encoder->functions.entries[encoder->functions.cnt].function = NULL; > > > > should we zero functions.state in here? next patch adds other stuff > > like got_parameter_names and parameter_names in it, so looks like it > > could actually matter > > Probably, but that can come as a followup patch, right? sure, if Alan is ok with that jirka > > I've applied the patches, combining the patches documenting the two new > command line options with the patches where those options are > introduced. > > Testing everything now. > > Thanks, > > - Arnaldo > > > jirka > > > > > encoder->functions.cnt++; > > > return 0; > > > } > > > > > > -static struct elf_function *btf_encoder__find_function(const struct btf_encoder *encoder, const char *name) > > > +static struct elf_function *btf_encoder__find_function(const struct btf_encoder *encoder, > > > + const char *name, size_t prefixlen) > > > { > > > - struct elf_function key = { .name = name }; > > > + struct elf_function key = { .name = name, .prefixlen = prefixlen }; > > > > > > > SNIP > > -- > > - Arnaldo