From: Namhyung Kim <namhyung@kernel.org>
To: Arnaldo Carvalho de Melo <acme@kernel.org>,
Ian Rogers <irogers@google.com>,
James Clark <james.clark@linaro.org>
Cc: Jiri Olsa <jolsa@kernel.org>,
Adrian Hunter <adrian.hunter@intel.com>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@kernel.org>,
LKML <linux-kernel@vger.kernel.org>,
linux-perf-users@vger.kernel.org
Subject: [PATCH v3 05/10] perf symbol: Get rid of machine_or_dso_e_machine()
Date: Sun, 11 Oct 2026 22:25:56 -0700 [thread overview]
Message-ID: <20261012052601.13920-6-namhyung@kernel.org> (raw)
In-Reply-To: <20261012052601.13920-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.
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.55.0
next prev parent reply other threads:[~2026-10-12 5:26 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-12 5:25 [PATCH v3 00/10] perf symbol: Properly set DSO binary/symtab types Namhyung Kim
2026-10-12 5:25 ` [PATCH v3 01/10] perf tools: Remove redundant dso data init Namhyung Kim
2026-10-12 5:25 ` [PATCH v3 02/10] perf tools: Try linked debug files for DSO debug info Namhyung Kim
2026-10-12 5:25 ` [PATCH v3 03/10] perf symbol: Update symtab type of vmlinux from build-id cache Namhyung Kim
2026-10-12 5:25 ` [PATCH v3 04/10] perf symbol: Set binary/symtab type for split kallsyms Namhyung Kim
2026-10-12 5:25 ` Namhyung Kim [this message]
2026-10-12 5:25 ` [PATCH v3 06/10] perf tools: Factor out dso__find_binary_type() Namhyung Kim
2026-10-12 5:25 ` [PATCH v3 07/10] perf symbol: Set binary type for JIT map DSOs Namhyung Kim
2026-10-12 5:25 ` [PATCH v3 08/10] perf symbol: Do not set binary type from symtab type Namhyung Kim
2026-10-12 5:26 ` [PATCH v3 09/10] perf annotate: Simplify symbol__disassemble() with dso binary_type Namhyung Kim
2026-10-12 5:26 ` [PATCH v3 10/10] perf test: Fix dso data tests 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=20261012052601.13920-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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®