Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

perf symbols: Fix JIT symbol resolution on heap

Gaurav reported that perf cannot profile JIT program if it executes the
code on heap. This was because current map__new() only handle JIT on
anon mappings - extends it to handle no_dso (heap, stack) case too.

This patch assumes JIT profiling only provides dynamic function symbols
so check the mapping type to distinguish the case. It'd provide no
symbols for data mapping - if we need to support symbols on data
mappings later it should be changed.

Reported-by: Gaurav Jain <gjain@fb.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Tested-by: Gaurav Jain <gjain@fb.com>
Cc: Andi Kleen <andi@firstfloor.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Gaurav Jain <gjain@fb.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung.kim@lge.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1389836971-3549-1-git-send-email-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

authored by

Namhyung Kim and committed by
Arnaldo Carvalho de Melo
578c03c8 8ad9219e

+2 -2
+2 -2
tools/perf/util/map.c
··· 69 69 map->ino = ino; 70 70 map->ino_generation = ino_gen; 71 71 72 - if (anon) { 72 + if ((anon || no_dso) && type == MAP__FUNCTION) { 73 73 snprintf(newfilename, sizeof(newfilename), "/tmp/perf-%d.map", pid); 74 74 filename = newfilename; 75 75 } ··· 93 93 * functions still return NULL, and we avoid the 94 94 * unnecessary map__load warning. 95 95 */ 96 - if (no_dso) 96 + if (type != MAP__FUNCTION) 97 97 dso__set_loaded(dso, map->type); 98 98 } 99 99 }