All of lore.kernel.org
 help / color / mirror / Atom feed
From: Namhyung Kim <namhyung@kernel.org>
To: Ian Rogers <irogers@google.com>
Cc: Masami Hiramatsu <mhiramat@kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@redhat.com>,
	Arnaldo Carvalho de Melo <acme@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Jiri Olsa <jolsa@kernel.org>,
	Adrian Hunter <adrian.hunter@intel.com>,
	Kan Liang <kan.liang@linux.intel.com>,
	John Garry <john.g.garry@oracle.com>,
	Will Deacon <will@kernel.org>,
	James Clark <james.clark@linaro.org>,
	Mike Leach <mike.leach@linaro.org>, Leo Yan <leo.yan@linux.dev>,
	Guo Ren <guoren@kernel.org>,
	Paul Walmsley <paul.walmsley@sifive.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Albert Ou <aou@eecs.berkeley.edu>, Nick Terrell <terrelln@fb.com>,
	Guilherme Amadio <amadio@gentoo.org>,
	Changbin Du <changbin.du@huawei.com>,
	"Steinar H. Gunderson" <sesse@google.com>,
	Aditya Gupta <adityag@linux.ibm.com>,
	Athira Rajeev <atrajeev@linux.vnet.ibm.com>,
	Masahiro Yamada <masahiroy@kernel.org>,
	Huacai Chen <chenhuacai@kernel.org>,
	Bibo Mao <maobibo@loongson.cn>, Kajol Jain <kjain@linux.ibm.com>,
	Anup Patel <anup@brainfault.org>,
	Shenlin Liang <liangshenlin@eswincomputing.com>,
	Atish Patra <atishp@rivosinc.com>,
	Oliver Upton <oliver.upton@linux.dev>,
	Chen Pei <cp0613@linux.alibaba.com>,
	Dima Kogan <dima@secretsauce.net>,
	Alexander Lobakin <aleksander.lobakin@intel.com>,
	"David S. Miller" <davem@davemloft.net>,
	Przemek Kitszel <przemyslaw.kitszel@intel.com>,
	linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
	Yang Jihong <yangjihong@bytedance.com>
Subject: Re: [PATCH v1 11/11] perf build: Rename PERF_HAVE_DWARF_REGS to PERF_HAVE_LIBDW_REGS
Date: Thu, 3 Oct 2024 15:48:02 -0700	[thread overview]
Message-ID: <Zv8fIh4jaY7QbeDZ@google.com> (raw)
In-Reply-To: <CAP-5=fWoiD=7XbB3FbE++1RSo3BZKeOOyNg81t4GQ7Ve6ejpSg@mail.gmail.com>

On Wed, Oct 02, 2024 at 07:27:16AM -0700, Ian Rogers wrote:
> On Wed, Oct 2, 2024 at 6:56 AM Masami Hiramatsu <mhiramat@kernel.org> wrote:
> >
> > On Tue, 1 Oct 2024 18:31:43 -0700
> > Ian Rogers <irogers@google.com> wrote:
> >
> > > On Tue, Oct 1, 2024 at 4:29 PM Masami Hiramatsu <mhiramat@kernel.org> wrote:
> > > >
> > > > On Tue, 1 Oct 2024 16:17:34 -0700
> > > > Ian Rogers <irogers@google.com> wrote:
> > > >
> > > > > On Tue, Oct 1, 2024 at 4:10 PM Namhyung Kim <namhyung@kernel.org> wrote:
> > > > > >
> > > > > > On Mon, Sep 30, 2024 at 09:02:36PM -0700, Ian Rogers wrote:
> > > > > > > On Sat, Sep 28, 2024 at 7:35 PM Masami Hiramatsu <mhiramat@kernel.org> wrote:
> > > > > > > >
> > > > > > > > On Fri, 27 Sep 2024 11:15:21 -0700
> > > > > > > > Ian Rogers <irogers@google.com> wrote:
> > > > > > > >
> > > > > > > > > On Fri, Sep 27, 2024 at 10:16 AM Namhyung Kim <namhyung@kernel.org> wrote:
> > > > > > > > > >
> > > > > > > > > > On Thu, Sep 26, 2024 at 12:55:18PM -0700, Ian Rogers wrote:
> > > > > > > > > > > On Thu, Sep 26, 2024 at 12:40 PM Namhyung Kim <namhyung@kernel.org> wrote:
> > > > > > > > > > > >
> > > > > > > > > > > > On Thu, Sep 26, 2024 at 05:47:16AM -0700, Ian Rogers wrote:
> > > > > > > > > > > > > On Wed, Sep 25, 2024 at 8:27 PM Namhyung Kim <namhyung@kernel.org> wrote:
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > On Tue, Sep 24, 2024 at 09:04:18AM -0700, Ian Rogers wrote:
> > > > > > > > > > > > > > > The name dwarf can imply libunwind support, whereas
> > > > > > > > > > > > > > > PERF_HAVE_DWARF_REGS is only enabled with libdw support. Rename to
> > > > > > > > > > > > > > > make it clearer there is a libdw connection.
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > While it only covers libdw, I think the idea of this macro is whether
> > > > > > > > > > > > > > the arch has register mappings defined in DWARF standard.  So I think
> > > > > > > > > > > > > > it's better to keep the name for this case.
> > > > > > > > > > > > >
> > > > > > > > > > > > > How can the dwarf standard exist for an arch but not define registers?
> > > > > > > > > > > >
> > > > > > > > > > > > I meant it's about the arch code in the perf tools to have the mapping,
> > > > > > > > > > > > not the DWARF standard itself.
> > > > > > > > > > >
> > > > > > > > > > > But we guard those definitions behind having libdw:
> > > > > > > > > > > https://git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools-next.git/tree/tools/perf/arch/x86/Makefile?h=perf-tools-next#n3
> > > > > > > > > > > So we only have the regs if libdw is present, not if dwarf is in use
> > > > > > > > > > > for libunwind/libdw. Hence wanting to be specific that they are just a
> > > > > > > > > > > libdw and not a dwarf thing. Trying to use the regs in libunwind code
> > > > > > > > > > > would be broken. That could change but I wanted to make the code clear
> > > > > > > > > > > for the way things are at the moment.
> > > > > > > > > >
> > > > > > > > > > I understand your point but calling it LIBDW_REGS looks unnatural to me.
> > > > > > > > >
> > > > > > > > > I don't follow. Wouldn't it be unnatural to see PERF_HAVE_DWARF_REGS
> > > > > > > > > in libunwind code but you are to some how know that the code only had
> > > > > > > > > meaning if libdw was present? I don't like the implication that DWARF
> > > > > > > > > means LIBDW as throughout the code it doesn't. I think the name
> > > > > > > > > PERF_HAVE_LIBDW_REGS better captures how the code is, makes the code
> > > > > > > > > more intention revealing and so readable, etc.
> > > > > > > >
> > > > > > > > I agree with Namhyung this point. dwarf-regs is defined only by the
> > > > > > > > DWARF standard, not libdw only. The standard encode registers by a digit
> > > > > > > > number and the dwarf-regs decode the number to actual register name.
> > > > > > >
> > > > > > > The code is not making a statement about the DWARF standard, take arch/csky:
> > > > > > > https://git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools-next.git/tree/tools/perf/arch/csky/Makefile?h=perf-tools-next
> > > > > > > ```
> > > > > > > # SPDX-License-Identifier: GPL-2.0-only
> > > > > > > ifndef NO_DWARF
> > > > > > > PERF_HAVE_DWARF_REGS := 1
> > > > > > > endif
> > > > > > > ```
> > > > > > > in the patch series NO_DWARF becomes NO_LIBDW, so it is now:
> > > > > > > ```
> > > > > > > # SPDX-License-Identifier: GPL-2.0-only
> > > > > > > ifndef NO_LIBDW
> > > > > > > PERF_HAVE_DWARF_REGS := 1
> > > > > > > endif
> > > > > > > ```
> > > > > > > So the Makefile says that PERF_HAVE_DWARF_REGS is dependent on having
> > > > > > > NO_LIBDW, that is having libdw implies PERF_HAVE_DWARF_REGS is defined
> > > > > > > for csky.
> > > > > >
> > > > > > I think this is totally fine and we can change the condition later if
> > > > > > needed.
> > > > > >
> > > > > > After all, I don't think it's a big deal.  Let's just call DWARF
> > > > > > registers DWARF_REGS. :)
> > > > >
> > > > > The define is called PERF_HAVE_DWARF_REGS, notice the HAVE, but we're
> > > > > not setting it while supporting call-graph dwarf with libunwind. It is
> > > > > actively confusing.
> > > >
> > > > Does libunwind requires the dwarf regs? I think the dwarf regs information
> > > > is only needed for analyzing dwarf register assignment, not stack unwinding.
> > >
> > > So you are saying the #define is guarding a libdw feature?
> > > perf record/report --call-graph=dwarf is supported with either libdw
> > > or libunwind. The dwarf support in the tool may come from more sources
> > > hence wanting in this patch set to be clear what variable is guarding
> > > what. PERF_HAVE_DWARF_REGS is set to 1 for a specific set of
> > > architectures and only when libdw is present. The variable is saying
> > > that libdw supports the notion of registers needed for the #define
> > > HAVE_DWARF_SUPPORT that patch 9 in the series renamed to
> > > HAVE_LIBDW_SUPPORT. So I want the makefile variable
> > > PERF_HAVE_LIBDW_REGS to guard the #define HAVE_LIBDW_SUPPORT, rather
> > > than what is being argued by yourself and Namhyung that the #define
> > > HAVE_LIBDW_SUPPORT be guarded by a variable called
> > > PERF_HAVE_DWARF_REGS and that is only set when NO_LIBDW isn't set.
> >
> > It will be only used with the libdw, but I don't care.
> > "HAVE_DWARF_REG" (internal config, just indicates the arch implemented
> > feature) simply means there is `arch/XXX/util/dwarf-regs.c`.
> > Also the APIs provided by the dwarf-regs.c are still based on DWARF
> > standard, which defines registers by number like DW_OP_reg[0-31].
> > So the mapping of these suffix number and actual register must be
> > defined for each architecture.
> >
> > That is why I had introduced dwarf-regs.c and call it "dwarf"-regs.
> > Even if the implementation depends on libdw, this dwarf-regs.c is
> > still based on DWARF standard.
> 
> You seem to be missing the point of the series which is to clean up
> inconsistencies where dwarf is used to mean libdw. Here we have libdw
> guarding a #define with DWARF in the name, it should have libdw in the
> name as the patch cleans up. This is a coding thing and not a dwarf
> specificatin thing.
> 
> > > We've made a digression into the name dwarf for a reason I can't
> > > fathom, at best it is inconsistent. Having dwarf registers is like
> > > having a bright sun or numeric numbers, it is a truism (playing devils
> > > advocate maybe if there were an ELF file format for postscript we
> > > could have a dwarf specification without registers). Anyway, I'm
> > > trying to connect the dots that libdw support controls the libdw type
> > > variables and defines hence not wanting 10 out of 11 patches applied.
> >
> > Oh, wait, I think we can apply other patches. I just don't like this
> > patch. I think the other patches are good. But this is
> 
> Then we are intentionally aiming to be inconsistent, with libdw
> meaning dwarf with a #define that just states a truism. Arguably the
> code is better with none of the series applied.

I agree renaming libdw-specific parts.  But the register is for DWARF,
not libdw even if it's currently used by libdw only.   So I don't want
to rename it.

Thanks,
Namhyung


  reply	other threads:[~2024-10-03 22:48 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-09-24 16:04 [PATCH v1 00/11] Libdw/dwarf build clean up Ian Rogers
2024-09-24 16:04 ` [PATCH v1 01/11] perf build: Rename NO_DWARF to NO_LIBDW Ian Rogers
2024-09-26  0:26   ` Namhyung Kim
2024-09-26 15:02     ` Ian Rogers
2024-09-26 19:28       ` Namhyung Kim
2024-09-29  2:01         ` Masami Hiramatsu
2024-09-29  2:01   ` Masami Hiramatsu
2024-09-24 16:04 ` [PATCH v1 02/11] perf build: Remove defined but never used variable Ian Rogers
2024-09-29  2:02   ` Masami Hiramatsu
2024-09-24 16:04 ` [PATCH v1 03/11] perf build: Rename test-dwarf to test-libdw Ian Rogers
2024-09-26  0:28   ` Namhyung Kim
2024-09-26 15:37     ` Ian Rogers
2024-09-26 18:23       ` Namhyung Kim
2024-09-29  2:06   ` Masami Hiramatsu
2024-09-24 16:04 ` [PATCH v1 04/11] perf build: Combine libdw-dwarf-unwind into libdw feature tests Ian Rogers
2024-09-24 16:04 ` [PATCH v1 05/11] perf build: Combine test-dwarf-getlocations into test-libdw Ian Rogers
2024-09-24 16:04 ` [PATCH v1 06/11] perf build: Combine test-dwarf-getcfi " Ian Rogers
2024-09-24 16:04 ` [PATCH v1 07/11] perf probe: Move elfutils support check to libdw check Ian Rogers
2024-09-26  0:29   ` Namhyung Kim
2024-09-26 15:08     ` Ian Rogers
2024-09-26 19:35       ` Namhyung Kim
2024-09-24 16:04 ` [PATCH v1 08/11] perf libdw: Remove unnecessary defines Ian Rogers
2024-09-29  2:10   ` Masami Hiramatsu
2024-09-24 16:04 ` [PATCH v1 09/11] perf build: Rename HAVE_DWARF_SUPPORT to HAVE_LIBDW_SUPPORT Ian Rogers
2024-09-26  0:34   ` Namhyung Kim
2024-09-26 15:10     ` Ian Rogers
2024-09-26 19:36       ` Namhyung Kim
2024-09-24 16:04 ` [PATCH v1 10/11] perf build: Rename CONFIG_DWARF to CONFIG_LIBDW Ian Rogers
2024-09-24 16:04 ` [PATCH v1 11/11] perf build: Rename PERF_HAVE_DWARF_REGS to PERF_HAVE_LIBDW_REGS Ian Rogers
2024-09-26  3:27   ` Namhyung Kim
2024-09-26 12:47     ` Ian Rogers
2024-09-26 19:39       ` Namhyung Kim
2024-09-26 19:55         ` Ian Rogers
2024-09-27 17:16           ` Namhyung Kim
2024-09-27 18:15             ` Ian Rogers
2024-09-29  2:35               ` Masami Hiramatsu
2024-10-01  4:02                 ` Ian Rogers
2024-10-01 23:09                   ` Namhyung Kim
2024-10-01 23:17                     ` Ian Rogers
2024-10-01 23:28                       ` Masami Hiramatsu
2024-10-02  1:31                         ` Ian Rogers
2024-10-02 13:56                           ` Masami Hiramatsu
2024-10-02 14:27                             ` Ian Rogers
2024-10-03 22:48                               ` Namhyung Kim [this message]
2024-10-04  0:58                                 ` Ian Rogers
2024-10-04  5:12                                   ` Namhyung Kim
2024-10-04 14:45                                     ` Masami Hiramatsu
2024-10-04 15:15                                       ` Ian Rogers
2024-10-04 19:23                                         ` Namhyung Kim
2024-10-04 14:32                                   ` Masami Hiramatsu
2024-09-24 19:44 ` [PATCH v1 00/11] Libdw/dwarf build clean up Leo Yan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Zv8fIh4jaY7QbeDZ@google.com \
    --to=namhyung@kernel.org \
    --cc=acme@kernel.org \
    --cc=adityag@linux.ibm.com \
    --cc=adrian.hunter@intel.com \
    --cc=aleksander.lobakin@intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=amadio@gentoo.org \
    --cc=anup@brainfault.org \
    --cc=aou@eecs.berkeley.edu \
    --cc=atishp@rivosinc.com \
    --cc=atrajeev@linux.vnet.ibm.com \
    --cc=changbin.du@huawei.com \
    --cc=chenhuacai@kernel.org \
    --cc=cp0613@linux.alibaba.com \
    --cc=davem@davemloft.net \
    --cc=dima@secretsauce.net \
    --cc=guoren@kernel.org \
    --cc=irogers@google.com \
    --cc=james.clark@linaro.org \
    --cc=john.g.garry@oracle.com \
    --cc=jolsa@kernel.org \
    --cc=kan.liang@linux.intel.com \
    --cc=kjain@linux.ibm.com \
    --cc=leo.yan@linux.dev \
    --cc=liangshenlin@eswincomputing.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=maobibo@loongson.cn \
    --cc=mark.rutland@arm.com \
    --cc=masahiroy@kernel.org \
    --cc=mhiramat@kernel.org \
    --cc=mike.leach@linaro.org \
    --cc=mingo@redhat.com \
    --cc=oliver.upton@linux.dev \
    --cc=palmer@dabbelt.com \
    --cc=paul.walmsley@sifive.com \
    --cc=peterz@infradead.org \
    --cc=przemyslaw.kitszel@intel.com \
    --cc=sesse@google.com \
    --cc=terrelln@fb.com \
    --cc=will@kernel.org \
    --cc=yangjihong@bytedance.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.