aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDenis Vygovskiy <[email protected]>2019-05-08 12:23:07 +1000
committerDenis Vygovskiy <[email protected]>2019-05-14 10:57:05 +0000
commite644a5b39a979e9d620376a2a837f44cf9d5a131 (patch)
treee558ecad59a493c38940ef20df4c9f62dac32479
parent790bcf5ef0cf1f17ab900d7a7b42134b03597ace (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.cpp1
-rw-r--r--src/plugins/baremetal/defaultgdbserverprovider.cpp8
-rw-r--r--src/plugins/baremetal/defaultgdbserverprovider.h1
-rw-r--r--src/plugins/baremetal/gdbserverprovider.cpp19
-rw-r--r--src/plugins/baremetal/gdbserverprovider.h4
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;
};