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>
This commit is contained in:
parent
a26bb0ba70
commit
7ebaf4890f
@ -45,6 +45,7 @@ struct perf_annotate {
|
|||||||
bool print_line;
|
bool print_line;
|
||||||
bool skip_missing;
|
bool skip_missing;
|
||||||
bool has_br_stack;
|
bool has_br_stack;
|
||||||
|
bool group_set;
|
||||||
const char *sym_hist_filter;
|
const char *sym_hist_filter;
|
||||||
const char *cpu_list;
|
const char *cpu_list;
|
||||||
DECLARE_BITMAP(cpu_bitmap, MAX_NR_CPUS);
|
DECLARE_BITMAP(cpu_bitmap, MAX_NR_CPUS);
|
||||||
@ -508,6 +509,9 @@ int cmd_annotate(int argc, const char **argv)
|
|||||||
"Don't shorten the displayed pathnames"),
|
"Don't shorten the displayed pathnames"),
|
||||||
OPT_BOOLEAN(0, "skip-missing", &annotate.skip_missing,
|
OPT_BOOLEAN(0, "skip-missing", &annotate.skip_missing,
|
||||||
"Skip symbols that cannot be annotated"),
|
"Skip symbols that cannot be annotated"),
|
||||||
|
OPT_BOOLEAN_SET(0, "group", &symbol_conf.event_group,
|
||||||
|
&annotate.group_set,
|
||||||
|
"Show event group information together"),
|
||||||
OPT_STRING('C', "cpu", &annotate.cpu_list, "cpu", "list of cpus to profile"),
|
OPT_STRING('C', "cpu", &annotate.cpu_list, "cpu", "list of cpus to profile"),
|
||||||
OPT_CALLBACK(0, "symfs", NULL, "directory",
|
OPT_CALLBACK(0, "symfs", NULL, "directory",
|
||||||
"Look for files with symbols relative to this directory",
|
"Look for files with symbols relative to this directory",
|
||||||
@ -570,6 +574,9 @@ int cmd_annotate(int argc, const char **argv)
|
|||||||
annotate.has_br_stack = perf_header__has_feat(&annotate.session->header,
|
annotate.has_br_stack = perf_header__has_feat(&annotate.session->header,
|
||||||
HEADER_BRANCH_STACK);
|
HEADER_BRANCH_STACK);
|
||||||
|
|
||||||
|
if (annotate.group_set)
|
||||||
|
perf_evlist__force_leader(annotate.session->evlist);
|
||||||
|
|
||||||
ret = symbol__annotation_init();
|
ret = symbol__annotation_init();
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
goto out_delete;
|
goto out_delete;
|
||||||
|
Loading…
Reference in New Issue
Block a user