Commit 2a6e5e8a authored by Ian Rogers's avatar Ian Rogers Committed by Arnaldo Carvalho de Melo
Browse files

perf map: Add accessors for ->pgoff and ->reloc



Later changes will add reference count checking for 'struct map'. Add
accessors so that the reference count check is only necessary in one
place.

Signed-off-by: default avatarIan Rogers <irogers@google.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Alexey Bayduraev <alexey.v.bayduraev@linux.intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: Darren Hart <dvhart@infradead.org>
Cc: Davidlohr Bueso <dave@stgolabs.net>
Cc: Dmitriy Vyukov <dvyukov@google.com>
Cc: Eric Dumazet <edumazet@google.com>
Cc: German Gomez <german.gomez@arm.com>
Cc: Hao Luo <haoluo@google.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: James Clark <james.clark@arm.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: John Garry <john.g.garry@oracle.com>
Cc: Kajol Jain <kjain@linux.ibm.com>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Leo Yan <leo.yan@linaro.org>
Cc: Madhavan Srinivasan <maddy@linux.ibm.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Miaoqian Lin <linmq006@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Riccardo Mancini <rickyman7@gmail.com>
Cc: Shunsuke Nakamura <nakamura.shun@fujitsu.com>
Cc: Song Liu <song@kernel.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Stephen Brennan <stephen.s.brennan@oracle.com>
Cc: Steven Rostedt (VMware) <rostedt@goodmis.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Thomas Richter <tmricht@linux.ibm.com>
Cc: Yury Norov <yury.norov@gmail.com>
Link: https://lore.kernel.org/r/20230404205954.2245628-2-irogers@google.com


Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent ddee3f2b
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -61,7 +61,7 @@ int perf_event__synthesize_extra_kmaps(struct perf_tool *tool,

		event->mmap.start = map__start(map);
		event->mmap.len   = map__size(map);
		event->mmap.pgoff = map->pgoff;
		event->mmap.pgoff = map__pgoff(map);
		event->mmap.pid   = machine->pid;

		strlcpy(event->mmap.filename, kmap->name, PATH_MAX);
+1 −1
Original line number Diff line number Diff line
@@ -857,7 +857,7 @@ static size_t maps__fprintf_task(struct maps *maps, int indent, FILE *fp)
				   prot & PROT_WRITE ? 'w' : '-',
				   prot & PROT_EXEC ? 'x' : '-',
				   map__flags(map) ? 's' : 'p',
				   map->pgoff,
				   map__pgoff(map),
				   dso->id.ino, dso->name);
	}

+2 −2
Original line number Diff line number Diff line
@@ -335,10 +335,10 @@ static int test__vmlinux_matches_kallsyms(struct test_suite *test __maybe_unused
			}

			pr_info("WARN: %" PRIx64 "-%" PRIx64 " %" PRIx64 " %s in kallsyms as",
				map__start(map), map__end(map), map->pgoff, dso->name);
				map__start(map), map__end(map), map__pgoff(map), dso->name);
			if (mem_end != map__end(pair))
				pr_info(":\nWARN: *%" PRIx64 "-%" PRIx64 " %" PRIx64,
					map__start(pair), map__end(pair), pair->pgoff);
					map__start(pair), map__end(pair), map__pgoff(pair));
			pr_info(" %s\n", dso->name);
			pair->priv = 1;
		}
+2 −2
Original line number Diff line number Diff line
@@ -1277,9 +1277,9 @@ int machine__map_x86_64_entry_trampolines(struct machine *machine,
		if (!kmap || !is_entry_trampoline(kmap->name))
			continue;

		dest_map = maps__find(kmaps, map->pgoff);
		dest_map = maps__find(kmaps, map__pgoff(map));
		if (dest_map != map)
			map->pgoff = map__map_ip(dest_map, map->pgoff);
			map->pgoff = map__map_ip(dest_map, map__pgoff(map));
		found = true;
	}
	if (found || machine->trampolines_mapped)
+7 −7
Original line number Diff line number Diff line
@@ -421,7 +421,7 @@ size_t map__fprintf(struct map *map, FILE *fp)
	const struct dso *dso = map__dso(map);

	return fprintf(fp, " %" PRIx64 "-%" PRIx64 " %" PRIx64 " %s\n",
		       map__start(map), map__end(map), map->pgoff, dso->name);
		       map__start(map), map__end(map), map__pgoff(map), dso->name);
}

size_t map__fprintf_dsoname(struct map *map, FILE *fp)
@@ -510,7 +510,7 @@ u64 map__rip_2objdump(struct map *map, u64 rip)
		return rip;

	if (dso->rel)
		return rip - map->pgoff;
		return rip - map__pgoff(map);

	/*
	 * kernel modules also have DSO_TYPE_USER in dso->kernel,
@@ -519,7 +519,7 @@ u64 map__rip_2objdump(struct map *map, u64 rip)
	if (dso->kernel == DSO_SPACE__USER)
		return rip + dso->text_offset;

	return map__unmap_ip(map, rip) - map->reloc;
	return map__unmap_ip(map, rip) - map__reloc(map);
}

/**
@@ -542,7 +542,7 @@ u64 map__objdump_2mem(struct map *map, u64 ip)
		return map__unmap_ip(map, ip);

	if (dso->rel)
		return map__unmap_ip(map, ip + map->pgoff);
		return map__unmap_ip(map, ip + map__pgoff(map));

	/*
	 * kernel modules also have DSO_TYPE_USER in dso->kernel,
@@ -551,7 +551,7 @@ u64 map__objdump_2mem(struct map *map, u64 ip)
	if (dso->kernel == DSO_SPACE__USER)
		return map__unmap_ip(map, ip - dso->text_offset);

	return ip + map->reloc;
	return ip + map__reloc(map);
}

bool map__contains_symbol(const struct map *map, const struct symbol *sym)
@@ -592,12 +592,12 @@ struct maps *map__kmaps(struct map *map)

u64 map__dso_map_ip(const struct map *map, u64 ip)
{
	return ip - map__start(map) + map->pgoff;
	return ip - map__start(map) + map__pgoff(map);
}

u64 map__dso_unmap_ip(const struct map *map, u64 ip)
{
	return ip + map__start(map) - map->pgoff;
	return ip + map__start(map) - map__pgoff(map);
}

u64 identity__map_ip(const struct map *map __maybe_unused, u64 ip)
Loading