Re: [PATCH v3 00/10] perf symbol: Properly set DSO binary/symtab types
From: Ian Rogers
Date: Mon Oct 12 2026 - 17:47:17 EST
On Sun, Oct 11, 2026 at 10:26 PM Namhyung Kim <namhyung@xxxxxxxxxx> wrote:
>
> Hello,
>
> Currently we have 3 types for a DSO.
>
> * binary type: determines where to read binary instruction or data of the
> DSO. Basically used by annotate. Some (special) DSOs like kallsyms or
> JIT may not have the data though.
>
> * symtab type: determines where to read symbol tables. Set when symbols
> in the DSO are loaded.
>
> * debug info type: determines where to read debug info. Used by srcline,
> DWARF unwinding, data type profiling and so on. Often debug info is
> saved in a separate file.
>
> Some DSOs may have the same type for 3 and others can have all different.
> Previously it generally assumed binary type would be same as symtab type
> but now I think we should not and only set the binary type as it's used.
>
> Also it should make sure that symtab type is set properly after loading
> symbols in the DSO.
>
> Probably this patchset won't make any practical difference in runtime
> behaviors but I think it's good to track them accurately.
Except for nits and resolving the remaining Sashiko feedback on patch 6.
Reviewed-by: Ian Rogers <irogers@xxxxxxxxxx>
Thanks!
Ian
> v3 changes)
>
> * set KALLSYM type for split kallsyms DSOs
> * take dso lock in dso__find_binary_type()
> * handle EMFILE failures in dso__find_binary_type()
> * drop the libbfd change as it need a separate patchset
> * lookup binary type in dso__e_machine_endian()
> * get rid of machine_or_dso_e_machine() due to a lock problem
> * fixed a bug symbol__disassemble() for BPF and kcore
>
> v2: https://lore.kernel.org/r/20261006234315.920817-1-namhyung@xxxxxxxxxx
>
> * add dso__find_binary_type() for checking ".text" section
> * make perf annotate use the dso's binary type directly
>
> v1: https://lore.kernel.org/r/20261005063411.114244-1-namhyung@xxxxxxxxxx
>
> Thanks,
> Namhyung
>
>
> Namhyung Kim (10):
> perf tools: Remove redundant dso data init
> perf tools: Try linked debug files for DSO debug info
> perf symbol: Update symtab type of vmlinux from build-id cache
> perf symbol: Set binary/symtab type for split kallsyms
> perf symbol: Get rid of machine_or_dso_e_machine()
> perf tools: Factor out dso__find_binary_type()
> perf symbol: Set binary type for JIT map DSOs
> perf symbol: Do not set binary type from symtab type
> perf annotate: Simplify symbol__disassemble() with dso binary_type
> perf test: Fix dso data tests
>
> tools/perf/tests/dso-data.c | 7 ++
> tools/perf/util/disasm.c | 124 +++++++-------------------------
> tools/perf/util/dso.c | 138 ++++++++++++++++++++++++++++++++----
> tools/perf/util/dso.h | 13 ++++
> tools/perf/util/symbol.c | 50 ++++---------
> 5 files changed, 182 insertions(+), 150 deletions(-)
>
> --
> 2.55.0
>