lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<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

Powered by Openwall GNU/*/Linux Powered by OpenVZ