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());
|
setCommandsForReset(p->resetCommands());
|
||||||
setRemoteChannel(p->channel());
|
setRemoteChannel(p->channel());
|
||||||
setUseContinueInsteadOfRun(true);
|
setUseContinueInsteadOfRun(true);
|
||||||
|
setUseExtendedRemote(p->useExtendedRemote());
|
||||||
|
|
||||||
DebuggerRunTool::start();
|
DebuggerRunTool::start();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,6 +31,7 @@
|
|||||||
|
|
||||||
#include <coreplugin/variablechooser.h>
|
#include <coreplugin/variablechooser.h>
|
||||||
|
|
||||||
|
#include <QCheckBox>
|
||||||
#include <QFormLayout>
|
#include <QFormLayout>
|
||||||
#include <QPlainTextEdit>
|
#include <QPlainTextEdit>
|
||||||
|
|
||||||
@@ -173,6 +174,9 @@ DefaultGdbServerProviderConfigWidget::DefaultGdbServerProviderConfigWidget(
|
|||||||
m_hostWidget = new HostWidget(this);
|
m_hostWidget = new HostWidget(this);
|
||||||
m_mainLayout->addRow(tr("Host:"), m_hostWidget);
|
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 = new QPlainTextEdit(this);
|
||||||
m_initCommandsTextEdit->setToolTip(defaultInitCommandsTooltip());
|
m_initCommandsTextEdit->setToolTip(defaultInitCommandsTooltip());
|
||||||
m_mainLayout->addRow(tr("Init commands:"), m_initCommandsTextEdit);
|
m_mainLayout->addRow(tr("Init commands:"), m_initCommandsTextEdit);
|
||||||
@@ -189,6 +193,8 @@ DefaultGdbServerProviderConfigWidget::DefaultGdbServerProviderConfigWidget(
|
|||||||
|
|
||||||
connect(m_hostWidget, &HostWidget::dataChanged,
|
connect(m_hostWidget, &HostWidget::dataChanged,
|
||||||
this, &GdbServerProviderConfigWidget::dirty);
|
this, &GdbServerProviderConfigWidget::dirty);
|
||||||
|
connect(m_useExtendedRemoteCheckBox, &QCheckBox::stateChanged,
|
||||||
|
this, &GdbServerProviderConfigWidget::dirty);
|
||||||
connect(m_initCommandsTextEdit, &QPlainTextEdit::textChanged,
|
connect(m_initCommandsTextEdit, &QPlainTextEdit::textChanged,
|
||||||
this, &GdbServerProviderConfigWidget::dirty);
|
this, &GdbServerProviderConfigWidget::dirty);
|
||||||
connect(m_resetCommandsTextEdit, &QPlainTextEdit::textChanged,
|
connect(m_resetCommandsTextEdit, &QPlainTextEdit::textChanged,
|
||||||
@@ -202,6 +208,7 @@ void DefaultGdbServerProviderConfigWidget::applyImpl()
|
|||||||
|
|
||||||
p->setHost(m_hostWidget->host());
|
p->setHost(m_hostWidget->host());
|
||||||
p->setPort(m_hostWidget->port());
|
p->setPort(m_hostWidget->port());
|
||||||
|
p->setUseExtendedRemote(m_useExtendedRemoteCheckBox->isChecked());
|
||||||
p->setInitCommands(m_initCommandsTextEdit->toPlainText());
|
p->setInitCommands(m_initCommandsTextEdit->toPlainText());
|
||||||
p->setResetCommands(m_resetCommandsTextEdit->toPlainText());
|
p->setResetCommands(m_resetCommandsTextEdit->toPlainText());
|
||||||
}
|
}
|
||||||
@@ -219,6 +226,7 @@ void DefaultGdbServerProviderConfigWidget::setFromProvider()
|
|||||||
const QSignalBlocker blocker(this);
|
const QSignalBlocker blocker(this);
|
||||||
m_hostWidget->setHost(p->m_host);
|
m_hostWidget->setHost(p->m_host);
|
||||||
m_hostWidget->setPort(p->m_port);
|
m_hostWidget->setPort(p->m_port);
|
||||||
|
m_useExtendedRemoteCheckBox->setChecked(p->useExtendedRemote());
|
||||||
m_initCommandsTextEdit->setPlainText(p->initCommands());
|
m_initCommandsTextEdit->setPlainText(p->initCommands());
|
||||||
m_resetCommandsTextEdit->setPlainText(p->resetCommands());
|
m_resetCommandsTextEdit->setPlainText(p->resetCommands());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -101,6 +101,7 @@ private:
|
|||||||
void setFromProvider();
|
void setFromProvider();
|
||||||
|
|
||||||
HostWidget *m_hostWidget = nullptr;
|
HostWidget *m_hostWidget = nullptr;
|
||||||
|
QCheckBox *m_useExtendedRemoteCheckBox = nullptr;
|
||||||
QPlainTextEdit *m_initCommandsTextEdit = nullptr;
|
QPlainTextEdit *m_initCommandsTextEdit = nullptr;
|
||||||
QPlainTextEdit *m_resetCommandsTextEdit = nullptr;
|
QPlainTextEdit *m_resetCommandsTextEdit = nullptr;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ const char displayNameKeyC[] = "BareMetal.GdbServerProvider.DisplayName";
|
|||||||
const char startupModeKeyC[] = "BareMetal.GdbServerProvider.Mode";
|
const char startupModeKeyC[] = "BareMetal.GdbServerProvider.Mode";
|
||||||
const char initCommandsKeyC[] = "BareMetal.GdbServerProvider.InitCommands";
|
const char initCommandsKeyC[] = "BareMetal.GdbServerProvider.InitCommands";
|
||||||
const char resetCommandsKeyC[] = "BareMetal.GdbServerProvider.ResetCommands";
|
const char resetCommandsKeyC[] = "BareMetal.GdbServerProvider.ResetCommands";
|
||||||
|
const char useExtendedRemoteKeyC[] = "BareMetal.GdbServerProvider.UseExtendedRemote";
|
||||||
|
|
||||||
static QString createId(const QString &id)
|
static QString createId(const QString &id)
|
||||||
{
|
{
|
||||||
@@ -67,6 +68,7 @@ GdbServerProvider::GdbServerProvider(const GdbServerProvider &other)
|
|||||||
, m_startupMode(other.m_startupMode)
|
, m_startupMode(other.m_startupMode)
|
||||||
, m_initCommands(other.m_initCommands)
|
, m_initCommands(other.m_initCommands)
|
||||||
, m_resetCommands(other.m_resetCommands)
|
, m_resetCommands(other.m_resetCommands)
|
||||||
|
, m_useExtendedRemote(other.useExtendedRemote())
|
||||||
{
|
{
|
||||||
m_displayName = QCoreApplication::translate(
|
m_displayName = QCoreApplication::translate(
|
||||||
"BareMetal::GdbServerProvider", "Clone of %1")
|
"BareMetal::GdbServerProvider", "Clone of %1")
|
||||||
@@ -121,6 +123,16 @@ void GdbServerProvider::setInitCommands(const QString &cmds)
|
|||||||
m_initCommands = cmds;
|
m_initCommands = cmds;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool GdbServerProvider::useExtendedRemote() const
|
||||||
|
{
|
||||||
|
return m_useExtendedRemote;
|
||||||
|
}
|
||||||
|
|
||||||
|
void GdbServerProvider::setUseExtendedRemote(bool useExtendedRemote)
|
||||||
|
{
|
||||||
|
m_useExtendedRemote = useExtendedRemote;
|
||||||
|
}
|
||||||
|
|
||||||
QString GdbServerProvider::resetCommands() const
|
QString GdbServerProvider::resetCommands() const
|
||||||
{
|
{
|
||||||
return m_resetCommands;
|
return m_resetCommands;
|
||||||
@@ -153,7 +165,8 @@ bool GdbServerProvider::operator==(const GdbServerProvider &other) const
|
|||||||
return thisId == otherId
|
return thisId == otherId
|
||||||
&& m_startupMode == other.m_startupMode
|
&& m_startupMode == other.m_startupMode
|
||||||
&& m_initCommands == other.m_initCommands
|
&& m_initCommands == other.m_initCommands
|
||||||
&& m_resetCommands == other.m_resetCommands;
|
&& m_resetCommands == other.m_resetCommands
|
||||||
|
&& m_useExtendedRemote == other.m_useExtendedRemote;
|
||||||
}
|
}
|
||||||
|
|
||||||
QVariantMap GdbServerProvider::toMap() const
|
QVariantMap GdbServerProvider::toMap() const
|
||||||
@@ -163,7 +176,8 @@ QVariantMap GdbServerProvider::toMap() const
|
|||||||
{QLatin1String(displayNameKeyC), m_displayName},
|
{QLatin1String(displayNameKeyC), m_displayName},
|
||||||
{QLatin1String(startupModeKeyC), m_startupMode},
|
{QLatin1String(startupModeKeyC), m_startupMode},
|
||||||
{QLatin1String(initCommandsKeyC), m_initCommands},
|
{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_startupMode = static_cast<StartupMode>(data.value(QLatin1String(startupModeKeyC)).toInt());
|
||||||
m_initCommands = data.value(QLatin1String(initCommandsKeyC)).toString();
|
m_initCommands = data.value(QLatin1String(initCommandsKeyC)).toString();
|
||||||
m_resetCommands = data.value(QLatin1String(resetCommandsKeyC)).toString();
|
m_resetCommands = data.value(QLatin1String(resetCommandsKeyC)).toString();
|
||||||
|
m_useExtendedRemote = data.value(QLatin1String(useExtendedRemoteKeyC)).toBool();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
#include <utils/fileutils.h>
|
#include <utils/fileutils.h>
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
|
class QCheckBox;
|
||||||
class QComboBox;
|
class QComboBox;
|
||||||
class QFormLayout;
|
class QFormLayout;
|
||||||
class QLabel;
|
class QLabel;
|
||||||
@@ -70,6 +71,7 @@ public:
|
|||||||
StartupMode startupMode() const;
|
StartupMode startupMode() const;
|
||||||
QString initCommands() const;
|
QString initCommands() const;
|
||||||
QString resetCommands() const;
|
QString resetCommands() const;
|
||||||
|
bool useExtendedRemote() const;
|
||||||
|
|
||||||
virtual bool operator==(const GdbServerProvider &) const;
|
virtual bool operator==(const GdbServerProvider &) const;
|
||||||
|
|
||||||
@@ -98,6 +100,7 @@ protected:
|
|||||||
void setStartupMode(StartupMode);
|
void setStartupMode(StartupMode);
|
||||||
void setInitCommands(const QString &);
|
void setInitCommands(const QString &);
|
||||||
void setResetCommands(const QString &);
|
void setResetCommands(const QString &);
|
||||||
|
void setUseExtendedRemote(bool);
|
||||||
|
|
||||||
void providerUpdated();
|
void providerUpdated();
|
||||||
|
|
||||||
@@ -110,6 +113,7 @@ private:
|
|||||||
QString m_initCommands;
|
QString m_initCommands;
|
||||||
QString m_resetCommands;
|
QString m_resetCommands;
|
||||||
QSet<BareMetalDevice *> m_devices;
|
QSet<BareMetalDevice *> m_devices;
|
||||||
|
bool m_useExtendedRemote = false;
|
||||||
|
|
||||||
friend class GdbServerProviderConfigWidget;
|
friend class GdbServerProviderConfigWidget;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user