Message ID | 20241017002520.59124-15-irogers@google.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Remove PERF_HAVE_DWARF_REGS | expand |
On Wed, 16 Oct 2024 17:25:14 PDT (-0700), irogers@google.com wrote: > The file just provides the function get_arch_regstr, however, if in > the only caller get_dwarf_regstr EM_HOST is used for the EM_NONE case, > and the register table is provided in a header file, the function can > never be called. So remove as dead code. Tidy up the EM_NONE cases for > riscv in dwarf-regs.c. > > Signed-off-by: Ian Rogers <irogers@google.com> > --- > .../dwarf-regs-table.h} | 32 ++++--------------- > tools/perf/arch/riscv/util/Build | 1 - > tools/perf/util/dwarf-regs.c | 7 ++-- > tools/perf/util/include/dwarf-regs.h | 2 +- > 4 files changed, 12 insertions(+), 30 deletions(-) > rename tools/perf/arch/riscv/{util/dwarf-regs.c => include/dwarf-regs-table.h} (56%) > > diff --git a/tools/perf/arch/riscv/util/dwarf-regs.c b/tools/perf/arch/riscv/include/dwarf-regs-table.h > similarity index 56% > rename from tools/perf/arch/riscv/util/dwarf-regs.c > rename to tools/perf/arch/riscv/include/dwarf-regs-table.h > index a9c4402ae57e..a45b63a6d5a8 100644 > --- a/tools/perf/arch/riscv/util/dwarf-regs.c > +++ b/tools/perf/arch/riscv/include/dwarf-regs-table.h > @@ -1,23 +1,10 @@ > -// SPDX-License-Identifier: GPL-2.0 > -/* > - * Copyright (C) 2019 Hangzhou C-SKY Microsystems co.,ltd. > - * Mapping of DWARF debug register numbers into register names. > - */ > +/* SPDX-License-Identifier: GPL-2.0 */ > +#ifdef DEFINE_DWARF_REGSTR_TABLE > +/* This is included in perf/util/dwarf-regs.c */ > > -#include <stddef.h> > -#include <errno.h> /* for EINVAL */ > -#include <string.h> /* for strcmp */ > -#include <dwarf-regs.h> > +#define REG_DWARFNUM_NAME(reg, idx) [idx] = "%" #reg > > -struct regs_dwarfnum { > - const char *name; > - unsigned int dwarfnum; > -}; > - > -#define REG_DWARFNUM_NAME(r, num) {.name = r, .dwarfnum = num} > -#define REG_DWARFNUM_END {.name = NULL, .dwarfnum = 0} > - > -struct regs_dwarfnum riscv_dwarf_regs_table[] = { > +static const char * const riscv_regstr_tbl[] = { > REG_DWARFNUM_NAME("%zero", 0), > REG_DWARFNUM_NAME("%ra", 1), > REG_DWARFNUM_NAME("%sp", 2), > @@ -50,13 +37,6 @@ struct regs_dwarfnum riscv_dwarf_regs_table[] = { > REG_DWARFNUM_NAME("%t4", 29), > REG_DWARFNUM_NAME("%t5", 30), > REG_DWARFNUM_NAME("%t6", 31), > - REG_DWARFNUM_END, > }; > > -#define RISCV_MAX_REGS ((sizeof(riscv_dwarf_regs_table) / \ > - sizeof(riscv_dwarf_regs_table[0])) - 1) > - > -const char *get_arch_regstr(unsigned int n) > -{ > - return (n < RISCV_MAX_REGS) ? riscv_dwarf_regs_table[n].name : NULL; > -} > +#endif > diff --git a/tools/perf/arch/riscv/util/Build b/tools/perf/arch/riscv/util/Build > index 8f93091b8345..58a672246024 100644 > --- a/tools/perf/arch/riscv/util/Build > +++ b/tools/perf/arch/riscv/util/Build > @@ -2,5 +2,4 @@ perf-util-y += perf_regs.o > perf-util-y += header.o > > perf-util-$(CONFIG_LIBTRACEEVENT) += kvm-stat.o > -perf-util-$(CONFIG_LIBDW) += dwarf-regs.o > perf-util-$(CONFIG_LIBDW_DWARF_UNWIND) += unwind-libdw.o > diff --git a/tools/perf/util/dwarf-regs.c b/tools/perf/util/dwarf-regs.c > index 3d98c2bf6035..2c6b197556dd 100644 > --- a/tools/perf/util/dwarf-regs.c > +++ b/tools/perf/util/dwarf-regs.c > @@ -20,6 +20,7 @@ > #include "../arch/arm64/include/dwarf-regs-table.h" > #include "../arch/sh/include/dwarf-regs-table.h" > #include "../arch/powerpc/include/dwarf-regs-table.h" > +#include "../arch/riscv/include/dwarf-regs-table.h" > #include "../arch/s390/include/dwarf-regs-table.h" > #include "../arch/sparc/include/dwarf-regs-table.h" > #include "../arch/xtensa/include/dwarf-regs-table.h" > @@ -33,7 +34,7 @@ const char *get_dwarf_regstr(unsigned int n, unsigned int machine, unsigned int > { > #if EM_HOST == EM_X86_64 || EM_HOST == EM_386 || EM_HOST == EM_AARCH64 || EM_HOST == EM_ARM \ > || EM_HOST == EM_CSKY || EM_HOST == EM_LOONGARCH || EM_HOST == EM_MIPS || EM_HOST == EM_PPC \ > - || EM_HOST == EM_PPC64 > + || EM_HOST == EM_PPC64 || EM_HOST == EM_RISCV > if (machine == EM_NONE) { > /* Generic arch - use host arch */ > machine = EM_HOST; > @@ -42,7 +43,7 @@ const char *get_dwarf_regstr(unsigned int n, unsigned int machine, unsigned int > switch (machine) { > #if EM_HOST != EM_X86_64 && EM_HOST != EM_386 && EM_HOST != EM_AARCH64 && EM_HOST != EM_ARM \ > && EM_HOST != EM_CSKY && EM_HOST != EM_LOONGARCH && EM_HOST != EM_MIPS && EM_HOST != EM_PPC \ > - && EM_HOST != EM_PPC64 > + && EM_HOST != EM_PPC64 && EM_HOST != EM_RISCV > case EM_NONE: /* Generic arch - use host arch */ > return get_arch_regstr(n); > #endif > @@ -63,6 +64,8 @@ const char *get_dwarf_regstr(unsigned int n, unsigned int machine, unsigned int > case EM_PPC: > case EM_PPC64: > return __get_dwarf_regstr(powerpc_regstr_tbl, n); > + case EM_RISCV: > + return __get_dwarf_regstr(riscv_regstr_tbl, n); > case EM_SPARC: > case EM_SPARCV9: > return __get_dwarf_regstr(sparc_regstr_tbl, n); > diff --git a/tools/perf/util/include/dwarf-regs.h b/tools/perf/util/include/dwarf-regs.h > index 1763280855ce..35f4f33205da 100644 > --- a/tools/perf/util/include/dwarf-regs.h > +++ b/tools/perf/util/include/dwarf-regs.h > @@ -81,7 +81,7 @@ > #ifdef HAVE_LIBDW_SUPPORT > #if !defined(__x86_64__) && !defined(__i386__) && !defined(__aarch64__) && !defined(__arm__) \ > && !defined(__loongarch__) && !defined(__mips__) && !defined(__powerpc__) \ > - && !defined(__powerpc64__) > + && !defined(__powerpc64__) && !defined(__riscv__) > const char *get_arch_regstr(unsigned int n); > #endif Acked-by: Palmer Dabbelt <palmer@rivosinc.com>
diff --git a/tools/perf/arch/riscv/util/dwarf-regs.c b/tools/perf/arch/riscv/include/dwarf-regs-table.h similarity index 56% rename from tools/perf/arch/riscv/util/dwarf-regs.c rename to tools/perf/arch/riscv/include/dwarf-regs-table.h index a9c4402ae57e..a45b63a6d5a8 100644 --- a/tools/perf/arch/riscv/util/dwarf-regs.c +++ b/tools/perf/arch/riscv/include/dwarf-regs-table.h @@ -1,23 +1,10 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (C) 2019 Hangzhou C-SKY Microsystems co.,ltd. - * Mapping of DWARF debug register numbers into register names. - */ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifdef DEFINE_DWARF_REGSTR_TABLE +/* This is included in perf/util/dwarf-regs.c */ -#include <stddef.h> -#include <errno.h> /* for EINVAL */ -#include <string.h> /* for strcmp */ -#include <dwarf-regs.h> +#define REG_DWARFNUM_NAME(reg, idx) [idx] = "%" #reg -struct regs_dwarfnum { - const char *name; - unsigned int dwarfnum; -}; - -#define REG_DWARFNUM_NAME(r, num) {.name = r, .dwarfnum = num} -#define REG_DWARFNUM_END {.name = NULL, .dwarfnum = 0} - -struct regs_dwarfnum riscv_dwarf_regs_table[] = { +static const char * const riscv_regstr_tbl[] = { REG_DWARFNUM_NAME("%zero", 0), REG_DWARFNUM_NAME("%ra", 1), REG_DWARFNUM_NAME("%sp", 2), @@ -50,13 +37,6 @@ struct regs_dwarfnum riscv_dwarf_regs_table[] = { REG_DWARFNUM_NAME("%t4", 29), REG_DWARFNUM_NAME("%t5", 30), REG_DWARFNUM_NAME("%t6", 31), - REG_DWARFNUM_END, }; -#define RISCV_MAX_REGS ((sizeof(riscv_dwarf_regs_table) / \ - sizeof(riscv_dwarf_regs_table[0])) - 1) - -const char *get_arch_regstr(unsigned int n) -{ - return (n < RISCV_MAX_REGS) ? riscv_dwarf_regs_table[n].name : NULL; -} +#endif diff --git a/tools/perf/arch/riscv/util/Build b/tools/perf/arch/riscv/util/Build index 8f93091b8345..58a672246024 100644 --- a/tools/perf/arch/riscv/util/Build +++ b/tools/perf/arch/riscv/util/Build @@ -2,5 +2,4 @@ perf-util-y += perf_regs.o perf-util-y += header.o perf-util-$(CONFIG_LIBTRACEEVENT) += kvm-stat.o -perf-util-$(CONFIG_LIBDW) += dwarf-regs.o perf-util-$(CONFIG_LIBDW_DWARF_UNWIND) += unwind-libdw.o diff --git a/tools/perf/util/dwarf-regs.c b/tools/perf/util/dwarf-regs.c index 3d98c2bf6035..2c6b197556dd 100644 --- a/tools/perf/util/dwarf-regs.c +++ b/tools/perf/util/dwarf-regs.c @@ -20,6 +20,7 @@ #include "../arch/arm64/include/dwarf-regs-table.h" #include "../arch/sh/include/dwarf-regs-table.h" #include "../arch/powerpc/include/dwarf-regs-table.h" +#include "../arch/riscv/include/dwarf-regs-table.h" #include "../arch/s390/include/dwarf-regs-table.h" #include "../arch/sparc/include/dwarf-regs-table.h" #include "../arch/xtensa/include/dwarf-regs-table.h" @@ -33,7 +34,7 @@ const char *get_dwarf_regstr(unsigned int n, unsigned int machine, unsigned int { #if EM_HOST == EM_X86_64 || EM_HOST == EM_386 || EM_HOST == EM_AARCH64 || EM_HOST == EM_ARM \ || EM_HOST == EM_CSKY || EM_HOST == EM_LOONGARCH || EM_HOST == EM_MIPS || EM_HOST == EM_PPC \ - || EM_HOST == EM_PPC64 + || EM_HOST == EM_PPC64 || EM_HOST == EM_RISCV if (machine == EM_NONE) { /* Generic arch - use host arch */ machine = EM_HOST; @@ -42,7 +43,7 @@ const char *get_dwarf_regstr(unsigned int n, unsigned int machine, unsigned int switch (machine) { #if EM_HOST != EM_X86_64 && EM_HOST != EM_386 && EM_HOST != EM_AARCH64 && EM_HOST != EM_ARM \ && EM_HOST != EM_CSKY && EM_HOST != EM_LOONGARCH && EM_HOST != EM_MIPS && EM_HOST != EM_PPC \ - && EM_HOST != EM_PPC64 + && EM_HOST != EM_PPC64 && EM_HOST != EM_RISCV case EM_NONE: /* Generic arch - use host arch */ return get_arch_regstr(n); #endif @@ -63,6 +64,8 @@ const char *get_dwarf_regstr(unsigned int n, unsigned int machine, unsigned int case EM_PPC: case EM_PPC64: return __get_dwarf_regstr(powerpc_regstr_tbl, n); + case EM_RISCV: + return __get_dwarf_regstr(riscv_regstr_tbl, n); case EM_SPARC: case EM_SPARCV9: return __get_dwarf_regstr(sparc_regstr_tbl, n); diff --git a/tools/perf/util/include/dwarf-regs.h b/tools/perf/util/include/dwarf-regs.h index 1763280855ce..35f4f33205da 100644 --- a/tools/perf/util/include/dwarf-regs.h +++ b/tools/perf/util/include/dwarf-regs.h @@ -81,7 +81,7 @@ #ifdef HAVE_LIBDW_SUPPORT #if !defined(__x86_64__) && !defined(__i386__) && !defined(__aarch64__) && !defined(__arm__) \ && !defined(__loongarch__) && !defined(__mips__) && !defined(__powerpc__) \ - && !defined(__powerpc64__) + && !defined(__powerpc64__) && !defined(__riscv__) const char *get_arch_regstr(unsigned int n); #endif
The file just provides the function get_arch_regstr, however, if in the only caller get_dwarf_regstr EM_HOST is used for the EM_NONE case, and the register table is provided in a header file, the function can never be called. So remove as dead code. Tidy up the EM_NONE cases for riscv in dwarf-regs.c. Signed-off-by: Ian Rogers <irogers@google.com> --- .../dwarf-regs-table.h} | 32 ++++--------------- tools/perf/arch/riscv/util/Build | 1 - tools/perf/util/dwarf-regs.c | 7 ++-- tools/perf/util/include/dwarf-regs.h | 2 +- 4 files changed, 12 insertions(+), 30 deletions(-) rename tools/perf/arch/riscv/{util/dwarf-regs.c => include/dwarf-regs-table.h} (56%)