From: Jiri Olsa <olsajiri@gmail.com>
To: Ihor Solodrai <ihor.solodrai@pm.me>
Cc: dwarves@vger.kernel.org, acme@kernel.org,
alan.maguire@oracle.com, eddyz87@gmail.com, andrii@kernel.org,
mykolal@fb.com, bpf@vger.kernel.org
Subject: Re: [PATCH dwarves v2 02/10] btf_encoder: separate elf function, saved function representations
Date: Thu, 19 Dec 2024 15:59:48 +0100 [thread overview]
Message-ID: <Z2Q05JfsckYSuun0@krava> (raw)
In-Reply-To: <20241213223641.564002-3-ihor.solodrai@pm.me>
On Fri, Dec 13, 2024 at 10:36:53PM +0000, Ihor Solodrai wrote:
SNIP
> + btf_encoders__for_each_encoder(e) {
> + list_for_each_entry(s, &e->func_states, node)
> + nr_saved_fns++;
> + }
> +
> + if (nr_saved_fns == 0)
> + return 0;
> +
> + saved_fns = calloc(nr_saved_fns, sizeof(*saved_fns));
> + btf_encoders__for_each_encoder(e) {
> + list_for_each_entry(s, &e->func_states, node)
> + saved_fns[i++] = s;
> + }
> + qsort(saved_fns, nr_saved_fns, sizeof(*saved_fns), saved_functions_cmp);
> +
> + for (i = 0; i < nr_saved_fns; i = j) {
> + struct btf_encoder_func_state *state = saved_fns[i];
> +
> + /* Compare across sorted functions that match by name/prefix;
> + * share inconsistent/unexpected reg state between them.
> + */
> + j = i + 1;
> +
> + while (j < nr_saved_fns && saved_functions_combine(saved_fns[i], saved_fns[j]) == 0)
> + j++;
> +
> + /* do not exclude functions with optimized-out parameters; they
> + * may still be _called_ with the right parameter values, they
> + * just do not _use_ them. Only exclude functions with
> + * unexpected register use or multiple inconsistent prototypes.
> + */
> + if (!encoder->skip_encoding_inconsistent_proto ||
> + (!state->unexpected_reg && !state->inconsistent_proto)) {
> + if (btf_encoder__add_func(state->encoder, state)) {
> + free(saved_fns);
> + return -1;
> + }
> + }
> + }
> + /* Now that we are done with function states, free them. */
> + free(saved_fns);
> + btf_encoders__for_each_encoder(e)
> + btf_encoder__delete_saved_funcs(e);
nit, wrong indent
jirka
> + return 0;
> +}
> +
> static int btf_encoder__collect_function(struct btf_encoder *encoder, GElf_Sym *sym)
SNIP
next prev parent reply other threads:[~2024-12-19 14:59 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-13 22:36 [PATCH dwarves v2 00/10] pahole: shared ELF and faster reproducible BTF encoding Ihor Solodrai
2024-12-13 22:36 ` [PATCH dwarves v2 01/10] btf_encoder: simplify function encoding Ihor Solodrai
2024-12-13 22:36 ` [PATCH dwarves v2 02/10] btf_encoder: separate elf function, saved function representations Ihor Solodrai
2024-12-19 14:59 ` Jiri Olsa [this message]
2024-12-13 22:36 ` [PATCH dwarves v2 03/10] dwarf_loader: introduce pre_load_module hook to conf_load Ihor Solodrai
2024-12-13 22:37 ` [PATCH dwarves v2 04/10] btf_encoder: introduce elf_functions struct type Ihor Solodrai
2024-12-13 22:37 ` [PATCH dwarves v2 05/10] btf_encoder: collect elf_functions in btf_encoder__pre_load_module Ihor Solodrai
2024-12-13 22:37 ` [PATCH dwarves v2 06/10] btf_encoder: switch to shared elf_functions table Ihor Solodrai
2024-12-19 14:58 ` Jiri Olsa
2024-12-19 19:06 ` Ihor Solodrai
2024-12-13 22:37 ` [PATCH dwarves v2 07/10] btf_encoder: introduce btf_encoding_context Ihor Solodrai
2024-12-17 2:39 ` Eduard Zingerman
2024-12-17 3:15 ` Eduard Zingerman
2024-12-17 18:06 ` Ihor Solodrai
2024-12-18 0:03 ` Andrii Nakryiko
2024-12-18 0:40 ` Eduard Zingerman
2024-12-18 20:07 ` Ihor Solodrai
2024-12-19 14:59 ` Jiri Olsa
2024-12-13 22:37 ` [PATCH dwarves v2 08/10] btf_encoder: remove skip_encoding_inconsistent_proto Ihor Solodrai
2024-12-13 22:37 ` [PATCH dwarves v2 09/10] dwarf_loader: introduce cu->id Ihor Solodrai
2024-12-13 22:37 ` [PATCH dwarves v2 10/10] dwarf_loader: multithreading with a job/worker model Ihor Solodrai
2024-12-17 0:57 ` Eduard Zingerman
2024-12-17 18:12 ` Ihor Solodrai
2024-12-19 14:59 ` Jiri Olsa
2024-12-17 2:14 ` Eduard Zingerman
2024-12-19 14:59 ` Jiri Olsa
2024-12-19 19:31 ` Ihor Solodrai
2024-12-20 9:25 ` Jiri Olsa
2024-12-17 7:00 ` [PATCH dwarves v2 00/10] pahole: shared ELF and faster reproducible BTF encoding Eduard Zingerman
2024-12-20 12:31 ` Jiri Olsa
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Z2Q05JfsckYSuun0@krava \
--to=olsajiri@gmail.com \
--cc=acme@kernel.org \
--cc=alan.maguire@oracle.com \
--cc=andrii@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=dwarves@vger.kernel.org \
--cc=eddyz87@gmail.com \
--cc=ihor.solodrai@pm.me \
--cc=mykolal@fb.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.