diff options
Diffstat (limited to 'tools/perf/ui/browsers/annotate.c')
| -rw-r--r-- | tools/perf/ui/browsers/annotate.c | 25 | 
1 files changed, 12 insertions, 13 deletions
diff --git a/tools/perf/ui/browsers/annotate.c b/tools/perf/ui/browsers/annotate.c index 82207db8f97c..992705c78bd0 100644 --- a/tools/perf/ui/browsers/annotate.c +++ b/tools/perf/ui/browsers/annotate.c @@ -410,7 +410,7 @@ static bool annotate_browser__callq(struct annotate_browser *browser,  				    struct evsel *evsel,  				    struct hist_browser_timer *hbt)  { -	struct map_symbol *ms = browser->b.priv; +	struct map_symbol *ms = browser->b.priv, target_ms;  	struct disasm_line *dl = disasm_line(browser->selection);  	struct annotation *notes;  	char title[SYM_TITLE_MAX_SIZE]; @@ -430,8 +430,11 @@ static bool annotate_browser__callq(struct annotate_browser *browser,  		return true;  	} +	target_ms.mg  = ms->mg; +	target_ms.map = ms->map; +	target_ms.sym = dl->ops.target.sym;  	pthread_mutex_unlock(¬es->lock); -	symbol__tui_annotate(dl->ops.target.sym, ms->map, evsel, hbt, browser->opts); +	symbol__tui_annotate(&target_ms, evsel, hbt, browser->opts);  	sym_title(ms->sym, ms->map, title, sizeof(title), browser->opts->percent_type);  	ui_browser__show_title(&browser->b, title);  	return true; @@ -874,7 +877,7 @@ int map_symbol__tui_annotate(struct map_symbol *ms, struct evsel *evsel,  			     struct hist_browser_timer *hbt,  			     struct annotation_options *opts)  { -	return symbol__tui_annotate(ms->sym, ms->map, evsel, hbt, opts); +	return symbol__tui_annotate(ms, evsel, hbt, opts);  }  int hist_entry__tui_annotate(struct hist_entry *he, struct evsel *evsel, @@ -888,16 +891,12 @@ int hist_entry__tui_annotate(struct hist_entry *he, struct evsel *evsel,  	return map_symbol__tui_annotate(&he->ms, evsel, hbt, opts);  } -int symbol__tui_annotate(struct symbol *sym, struct map *map, -			 struct evsel *evsel, +int symbol__tui_annotate(struct map_symbol *ms, struct evsel *evsel,  			 struct hist_browser_timer *hbt,  			 struct annotation_options *opts)  { +	struct symbol *sym = ms->sym;  	struct annotation *notes = symbol__annotation(sym); -	struct map_symbol ms = { -		.map = map, -		.sym = sym, -	};  	struct annotate_browser browser = {  		.b = {  			.refresh = annotate_browser__refresh, @@ -905,7 +904,7 @@ int symbol__tui_annotate(struct symbol *sym, struct map *map,  			.write	 = annotate_browser__write,  			.filter  = disasm_line__filter,  			.extra_title_lines = 1, /* for hists__scnprintf_title() */ -			.priv	 = &ms, +			.priv	 = ms,  			.use_navkeypressed = true,  		},  		.opts = opts, @@ -915,13 +914,13 @@ int symbol__tui_annotate(struct symbol *sym, struct map *map,  	if (sym == NULL)  		return -1; -	if (map->dso->annotate_warned) +	if (ms->map->dso->annotate_warned)  		return -1; -	err = symbol__annotate2(sym, map, evsel, opts, &browser.arch); +	err = symbol__annotate2(ms, evsel, opts, &browser.arch);  	if (err) {  		char msg[BUFSIZ]; -		symbol__strerror_disassemble(sym, map, err, msg, sizeof(msg)); +		symbol__strerror_disassemble(ms, err, msg, sizeof(msg));  		ui__error("Couldn't annotate %s:\n%s", sym->name, msg);  		goto out_free_offsets;  	}  | 
