diff options
Diffstat (limited to 'tools/perf/ui/browsers/annotate.c')
| -rw-r--r-- | tools/perf/ui/browsers/annotate.c | 23 | 
1 files changed, 14 insertions, 9 deletions
diff --git a/tools/perf/ui/browsers/annotate.c b/tools/perf/ui/browsers/annotate.c index e81c2493efdf..44ba900828f6 100644 --- a/tools/perf/ui/browsers/annotate.c +++ b/tools/perf/ui/browsers/annotate.c @@ -966,6 +966,7 @@ int symbol__tui_annotate(struct map_symbol *ms, struct evsel *evsel,  		.opts = opts,  	};  	int ret = -1, err; +	int not_annotated = list_empty(¬es->src->source);  	if (sym == NULL)  		return -1; @@ -973,13 +974,15 @@ int symbol__tui_annotate(struct map_symbol *ms, struct evsel *evsel,  	if (ms->map->dso->annotate_warned)  		return -1; -	err = symbol__annotate2(ms, evsel, opts, &browser.arch); -	if (err) { -		char msg[BUFSIZ]; -		ms->map->dso->annotate_warned = true; -		symbol__strerror_disassemble(ms, err, msg, sizeof(msg)); -		ui__error("Couldn't annotate %s:\n%s", sym->name, msg); -		goto out_free_offsets; +	if (not_annotated) { +		err = symbol__annotate2(ms, evsel, opts, &browser.arch); +		if (err) { +			char msg[BUFSIZ]; +			ms->map->dso->annotate_warned = true; +			symbol__strerror_disassemble(ms, err, msg, sizeof(msg)); +			ui__error("Couldn't annotate %s:\n%s", sym->name, msg); +			goto out_free_offsets; +		}  	}  	ui_helpline__push("Press ESC to exit"); @@ -994,9 +997,11 @@ int symbol__tui_annotate(struct map_symbol *ms, struct evsel *evsel,  	ret = annotate_browser__run(&browser, evsel, hbt); -	annotated_source__purge(notes->src); +	if(not_annotated) +		annotated_source__purge(notes->src);  out_free_offsets: -	zfree(¬es->offsets); +	if(not_annotated) +		zfree(¬es->offsets);  	return ret;  }  |