diff options
| author | Martin Kaiser <martin@kaiser.cx> | 2026-06-09 10:13:09 +0200 |
|---|---|---|
| committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2026-06-10 16:54:41 -0300 |
| commit | 8d28a56cae9b298a351b361d8d374cb4a9089e3f (patch) | |
| tree | e61b138914223f2fcb32ff38ff0c2a8fbbe79557 /tools | |
| parent | d5312a7ef79f5de574bce7b140ea1e48ce7e9262 (diff) | |
| download | linux-next-8d28a56cae9b298a351b361d8d374cb4a9089e3f.tar.gz linux-next-8d28a56cae9b298a351b361d8d374cb4a9089e3f.zip | |
perf riscv: fix register name strings
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>
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/perf/arch/riscv/include/dwarf-regs-table.h | 2 |
1 files changed, 1 insertions, 1 deletions
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), |
