v3 of the patchset fixes a couple of bugs and addresses feedback. Notable changes in comparison to v2: * use proper interface from stdatomic.h for atomic operations in btf_encoder__find_function() * simplify btf_encoder__add_saved_funcs(), because actually we don't need to accumulate gathered elf_function states there, we only need to determine if a function should be added to BTF * fix segfault in a case when the number of btf encoders is less than the number of threads * correctly clean up elf_functions->entries in elf_functions__collect() when no functions are present in the Elf * correctly clean up elf_functions_list at the end of btf_encoder__encode() * remove post_cus__load_module() hook as it was unused * remove btf_encoders__merge() as it is redundant v2: https://lore.kernel.org/dwarves/20241009233520.989453-1-ihor.solodrai@xxxxx/ v1: https://lore.kernel.org/dwarves/20241004051347.41143-1-ihor.solodrai@xxxxx/ Ihor Solodrai (5): dwarf_loader: introduce pre_load_module hook to conf_load btf_encoder: introduce elf_functions struct type btf_encoder: collect elf_functions in btf_encoder__pre_load_module btf_encoder: store a list of elf_function per function name btf_encoder: switch to shared elf_functions table btf_encoder.c | 387 +++++++++++++++++++++++++++++++++---------------- btf_encoder.h | 3 + dwarf_loader.c | 14 +- dwarves.h | 11 +- pahole.c | 12 +- 5 files changed, 292 insertions(+), 135 deletions(-) -- 2.43.0