[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAP-5=fWH=KnJwO-LRgkYh4cBmY+9R4V+N=N7qa9XU0_xWRQqDg@mail.gmail.com>
Date: Fri, 25 Jul 2025 17:38:37 -0700
From: Ian Rogers <irogers@...gle.com>
To: Namhyung Kim <namhyung@...nel.org>
Cc: Arnaldo Carvalho de Melo <acme@...nel.org>, Kan Liang <kan.liang@...ux.intel.com>,
Jiri Olsa <jolsa@...nel.org>, Adrian Hunter <adrian.hunter@...el.com>,
Peter Zijlstra <peterz@...radead.org>, Ingo Molnar <mingo@...nel.org>,
LKML <linux-kernel@...r.kernel.org>, linux-perf-users@...r.kernel.org
Subject: Re: [PATCH v4 7/9] perf annotate: Show warning when debuginfo is not available
On Fri, Jul 25, 2025 at 12:38 PM Namhyung Kim <namhyung@...nel.org> wrote:
>
> When user requests data-type annotation but no DWARF info is available,
> show a warning message about it.
>
> Warning:
> DWARF debuginfo not found.
>
> Data-type in this DSO will not be displayed.
> Please make sure to have debug information.
>
> Press any key...
>
> Signed-off-by: Namhyung Kim <namhyung@...nel.org>
> ---
> tools/perf/ui/browsers/annotate.c | 17 +++++++++++++++++
> tools/perf/util/dso.h | 11 +++++++++++
> 2 files changed, 28 insertions(+)
>
> diff --git a/tools/perf/ui/browsers/annotate.c b/tools/perf/ui/browsers/annotate.c
> index 4b059e0bafd33fcf..2a4db5bdcdb7e9d8 100644
> --- a/tools/perf/ui/browsers/annotate.c
> +++ b/tools/perf/ui/browsers/annotate.c
> @@ -804,6 +804,20 @@ static int annotate__scnprintf_title(struct hists *hists, char *bf, size_t size)
> return printed;
> }
>
> +static void annotate_browser__debuginfo_warning(struct annotate_browser *browser)
> +{
> + struct map_symbol *ms = browser->b.priv;
> + struct dso *dso = map__dso(ms->map);
> +
> + if (browser->dbg == NULL && annotate_opts.code_with_type &&
> + !dso__debuginfo_warned(dso)) {
> + ui__warning("DWARF debuginfo not found.\n\n"
> + "Data-type in this DSO will not be displayed.\n"
> + "Please make sure to have debug information.");
> + dso__set_debuginfo_warned(dso);
If there is a dso__debuginfo then this could be encapsulated there, ie
the browser wouldn't need to change dso variables it'd just be a
property of calling dso__debuginfo.
Thanks,
Ian
> + }
> +}
> +
> static int annotate_browser__run(struct annotate_browser *browser,
> struct evsel *evsel,
> struct hist_browser_timer *hbt)
> @@ -834,6 +848,8 @@ static int annotate_browser__run(struct annotate_browser *browser,
>
> annotation_br_cntr_abbr_list(&br_cntr_text, evsel, false);
>
> + annotate_browser__debuginfo_warning(browser);
> +
> while (1) {
> key = ui_browser__run(&browser->b, delay_secs);
>
> @@ -1028,6 +1044,7 @@ static int annotate_browser__run(struct annotate_browser *browser,
> if (browser->dbg == NULL)
> browser->dbg = debuginfo__new(dso__long_name(map__dso(ms->map)));
> annotate_browser__show(&browser->b, title, help);
> + annotate_browser__debuginfo_warning(browser);
> continue;
> case K_LEFT:
> case '<':
> diff --git a/tools/perf/util/dso.h b/tools/perf/util/dso.h
> index 3457d713d3c56df6..7df1673f08d3ddb4 100644
> --- a/tools/perf/util/dso.h
> +++ b/tools/perf/util/dso.h
> @@ -299,6 +299,7 @@ DECLARE_RC_STRUCT(dso) {
> u8 hit:1;
> u8 annotate_warned:1;
> u8 auxtrace_warned:1;
> + u8 debuginfo_warned:1;
> u8 short_name_allocated:1;
> u8 long_name_allocated:1;
> u8 is_64_bit:1;
> @@ -362,6 +363,16 @@ static inline void dso__set_annotate_warned(struct dso *dso)
> RC_CHK_ACCESS(dso)->annotate_warned = 1;
> }
>
> +static inline bool dso__debuginfo_warned(const struct dso *dso)
> +{
> + return RC_CHK_ACCESS(dso)->debuginfo_warned;
> +}
> +
> +static inline void dso__set_debuginfo_warned(struct dso *dso)
> +{
> + RC_CHK_ACCESS(dso)->debuginfo_warned = 1;
> +}
> +
> static inline bool dso__auxtrace_warned(const struct dso *dso)
> {
> return RC_CHK_ACCESS(dso)->auxtrace_warned;
> --
> 2.50.1
>
Powered by blists - more mailing lists