diff options
author | Jin Yao <yao.jin@linux.intel.com> | 2018-05-21 10:57:46 -0400 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2018-05-21 13:41:25 -0400 |
commit | 7ebaf4890f63eb90856b76864a0847413cdf6c86 (patch) | |
tree | f6618c6e85408c0d25a4314c0860027383572ea3 /tools/perf/builtin-annotate.c | |
parent | a26bb0ba706aef4f42cc9377c0d4e849378574a4 (diff) |
perf annotate: Support '--group' option
With the '--group' option, even for non-explicit group, 'perf annotate'
will enable the group output.
For example,
$ perf record -e cycles,branches ./div
$ perf annotate main --stdio --group
: Disassembly of section .text:
:
: 00000000004004b0 <main>:
: main():
:
: return i;
: }
:
: int main(void)
: {
0.00 0.00 : 4004b0: push %rbx
: int i;
: int flag;
: volatile double x = 1212121212, y = 121212;
:
: s_randseed = time(0);
0.00 0.00 : 4004b1: xor %edi,%edi
: srand(s_randseed);
0.00 0.00 : 4004b3: mov $0x77359400,%ebx
:
: return i;
: }
:
But if without --group, there is only one event reported.
$ perf annotate main --stdio
: Disassembly of section .text:
:
: 00000000004004b0 <main>:
: main():
:
: return i;
: }
:
: int main(void)
: {
0.00 : 4004b0: push %rbx
: int i;
: int flag;
: volatile double x = 1212121212, y = 121212;
:
: s_randseed = time(0);
0.00 : 4004b1: xor %edi,%edi
: srand(s_randseed);
0.00 : 4004b3: mov $0x77359400,%ebx
:
: return i;
: }
Signed-off-by: Jin Yao <yao.jin@linux.intel.com>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/1526914666-31839-4-git-send-email-yao.jin@linux.intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/builtin-annotate.c')
-rw-r--r-- | tools/perf/builtin-annotate.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/tools/perf/builtin-annotate.c b/tools/perf/builtin-annotate.c index 6e5d9f718154..da5704240239 100644 --- a/tools/perf/builtin-annotate.c +++ b/tools/perf/builtin-annotate.c | |||
@@ -45,6 +45,7 @@ struct perf_annotate { | |||
45 | bool print_line; | 45 | bool print_line; |
46 | bool skip_missing; | 46 | bool skip_missing; |
47 | bool has_br_stack; | 47 | bool has_br_stack; |
48 | bool group_set; | ||
48 | const char *sym_hist_filter; | 49 | const char *sym_hist_filter; |
49 | const char *cpu_list; | 50 | const char *cpu_list; |
50 | DECLARE_BITMAP(cpu_bitmap, MAX_NR_CPUS); | 51 | DECLARE_BITMAP(cpu_bitmap, MAX_NR_CPUS); |
@@ -508,6 +509,9 @@ int cmd_annotate(int argc, const char **argv) | |||
508 | "Don't shorten the displayed pathnames"), | 509 | "Don't shorten the displayed pathnames"), |
509 | OPT_BOOLEAN(0, "skip-missing", &annotate.skip_missing, | 510 | OPT_BOOLEAN(0, "skip-missing", &annotate.skip_missing, |
510 | "Skip symbols that cannot be annotated"), | 511 | "Skip symbols that cannot be annotated"), |
512 | OPT_BOOLEAN_SET(0, "group", &symbol_conf.event_group, | ||
513 | &annotate.group_set, | ||
514 | "Show event group information together"), | ||
511 | OPT_STRING('C', "cpu", &annotate.cpu_list, "cpu", "list of cpus to profile"), | 515 | OPT_STRING('C', "cpu", &annotate.cpu_list, "cpu", "list of cpus to profile"), |
512 | OPT_CALLBACK(0, "symfs", NULL, "directory", | 516 | OPT_CALLBACK(0, "symfs", NULL, "directory", |
513 | "Look for files with symbols relative to this directory", | 517 | "Look for files with symbols relative to this directory", |
@@ -570,6 +574,9 @@ int cmd_annotate(int argc, const char **argv) | |||
570 | annotate.has_br_stack = perf_header__has_feat(&annotate.session->header, | 574 | annotate.has_br_stack = perf_header__has_feat(&annotate.session->header, |
571 | HEADER_BRANCH_STACK); | 575 | HEADER_BRANCH_STACK); |
572 | 576 | ||
577 | if (annotate.group_set) | ||
578 | perf_evlist__force_leader(annotate.session->evlist); | ||
579 | |||
573 | ret = symbol__annotation_init(); | 580 | ret = symbol__annotation_init(); |
574 | if (ret < 0) | 581 | if (ret < 0) |
575 | goto out_delete; | 582 | goto out_delete; |