diff options
Diffstat (limited to 'tools/perf/builtin-annotate.c')
| -rw-r--r-- | tools/perf/builtin-annotate.c | 25 | 
1 files changed, 17 insertions, 8 deletions
| diff --git a/tools/perf/builtin-annotate.c b/tools/perf/builtin-annotate.c index 2e6961ea318..db491e9a812 100644 --- a/tools/perf/builtin-annotate.c +++ b/tools/perf/builtin-annotate.c @@ -63,7 +63,7 @@ static int perf_evsel__add_sample(struct perf_evsel *evsel,  		return 0;  	} -	he = __hists__add_entry(&evsel->hists, al, NULL, 1); +	he = __hists__add_entry(&evsel->hists, al, NULL, 1, 1);  	if (he == NULL)  		return -ENOMEM; @@ -109,14 +109,16 @@ static int process_sample_event(struct perf_tool *tool,  	return 0;  } -static int hist_entry__tty_annotate(struct hist_entry *he, int evidx, +static int hist_entry__tty_annotate(struct hist_entry *he, +				    struct perf_evsel *evsel,  				    struct perf_annotate *ann)  { -	return symbol__tty_annotate(he->ms.sym, he->ms.map, evidx, +	return symbol__tty_annotate(he->ms.sym, he->ms.map, evsel,  				    ann->print_line, ann->full_paths, 0, 0);  } -static void hists__find_annotations(struct hists *self, int evidx, +static void hists__find_annotations(struct hists *self, +				    struct perf_evsel *evsel,  				    struct perf_annotate *ann)  {  	struct rb_node *nd = rb_first(&self->entries), *next; @@ -142,14 +144,14 @@ find_next:  		if (use_browser == 2) {  			int ret; -			ret = hist_entry__gtk_annotate(he, evidx, NULL); +			ret = hist_entry__gtk_annotate(he, evsel, NULL);  			if (!ret || !ann->skip_missing)  				return;  			/* skip missing symbols */  			nd = rb_next(nd);  		} else if (use_browser == 1) { -			key = hist_entry__tui_annotate(he, evidx, NULL); +			key = hist_entry__tui_annotate(he, evsel, NULL);  			switch (key) {  			case -1:  				if (!ann->skip_missing) @@ -168,7 +170,7 @@ find_next:  			if (next != NULL)  				nd = next;  		} else { -			hist_entry__tty_annotate(he, evidx, ann); +			hist_entry__tty_annotate(he, evsel, ann);  			nd = rb_next(nd);  			/*  			 * Since we have a hist_entry per IP for the same @@ -230,7 +232,12 @@ static int __cmd_annotate(struct perf_annotate *ann)  			total_nr_samples += nr_samples;  			hists__collapse_resort(hists);  			hists__output_resort(hists); -			hists__find_annotations(hists, pos->idx, ann); + +			if (symbol_conf.event_group && +			    !perf_evsel__is_group_leader(pos)) +				continue; + +			hists__find_annotations(hists, pos, ann);  		}  	} @@ -312,6 +319,8 @@ int cmd_annotate(int argc, const char **argv, const char *prefix __maybe_unused)  		   "Specify disassembler style (e.g. -M intel for intel syntax)"),  	OPT_STRING(0, "objdump", &objdump_path, "path",  		   "objdump binary to use for disassembly and annotations"), +	OPT_BOOLEAN(0, "group", &symbol_conf.event_group, +		    "Show event group information together"),  	OPT_END()  	}; |