Linux Perf Users
 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox