forked from qt-creator/qt-creator
Baremetal: Add option to use gdb target "extended-remote"
This target is used by Black Magic Probe hardware gdb server. Task-number: QTCREATORBUG-14102 Change-Id: Id2fc9646e8fe5b750f69ddf419d133718b3fb9a2 Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com> Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -133,6 +133,7 @@ void BareMetalDebugSupport::start()
|
||||
setCommandsForReset(p->resetCommands());
|
||||
setRemoteChannel(p->channel());
|
||||
setUseContinueInsteadOfRun(true);
|
||||
setUseExtendedRemote(p->useExtendedRemote());
|
||||
|
||||
DebuggerRunTool::start();
|
||||
}
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
|
||||
#include <coreplugin/variablechooser.h>
|
||||
|
||||
#include <QCheckBox>
|
||||
#include <QFormLayout>
|
||||
#include <QPlainTextEdit>
|
||||
|
||||
@@ -173,6 +174,9 @@ DefaultGdbServerProviderConfigWidget::DefaultGdbServerProviderConfigWidget(
|
||||
m_hostWidget = new HostWidget(this);
|
||||
m_mainLayout->addRow(tr("Host:"), m_hostWidget);
|
||||
|
||||
m_useExtendedRemoteCheckBox = new QCheckBox(this);
|
||||
m_useExtendedRemoteCheckBox->setToolTip("Use GDB target extended-remote");
|
||||
m_mainLayout->addRow(tr("Extended mode:"), m_useExtendedRemoteCheckBox);
|
||||
m_initCommandsTextEdit = new QPlainTextEdit(this);
|
||||
m_initCommandsTextEdit->setToolTip(defaultInitCommandsTooltip());
|
||||
m_mainLayout->addRow(tr("Init commands:"), m_initCommandsTextEdit);
|
||||
@@ -189,6 +193,8 @@ DefaultGdbServerProviderConfigWidget::DefaultGdbServerProviderConfigWidget(
|
||||
|
||||
connect(m_hostWidget, &HostWidget::dataChanged,
|
||||
this, &GdbServerProviderConfigWidget::dirty);
|
||||
connect(m_useExtendedRemoteCheckBox, &QCheckBox::stateChanged,
|
||||
this, &GdbServerProviderConfigWidget::dirty);
|
||||
connect(m_initCommandsTextEdit, &QPlainTextEdit::textChanged,
|
||||
this, &GdbServerProviderConfigWidget::dirty);
|
||||
connect(m_resetCommandsTextEdit, &QPlainTextEdit::textChanged,
|
||||
@@ -202,6 +208,7 @@ void DefaultGdbServerProviderConfigWidget::applyImpl()
|
||||
|
||||
p->setHost(m_hostWidget->host());
|
||||
p->setPort(m_hostWidget->port());
|
||||
p->setUseExtendedRemote(m_useExtendedRemoteCheckBox->isChecked());
|
||||
p->setInitCommands(m_initCommandsTextEdit->toPlainText());
|
||||
p->setResetCommands(m_resetCommandsTextEdit->toPlainText());
|
||||
}
|
||||
@@ -219,6 +226,7 @@ void DefaultGdbServerProviderConfigWidget::setFromProvider()
|
||||
const QSignalBlocker blocker(this);
|
||||
m_hostWidget->setHost(p->m_host);
|
||||
m_hostWidget->setPort(p->m_port);
|
||||
m_useExtendedRemoteCheckBox->setChecked(p->useExtendedRemote());
|
||||
m_initCommandsTextEdit->setPlainText(p->initCommands());
|
||||
m_resetCommandsTextEdit->setPlainText(p->resetCommands());
|
||||
}
|
||||
|
||||
@@ -101,6 +101,7 @@ private:
|
||||
void setFromProvider();
|
||||
|
||||
HostWidget *m_hostWidget = nullptr;
|
||||
QCheckBox *m_useExtendedRemoteCheckBox = nullptr;
|
||||
QPlainTextEdit *m_initCommandsTextEdit = nullptr;
|
||||
QPlainTextEdit *m_resetCommandsTextEdit = nullptr;
|
||||
};
|
||||
|
||||
@@ -47,6 +47,7 @@ const char displayNameKeyC[] = "BareMetal.GdbServerProvider.DisplayName";
|
||||
const char startupModeKeyC[] = "BareMetal.GdbServerProvider.Mode";
|
||||
const char initCommandsKeyC[] = "BareMetal.GdbServerProvider.InitCommands";
|
||||
const char resetCommandsKeyC[] = "BareMetal.GdbServerProvider.ResetCommands";
|
||||
const char useExtendedRemoteKeyC[] = "BareMetal.GdbServerProvider.UseExtendedRemote";
|
||||
|
||||
static QString createId(const QString &id)
|
||||
{
|
||||
@@ -67,6 +68,7 @@ GdbServerProvider::GdbServerProvider(const GdbServerProvider &other)
|
||||
, m_startupMode(other.m_startupMode)
|
||||
, m_initCommands(other.m_initCommands)
|
||||
, m_resetCommands(other.m_resetCommands)
|
||||
, m_useExtendedRemote(other.useExtendedRemote())
|
||||
{
|
||||
m_displayName = QCoreApplication::translate(
|
||||
"BareMetal::GdbServerProvider", "Clone of %1")
|
||||
@@ -121,6 +123,16 @@ void GdbServerProvider::setInitCommands(const QString &cmds)
|
||||
m_initCommands = cmds;
|
||||
}
|
||||
|
||||
bool GdbServerProvider::useExtendedRemote() const
|
||||
{
|
||||
return m_useExtendedRemote;
|
||||
}
|
||||
|
||||
void GdbServerProvider::setUseExtendedRemote(bool useExtendedRemote)
|
||||
{
|
||||
m_useExtendedRemote = useExtendedRemote;
|
||||
}
|
||||
|
||||
QString GdbServerProvider::resetCommands() const
|
||||
{
|
||||
return m_resetCommands;
|
||||
@@ -153,7 +165,8 @@ bool GdbServerProvider::operator==(const GdbServerProvider &other) const
|
||||
return thisId == otherId
|
||||
&& m_startupMode == other.m_startupMode
|
||||
&& m_initCommands == other.m_initCommands
|
||||
&& m_resetCommands == other.m_resetCommands;
|
||||
&& m_resetCommands == other.m_resetCommands
|
||||
&& m_useExtendedRemote == other.m_useExtendedRemote;
|
||||
}
|
||||
|
||||
QVariantMap GdbServerProvider::toMap() const
|
||||
@@ -163,7 +176,8 @@ QVariantMap GdbServerProvider::toMap() const
|
||||
{QLatin1String(displayNameKeyC), m_displayName},
|
||||
{QLatin1String(startupModeKeyC), m_startupMode},
|
||||
{QLatin1String(initCommandsKeyC), m_initCommands},
|
||||
{QLatin1String(resetCommandsKeyC), m_resetCommands}
|
||||
{QLatin1String(resetCommandsKeyC), m_resetCommands},
|
||||
{QLatin1String(useExtendedRemoteKeyC), m_useExtendedRemote},
|
||||
};
|
||||
}
|
||||
|
||||
@@ -201,6 +215,7 @@ bool GdbServerProvider::fromMap(const QVariantMap &data)
|
||||
m_startupMode = static_cast<StartupMode>(data.value(QLatin1String(startupModeKeyC)).toInt());
|
||||
m_initCommands = data.value(QLatin1String(initCommandsKeyC)).toString();
|
||||
m_resetCommands = data.value(QLatin1String(resetCommandsKeyC)).toString();
|
||||
m_useExtendedRemote = data.value(QLatin1String(useExtendedRemoteKeyC)).toBool();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
#include <utils/fileutils.h>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
class QCheckBox;
|
||||
class QComboBox;
|
||||
class QFormLayout;
|
||||
class QLabel;
|
||||
@@ -70,6 +71,7 @@ public:
|
||||
StartupMode startupMode() const;
|
||||
QString initCommands() const;
|
||||
QString resetCommands() const;
|
||||
bool useExtendedRemote() const;
|
||||
|
||||
virtual bool operator==(const GdbServerProvider &) const;
|
||||
|
||||
@@ -98,6 +100,7 @@ protected:
|
||||
void setStartupMode(StartupMode);
|
||||
void setInitCommands(const QString &);
|
||||
void setResetCommands(const QString &);
|
||||
void setUseExtendedRemote(bool);
|
||||
|
||||
void providerUpdated();
|
||||
|
||||
@@ -110,6 +113,7 @@ private:
|
||||
QString m_initCommands;
|
||||
QString m_resetCommands;
|
||||
QSet<BareMetalDevice *> m_devices;
|
||||
bool m_useExtendedRemote = false;
|
||||
|
||||
friend class GdbServerProviderConfigWidget;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user