From: Namhyung Kim <namhyung@kernel.org>
To: sashiko-reviews@lists.linux.dev
Cc: linux-perf-users@vger.kernel.org
Subject: Re: [PATCH v2 08/10] perf symbol: Do not set binary type from symtab type
Date: Fri, 9 Oct 2026 23:41:04 -0700 [thread overview]
Message-ID: <asneAEt9S1ZJaeR5@z2> (raw)
In-Reply-To: <sashiko-outbox-162539@kernel.org>
On Tue, Oct 06, 2026 at 11:57:13PM +0000, sashiko-bot@kernel.org wrote:
> Thank you for your contribution! Sashiko AI review found 3 potential issue(s) to consider:
> - [High] perf: data-only DSOs fail to open due to strict .text section requirement
> - [High] perf: compat offline DWARF unwinding broken due to missing binary_type
> - [Medium] perf: redundant double-decompression of compressed kernel modules
> --
>
> commit 0528580a893b2b2066f28586347977aa4bf1e268
> Author: Namhyung Kim <namhyung@kernel.org>
>
> perf symbol: Do not set binary type from symtab type
>
> The DSO binary type is to access the binary (e.g. instruction) data
> while symtab type is for the symbol table. They may or may not be in
> the same file. We should track them separately and correctly.
>
> > diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c
> > index 389dbd7e5192f..1175cb60f8206 100644
> > --- a/tools/perf/util/symbol.c
> > +++ b/tools/perf/util/symbol.c
> > @@ -1956,19 +1956,6 @@ int dso__load(struct dso *dso, struct map *map)
> >
> > if (next_slot) {
> > ss_pos++;
> > -
> > - /*
> > - * The binary type is used to find the file containing
> > - * the executed instructions, so prefer the types that
> > - * refer to the actual object over debug-only files such
> > - * as DSO_BINARY_TYPE__DEBUGLINK.
> > - */
> > - if (dso__binary_type(dso) == DSO_BINARY_TYPE__NOT_FOUND ||
> > - symtab_type == DSO_BINARY_TYPE__BUILD_ID_CACHE ||
> > - (symtab_type == DSO_BINARY_TYPE__SYSTEM_PATH_DSO &&
> > - dso__binary_type(dso) != DSO_BINARY_TYPE__BUILD_ID_CACHE))
> > - dso__set_binary_type(dso, symtab_type);
> > -
[SNIP]
> [Severity: High]
> Could this removal also break offline DWARF stack unwinding for compat tasks?
>
> Because user-space maps now have a binary type of DSO_BINARY_TYPE__NOT_FOUND
> during early processing, when thread__e_machine_endian() calls
> dso__e_machine_endian() to determine the architecture, it hits the fallback:
>
> tools/perf/util/dso.c:dso__e_machine_endian() {
> ...
> switch (dso__binary_type(dso)) {
> ...
> case DSO_BINARY_TYPE__NOT_FOUND:
> default:
> if (e_flags)
> *e_flags = 0;
> return EM_NONE;
> }
> }
>
> It immediately fails and returns EM_NONE without attempting to open the file.
> Consequently, thread__e_machine_endian() fails to extract the architecture
> from any map and falls back to perf_env__e_machine(), which incorrectly
> applies the host architecture to the compat thread.
Looks possible. I'll add dso__find_binary_type() before.
But probably we can cache e_machine and e_flags in the DSO when loading
symbols.
Thanks,
Namhyung
next prev parent reply other threads:[~2026-10-10 6:41 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-06 23:43 [PATCH v2 00/10] perf symbol: Properly set DSO binary/symtab types Namhyung Kim
2026-10-06 23:43 ` [PATCH v2 01/10] perf tools: Remove redundant dso data init Namhyung Kim
2026-10-06 23:49 ` sashiko-bot
2026-10-06 23:43 ` [PATCH v2 02/10] perf tools: Try linked debug files for DSO debug info Namhyung Kim
2026-10-06 23:54 ` sashiko-bot
2026-10-10 5:38 ` Namhyung Kim
2026-10-06 23:43 ` [PATCH v2 03/10] perf symbol: Update symtab type of vmlinux from build-id cache Namhyung Kim
2026-10-06 23:54 ` sashiko-bot
2026-10-06 23:43 ` [PATCH v2 04/10] perf symbol: Set binary/symtab type for split kallsyms Namhyung Kim
2026-10-06 23:58 ` sashiko-bot
2026-10-10 5:42 ` Namhyung Kim
2026-10-06 23:43 ` [PATCH v2 05/10] perf symbol: Set dso symtab type for libbfd Namhyung Kim
2026-10-06 23:57 ` sashiko-bot
2026-10-10 5:49 ` Namhyung Kim
2026-10-06 23:43 ` [PATCH v2 06/10] perf tools: Factor out dso__find_binary_type() Namhyung Kim
2026-10-07 0:04 ` sashiko-bot
2026-10-10 6:17 ` Namhyung Kim
2026-10-06 23:43 ` [PATCH v2 07/10] perf symbol: Set binary type for JIT map DSOs Namhyung Kim
2026-10-06 23:51 ` sashiko-bot
2026-10-06 23:43 ` [PATCH v2 08/10] perf symbol: Do not set binary type from symtab type Namhyung Kim
2026-10-06 23:57 ` sashiko-bot
2026-10-10 6:41 ` Namhyung Kim [this message]
2026-10-06 23:43 ` [PATCH v2 09/10] perf annotate: Simplify symbol__disassemble() with dso binary_type Namhyung Kim
2026-10-07 0:01 ` sashiko-bot
2026-10-10 6:47 ` Namhyung Kim
2026-10-06 23:43 ` [PATCH v2 10/10] perf test: Fix dso data tests Namhyung Kim
2026-10-06 23:59 ` sashiko-bot
2026-10-10 6:48 ` Namhyung Kim
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=asneAEt9S1ZJaeR5@z2 \
--to=namhyung@kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
/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.