Index: lldb/include/lldb/lldb-private-types.h =================================================================== --- lldb/include/lldb/lldb-private-types.h +++ lldb/include/lldb/lldb-private-types.h @@ -51,12 +51,13 @@ /// List of registers (terminated with LLDB_INVALID_REGNUM). If this value is /// not null, all registers in this list will be read first, at which point /// the value for this register will be valid. For example, the value list - /// for ah would be eax (x86) or rax (x64). - uint32_t *value_regs; // + /// for ah would be eax (x86) or rax (x64). Register numbers are + /// of eRegisterKindProcessPlugin. + uint32_t *value_regs; /// List of registers (terminated with LLDB_INVALID_REGNUM). If this value is /// not null, all registers in this list will be invalidated when the value of /// this register changes. For example, the invalidate list for eax would be - /// rax ax, ah, and al. + /// rax ax, ah, and al. Register numbers are of eRegisterKindProcessPlugin. uint32_t *invalidate_regs; /// A DWARF expression that when evaluated gives the byte size of this /// register. Index: lldb/source/Plugins/Process/Utility/DynamicRegisterInfo.cpp =================================================================== --- lldb/source/Plugins/Process/Utility/DynamicRegisterInfo.cpp +++ lldb/source/Plugins/Process/Utility/DynamicRegisterInfo.cpp @@ -775,7 +775,12 @@ if (m_regs[i].value_regs) { s.Printf(", value_regs = [ "); for (size_t j = 0; m_regs[i].value_regs[j] != LLDB_INVALID_REGNUM; ++j) { - s.Printf("%s ", m_regs[m_regs[i].value_regs[j]].name); + const RegisterInfo *value_reg = GetRegisterInfo( + eRegisterKindProcessPlugin, m_regs[i].value_regs[j]); + if (value_reg) + s.Printf("%s ", value_reg->name); + else + s.Printf("(%d) ", m_regs[i].value_regs[j]); } s.Printf("]"); } @@ -783,7 +788,12 @@ s.Printf(", invalidate_regs = [ "); for (size_t j = 0; m_regs[i].invalidate_regs[j] != LLDB_INVALID_REGNUM; ++j) { - s.Printf("%s ", m_regs[m_regs[i].invalidate_regs[j]].name); + const RegisterInfo *invalidate_reg = GetRegisterInfo( + eRegisterKindProcessPlugin, m_regs[i].invalidate_regs[j]); + if (invalidate_reg) + s.Printf("%s ", invalidate_reg->name); + else + s.Printf("(%d) ", m_regs[i].invalidate_regs[j]); } s.Printf("]"); }