perf annotate: Allow arches to specify functions to skip
tip-bot for Arnaldo Carvalho de Melo
merge botCommit-ID: 9c2fb451bda0aa60127e63e44993401818326e91 Gitweb: http://git.kernel.org/tip/9c2fb451bda0aa60127e63e44993401818326e91 Author: Arnaldo Carvalho de Melo <[email protected]> AuthorDate: Wed, 16 Nov 2016 15:50:38 -0300 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Thu, 17 Nov 2016 17:12:56 -0300
perf annotate: Allow arches to specify functions to skip
This is to cope with an ARM specific kludge introduced in the original patch supporting ARM annotation, cfef25b8daf7 ("perf annotate: ARM support") that made functions with a '+' in its name to be skipped when processing call instructions.
With this patchkit it should be possible to collect a perf.data file on a ARM machine and then annotate it on a x86 workstation and have those ARM kludges used.
Cc Adrian Hunter <[email protected]>
Cc Alexander Shishkin <[email protected]>
Cc Chris Riyder <[email protected]>
Cc David Ahern <[email protected]>
Cc Jiri Olsa <[email protected]>
Cc Kim Phillips <[email protected]>
Cc Markus Trippelsdorf <[email protected]>
Cc Masami Hiramatsu <[email protected]>
Cc Namhyung Kim <[email protected]>
Cc Naveen N. Rao <[email protected]>
Cc Pawel Moll <[email protected]>
Cc Peter Zijlstra <[email protected]>
Cc Ravi Bangoria <[email protected]>
Cc Russell King <[email protected]>
Cc Taeung Song <[email protected]>
Cc Wang Nan <[email protected]>
Signed-off-by Arnaldo Carvalho de Melo <[email protected]>
--- tools/perf/util/annotate.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-)
tools/perf/util/annotate.c +5 -4
@@ -35,6 +35,7 @@ struct arch {const char *name;struct {char comment_char; +char skip_functions_char; } objdump; };
@@ -43,6 +44,7 @@ static struct arch architectures[] = { .name = "arm", .objdump = { .comment_char = ';', + .skip_functions_char = '+', }, }, {
@@ -78,7 +80,7 @@ int ins__scnprintf(struct ins *ins, char *bf, size_t size,return ins__raw_scnprintf (ins, bf, size, ops); } -static int call__parse (struct arch *arch__maybe_unused ,struct ins_operands *ops,struct map *map) +static int call__parse (struct arch *arch,struct ins_operands *ops,struct map *map) {char *endptr, *tok, *name;
@@ -90,10 +92,9 @@ static int call__parse(struct arch *arch __maybe_unused, struct ins_operands *op name++; -#ifdef __arm__ -if (strchr (name,'+' )) +if (arch->objdump.skip_functions_char && +strchr (name, arch->objdump.skip_functions_char))return -1 ; -#endif tok =strchr (name,'>' );if (tok ==NULL )