[compiler-rt] [compiler-rt] Add `DumpAllRegisters` impl (PR #99049)
Vitaly Buka via llvm-commits
llvm-commits at lists.llvm.org
Wed Jul 17 12:46:32 PDT 2024
================
@@ -2118,8 +2118,91 @@ bool SignalContext::IsTrueFaultingAddress() const {
return si->si_signo == SIGSEGV && si->si_code != 128;
}
+UNUSED
+static const char *RegNumToRegName(int reg) {
+# if defined(__x86_64__)
+ switch (reg) {
+ case REG_RAX:
+ return "rax";
+ case REG_RBX:
+ return "rbx";
+ case REG_RCX:
+ return "rcx";
+ case REG_RDX:
+ return "rdx";
+ case REG_RDI:
+ return "rdi";
+ case REG_RSI:
+ return "rsi";
+ case REG_RBP:
+ return "rbp";
+ case REG_RSP:
+ return "rsp";
+ case REG_R8:
+ return "r8";
+ case REG_R9:
+ return "r9";
+ case REG_R10:
+ return "r10";
+ case REG_R11:
+ return "r11";
+ case REG_R12:
+ return "r12";
+ case REG_R13:
+ return "r13";
+ case REG_R14:
+ return "r14";
+ case REG_R15:
+ return "r15";
+ default:
+ return NULL;
+ }
+# endif
+ return NULL;
+}
+
void SignalContext::DumpAllRegisters(void *context) {
- // FIXME: Implement this.
+# if SANITIZER_LINUX
+ ucontext_t *ucontext = (ucontext_t *)context;
+# define DUMPREG64(r) \
+ Printf("%s = 0x%016llx ", RegNumToRegName(r), \
----------------
vitalybuka wrote:
Also can we just move SignalContext::DumpAllRegisters from MAC ?
https://github.com/llvm/llvm-project/pull/99049
More information about the llvm-commits
mailing list