perf tools: Use the "_stest" symbol to identify the kernel map when loading kcore
The first symbol is not necessarily in the kernel text. Instead of using the first symbol, use the _stest symbol to identify the kernel map when loading kcore. This allows for the introduction of symbols to identify the x86_64 PTI entry trampolines. Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Andi Kleen <ak@linux.intel.com> Cc: Andy Lutomirski <luto@kernel.org> Cc: Dave Hansen <dave.hansen@linux.intel.com> Cc: H. Peter Anvin <hpa@zytor.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Joerg Roedel <joro@8bytes.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: x86@kernel.org Link: http://lkml.kernel.org/r/1525866228-30321-6-git-send-email-adrian.hunter@intel.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
d8fc764d0b
commit
5654997838
|
@ -1149,7 +1149,7 @@ static int dso__load_kcore(struct dso *dso, struct map *map,
|
|||
bool is_64_bit;
|
||||
int err, fd;
|
||||
char kcore_filename[PATH_MAX];
|
||||
struct symbol *sym;
|
||||
u64 stext;
|
||||
|
||||
if (!kmaps)
|
||||
return -EINVAL;
|
||||
|
@ -1198,13 +1198,13 @@ static int dso__load_kcore(struct dso *dso, struct map *map,
|
|||
old_map = next;
|
||||
}
|
||||
|
||||
/* Find the kernel map using the first symbol */
|
||||
sym = dso__first_symbol(dso);
|
||||
list_for_each_entry(new_map, &md.maps, node) {
|
||||
if (sym && sym->start >= new_map->start &&
|
||||
sym->start < new_map->end) {
|
||||
replacement_map = new_map;
|
||||
break;
|
||||
/* Find the kernel map using the '_stext' symbol */
|
||||
if (!kallsyms__get_function_start(kallsyms_filename, "_stext", &stext)) {
|
||||
list_for_each_entry(new_map, &md.maps, node) {
|
||||
if (stext >= new_map->start && stext < new_map->end) {
|
||||
replacement_map = new_map;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue