summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Storsjo <martin@martin.st>2018-12-12 22:24:42 +0000
committerMartin Storsjo <martin@martin.st>2018-12-12 22:24:42 +0000
commit69d9b84cca8354117b9fe9705a4430d789ee599b (patch)
treefd4b5053e7ae58bcec1206603096ccacf23dc873
parent060d34e86b8336c3be58f415fecef9af272af6d3 (diff)
downloadlibunwind_llvm-69d9b84cca8354117b9fe9705a4430d789ee599b.tar.gz
Avoid code duplication in the SEH version of UnwindCursor::getRegisterName. NFC.
This requires making Registers_*::getRegisterName static. Differential Revision: https://reviews.llvm.org/D55610 git-svn-id: https://llvm.org/svn/llvm-project/libunwind/trunk@348981 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--src/Registers.hpp18
-rw-r--r--src/UnwindCursor.hpp108
2 files changed, 10 insertions, 116 deletions
diff --git a/src/Registers.hpp b/src/Registers.hpp
index 37ec84b..da30dd1 100644
--- a/src/Registers.hpp
+++ b/src/Registers.hpp
@@ -42,7 +42,7 @@ public:
bool validVectorRegister(int) const { return false; }
v128 getVectorRegister(int num) const;
void setVectorRegister(int num, v128 value);
- const char *getRegisterName(int num);
+ static const char *getRegisterName(int num);
void jumpto();
static int lastDwarfRegNum() { return _LIBUNWIND_HIGHEST_DWARF_REGISTER_X86; }
@@ -248,7 +248,7 @@ public:
bool validVectorRegister(int) const;
v128 getVectorRegister(int num) const;
void setVectorRegister(int num, v128 value);
- const char *getRegisterName(int num);
+ static const char *getRegisterName(int num);
void jumpto();
static int lastDwarfRegNum() { return _LIBUNWIND_HIGHEST_DWARF_REGISTER_X86_64; }
@@ -561,7 +561,7 @@ public:
bool validVectorRegister(int num) const;
v128 getVectorRegister(int num) const;
void setVectorRegister(int num, v128 value);
- const char *getRegisterName(int num);
+ static const char *getRegisterName(int num);
void jumpto();
static int lastDwarfRegNum() { return _LIBUNWIND_HIGHEST_DWARF_REGISTER_PPC; }
@@ -1126,7 +1126,7 @@ public:
bool validVectorRegister(int num) const;
v128 getVectorRegister(int num) const;
void setVectorRegister(int num, v128 value);
- const char *getRegisterName(int num);
+ static const char *getRegisterName(int num);
void jumpto();
static int lastDwarfRegNum() { return _LIBUNWIND_HIGHEST_DWARF_REGISTER_PPC64; }
@@ -1768,7 +1768,7 @@ public:
bool validVectorRegister(int num) const;
v128 getVectorRegister(int num) const;
void setVectorRegister(int num, v128 value);
- const char *getRegisterName(int num);
+ static const char *getRegisterName(int num);
void jumpto();
static int lastDwarfRegNum() { return _LIBUNWIND_HIGHEST_DWARF_REGISTER_ARM64; }
@@ -2038,7 +2038,7 @@ public:
bool validVectorRegister(int num) const;
v128 getVectorRegister(int num) const;
void setVectorRegister(int num, v128 value);
- const char *getRegisterName(int num);
+ static const char *getRegisterName(int num);
void jumpto() {
restoreSavedFloatRegisters();
restoreCoreAndJumpTo();
@@ -2518,7 +2518,7 @@ public:
bool validVectorRegister(int num) const;
v128 getVectorRegister(int num) const;
void setVectorRegister(int num, v128 value);
- const char *getRegisterName(int num);
+ static const char *getRegisterName(int num);
void jumpto();
static int lastDwarfRegNum() { return _LIBUNWIND_HIGHEST_DWARF_REGISTER_OR1K; }
@@ -2714,7 +2714,7 @@ public:
bool validVectorRegister(int num) const;
v128 getVectorRegister(int num) const;
void setVectorRegister(int num, v128 value);
- const char *getRegisterName(int num);
+ static const char *getRegisterName(int num);
void jumpto();
static int lastDwarfRegNum() { return _LIBUNWIND_HIGHEST_DWARF_REGISTER_MIPS; }
@@ -3035,7 +3035,7 @@ public:
bool validVectorRegister(int num) const;
v128 getVectorRegister(int num) const;
void setVectorRegister(int num, v128 value);
- const char *getRegisterName(int num);
+ static const char *getRegisterName(int num);
void jumpto();
static int lastDwarfRegNum() { return _LIBUNWIND_HIGHEST_DWARF_REGISTER_MIPS; }
diff --git a/src/UnwindCursor.hpp b/src/UnwindCursor.hpp
index 7ea75cc..9791095 100644
--- a/src/UnwindCursor.hpp
+++ b/src/UnwindCursor.hpp
@@ -804,113 +804,7 @@ template <typename A, typename R> void UnwindCursor<A, R>::saveVFPAsX() {}
template <typename A, typename R>
const char *UnwindCursor<A, R>::getRegisterName(int regNum) {
- switch (regNum) {
-#if defined(_LIBUNWIND_TARGET_X86_64)
- case UNW_REG_IP: return "rip";
- case UNW_X86_64_RAX: return "rax";
- case UNW_X86_64_RDX: return "rdx";
- case UNW_X86_64_RCX: return "rcx";
- case UNW_X86_64_RBX: return "rbx";
- case UNW_REG_SP:
- case UNW_X86_64_RSP: return "rsp";
- case UNW_X86_64_RBP: return "rbp";
- case UNW_X86_64_RSI: return "rsi";
- case UNW_X86_64_RDI: return "rdi";
- case UNW_X86_64_R8: return "r8";
- case UNW_X86_64_R9: return "r9";
- case UNW_X86_64_R10: return "r10";
- case UNW_X86_64_R11: return "r11";
- case UNW_X86_64_R12: return "r12";
- case UNW_X86_64_R13: return "r13";
- case UNW_X86_64_R14: return "r14";
- case UNW_X86_64_R15: return "r15";
-#elif defined(_LIBUNWIND_TARGET_ARM)
- case UNW_ARM_R0: return "r0";
- case UNW_ARM_R1: return "r1";
- case UNW_ARM_R2: return "r2";
- case UNW_ARM_R3: return "r3";
- case UNW_ARM_R4: return "r4";
- case UNW_ARM_R5: return "r5";
- case UNW_ARM_R6: return "r6";
- case UNW_ARM_R7: return "r7";
- case UNW_ARM_R8: return "r8";
- case UNW_ARM_R9: return "r9";
- case UNW_ARM_R10: return "r10";
- case UNW_ARM_R11: return "r11";
- case UNW_ARM_R12: return "r12";
- case UNW_REG_SP:
- case UNW_ARM_SP: return "sp";
- case UNW_ARM_LR: return "lr";
- case UNW_REG_IP:
- case UNW_ARM_IP: return "pc";
- case UNW_ARM_S0: return "s0";
- case UNW_ARM_S1: return "s1";
- case UNW_ARM_S2: return "s2";
- case UNW_ARM_S3: return "s3";
- case UNW_ARM_S4: return "s4";
- case UNW_ARM_S5: return "s5";
- case UNW_ARM_S6: return "s6";
- case UNW_ARM_S7: return "s7";
- case UNW_ARM_S8: return "s8";
- case UNW_ARM_S9: return "s9";
- case UNW_ARM_S10: return "s10";
- case UNW_ARM_S11: return "s11";
- case UNW_ARM_S12: return "s12";
- case UNW_ARM_S13: return "s13";
- case UNW_ARM_S14: return "s14";
- case UNW_ARM_S15: return "s15";
- case UNW_ARM_S16: return "s16";
- case UNW_ARM_S17: return "s17";
- case UNW_ARM_S18: return "s18";
- case UNW_ARM_S19: return "s19";
- case UNW_ARM_S20: return "s20";
- case UNW_ARM_S21: return "s21";
- case UNW_ARM_S22: return "s22";
- case UNW_ARM_S23: return "s23";
- case UNW_ARM_S24: return "s24";
- case UNW_ARM_S25: return "s25";
- case UNW_ARM_S26: return "s26";
- case UNW_ARM_S27: return "s27";
- case UNW_ARM_S28: return "s28";
- case UNW_ARM_S29: return "s29";
- case UNW_ARM_S30: return "s30";
- case UNW_ARM_S31: return "s31";
- case UNW_ARM_D0: return "d0";
- case UNW_ARM_D1: return "d1";
- case UNW_ARM_D2: return "d2";
- case UNW_ARM_D3: return "d3";
- case UNW_ARM_D4: return "d4";
- case UNW_ARM_D5: return "d5";
- case UNW_ARM_D6: return "d6";
- case UNW_ARM_D7: return "d7";
- case UNW_ARM_D8: return "d8";
- case UNW_ARM_D9: return "d9";
- case UNW_ARM_D10: return "d10";
- case UNW_ARM_D11: return "d11";
- case UNW_ARM_D12: return "d12";
- case UNW_ARM_D13: return "d13";
- case UNW_ARM_D14: return "d14";
- case UNW_ARM_D15: return "d15";
- case UNW_ARM_D16: return "d16";
- case UNW_ARM_D17: return "d17";
- case UNW_ARM_D18: return "d18";
- case UNW_ARM_D19: return "d19";
- case UNW_ARM_D20: return "d20";
- case UNW_ARM_D21: return "d21";
- case UNW_ARM_D22: return "d22";
- case UNW_ARM_D23: return "d23";
- case UNW_ARM_D24: return "d24";
- case UNW_ARM_D25: return "d25";
- case UNW_ARM_D26: return "d26";
- case UNW_ARM_D27: return "d27";
- case UNW_ARM_D28: return "d28";
- case UNW_ARM_D29: return "d29";
- case UNW_ARM_D30: return "d30";
- case UNW_ARM_D31: return "d31";
-#endif
- default:
- _LIBUNWIND_ABORT("unsupported register");
- }
+ return R::getRegisterName(regNum);
}
template <typename A, typename R> bool UnwindCursor<A, R>::isSignalFrame() {