]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
perf riscv: fix register name strings
authorMartin Kaiser <martin@kaiser.cx>
Tue, 9 Jun 2026 08:13:09 +0000 (10:13 +0200)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Wed, 10 Jun 2026 19:54:41 +0000 (16:54 -0300)
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: a90c4519186dfc08 ("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>
Cc: Ian Rogers <irogers@google.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/arch/riscv/include/dwarf-regs-table.h

index 009a4e3c51ab39b7516c1b6ad68e4d823306d266..8c42806d34f1a7b066d73d033c5cda65a6470d04 100644 (file)
@@ -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),