From: Namhyung Kim <namhyung@kernel.org>
To: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Ian Rogers <irogers@google.com>, Jiri Olsa <jolsa@kernel.org>,
Adrian Hunter <adrian.hunter@intel.com>,
James Clark <james.clark@linaro.org>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@kernel.org>,
LKML <linux-kernel@vger.kernel.org>,
linux-perf-users@vger.kernel.org
Subject: [PATCH v4 05/10] perf symbol: Get rid of machine_or_dso_e_machine()
Date: Mon, 12 Oct 2026 16:46:49 -0700 [thread overview]
Message-ID: <20261012234654.60666-6-namhyung@kernel.org> (raw)
In-Reply-To: <20261012234654.60666-1-namhyung@kernel.org>
The function tries to get e_machine from a DSO (preferred) or env from
the machine. But currently it's only used for kernel DSO's during the
load which refers to /proc/kallsyms most likely and it doesn't have an
ELF header.
Also machine->env would have proper information about the kernel so no
need to check DSO in this case. Actually check DSO's e_machine requires
a correct binary type to be set but it'd cause a recursive locking
problem. I think it's ok to use machine->env info for the kernel.
Reviewed-by: Ian Rogers <irogers@google.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
tools/perf/util/symbol.c | 23 +++--------------------
1 file changed, 3 insertions(+), 20 deletions(-)
diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c
index 56b8d75966133f87..a7afecb5816c25f8 100644
--- a/tools/perf/util/symbol.c
+++ b/tools/perf/util/symbol.c
@@ -967,23 +967,6 @@ static int maps__split_kallsyms_for_kcore(struct maps *kmaps, struct dso *dso)
return count;
}
-static uint16_t machine_or_dso_e_machine(struct machine *machine, struct dso *dso)
-{
- uint16_t e_machine = EM_NONE;
- /* DSO should be most accurate */
- if (dso)
- e_machine = dso__e_machine(dso, machine, /*e_flags=*/NULL);
-
- if (e_machine != EM_NONE)
- return e_machine;
-
- /* Check the global environment next. */
- if (machine && machine->env && machine->env->e_machine != EM_NONE)
- return machine->env->e_machine;
-
- return perf_env__e_machine(machine ? machine->env : NULL, /*e_flags=*/NULL);
-}
-
/*
* Split the symbols into maps, making sure there are no overlaps, i.e. the
* kernel range is broken in several maps, named [kernel].N, as we don't have
@@ -1005,7 +988,7 @@ static int maps__split_kallsyms(struct maps *kmaps, struct dso *dso, u64 delta,
return -1;
machine = maps__machine(kmaps);
- e_machine = machine_or_dso_e_machine(machine, dso);
+ e_machine = perf_env__e_machine(machine->env, /*e_flags=*/NULL);
while (next) {
char *module;
@@ -1567,7 +1550,7 @@ static int dso__load_kcore(struct dso *dso, struct map *map,
free(new_node);
}
- if (machine_or_dso_e_machine(machine, dso) == EM_X86_64) {
+ if (perf_env__e_machine(machine->env, /*e_flags=*/NULL) == EM_X86_64) {
u64 addr;
/*
@@ -1855,7 +1838,7 @@ int dso__load(struct dso *dso, struct map *map)
ret = dso__load_guest_kernel_sym(dso, map);
machine = maps__machine(map__kmaps(map));
- if (machine && machine_or_dso_e_machine(machine, dso) == EM_X86_64)
+ if (perf_env__e_machine(machine->env, /*e_flags=*/NULL) == EM_X86_64)
machine__map_x86_64_entry_trampolines(machine, dso);
goto out;
}
--
2.56.0.385.gd3acb90ef8-goog
next prev parent reply other threads:[~2026-10-12 23:46 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-12 23:46 [PATCH v4 00/10] perf symbol: Properly seto DSO binary/symtab types Namhyung Kim
2026-10-12 23:46 ` [PATCH v4 01/10] perf tools: Remove redundant dso data init Namhyung Kim
2026-10-12 23:50 ` sashiko-bot
2026-10-12 23:46 ` [PATCH v4 02/10] perf tools: Try linked debug files for DSO debug info Namhyung Kim
2026-10-12 23:56 ` sashiko-bot
2026-10-13 6:08 ` Namhyung Kim
2026-10-12 23:46 ` [PATCH v4 03/10] perf symbol: Update symtab type of vmlinux from build-id cache Namhyung Kim
2026-10-12 23:52 ` sashiko-bot
2026-10-12 23:46 ` [PATCH v4 04/10] perf symbol: Set binary/symtab type for split kallsyms Namhyung Kim
2026-10-12 23:53 ` sashiko-bot
2026-10-12 23:46 ` Namhyung Kim [this message]
2026-10-13 0:03 ` [PATCH v4 05/10] perf symbol: Get rid of machine_or_dso_e_machine() sashiko-bot
2026-10-12 23:46 ` [PATCH v4 06/10] perf tools: Factor out dso__find_binary_type() Namhyung Kim
2026-10-12 23:58 ` sashiko-bot
2026-10-13 6:11 ` Namhyung Kim
2026-10-12 23:46 ` [PATCH v4 07/10] perf symbol: Set binary type for JIT map DSOs Namhyung Kim
2026-10-12 23:59 ` sashiko-bot
2026-10-12 23:46 ` [PATCH v4 08/10] perf symbol: Do not set binary type from symtab type Namhyung Kim
2026-10-13 0:08 ` sashiko-bot
2026-10-13 6:18 ` Namhyung Kim
2026-10-12 23:46 ` [PATCH v4 09/10] perf annotate: Simplify symbol__disassemble() with dso binary_type Namhyung Kim
2026-10-13 0:06 ` sashiko-bot
2026-10-12 23:46 ` [PATCH v4 10/10] perf test: Fix dso data tests Namhyung Kim
2026-10-13 0:06 ` sashiko-bot
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=20261012234654.60666-6-namhyung@kernel.org \
--to=namhyung@kernel.org \
--cc=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=irogers@google.com \
--cc=james.clark@linaro.org \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=peterz@infradead.org \
/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.