All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/2] perf: riscv: fix register name strings
@ 2026-06-09  8:13 Martin Kaiser
  2026-06-09  8:13 ` [PATCH v2 1/2] perf: avoid redefinition warnings for REG_DWARFNUM_NAME Martin Kaiser
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Martin Kaiser @ 2026-06-09  8:13 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo, Namhyung Kim, Ian Rogers
  Cc: linux-perf-users, linux-kernel, Martin Kaiser

Fix the register name strings for risc-v to match the syntax for kprobes.

This requires redefining REG_DWARFNUM_NAME. Make sure that different
definitions for different architectures don't create compiler warnings.

Martin Kaiser (2):
  perf: avoid redefinition warnings for REG_DWARFNUM_NAME
  perf riscv: fix register name strings

 tools/perf/arch/powerpc/include/dwarf-regs-table.h | 1 +
 tools/perf/arch/riscv/include/dwarf-regs-table.h   | 3 ++-
 tools/perf/arch/s390/include/dwarf-regs-table.h    | 1 +
 3 files changed, 4 insertions(+), 1 deletion(-)

-- 
2.43.7


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH v2 1/2] perf: avoid redefinition warnings for REG_DWARFNUM_NAME
  2026-06-09  8:13 [PATCH v2 0/2] perf: riscv: fix register name strings Martin Kaiser
@ 2026-06-09  8:13 ` Martin Kaiser
  2026-06-09  8:13 ` [PATCH v2 2/2] perf riscv: fix register name strings Martin Kaiser
  2026-06-10 19:55 ` [PATCH v2 0/2] perf: " Arnaldo Carvalho de Melo
  2 siblings, 0 replies; 4+ messages in thread
From: Martin Kaiser @ 2026-06-09  8:13 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo, Namhyung Kim, Ian Rogers
  Cc: linux-perf-users, linux-kernel, Martin Kaiser,
	Arnaldo Carvalho de Melo

dwarf-regs.c includes an arch-specific dwarf-regs-table.h for several
architectures. This pulls in different definitions of REG_DWARFNUM_NAME
and causes compiler warnings for W=1 builds.

In file included from util/dwarf-regs.c:23:
.../dwarf-regs-table.h:5: error: "REG_DWARFNUM_NAME" redefined [-Werror]
 #define REG_DWARFNUM_NAME(reg, idx) [idx] = reg

Undefine REG_DWARFNUM_NAME before each new definition.

Suggested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Martin Kaiser <martin@kaiser.cx>
---

Arnaldo: I've now gotten to the same point as you. We need two separate
patches ;-)

 tools/perf/arch/powerpc/include/dwarf-regs-table.h | 1 +
 tools/perf/arch/riscv/include/dwarf-regs-table.h   | 1 +
 tools/perf/arch/s390/include/dwarf-regs-table.h    | 1 +
 3 files changed, 3 insertions(+)

diff --git a/tools/perf/arch/powerpc/include/dwarf-regs-table.h b/tools/perf/arch/powerpc/include/dwarf-regs-table.h
index 66dc015a733d..7e746cb31b66 100644
--- a/tools/perf/arch/powerpc/include/dwarf-regs-table.h
+++ b/tools/perf/arch/powerpc/include/dwarf-regs-table.h
@@ -7,6 +7,7 @@
  * http://refspecs.linuxfoundation.org/ELF/ppc64/PPC-elf64abi-1.9.html
  * http://refspecs.linux-foundation.org/elf/elfspec_ppc.pdf
  */
+#undef REG_DWARFNUM_NAME
 #define REG_DWARFNUM_NAME(reg, idx)	[idx] = "%" #reg
 
 static const char * const powerpc_regstr_tbl[] = {
diff --git a/tools/perf/arch/riscv/include/dwarf-regs-table.h b/tools/perf/arch/riscv/include/dwarf-regs-table.h
index a45b63a6d5a8..009a4e3c51ab 100644
--- a/tools/perf/arch/riscv/include/dwarf-regs-table.h
+++ b/tools/perf/arch/riscv/include/dwarf-regs-table.h
@@ -2,6 +2,7 @@
 #ifdef DEFINE_DWARF_REGSTR_TABLE
 /* This is included in perf/util/dwarf-regs.c */
 
+#undef REG_DWARFNUM_NAME
 #define REG_DWARFNUM_NAME(reg, idx)	[idx] = "%" #reg
 
 static const char * const riscv_regstr_tbl[] = {
diff --git a/tools/perf/arch/s390/include/dwarf-regs-table.h b/tools/perf/arch/s390/include/dwarf-regs-table.h
index 671553525f41..e90b63157702 100644
--- a/tools/perf/arch/s390/include/dwarf-regs-table.h
+++ b/tools/perf/arch/s390/include/dwarf-regs-table.h
@@ -2,6 +2,7 @@
 #ifndef S390_DWARF_REGS_TABLE_H
 #define S390_DWARF_REGS_TABLE_H
 
+#undef REG_DWARFNUM_NAME
 #define REG_DWARFNUM_NAME(reg, idx)	[idx] = "%" #reg
 
 /*
-- 
2.43.7


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH v2 2/2] perf riscv: fix register name strings
  2026-06-09  8:13 [PATCH v2 0/2] perf: riscv: fix register name strings Martin Kaiser
  2026-06-09  8:13 ` [PATCH v2 1/2] perf: avoid redefinition warnings for REG_DWARFNUM_NAME Martin Kaiser
@ 2026-06-09  8:13 ` Martin Kaiser
  2026-06-10 19:55 ` [PATCH v2 0/2] perf: " Arnaldo Carvalho de Melo
  2 siblings, 0 replies; 4+ messages in thread
From: Martin Kaiser @ 2026-06-09  8:13 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo, Namhyung Kim, Ian Rogers
  Cc: linux-perf-users, linux-kernel, Martin Kaiser

On risc-v, pref probe generates an invalid syntax for a named register in
a kprobe.

$ perf probe --debug verbose --add "n_tty_write tty"
...
Writing event: p:probe/n_tty_write _text+8922528 tty=%"%a0":x64
Failed to write event: Invalid argument

The problem is the combination of

   #define REG_DWARFNUM_NAME(reg, idx) [idx] = "%" #reg

and entries such as

   REG_DWARFNUM_NAME("%a0", 10)

where #reg will escape the quotes of the first macro parameter.

Update the macro definition to produce the correct syntax for a named
register in a kprobe, i.e. the unquoted register name with only one
leading %.

Fixes: a90c4519186d ("perf riscv: Remove dwarf-regs.c and add dwarf-regs-table.h")
Reviewed-by: Ian Rogers <irogers@google.com>
Signed-off-by: Martin Kaiser <martin@kaiser.cx>
---
 tools/perf/arch/riscv/include/dwarf-regs-table.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/perf/arch/riscv/include/dwarf-regs-table.h b/tools/perf/arch/riscv/include/dwarf-regs-table.h
index 009a4e3c51ab..8c42806d34f1 100644
--- a/tools/perf/arch/riscv/include/dwarf-regs-table.h
+++ b/tools/perf/arch/riscv/include/dwarf-regs-table.h
@@ -3,7 +3,7 @@
 /* This is included in perf/util/dwarf-regs.c */
 
 #undef REG_DWARFNUM_NAME
-#define REG_DWARFNUM_NAME(reg, idx)	[idx] = "%" #reg
+#define REG_DWARFNUM_NAME(reg, idx)	[idx] = reg
 
 static const char * const riscv_regstr_tbl[] = {
 	REG_DWARFNUM_NAME("%zero", 0),
-- 
2.43.7


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH v2 0/2] perf: riscv: fix register name strings
  2026-06-09  8:13 [PATCH v2 0/2] perf: riscv: fix register name strings Martin Kaiser
  2026-06-09  8:13 ` [PATCH v2 1/2] perf: avoid redefinition warnings for REG_DWARFNUM_NAME Martin Kaiser
  2026-06-09  8:13 ` [PATCH v2 2/2] perf riscv: fix register name strings Martin Kaiser
@ 2026-06-10 19:55 ` Arnaldo Carvalho de Melo
  2 siblings, 0 replies; 4+ messages in thread
From: Arnaldo Carvalho de Melo @ 2026-06-10 19:55 UTC (permalink / raw)
  To: Martin Kaiser; +Cc: Namhyung Kim, Ian Rogers, linux-perf-users, linux-kernel

On Tue, Jun 09, 2026 at 10:13:07AM +0200, Martin Kaiser wrote:
> Fix the register name strings for risc-v to match the syntax for kprobes.
> 
> This requires redefining REG_DWARFNUM_NAME. Make sure that different
> definitions for different architectures don't create compiler warnings.

Thanks, applied to perf-tools-next, for v7.2.

- Arnaldo
 
> Martin Kaiser (2):
>   perf: avoid redefinition warnings for REG_DWARFNUM_NAME
>   perf riscv: fix register name strings
> 
>  tools/perf/arch/powerpc/include/dwarf-regs-table.h | 1 +
>  tools/perf/arch/riscv/include/dwarf-regs-table.h   | 3 ++-
>  tools/perf/arch/s390/include/dwarf-regs-table.h    | 1 +
>  3 files changed, 4 insertions(+), 1 deletion(-)
> 
> -- 
> 2.43.7

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2026-06-10 19:55 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-09  8:13 [PATCH v2 0/2] perf: riscv: fix register name strings Martin Kaiser
2026-06-09  8:13 ` [PATCH v2 1/2] perf: avoid redefinition warnings for REG_DWARFNUM_NAME Martin Kaiser
2026-06-09  8:13 ` [PATCH v2 2/2] perf riscv: fix register name strings Martin Kaiser
2026-06-10 19:55 ` [PATCH v2 0/2] perf: " Arnaldo Carvalho de Melo

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.