Commit a5d20d42 authored by Namhyung Kim's avatar Namhyung Kim Committed by Arnaldo Carvalho de Melo
Browse files

perf symbol: Remove arch__symbols__fixup_end()



Now the generic code can handle kallsyms fixup properly so no need to
keep the arch-functions anymore.

Fixes: 3cf6a32f ("perf symbols: Fix symbol size calculation condition")
Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
Acked-by: default avatarIan Rogers <irogers@google.com>
Cc: Heiko Carstens <hca@linux.ibm.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: John Garry <john.garry@huawei.com>
Cc: Leo Yan <leo.yan@linaro.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Michael Petlan <mpetlan@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Song Liu <songliubraving@fb.com>
Cc: Will Deacon <will@kernel.org>
Cc: linux-s390@vger.kernel.org
Cc: linuxppc-dev@lists.ozlabs.org
Link: https://lore.kernel.org/r/20220416004048.1514900-4-namhyung@kernel.org


Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 8799ebce
Loading
Loading
Loading
Loading
+0 −21
Original line number Diff line number Diff line
@@ -8,27 +8,6 @@
#include "callchain.h"
#include "record.h"

/* On arm64, kernel text segment starts at high memory address,
 * for example 0xffff 0000 8xxx xxxx. Modules start at a low memory
 * address, like 0xffff 0000 00ax xxxx. When only small amount of
 * memory is used by modules, gap between end of module's text segment
 * and start of kernel text segment may reach 2G.
 * Therefore do not fill this gap and do not assign it to the kernel dso map.
 */

#define SYMBOL_LIMIT (1 << 12) /* 4K */

void arch__symbols__fixup_end(struct symbol *p, struct symbol *c)
{
	if ((strchr(p->name, '[') && strchr(c->name, '[') == NULL) ||
			(strchr(p->name, '[') == NULL && strchr(c->name, '[')))
		/* Limit range of last symbol in module and kernel */
		p->end += SYMBOL_LIMIT;
	else
		p->end = c->start;
	pr_debug4("%s sym:%s end:%#" PRIx64 "\n", __func__, p->name, p->end);
}

void arch__add_leaf_frame_record_opts(struct record_opts *opts)
{
	opts->sample_user_regs |= sample_reg_masks[PERF_REG_ARM64_LR].mask;
+0 −1
Original line number Diff line number Diff line
perf-y += header.o
perf-y += machine.o
perf-y += kvm-stat.o
perf-y += perf_regs.o
perf-y += mem-events.o
+0 −25
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0

#include <inttypes.h>
#include <stdio.h>
#include <string.h>
#include <internal/lib.h> // page_size
#include "debug.h"
#include "symbol.h"

/* On powerpc kernel text segment start at memory addresses, 0xc000000000000000
 * whereas the modules are located at very high memory addresses,
 * for example 0xc00800000xxxxxxx. The gap between end of kernel text segment
 * and beginning of first module's text segment is very high.
 * Therefore do not fill this gap and do not assign it to the kernel dso map.
 */

void arch__symbols__fixup_end(struct symbol *p, struct symbol *c)
{
	if (strchr(p->name, '[') == NULL && strchr(c->name, '['))
		/* Limit the range of last kernel symbol */
		p->end += page_size;
	else
		p->end = c->start;
	pr_debug4("%s sym:%s end:%#" PRIx64 "\n", __func__, p->name, p->end);
}
+0 −16
Original line number Diff line number Diff line
@@ -35,19 +35,3 @@ int arch__fix_module_text_start(u64 *start, u64 *size, const char *name)

	return 0;
}

/* On s390 kernel text segment start is located at very low memory addresses,
 * for example 0x10000. Modules are located at very high memory addresses,
 * for example 0x3ff xxxx xxxx. The gap between end of kernel text segment
 * and beginning of first module's text segment is very big.
 * Therefore do not fill this gap and do not assign it to the kernel dso map.
 */
void arch__symbols__fixup_end(struct symbol *p, struct symbol *c)
{
	if (strchr(p->name, '[') == NULL && strchr(c->name, '['))
		/* Last kernel symbol mapped to end of page */
		p->end = roundup(p->end, page_size);
	else
		p->end = c->start;
	pr_debug4("%s sym:%s end:%#" PRIx64 "\n", __func__, p->name, p->end);
}
+0 −5
Original line number Diff line number Diff line
@@ -101,11 +101,6 @@ static int prefix_underscores_count(const char *str)
	return tail - str;
}

void __weak arch__symbols__fixup_end(struct symbol *p, struct symbol *c)
{
	p->end = c->start;
}

const char * __weak arch__normalize_symbol_name(const char *name)
{
	return name;
Loading