[lldb] [ABI/AArch64] Recognize special regs by their xN names too

Recognize lr/sp/fp by their numeric register names in the ABI plugin.
This is necessary to mark them appropriately when interfacing with
gdbserver.

Differential Revision: https://reviews.llvm.org/D109691
This commit is contained in:
Michał Górny 2021-09-13 16:49:16 +02:00
parent 66249323d2
commit c208deb900
2 changed files with 9 additions and 3 deletions

View File

@ -55,9 +55,9 @@ std::string ABIAArch64::GetMCName(std::string reg) {
uint32_t ABIAArch64::GetGenericNum(llvm::StringRef name) {
return llvm::StringSwitch<uint32_t>(name)
.Case("pc", LLDB_REGNUM_GENERIC_PC)
.Case("lr", LLDB_REGNUM_GENERIC_RA)
.Case("sp", LLDB_REGNUM_GENERIC_SP)
.Case("fp", LLDB_REGNUM_GENERIC_FP)
.Cases("lr", "x30", LLDB_REGNUM_GENERIC_RA)
.Cases("sp", "x31", LLDB_REGNUM_GENERIC_SP)
.Cases("fp", "x29", LLDB_REGNUM_GENERIC_FP)
.Case("cpsr", LLDB_REGNUM_GENERIC_FLAGS)
.Case("x0", LLDB_REGNUM_GENERIC_ARG1)
.Case("x1", LLDB_REGNUM_GENERIC_ARG2)

View File

@ -409,5 +409,11 @@ class TestGDBServerTargetXML(GDBRemoteTestBase):
["x0 = 0x0807060504030201"])
self.match("register read arg2",
["x1 = 0x1817161514131211"])
self.match("register read fp",
["x29 = 0x3837363534333231"])
self.match("register read lr",
["x30 = 0x4847464544434241"])
self.match("register read ra",
["x30 = 0x4847464544434241"])
self.match("register read flags",
["cpsr = 0x74737271"])