From: Changbin Du <changbin.du@huawei.com>
To: Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>,
Arnaldo Carvalho de Melo <acme@kernel.org>,
Namhyung Kim <namhyung@kernel.org>,
Nathan Chancellor <nathan@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Jiri Olsa <jolsa@kernel.org>, Ian Rogers <irogers@google.com>,
Adrian Hunter <adrian.hunter@intel.com>,
"Liang, Kan" <kan.liang@linux.intel.com>,
Nick Desaulniers <ndesaulniers@google.com>,
Bill Wendling <morbo@google.com>,
Justin Stitt <justinstitt@google.com>,
<linux-perf-users@vger.kernel.org>,
<linux-kernel@vger.kernel.org>, <llvm@lists.linux.dev>,
Hui Wang <hw.huiwang@huawei.com>,
Changbin Du <changbin.du@huawei.com>
Subject: [PATCH v6 7/8] perf: disasm: prefer debugging files in build-id cache
Date: Fri, 16 Aug 2024 18:58:10 +0800 [thread overview]
Message-ID: <20240816105811.1812897-8-changbin.du@huawei.com> (raw)
In-Reply-To: <20240816105811.1812897-1-changbin.du@huawei.com>
The build-id cache might have both debugging and non-debugging files. Here
we prefer the debugging version for annotation.
Cc: Adrian Hunter <adrian.hunter@intel.com>
Signed-off-by: Changbin Du <changbin.du@huawei.com>
---
tools/perf/util/disasm.c | 29 ++++++++++++++++++-----------
1 file changed, 18 insertions(+), 11 deletions(-)
diff --git a/tools/perf/util/disasm.c b/tools/perf/util/disasm.c
index 6af9fbec3a95..5f66b3632770 100644
--- a/tools/perf/util/disasm.c
+++ b/tools/perf/util/disasm.c
@@ -1162,18 +1162,25 @@ static int dso__disassemble_filename(struct dso *dso, char *filename, size_t fil
!dso__is_kcore(dso))
return SYMBOL_ANNOTATE_ERRNO__NO_VMLINUX;
- build_id_filename = dso__build_id_filename(dso, NULL, 0, false);
- if (build_id_filename) {
- __symbol__join_symfs(filename, filename_size, build_id_filename);
- free(build_id_filename);
- } else {
- if (dso__has_build_id(dso))
- return ENOMEM;
- return fallback_filename(dso, filename, filename_size);
- }
+ /* Prefer debugging file if exists, otherwise non-debugging one is used. */
+ for (int i = 0; i < 2; i++) {
+ build_id_filename = dso__build_id_filename(dso, NULL, 0, !i);
+ if (build_id_filename) {
+ __symbol__join_symfs(filename, filename_size, build_id_filename);
+ free(build_id_filename);
+ } else {
+ if (dso__has_build_id(dso))
+ return ENOMEM;
+ return fallback_filename(dso, filename, filename_size);
+ }
- if (access(filename, R_OK))
- return fallback_filename(dso, filename, filename_size);
+ if (!access(filename, R_OK))
+ break;
+ else if (i != 0) {
+ /* nor debugging or non-debugging is found */
+ return fallback_filename(dso, filename, filename_size);
+ }
+ }
if (dso__is_kcore(dso) || dso__is_vdso(dso))
goto fallback;
--
2.34.1
next prev parent reply other threads:[~2024-08-16 10:58 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-16 10:58 [RESEND PATCH v6 0/8] perf: Support searching local debugging vdso or specify vdso path in cmdline Changbin Du
2024-08-16 10:58 ` [PATCH v6 1/8] perf: support " Changbin Du
2024-08-16 10:58 ` [PATCH v6 2/8] perf: disasm: refactor function dso__disassemble_filename Changbin Du
2024-08-16 10:58 ` [PATCH v6 3/8] perf: disasm: use build_id_path if fallback failed Changbin Du
2024-08-16 10:58 ` [PATCH v6 4/8] perf: symbol: generalize vmlinux path searching Changbin Du
2024-08-16 10:58 ` [PATCH v6 5/8] perf: build-id: add support for build-id cache vdso debug Changbin Du
2024-08-16 10:58 ` [PATCH v6 6/8] perf: build-id: extend build_id_cache__find_debug() to find local debugging vdso Changbin Du
2024-08-16 10:58 ` Changbin Du [this message]
2024-08-16 10:58 ` [PATCH v6 8/8] perf buildid-cache: recognize vdso when adding files Changbin Du
2025-02-18 9:56 ` [RESEND PATCH v6 0/8] perf: Support searching local debugging vdso or specify vdso path in cmdline YinFengwei
-- strict thread matches above, loose matches on Subject: below --
2024-07-25 2:15 [PATCH " Changbin Du
2024-07-25 2:15 ` [PATCH v6 7/8] perf: disasm: prefer debugging files in build-id cache Changbin Du
2024-09-11 8:05 ` Adrian Hunter
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=20240816105811.1812897-8-changbin.du@huawei.com \
--to=changbin.du@huawei.com \
--cc=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=hw.huiwang@huawei.com \
--cc=irogers@google.com \
--cc=jolsa@kernel.org \
--cc=justinstitt@google.com \
--cc=kan.liang@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=llvm@lists.linux.dev \
--cc=mark.rutland@arm.com \
--cc=mingo@redhat.com \
--cc=morbo@google.com \
--cc=namhyung@kernel.org \
--cc=nathan@kernel.org \
--cc=ndesaulniers@google.com \
--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