This allows us to have reproducible builds while keeping the DWARF loading phase in parallel, achieving a noticeable speedup as showed in the commit log messages. - Arnaldo v2: Don't delete the CUs after encoding BTF for them, we may still have still references to them from the BTF encoder, as noticed by Alan Maguire. Arnaldo Carvalho de Melo (12): core: Allow asking for a reproducible build pahole: Disable BTF multithreaded encoded when doing reproducible builds dwarf_loader: Separate creating the cu/dcu pair from processing it dwarf_loader: Introduce dwarf_cus__process_cu() dwarf_loader: Create the cu/dcu pair in dwarf_cus__nextcu() dwarf_loader: Remove unused 'thr_data' arg from dwarf_cus__create_and_process_cu() core: Add unlocked cus__add() variant core: Add cus__remove(), counterpart of cus__add() dwarf_loader: Add the cu to the cus list early, remove on LSK_DELETE core/dwarf_loader: Add functions to set state of CU processing pahole: Encode BTF serially in a reproducible build tests: Add a BTF reproducible generation test dwarf_loader.c | 73 ++++++++++++++++++++++++--------- dwarves.c | 62 +++++++++++++++++++++++++++- dwarves.h | 17 ++++++++ pahole.c | 81 +++++++++++++++++++++++++++++++++++-- tests/reproducible_build.sh | 56 +++++++++++++++++++++++++ 5 files changed, 265 insertions(+), 24 deletions(-) create mode 100755 tests/reproducible_build.sh -- 2.44.0