From: Ian Rogers <irogers@google.com>
To: Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>,
Arnaldo Carvalho de Melo <acme@kernel.org>,
Namhyung Kim <namhyung@kernel.org>,
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>,
Kan Liang <kan.liang@linux.intel.com>,
Nathan Chancellor <nathan@kernel.org>,
Nick Desaulniers <ndesaulniers@google.com>,
Bill Wendling <morbo@google.com>,
Justin Stitt <justinstitt@google.com>,
Aditya Gupta <adityag@linux.ibm.com>,
"Steinar H. Gunderson" <sesse@google.com>,
Charlie Jenkins <charlie@rivosinc.com>,
Changbin Du <changbin.du@huawei.com>,
"Masami Hiramatsu (Google)" <mhiramat@kernel.org>,
James Clark <james.clark@linaro.org>,
Kajol Jain <kjain@linux.ibm.com>,
Athira Rajeev <atrajeev@linux.vnet.ibm.com>,
Li Huafei <lihuafei1@huawei.com>,
Dmitry Vyukov <dvyukov@google.com>,
Andi Kleen <ak@linux.intel.com>,
Chaitanya S Prakash <chaitanyas.prakash@arm.com>,
linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
llvm@lists.linux.dev, Song Liu <song@kernel.org>,
bpf@vger.kernel.org
Subject: [PATCH v2 02/17] perf map: Constify objdump offset/address conversion APIs
Date: Tue, 21 Jan 2025 22:23:17 -0800 [thread overview]
Message-ID: <20250122062332.577009-3-irogers@google.com> (raw)
In-Reply-To: <20250122062332.577009-1-irogers@google.com>
Make the map argument const as the conversion act won't modify the map
and this allows other callers to use a const struct map.
Signed-off-by: Ian Rogers <irogers@google.com>
---
tools/perf/util/map.c | 19 +++++++++++++++----
tools/perf/util/map.h | 6 +++---
2 files changed, 18 insertions(+), 7 deletions(-)
diff --git a/tools/perf/util/map.c b/tools/perf/util/map.c
index d729438b7d65..a22a423792d7 100644
--- a/tools/perf/util/map.c
+++ b/tools/perf/util/map.c
@@ -514,6 +514,8 @@ void srccode_state_free(struct srccode_state *state)
state->line = 0;
}
+static const struct kmap *__map__const_kmap(const struct map *map);
+
/**
* map__rip_2objdump - convert symbol start address to objdump address.
* @map: memory map
@@ -525,9 +527,9 @@ void srccode_state_free(struct srccode_state *state)
*
* Return: Address suitable for passing to "objdump --start-address="
*/
-u64 map__rip_2objdump(struct map *map, u64 rip)
+u64 map__rip_2objdump(const struct map *map, u64 rip)
{
- struct kmap *kmap = __map__kmap(map);
+ const struct kmap *kmap = __map__const_kmap(map);
const struct dso *dso = map__dso(map);
/*
@@ -570,7 +572,7 @@ u64 map__rip_2objdump(struct map *map, u64 rip)
*
* Return: Memory address.
*/
-u64 map__objdump_2mem(struct map *map, u64 ip)
+u64 map__objdump_2mem(const struct map *map, u64 ip)
{
const struct dso *dso = map__dso(map);
@@ -587,7 +589,7 @@ u64 map__objdump_2mem(struct map *map, u64 ip)
}
/* convert objdump address to relative address. (To be removed) */
-u64 map__objdump_2rip(struct map *map, u64 ip)
+u64 map__objdump_2rip(const struct map *map, u64 ip)
{
const struct dso *dso = map__dso(map);
@@ -619,6 +621,15 @@ struct kmap *__map__kmap(struct map *map)
return (struct kmap *)(&RC_CHK_ACCESS(map)[1]);
}
+static const struct kmap *__map__const_kmap(const struct map *map)
+{
+ const struct dso *dso = map__dso(map);
+
+ if (!dso || !dso__kernel(dso))
+ return NULL;
+ return (struct kmap *)(&RC_CHK_ACCESS(map)[1]);
+}
+
struct kmap *map__kmap(struct map *map)
{
struct kmap *kmap = __map__kmap(map);
diff --git a/tools/perf/util/map.h b/tools/perf/util/map.h
index 4262f5a143be..768501eec70e 100644
--- a/tools/perf/util/map.h
+++ b/tools/perf/util/map.h
@@ -133,13 +133,13 @@ static inline u64 map__unmap_ip(const struct map *map, u64 ip_or_rip)
}
/* rip/ip <-> addr suitable for passing to `objdump --start-address=` */
-u64 map__rip_2objdump(struct map *map, u64 rip);
+u64 map__rip_2objdump(const struct map *map, u64 rip);
/* objdump address -> memory address */
-u64 map__objdump_2mem(struct map *map, u64 ip);
+u64 map__objdump_2mem(const struct map *map, u64 ip);
/* objdump address -> rip */
-u64 map__objdump_2rip(struct map *map, u64 ip);
+u64 map__objdump_2rip(const struct map *map, u64 ip);
struct symbol;
struct thread;
--
2.48.0.rc2.279.g1de40edade-goog
next prev parent reply other threads:[~2025-01-22 6:24 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-01-22 6:23 [PATCH v2 00/17] Support dynamic opening of capstone/llvm remove BUILD_NONDISTRO Ian Rogers
2025-01-22 6:23 ` [PATCH v2 01/17] perf build: Remove libtracefs configuration Ian Rogers
2025-01-22 6:23 ` Ian Rogers [this message]
2025-01-22 6:23 ` [PATCH v2 03/17] perf capstone: Move capstone functionality into its own file Ian Rogers
2025-01-22 6:23 ` [PATCH v2 04/17] perf llvm: Move llvm " Ian Rogers
2025-01-22 6:23 ` [PATCH v2 05/17] perf capstone: Remove open_capstone_handle Ian Rogers
2025-01-22 6:23 ` [PATCH v2 06/17] perf capstone: Support for dlopen-ing libcapstone.so Ian Rogers
2025-01-22 6:23 ` [PATCH v2 07/17] perf llvm: Support for dlopen-ing libLLVM.so Ian Rogers
2025-01-22 6:23 ` [PATCH v2 08/17] perf llvm: Mangle libperf-llvm.so function names Ian Rogers
2025-01-22 6:23 ` [PATCH v2 09/17] perf dso: Move read_symbol from llvm/capstone to dso Ian Rogers
2025-01-22 6:23 ` [PATCH v2 10/17] perf dso: Support BPF programs in dso__read_symbol Ian Rogers
2025-01-22 6:23 ` [PATCH v2 11/17] perf llvm: Disassemble cleanup Ian Rogers
2025-01-22 6:23 ` [PATCH v2 12/17] perf dso: Clean up read_symbol error handling Ian Rogers
2025-01-22 6:23 ` [PATCH v2 13/17] perf build: Remove libbfd support Ian Rogers
2025-01-22 6:23 ` [PATCH v2 14/17] perf build: Remove libiberty support Ian Rogers
2025-01-22 6:23 ` [PATCH v2 15/17] perf build: Remove unused defines Ian Rogers
2025-01-22 6:23 ` [PATCH v2 16/17] perf disasm: Remove disasm_bpf Ian Rogers
2025-01-22 6:23 ` [PATCH v2 17/17] perf disasm: Make ins__scnprintf and ins__is_nop static Ian Rogers
2025-01-22 15:20 ` [PATCH v2 00/17] Support dynamic opening of capstone/llvm remove BUILD_NONDISTRO Andi Kleen
2025-01-22 16:11 ` Ian Rogers
2025-01-23 18:19 ` Andi Kleen
2025-01-23 21:24 ` Ian Rogers
2025-01-23 21:59 ` Namhyung Kim
2025-01-23 23:36 ` Ian Rogers
2025-02-10 18:06 ` Ian Rogers
2025-03-12 21:04 ` Ian Rogers
2025-03-13 22:24 ` Namhyung Kim
2025-03-14 5:54 ` Ian Rogers
2025-03-14 17:06 ` Arnaldo Carvalho de Melo
2025-03-14 20:34 ` Ian Rogers
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=20250122062332.577009-3-irogers@google.com \
--to=irogers@google.com \
--cc=acme@kernel.org \
--cc=adityag@linux.ibm.com \
--cc=adrian.hunter@intel.com \
--cc=ak@linux.intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=atrajeev@linux.vnet.ibm.com \
--cc=bpf@vger.kernel.org \
--cc=chaitanyas.prakash@arm.com \
--cc=changbin.du@huawei.com \
--cc=charlie@rivosinc.com \
--cc=dvyukov@google.com \
--cc=james.clark@linaro.org \
--cc=jolsa@kernel.org \
--cc=justinstitt@google.com \
--cc=kan.liang@linux.intel.com \
--cc=kjain@linux.ibm.com \
--cc=lihuafei1@huawei.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=mhiramat@kernel.org \
--cc=mingo@redhat.com \
--cc=morbo@google.com \
--cc=namhyung@kernel.org \
--cc=nathan@kernel.org \
--cc=ndesaulniers@google.com \
--cc=peterz@infradead.org \
--cc=sesse@google.com \
--cc=song@kernel.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