perf symbols: Allow symbol alias when loading map for symbol name
When perf probe tries to add a probe in a binary using symbol name, it sometimes failed since some symbols were discard during loading dso. When it resolves an address to symbol, it'd be better to have just one symbol at given address. But for finding address from symbol, it'd be better to keep all names (including aliases). So allow tools to state that they want to allow aliases via symbol_conf.allow_aliases. Signed-off-by: Namhyung Kim <namhyung@kernel.org> Acked-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> Cc: David Ahern <dsahern@gmail.com> Cc: Ingo Molnar <mingo@kernel.org> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Naohiro Aota <naota@elisp.net> Cc: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/20150306073127.6904.3232.stgit@localhost.localdomain [ Original patch passwd allow_alias to many functions, use symbol_conf.allow_aliases instead ] Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
Родитель
0687eba787
Коммит
680d926a8c
|
@ -80,6 +80,7 @@ static int init_symbol_maps(bool user_only)
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
symbol_conf.sort_by_name = true;
|
symbol_conf.sort_by_name = true;
|
||||||
|
symbol_conf.allow_aliases = true;
|
||||||
ret = symbol__init(NULL);
|
ret = symbol__init(NULL);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
pr_debug("Failed to init symbol map.\n");
|
pr_debug("Failed to init symbol map.\n");
|
||||||
|
|
|
@ -1048,7 +1048,8 @@ new_symbol:
|
||||||
* For misannotated, zeroed, ASM function sizes.
|
* For misannotated, zeroed, ASM function sizes.
|
||||||
*/
|
*/
|
||||||
if (nr > 0) {
|
if (nr > 0) {
|
||||||
symbols__fixup_duplicate(&dso->symbols[map->type]);
|
if (!symbol_conf.allow_aliases)
|
||||||
|
symbols__fixup_duplicate(&dso->symbols[map->type]);
|
||||||
symbols__fixup_end(&dso->symbols[map->type]);
|
symbols__fixup_end(&dso->symbols[map->type]);
|
||||||
if (kmap) {
|
if (kmap) {
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -87,6 +87,7 @@ struct symbol_conf {
|
||||||
ignore_vmlinux_buildid,
|
ignore_vmlinux_buildid,
|
||||||
show_kernel_path,
|
show_kernel_path,
|
||||||
use_modules,
|
use_modules,
|
||||||
|
allow_aliases,
|
||||||
sort_by_name,
|
sort_by_name,
|
||||||
show_nr_samples,
|
show_nr_samples,
|
||||||
show_total_period,
|
show_total_period,
|
||||||
|
|
Загрузка…
Ссылка в новой задаче