perf report/top: Do not offer annotation for symbols without samples
A message that is not in the archive (sent off-list or not yet received): [email protected]
The following commit has been merged into the perf/core branch of tip:
Commit-ID: ea537f22f6e5b3e2026fc58419cc937d833b1a61 Gitweb: https://git.kernel.org/tip/ea537f22f6e5b3e2026fc58419cc937d833b1a61 Author: Arnaldo Carvalho de Melo <[email protected]> AuthorDate: Mon, 16 Dec 2019 18:21:16 -03:00 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitterDate: Mon, 06 Jan 2020 11:46:10 -03:00
perf report/top: Do not offer annotation for symbols without samples
This can happen in the --children mode, i.e. the default mode when callchains are present, where one of the main entries may be a callchain entry with no samples.
So far we were not providing any information about why an annotation couldn't be provided even offering the Annotation option in the popup menu.
Work is needed to allow for no-samples "annotation', i.e. to show the disassembly anyway and allow for navigation, etc.
Reviewed-by Jiri Olsa <[email protected]>
Cc Adrian Hunter <[email protected]>
Cc Andi Kleen <[email protected]>
Cc Jin Yao <[email protected]>
Cc Kan Liang <[email protected]>
Cc Linus Torvalds <[email protected]>
Cc Namhyung Kim <[email protected]>
Signed-off-by Arnaldo Carvalho de Melo <[email protected]>
--- tools/perf/ui/browsers/hists.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-)
tools/perf/ui/browsers/hists.c +10 -1
@@ -2465,7 +2465,8 @@ add_annotate_opt(struct hist_browser *browser __maybe_unused, struct popup_action *act, char **optstr, struct map_symbol *ms) { - if (ms->sym == NULL || ms->map->dso->annotate_warned) + if (ms->sym == NULL || ms->map->dso->annotate_warned || + symbol__annotation(ms->sym)->src == NULL) return 0; if (asprintf(optstr, "Annotate %s", ms->sym->name) < 0)
@@ -3031,6 +3032,14 @@ do_hotkey: // key came straight from options ui__popup_menu() browser->selection->map->dso->annotate_warned) continue; +if (symbol__annotation (browser->selection->sym)->src ==NULL ) { +ui_browser__warning (&browser->b, delay_secs *2 , +"No samples for the \"%s\" symbol.\n\n" +"Probably appeared just in a callchain" , + browser->selection->sym->name); +continue ; + } + actions->ms.map = browser->selection->map; actions->ms.sym = browser->selection->sym;do_annotate (browser, actions);