Cdb: Add register size and type to the gdmi structure.

Change-Id: I8c87a92e6a76165a99c3654b7b71bd539a51d67c
Reviewed-by: hjk <hjk@theqtcompany.com>
This commit is contained in:
David Schulz
2015-08-27 09:51:01 +02:00
parent 58e391fe18
commit bbe8195d01
3 changed files with 15 additions and 2 deletions

View File

@@ -347,7 +347,7 @@ const wchar_t *valueType(ULONG type)
case DEBUG_VALUE_INT32: case DEBUG_VALUE_INT32:
return L"I32"; return L"I32";
case DEBUG_VALUE_INT64: case DEBUG_VALUE_INT64:
return L"I64"; return L"I64";
case DEBUG_VALUE_FLOAT32: case DEBUG_VALUE_FLOAT32:
return L"F32"; return L"F32";
case DEBUG_VALUE_FLOAT64: case DEBUG_VALUE_FLOAT64:
@@ -509,6 +509,8 @@ Registers getRegisters(CIDebugRegisters *regs,
reg.description = registerDescription(description); reg.description = registerDescription(description);
reg.subRegister = isSubRegister; reg.subRegister = isSubRegister;
reg.value = value; reg.value = value;
reg.size = valueSize(description.Type);
reg.type = valueType(description.Type);
rc.push_back(reg); rc.push_back(reg);
} }
} }
@@ -527,6 +529,7 @@ Registers getRegisters(CIDebugRegisters *regs,
reg.name = buf; reg.name = buf;
reg.description = valueType(type); reg.description = valueType(type);
reg.size = valueSize(type); reg.size = valueSize(type);
reg.type = valueType(type);
reg.value = value; reg.value = value;
rc.push_back(reg); rc.push_back(reg);
} }
@@ -557,7 +560,8 @@ std::string gdbmiRegisters(CIDebugRegisters *regs,
const Register &reg = registers.at(r); const Register &reg = registers.at(r);
if (r) if (r)
str << ','; str << ',';
str << "{number=\"" << r << "\",name=\"" << gdbmiWStringFormat(reg.name) << '"'; str << "{number=\"" << r << "\",name=\"" << gdbmiWStringFormat(reg.name)
<< "\",size=\"" << reg.size << "\",type=\"" << gdbmiWStringFormat(reg.type) << '"';
if (!reg.description.empty()) if (!reg.description.empty())
str << ",description=\"" << gdbmiWStringFormat(reg.description) << '"'; str << ",description=\"" << gdbmiWStringFormat(reg.description) << '"';
if (reg.subRegister) if (reg.subRegister)

View File

@@ -129,6 +129,7 @@ struct Register
std::wstring name; std::wstring name;
std::wstring description; std::wstring description;
std::wstring type;
int size; int size;
bool subRegister; bool subRegister;
bool pseudoRegister; bool pseudoRegister;

View File

@@ -1669,6 +1669,14 @@ void CdbEngine::handleRegistersExt(const DebuggerResponse &response)
reg.name = item["name"].data(); reg.name = item["name"].data();
reg.description = item["description"].data(); reg.description = item["description"].data();
reg.reportedType = item["type"].data(); reg.reportedType = item["type"].data();
if (reg.reportedType.startsWith('I'))
reg.kind = IntegerRegister;
else if (reg.reportedType.startsWith('F'))
reg.kind = FloatRegister;
else if (reg.reportedType.startsWith('V'))
reg.kind = VectorRegister;
else
reg.kind = OtherRegister;
reg.value.fromByteArray(item["value"].data(), HexadecimalFormat); reg.value.fromByteArray(item["value"].data(), HexadecimalFormat);
reg.size = item["size"].data().toInt(); reg.size = item["size"].data().toInt();
handler->updateRegister(reg); handler->updateRegister(reg);