diff options
author | Denis Vygovskiy <[email protected]> | 2019-05-08 12:23:07 +1000 |
---|---|---|
committer | Denis Vygovskiy <[email protected]> | 2019-05-14 10:57:05 +0000 |
commit | e644a5b39a979e9d620376a2a837f44cf9d5a131 (patch) | |
tree | e558ecad59a493c38940ef20df4c9f62dac32479 | |
parent | 790bcf5ef0cf1f17ab900d7a7b42134b03597ace (diff) |
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 <[email protected]>
Reviewed-by: hjk <[email protected]>
-rw-r--r-- | src/plugins/baremetal/baremetaldebugsupport.cpp | 1 | ||||
-rw-r--r-- | src/plugins/baremetal/defaultgdbserverprovider.cpp | 8 | ||||
-rw-r--r-- | src/plugins/baremetal/defaultgdbserverprovider.h | 1 | ||||
-rw-r--r-- | src/plugins/baremetal/gdbserverprovider.cpp | 19 | ||||
-rw-r--r-- | src/plugins/baremetal/gdbserverprovider.h | 4 |
5 files changed, 31 insertions, 2 deletions
diff --git a/src/plugins/baremetal/baremetaldebugsupport.cpp b/src/plugins/baremetal/baremetaldebugsupport.cpp index 57a0a860341..e8c3a6f01da 100644 --- a/src/plugins/baremetal/baremetaldebugsupport.cpp +++ b/src/plugins/baremetal/baremetaldebugsupport.cpp @@ -133,6 +133,7 @@ void BareMetalDebugSupport::start() setCommandsForReset(p->resetCommands()); setRemoteChannel(p->channel()); setUseContinueInsteadOfRun(true); + setUseExtendedRemote(p->useExtendedRemote()); DebuggerRunTool::start(); } diff --git a/src/plugins/baremetal/defaultgdbserverprovider.cpp b/src/plugins/baremetal/defaultgdbserverprovider.cpp index d6f72b63204..49d126479d6 100644 --- a/src/plugins/baremetal/defaultgdbserverprovider.cpp +++ b/src/plugins/baremetal/defaultgdbserverprovider.cpp @@ -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()); } diff --git a/src/plugins/baremetal/defaultgdbserverprovider.h b/src/plugins/baremetal/defaultgdbserverprovider.h index 696f78c96ce..82b7e781605 100644 --- a/src/plugins/baremetal/defaultgdbserverprovider.h +++ b/src/plugins/baremetal/defaultgdbserverprovider.h @@ -101,6 +101,7 @@ private: void setFromProvider(); HostWidget *m_hostWidget = nullptr; + QCheckBox *m_useExtendedRemoteCheckBox = nullptr; QPlainTextEdit *m_initCommandsTextEdit = nullptr; QPlainTextEdit *m_resetCommandsTextEdit = nullptr; }; diff --git a/src/plugins/baremetal/gdbserverprovider.cpp b/src/plugins/baremetal/gdbserverprovider.cpp index f4ea912ba08..137c260d7dc 100644 --- a/src/plugins/baremetal/gdbserverprovider.cpp +++ b/src/plugins/baremetal/gdbserverprovider.cpp @@ -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; } diff --git a/src/plugins/baremetal/gdbserverprovider.h b/src/plugins/baremetal/gdbserverprovider.h index d471df29125..c25fc363a84 100644 --- a/src/plugins/baremetal/gdbserverprovider.h +++ b/src/plugins/baremetal/gdbserverprovider.h @@ -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; }; |