Skip to content

Commit fffe21d

Browse files
committed
WIP on querying properties from the DebugAdapter
1 parent 8c8c313 commit fffe21d

File tree

4 files changed

+41
-10
lines changed

4 files changed

+41
-10
lines changed

core/adapters/lldbadapter.cpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1142,3 +1142,29 @@ void LldbAdapter::WriteStdin(const std::string &msg)
11421142
{
11431143
m_process.PutSTDIN(msg.c_str(), msg.length());
11441144
}
1145+
1146+
1147+
Ref<Metadata> LldbAdapter::GetProperty(const std::string &name)
1148+
{
1149+
if (name == "current_platform")
1150+
{
1151+
auto platform = m_debugger.GetSelectedPlatform();
1152+
return new Metadata(platform.GetName());
1153+
}
1154+
else if (name == "platforms")
1155+
{
1156+
std::vector<std::string> platforms;
1157+
for (size_t i = 0; i < m_debugger.GetNumAvailablePlatforms(); i++)
1158+
{
1159+
auto platform = m_debugger.GetAvailablePlatformInfoAtIndex(i);
1160+
}
1161+
// return Metadata(platforms);
1162+
}
1163+
return nullptr;
1164+
}
1165+
1166+
1167+
bool LldbAdapter::SetProperty(const std::string &name, const Ref<Metadata> &value)
1168+
{
1169+
return false;
1170+
}

core/adapters/lldbadapter.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,10 @@ namespace BinaryNinjaDebugger {
110110
void WriteStdin(const std::string& msg) override;
111111

112112
void FixActiveThread();
113+
114+
Ref<Metadata> GetProperty(const std::string& name) override;
115+
116+
bool SetProperty(const std::string& name, const Ref<Metadata>& value) override;
113117
};
114118

115119
class LldbAdapterType: public DebugAdapterType

core/debugadapter.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -273,8 +273,8 @@ namespace BinaryNinjaDebugger
273273

274274
virtual void WriteStdin(const std::string& msg);
275275

276-
BinaryNinja::Ref<BinaryNinja::Metadata> GetProperty(const std::string& name);
276+
virtual BinaryNinja::Ref<BinaryNinja::Metadata> GetProperty(const std::string& name);
277277

278-
bool SetProperty(const std::string& name, const BinaryNinja::Ref<BinaryNinja::Metadata>& value);
278+
virtual bool SetProperty(const std::string& name, const BinaryNinja::Ref<BinaryNinja::Metadata>& value);
279279
};
280280
};

ui/debugserversetting.cpp

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,16 +36,16 @@ DebugServerSettingsDialog::DebugServerSettingsDialog(QWidget* parent, DebuggerCo
3636
titleLayout->setContentsMargins(0, 0, 0, 0);
3737

3838
m_platformEntry = new QComboBox(this);
39-
auto platformsMetaData = m_controller->GetAdapterProperty("platforms");
40-
if (platformsMetaData->IsStringList())
41-
{
42-
auto platforms = platformsMetaData->GetStringList();
43-
for (const auto& platform: platforms)
44-
m_platformEntry->addItem(QString::fromStdString(platform));
45-
}
39+
// auto platformsMetaData = m_controller->GetAdapterProperty("platforms");
40+
// if (platformsMetaData->IsStringList())
41+
// {
42+
// auto platforms = platformsMetaData->GetStringList();
43+
// for (const auto& platform: platforms)
44+
// m_platformEntry->addItem(QString::fromStdString(platform));
45+
// }
4646

4747
auto currentPlatformMetadata = m_controller->GetAdapterProperty("current_platform");
48-
if (currentPlatformMetadata->IsString())
48+
if (currentPlatformMetadata && currentPlatformMetadata->IsString())
4949
{
5050
const auto currentPlatform = currentPlatformMetadata->GetString();
5151
m_platformEntry->setCurrentText(QString::fromStdString(currentPlatform));
@@ -55,6 +55,7 @@ DebugServerSettingsDialog::DebugServerSettingsDialog(QWidget* parent, DebuggerCo
5555
m_portEntry = new QLineEdit(this);
5656

5757
QFormLayout* formLayout = new QFormLayout;
58+
formLayout->addRow("Platform", m_platformEntry);
5859
formLayout->addRow("Host", m_addressEntry);
5960
formLayout->addRow("Port", m_portEntry);
6061

0 commit comments

Comments
 (0)