]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
perf report/top: Do not offer annotation for symbols without samples
authorArnaldo Carvalho de Melo <acme@redhat.com>
Mon, 16 Dec 2019 21:21:16 +0000 (18:21 -0300)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Mon, 6 Jan 2020 14:46:10 +0000 (11:46 -0300)
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 <jolsa@kernel.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Jin Yao <yao.jin@linux.intel.com>
Cc: Kan Liang <kan.liang@intel.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Link: https://lkml.kernel.org/n/tip-0hhzj2de15o88cguy7h66zre@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/ui/browsers/hists.c

index 8776b1cb29b73592446e5e8f64459d9bddff5a36..3bec8de89880846b42508d261891e6d8b267a917 100644 (file)
@@ -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 @@ static int perf_evsel__hists_browse(struct evsel *evsel, int nr_events,
                            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);