summaryrefslogtreecommitdiff
path: root/tools/perf/util/dwarf-regs.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/perf/util/dwarf-regs.c')
-rw-r--r--tools/perf/util/dwarf-regs.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/tools/perf/util/dwarf-regs.c b/tools/perf/util/dwarf-regs.c
index 86b3ef638fbb..eac99a246737 100644
--- a/tools/perf/util/dwarf-regs.c
+++ b/tools/perf/util/dwarf-regs.c
@@ -32,9 +32,17 @@
const char *get_dwarf_regstr(unsigned int n, unsigned int machine,
unsigned int flags __maybe_unused)
{
+#if EM_HOST == EM_X86_64 || EM_HOST == EM_386
+ if (machine == EM_NONE) {
+ /* Generic arch - use host arch */
+ machine = EM_HOST;
+ }
+#endif
switch (machine) {
+#if EM_HOST != EM_X86_64 && EM_HOST != EM_386
case EM_NONE: /* Generic arch - use host arch */
return get_arch_regstr(n);
+#endif
case EM_386:
return __get_dwarf_regstr(x86_32_regstr_tbl, n);
case EM_X86_64:
@@ -65,10 +73,12 @@ const char *get_dwarf_regstr(unsigned int n, unsigned int machine,
return NULL;
}
+#if EM_HOST != EM_X86_64 && EM_HOST != EM_386
__weak int get_arch_regnum(const char *name __maybe_unused)
{
return -ENOTSUP;
}
+#endif
/* Return DWARF register number from architecture register name */
int get_dwarf_regnum(const char *name, unsigned int machine, unsigned int flags __maybe_unused)
@@ -90,9 +100,16 @@ int get_dwarf_regnum(const char *name, unsigned int machine, unsigned int flags
machine = EM_HOST;
}
switch (machine) {
+#if EM_HOST != EM_X86_64 && EM_HOST != EM_386
case EM_HOST:
reg = get_arch_regnum(regname);
break;
+#endif
+ case EM_X86_64:
+ fallthrough;
+ case EM_386:
+ reg = get_x86_regnum(regname);
+ break;
default:
pr_err("ELF MACHINE %x is not supported.\n", machine);
}