Added generic register numbers for simple ABI argument registers and defined
the appropriate registers for arm and x86_64. The register names for the
arguments that are the size of a pointer or less are all named "arg1", "arg2",
etc. This allows you to read these registers by name:
(lldb) register read arg1 arg2 arg3
...
You can also now specify you want to see alternate register names when executing
the read register command:
(lldb) register read --alternate
(lldb) register read -A
llvm-svn: 131376
diff --git a/lldb/tools/debugserver/source/DNBDefs.h b/lldb/tools/debugserver/source/DNBDefs.h
index 10f3727..fb259f2 100644
--- a/lldb/tools/debugserver/source/DNBDefs.h
+++ b/lldb/tools/debugserver/source/DNBDefs.h
@@ -163,6 +163,14 @@
#define GENERIC_REGNUM_FP 2 // Frame Pointer
#define GENERIC_REGNUM_RA 3 // Return Address
#define GENERIC_REGNUM_FLAGS 4 // Processor flags register
+#define GENERIC_REGNUM_ARG1 5 // The register that would contain pointer size or less argument 1 (if any)
+#define GENERIC_REGNUM_ARG2 6 // The register that would contain pointer size or less argument 2 (if any)
+#define GENERIC_REGNUM_ARG3 7 // The register that would contain pointer size or less argument 3 (if any)
+#define GENERIC_REGNUM_ARG4 8 // The register that would contain pointer size or less argument 4 (if any)
+#define GENERIC_REGNUM_ARG5 9 // The register that would contain pointer size or less argument 5 (if any)
+#define GENERIC_REGNUM_ARG6 10 // The register that would contain pointer size or less argument 6 (if any)
+#define GENERIC_REGNUM_ARG7 11 // The register that would contain pointer size or less argument 7 (if any)
+#define GENERIC_REGNUM_ARG8 12 // The register that would contain pointer size or less argument 8 (if any)
enum DNBRegisterType
{
diff --git a/lldb/tools/debugserver/source/MacOSX/arm/DNBArchImpl.cpp b/lldb/tools/debugserver/source/MacOSX/arm/DNBArchImpl.cpp
index f2c2451..d637b5e 100644
--- a/lldb/tools/debugserver/source/MacOSX/arm/DNBArchImpl.cpp
+++ b/lldb/tools/debugserver/source/MacOSX/arm/DNBArchImpl.cpp
@@ -2544,10 +2544,10 @@
const DNBRegisterInfo
DNBArchMachARM::g_gpr_registers[] =
{
- DEFINE_GPR_IDX ( 0, r0, NULL, INVALID_NUB_REGNUM ),
- DEFINE_GPR_IDX ( 1, r1, NULL, INVALID_NUB_REGNUM ),
- DEFINE_GPR_IDX ( 2, r2, NULL, INVALID_NUB_REGNUM ),
- DEFINE_GPR_IDX ( 3, r3, NULL, INVALID_NUB_REGNUM ),
+ DEFINE_GPR_IDX ( 0, r0,"arg1", GENERIC_REGNUM_ARG1 ),
+ DEFINE_GPR_IDX ( 1, r1,"arg2", GENERIC_REGNUM_ARG2 ),
+ DEFINE_GPR_IDX ( 2, r2,"arg3", GENERIC_REGNUM_ARG3 ),
+ DEFINE_GPR_IDX ( 3, r3,"arg4", GENERIC_REGNUM_ARG4 ),
DEFINE_GPR_IDX ( 4, r4, NULL, INVALID_NUB_REGNUM ),
DEFINE_GPR_IDX ( 5, r5, NULL, INVALID_NUB_REGNUM ),
DEFINE_GPR_IDX ( 6, r6, NULL, INVALID_NUB_REGNUM ),
@@ -2560,7 +2560,7 @@
DEFINE_GPR_NAME (sp, "r13", GENERIC_REGNUM_SP ),
DEFINE_GPR_NAME (lr, "r14", GENERIC_REGNUM_RA ),
DEFINE_GPR_NAME (pc, "r15", GENERIC_REGNUM_PC ),
- DEFINE_GPR_NAME (cpsr, NULL, GENERIC_REGNUM_FLAGS )
+ DEFINE_GPR_NAME (cpsr, "flags", GENERIC_REGNUM_FLAGS )
};
// Floating point registers
diff --git a/lldb/tools/debugserver/source/MacOSX/x86_64/DNBArchImplX86_64.cpp b/lldb/tools/debugserver/source/MacOSX/x86_64/DNBArchImplX86_64.cpp
index f51e26b..621cda7 100644
--- a/lldb/tools/debugserver/source/MacOSX/x86_64/DNBArchImplX86_64.cpp
+++ b/lldb/tools/debugserver/source/MacOSX/x86_64/DNBArchImplX86_64.cpp
@@ -819,6 +819,7 @@
#define DEFINE_GPR(reg) { e_regSetGPR, gpr_##reg, #reg, NULL, Uint, Hex, GPR_SIZE(reg), GPR_OFFSET(reg), gcc_dwarf_##reg, gcc_dwarf_##reg, INVALID_NUB_REGNUM, gdb_##reg }
#define DEFINE_GPR_ALT(reg, alt, gen) { e_regSetGPR, gpr_##reg, #reg, alt, Uint, Hex, GPR_SIZE(reg), GPR_OFFSET(reg), gcc_dwarf_##reg, gcc_dwarf_##reg, gen, gdb_##reg }
#define DEFINE_GPR_ALT2(reg, alt) { e_regSetGPR, gpr_##reg, #reg, alt, Uint, Hex, GPR_SIZE(reg), GPR_OFFSET(reg), INVALID_NUB_REGNUM, INVALID_NUB_REGNUM, INVALID_NUB_REGNUM, gdb_##reg }
+#define DEFINE_GPR_ALT3(reg, alt, gen) { e_regSetGPR, gpr_##reg, #reg, alt, Uint, Hex, GPR_SIZE(reg), GPR_OFFSET(reg), INVALID_NUB_REGNUM, INVALID_NUB_REGNUM, gen, gdb_##reg }
// General purpose registers for 64 bit
const DNBRegisterInfo
@@ -826,22 +827,22 @@
{
DEFINE_GPR (rax),
DEFINE_GPR (rbx),
- DEFINE_GPR (rcx),
- DEFINE_GPR (rdx),
- DEFINE_GPR (rdi),
- DEFINE_GPR (rsi),
- DEFINE_GPR_ALT (rbp, "fp", GENERIC_REGNUM_FP),
- DEFINE_GPR_ALT (rsp, "sp", GENERIC_REGNUM_SP),
- DEFINE_GPR (r8),
- DEFINE_GPR (r9),
+ DEFINE_GPR_ALT (rcx , "arg4", GENERIC_REGNUM_ARG4),
+ DEFINE_GPR_ALT (rdx , "arg3", GENERIC_REGNUM_ARG3),
+ DEFINE_GPR_ALT (rdi , "arg1", GENERIC_REGNUM_ARG1),
+ DEFINE_GPR_ALT (rsi , "arg2", GENERIC_REGNUM_ARG2),
+ DEFINE_GPR_ALT (rbp , "fp" , GENERIC_REGNUM_FP),
+ DEFINE_GPR_ALT (rsp , "sp" , GENERIC_REGNUM_SP),
+ DEFINE_GPR_ALT (r8 , "arg5", GENERIC_REGNUM_ARG5),
+ DEFINE_GPR_ALT (r9 , "arg6", GENERIC_REGNUM_ARG6),
DEFINE_GPR (r10),
DEFINE_GPR (r11),
DEFINE_GPR (r12),
DEFINE_GPR (r13),
DEFINE_GPR (r14),
DEFINE_GPR (r15),
- DEFINE_GPR_ALT (rip, "pc", GENERIC_REGNUM_PC),
- DEFINE_GPR_ALT2 (rflags, "flags"),
+ DEFINE_GPR_ALT (rip , "pc", GENERIC_REGNUM_PC),
+ DEFINE_GPR_ALT3 (rflags, "flags", GENERIC_REGNUM_FLAGS),
DEFINE_GPR_ALT2 (cs, NULL),
DEFINE_GPR_ALT2 (fs, NULL),
DEFINE_GPR_ALT2 (gs, NULL),