um: print register names in wait_for_stub
authorJohannes Berg <johannes.berg@intel.com>
Wed, 13 Jan 2021 21:07:41 +0000 (22:07 +0100)
committerRichard Weinberger <richard@nod.at>
Fri, 12 Feb 2021 20:30:19 +0000 (21:30 +0100)
Since we're basically debugging the userspace (it runs in ptrace)
it's useful to dump out the registers - but they're not readable,
so if something goes wrong it's hard to say what. Print the names
of registers in the register dump so it's easier to look at.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Richard Weinberger <richard@nod.at>
arch/um/os-Linux/skas/process.c

index 0621d52..ed4bbff 100644 (file)
@@ -28,6 +28,54 @@ int is_skas_winch(int pid, int fd, void *data)
        return pid == getpgrp();
 }
 
+static const char *ptrace_reg_name(int idx)
+{
+#define R(n) case HOST_##n: return #n
+
+       switch (idx) {
+#ifdef __x86_64__
+       R(BX);
+       R(CX);
+       R(DI);
+       R(SI);
+       R(DX);
+       R(BP);
+       R(AX);
+       R(R8);
+       R(R9);
+       R(R10);
+       R(R11);
+       R(R12);
+       R(R13);
+       R(R14);
+       R(R15);
+       R(ORIG_AX);
+       R(CS);
+       R(SS);
+       R(EFLAGS);
+#elif defined(__i386__)
+       R(IP);
+       R(SP);
+       R(EFLAGS);
+       R(AX);
+       R(BX);
+       R(CX);
+       R(DX);
+       R(SI);
+       R(DI);
+       R(BP);
+       R(CS);
+       R(SS);
+       R(DS);
+       R(FS);
+       R(ES);
+       R(GS);
+       R(ORIG_AX);
+#endif
+       }
+       return "";
+}
+
 static int ptrace_dump_regs(int pid)
 {
        unsigned long regs[MAX_REG_NR];
@@ -37,8 +85,11 @@ static int ptrace_dump_regs(int pid)
                return -errno;
 
        printk(UM_KERN_ERR "Stub registers -\n");
-       for (i = 0; i < ARRAY_SIZE(regs); i++)
-               printk(UM_KERN_ERR "\t%d - %lx\n", i, regs[i]);
+       for (i = 0; i < ARRAY_SIZE(regs); i++) {
+               const char *regname = ptrace_reg_name(i);
+
+               printk(UM_KERN_ERR "\t%s\t(%2d): %lx\n", regname, i, regs[i]);
+       }
 
        return 0;
 }