From: Arnaldo Carvalho de Melo Date: Wed, 25 Apr 2018 21:16:53 +0000 (-0300) Subject: perf thread: Ditch __thread__find_symbol() X-Git-Tag: v4.18-rc1~165^2~17^2~17 X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=commitdiff_plain;h=117d3c2474a24ab842af00972598c25abffee1e6;p=linux.git perf thread: Ditch __thread__find_symbol() Simulate having all symbols in just one tree by searching the still existing two trees. Cc: Adrian Hunter Cc: David Ahern Cc: Jiri Olsa Cc: Namhyung Kim Cc: Wang Nan Link: https://lkml.kernel.org/n/tip-uss70e8tvzzbzs326330t83q@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo --- diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c index afec6f9ffd89..c7effcfc40ed 100644 --- a/tools/perf/builtin-trace.c +++ b/tools/perf/builtin-trace.c @@ -2036,7 +2036,7 @@ static int trace__pgfault(struct trace *trace, fprintf(trace->output, "] => "); - __thread__find_symbol(thread, sample->cpumode, MAP__VARIABLE, sample->addr, &al); + thread__find_symbol(thread, sample->cpumode, sample->addr, &al); if (!al.map) { thread__find_symbol(thread, sample->cpumode, sample->addr, &al); diff --git a/tools/perf/util/event.c b/tools/perf/util/event.c index 241d3c827fae..7b67771cd478 100644 --- a/tools/perf/util/event.c +++ b/tools/perf/util/event.c @@ -1565,12 +1565,12 @@ struct map *__thread__find_map(struct thread *thread, u8 cpumode, enum map_type return al->map; } -struct symbol *__thread__find_symbol(struct thread *thread, u8 cpumode, - enum map_type type, u64 addr, - struct addr_location *al) +struct symbol *thread__find_symbol(struct thread *thread, u8 cpumode, + u64 addr, struct addr_location *al) { al->sym = NULL; - if (__thread__find_map(thread, cpumode, type, addr, al)) + if (__thread__find_map(thread, cpumode, MAP__FUNCTION, addr, al) || + __thread__find_map(thread, cpumode, MAP__VARIABLE, addr, al)) al->sym = map__find_symbol(al->map, al->addr); return al->sym; } diff --git a/tools/perf/util/machine.c b/tools/perf/util/machine.c index a00e82b83e0a..3422ef67ec21 100644 --- a/tools/perf/util/machine.c +++ b/tools/perf/util/machine.c @@ -1677,15 +1677,7 @@ static void ip__resolve_data(struct thread *thread, memset(&al, 0, sizeof(al)); - __thread__find_symbol(thread, m, MAP__VARIABLE, addr, &al); - if (al.map == NULL) { - /* - * some shared data regions have execute bit set which puts - * their mapping in the MAP__FUNCTION type array. - * Check there as a fallback option before dropping the sample. - */ - thread__find_symbol(thread, m, addr, &al); - } + thread__find_symbol(thread, m, addr, &al); ams->addr = addr; ams->al_addr = al.addr; diff --git a/tools/perf/util/thread.h b/tools/perf/util/thread.h index d6209c73f32d..54aa24d6151e 100644 --- a/tools/perf/util/thread.h +++ b/tools/perf/util/thread.h @@ -101,14 +101,8 @@ static inline struct map *thread__find_map(struct thread *thread, u8 cpumode, return __thread__find_map(thread, cpumode, MAP__FUNCTION, addr, al); } -struct symbol *__thread__find_symbol(struct thread *thread, u8 cpumode, enum map_type type, - u64 addr, struct addr_location *al); - -static inline struct symbol *thread__find_symbol(struct thread *thread, u8 cpumode, - u64 addr, struct addr_location *al) -{ - return __thread__find_symbol(thread, cpumode, MAP__FUNCTION, addr, al); -} +struct symbol *thread__find_symbol(struct thread *thread, u8 cpumode, + u64 addr, struct addr_location *al); void thread__find_cpumode_addr_location(struct thread *thread, u64 addr, struct addr_location *al);