Included register descriptors in the TargetInfoMachine GDB command response

This commit is contained in:
Nav
2022-06-05 22:42:10 +01:00
parent 77c5ed3509
commit 24062ef934

View File

@@ -56,11 +56,39 @@ namespace Bloom::DebugServer::Gdb::CommandPackets
}));
}
auto registerDescriptorsJson = QJsonArray();
for (const auto& [registerType, registerDescriptors] : targetDescriptor.registerDescriptorsByType) {
for (const auto& registerDescriptor : registerDescriptors) {
if (!registerDescriptor.name.has_value() || !registerDescriptor.startAddress.has_value()) {
continue;
}
registerDescriptorsJson.push_back(QJsonObject({
{"name", QString::fromStdString(registerDescriptor.name.value())},
{"groupName", QString::fromStdString(registerDescriptor.groupName.value_or("Other"))},
{
"description",
registerDescriptor.description.has_value()
? QString::fromStdString(registerDescriptor.description.value())
: QJsonValue()
},
{"size", static_cast<qint64>(registerDescriptor.size)},
{"startAddress", "0x" + QString::number(registerDescriptor.startAddress.value(), 16)},
{
"gdbStartAddress",
"0x" + QString::number(registerDescriptor.startAddress.value() | 0x00800000UL, 16)
},
}));
}
}
return QJsonObject({
{"target", QJsonObject({
{"name", QString::fromStdString(targetDescriptor.name)},
{"id", QString::fromStdString(targetDescriptor.id)},
{"memoryDescriptors", memoryDescriptorsJson},
{"registerDescriptors", registerDescriptorsJson},
})},
});
}