From e73a187246cd3e9c41fde3c02ba144c398aba259 Mon Sep 17 00:00:00 2001 From: Denis Shienkov Date: Tue, 26 Nov 2019 17:41:39 +0300 Subject: [PATCH] BareMetal: Get rid of GdbServerProvider::NoStartup mode This mode is useless, has not sense, and complicates a code handling. A more useful equivalent for this mode is "Debug->Start Debugging->Attach to Running Debug Server". Change-Id: I863dbc5c41ca82db52792a3ff2a1eae16f8e7afd Reviewed-by: hjk --- .../debugservers/gdb/gdbserverprovider.cpp | 36 +++++++++---------- .../debugservers/gdb/gdbserverprovider.h | 8 ++--- .../gdb/jlinkgdbserverprovider.cpp | 31 +++------------- .../debugservers/gdb/jlinkgdbserverprovider.h | 3 +- .../gdb/openocdgdbserverprovider.cpp | 18 +++------- .../gdb/openocdgdbserverprovider.h | 2 +- .../gdb/stlinkutilgdbserverprovider.cpp | 30 +++------------- .../gdb/stlinkutilgdbserverprovider.h | 3 +- 8 files changed, 35 insertions(+), 96 deletions(-) diff --git a/src/plugins/baremetal/debugservers/gdb/gdbserverprovider.cpp b/src/plugins/baremetal/debugservers/gdb/gdbserverprovider.cpp index d53fb42e8fa..25840884bc8 100644 --- a/src/plugins/baremetal/debugservers/gdb/gdbserverprovider.cpp +++ b/src/plugins/baremetal/debugservers/gdb/gdbserverprovider.cpp @@ -221,11 +221,6 @@ RunWorker *GdbServerProvider::targetRunner(RunControl *runControl) const return new GdbServerProviderRunner(runControl, r); } -bool GdbServerProvider::canStartupMode(StartupMode m) const -{ - return m == NoStartup; -} - bool GdbServerProvider::fromMap(const QVariantMap &data) { if (!IDebugServerProvider::fromMap(data)) @@ -299,23 +294,24 @@ void GdbServerProviderConfigWidget::setStartupMode(GdbServerProvider::StartupMod } } +static QString startupModeName(GdbServerProvider::StartupMode m) +{ + switch (m) { + case GdbServerProvider::StartupOnNetwork: + return GdbServerProviderConfigWidget::tr("Startup in TCP/IP Mode"); + case GdbServerProvider::StartupOnPipe: + return GdbServerProviderConfigWidget::tr("Startup in Pipe Mode"); + default: + return {}; + } +} + void GdbServerProviderConfigWidget::populateStartupModes() { - for (int i = 0; i < GdbServerProvider::StartupModesCount; ++i) { - const auto m = static_cast(i); - if (!static_cast(m_provider)->canStartupMode(m)) - continue; - - const int idx = m_startupModeComboBox->count(); - m_startupModeComboBox->insertItem( - idx, - (m == GdbServerProvider::NoStartup) - ? tr("No Startup") - : ((m == GdbServerProvider::StartupOnNetwork) - ? tr("Startup in TCP/IP Mode") - : tr("Startup in Pipe Mode")), - m); - } + const QSet modes = static_cast( + m_provider)->supportedStartupModes(); + for (const auto mode : modes) + m_startupModeComboBox->addItem(startupModeName(mode), mode); } void GdbServerProviderConfigWidget::setFromProvider() diff --git a/src/plugins/baremetal/debugservers/gdb/gdbserverprovider.h b/src/plugins/baremetal/debugservers/gdb/gdbserverprovider.h index fbfadeff0e6..dc3f7121456 100644 --- a/src/plugins/baremetal/debugservers/gdb/gdbserverprovider.h +++ b/src/plugins/baremetal/debugservers/gdb/gdbserverprovider.h @@ -45,10 +45,8 @@ class GdbServerProvider : public IDebugServerProvider { public: enum StartupMode { - NoStartup = 0, StartupOnNetwork, - StartupOnPipe, - StartupModesCount + StartupOnPipe }; StartupMode startupMode() const; @@ -70,7 +68,7 @@ public: ProjectExplorer::RunControl *runControl) const final; bool isValid() const override; - virtual bool canStartupMode(StartupMode) const; + virtual QSet supportedStartupModes() const = 0; QUrl channel() const; void setChannel(const QUrl &channelString); @@ -90,7 +88,7 @@ protected: QString m_settingsBase; QUrl m_channel; - StartupMode m_startupMode = NoStartup; + StartupMode m_startupMode = StartupOnNetwork; QString m_initCommands; QString m_resetCommands; bool m_useExtendedRemote = false; diff --git a/src/plugins/baremetal/debugservers/gdb/jlinkgdbserverprovider.cpp b/src/plugins/baremetal/debugservers/gdb/jlinkgdbserverprovider.cpp index 39a2666599e..fba9020dcc5 100644 --- a/src/plugins/baremetal/debugservers/gdb/jlinkgdbserverprovider.cpp +++ b/src/plugins/baremetal/debugservers/gdb/jlinkgdbserverprovider.cpp @@ -84,8 +84,6 @@ QString JLinkGdbServerProvider::defaultResetCommands() QString JLinkGdbServerProvider::channelString() const { switch (startupMode()) { - case NoStartup: - // fallback case StartupOnNetwork: // Just return as "host:port" form. return GdbServerProvider::channelString(); @@ -122,9 +120,10 @@ CommandLine JLinkGdbServerProvider::command() const return cmd; } -bool JLinkGdbServerProvider::canStartupMode(StartupMode m) const +QSet +JLinkGdbServerProvider::supportedStartupModes() const { - return m == NoStartup || m == StartupOnNetwork; + return {StartupOnNetwork}; } bool JLinkGdbServerProvider::isValid() const @@ -134,7 +133,7 @@ bool JLinkGdbServerProvider::isValid() const const StartupMode m = startupMode(); - if (m == NoStartup || m == StartupOnNetwork) { + if (m == StartupOnNetwork) { if (channel().host().isEmpty()) return false; } @@ -331,9 +330,6 @@ JLinkGdbServerProviderConfigWidget::JLinkGdbServerProviderConfigWidget( connect(m_targetInterfaceSpeedComboBox, &QComboBox::currentTextChanged, this, &GdbServerProviderConfigWidget::dirty); - - connect(m_startupModeComboBox, QOverload::of(&QComboBox::currentIndexChanged), - this, &JLinkGdbServerProviderConfigWidget::startupModeChanged); connect(m_hostInterfaceComboBox, QOverload::of(&QComboBox::currentIndexChanged), this, &JLinkGdbServerProviderConfigWidget::hostInterfaceChanged); connect(m_targetInterfaceComboBox, QOverload::of(&QComboBox::currentIndexChanged), @@ -364,22 +360,6 @@ void JLinkGdbServerProviderConfigWidget::discard() GdbServerProviderConfigWidget::discard(); } -void JLinkGdbServerProviderConfigWidget::startupModeChanged() -{ - const GdbServerProvider::StartupMode m = startupMode(); - const bool isStartup = m != GdbServerProvider::NoStartup; - m_executableFileChooser->setVisible(isStartup); - m_mainLayout->labelForField(m_executableFileChooser)->setVisible(isStartup); - m_hostInterfaceWidget->setVisible(isStartup); - m_mainLayout->labelForField(m_hostInterfaceWidget)->setVisible(isStartup); - m_targetInterfaceWidget->setVisible(isStartup); - m_mainLayout->labelForField(m_targetInterfaceWidget)->setVisible(isStartup); - m_jlinkDeviceLineEdit->setVisible(isStartup); - m_mainLayout->labelForField(m_jlinkDeviceLineEdit)->setVisible(isStartup); - m_additionalArgumentsTextEdit->setVisible(isStartup); - m_mainLayout->labelForField(m_additionalArgumentsTextEdit)->setVisible(isStartup); -} - void JLinkGdbServerProviderConfigWidget::hostInterfaceChanged() { const HostInterface selectedInterface = static_cast( @@ -405,7 +385,6 @@ void JLinkGdbServerProviderConfigWidget::setFromProvider() Q_ASSERT(p); const QSignalBlocker blocker(this); - startupModeChanged(); m_hostWidget->setChannel(p->channel()); m_executableFileChooser->setFileName(p->m_executableFile); m_jlinkDeviceLineEdit->setText(p->m_jlinkDevice); @@ -422,4 +401,4 @@ void JLinkGdbServerProviderConfigWidget::setFromProvider() } } // namespace Internal -} // namespace ProjectExplorer +} // namespace BareMetal diff --git a/src/plugins/baremetal/debugservers/gdb/jlinkgdbserverprovider.h b/src/plugins/baremetal/debugservers/gdb/jlinkgdbserverprovider.h index 871f1a9b8d9..a0e4c444d56 100644 --- a/src/plugins/baremetal/debugservers/gdb/jlinkgdbserverprovider.h +++ b/src/plugins/baremetal/debugservers/gdb/jlinkgdbserverprovider.h @@ -52,7 +52,7 @@ public: QString channelString() const final; Utils::CommandLine command() const final; - bool canStartupMode(StartupMode mode) const final; + QSet supportedStartupModes() const final; bool isValid() const final; private: @@ -118,7 +118,6 @@ private: void apply() final; void discard() final; - void startupModeChanged(); void hostInterfaceChanged(); void targetInterfaceChanged(); void setFromProvider(); diff --git a/src/plugins/baremetal/debugservers/gdb/openocdgdbserverprovider.cpp b/src/plugins/baremetal/debugservers/gdb/openocdgdbserverprovider.cpp index 63fab5e3496..1a30eeede73 100644 --- a/src/plugins/baremetal/debugservers/gdb/openocdgdbserverprovider.cpp +++ b/src/plugins/baremetal/debugservers/gdb/openocdgdbserverprovider.cpp @@ -79,8 +79,6 @@ QString OpenOcdGdbServerProvider::defaultResetCommands() QString OpenOcdGdbServerProvider::channelString() const { switch (startupMode()) { - case NoStartup: - // fallback case StartupOnNetwork: // Just return as "host:port" form. return GdbServerProvider::channelString(); @@ -124,9 +122,10 @@ CommandLine OpenOcdGdbServerProvider::command() const return cmd; } -bool OpenOcdGdbServerProvider::canStartupMode(StartupMode m) const +QSet +OpenOcdGdbServerProvider::supportedStartupModes() const { - return m == NoStartup || m == StartupOnNetwork || m == StartupOnPipe; + return {StartupOnNetwork, StartupOnPipe}; } bool OpenOcdGdbServerProvider::isValid() const @@ -136,7 +135,7 @@ bool OpenOcdGdbServerProvider::isValid() const const StartupMode m = startupMode(); - if (m == NoStartup || m == StartupOnNetwork) { + if (m == StartupOnNetwork) { if (channel().host().isEmpty()) return false; } @@ -307,15 +306,6 @@ void OpenOcdGdbServerProviderConfigWidget::discard() void OpenOcdGdbServerProviderConfigWidget::startupModeChanged() { const GdbServerProvider::StartupMode m = startupMode(); - const bool isStartup = m != GdbServerProvider::NoStartup; - m_executableFileChooser->setVisible(isStartup); - m_mainLayout->labelForField(m_executableFileChooser)->setVisible(isStartup); - m_rootScriptsDirChooser->setVisible(isStartup); - m_mainLayout->labelForField(m_rootScriptsDirChooser)->setVisible(isStartup); - m_configurationFileChooser->setVisible(isStartup); - m_mainLayout->labelForField(m_configurationFileChooser)->setVisible(isStartup); - m_additionalArgumentsLineEdit->setVisible(isStartup); - m_mainLayout->labelForField(m_additionalArgumentsLineEdit)->setVisible(isStartup); const bool isNetwork = m != GdbServerProvider::StartupOnPipe; m_hostWidget->setVisible(isNetwork); m_mainLayout->labelForField(m_hostWidget)->setVisible(isNetwork); diff --git a/src/plugins/baremetal/debugservers/gdb/openocdgdbserverprovider.h b/src/plugins/baremetal/debugservers/gdb/openocdgdbserverprovider.h index d878231b07f..d4eb2615f0e 100644 --- a/src/plugins/baremetal/debugservers/gdb/openocdgdbserverprovider.h +++ b/src/plugins/baremetal/debugservers/gdb/openocdgdbserverprovider.h @@ -52,7 +52,7 @@ public: QString channelString() const final; Utils::CommandLine command() const final; - bool canStartupMode(StartupMode mode) const final; + QSet supportedStartupModes() const final; bool isValid() const final; private: diff --git a/src/plugins/baremetal/debugservers/gdb/stlinkutilgdbserverprovider.cpp b/src/plugins/baremetal/debugservers/gdb/stlinkutilgdbserverprovider.cpp index 3f40009ab3d..7cf1df20508 100644 --- a/src/plugins/baremetal/debugservers/gdb/stlinkutilgdbserverprovider.cpp +++ b/src/plugins/baremetal/debugservers/gdb/stlinkutilgdbserverprovider.cpp @@ -87,8 +87,6 @@ QString StLinkUtilGdbServerProvider::defaultResetCommands() QString StLinkUtilGdbServerProvider::channelString() const { switch (startupMode()) { - case NoStartup: - // fallback case StartupOnNetwork: // Just return as "host:port" form. return GdbServerProvider::channelString(); @@ -117,9 +115,10 @@ CommandLine StLinkUtilGdbServerProvider::command() const return cmd; } -bool StLinkUtilGdbServerProvider::canStartupMode(StartupMode m) const +QSet +StLinkUtilGdbServerProvider::supportedStartupModes() const { - return m == NoStartup || m == StartupOnNetwork; + return {StartupOnNetwork}; } bool StLinkUtilGdbServerProvider::isValid() const @@ -129,7 +128,7 @@ bool StLinkUtilGdbServerProvider::isValid() const const StartupMode m = startupMode(); - if (m == NoStartup || m == StartupOnNetwork) { + if (m == StartupOnNetwork) { if (channel().host().isEmpty()) return false; } @@ -287,10 +286,6 @@ StLinkUtilGdbServerProviderConfigWidget::StLinkUtilGdbServerProviderConfigWidget this, &GdbServerProviderConfigWidget::dirty); connect(m_resetCommandsTextEdit, &QPlainTextEdit::textChanged, this, &GdbServerProviderConfigWidget::dirty); - - connect(m_startupModeComboBox, - QOverload::of(&QComboBox::currentIndexChanged), - this, &StLinkUtilGdbServerProviderConfigWidget::startupModeChanged); } void StLinkUtilGdbServerProviderConfigWidget::apply() @@ -340,22 +335,6 @@ void StLinkUtilGdbServerProviderConfigWidget::setTransportLayer( } } -void StLinkUtilGdbServerProviderConfigWidget::startupModeChanged() -{ - const GdbServerProvider::StartupMode m = startupMode(); - const bool isStartup = m != GdbServerProvider::NoStartup; - m_executableFileChooser->setVisible(isStartup); - m_mainLayout->labelForField(m_executableFileChooser)->setVisible(isStartup); - m_verboseLevelSpinBox->setVisible(isStartup); - m_mainLayout->labelForField(m_verboseLevelSpinBox)->setVisible(isStartup); - m_extendedModeCheckBox->setVisible(isStartup); - m_mainLayout->labelForField(m_extendedModeCheckBox)->setVisible(isStartup); - m_resetBoardCheckBox->setVisible(isStartup); - m_mainLayout->labelForField(m_resetBoardCheckBox)->setVisible(isStartup); - m_transportLayerComboBox->setVisible(isStartup); - m_mainLayout->labelForField(m_transportLayerComboBox)->setVisible(isStartup); -} - void StLinkUtilGdbServerProviderConfigWidget::populateTransportLayers() { m_transportLayerComboBox->insertItem( @@ -372,7 +351,6 @@ void StLinkUtilGdbServerProviderConfigWidget::setFromProvider() Q_ASSERT(p); const QSignalBlocker blocker(this); - startupModeChanged(); m_hostWidget->setChannel(p->channel()); m_executableFileChooser->setFileName(p->m_executableFile); m_verboseLevelSpinBox->setValue(p->m_verboseLevel); diff --git a/src/plugins/baremetal/debugservers/gdb/stlinkutilgdbserverprovider.h b/src/plugins/baremetal/debugservers/gdb/stlinkutilgdbserverprovider.h index 69503610d80..eee21767c1a 100644 --- a/src/plugins/baremetal/debugservers/gdb/stlinkutilgdbserverprovider.h +++ b/src/plugins/baremetal/debugservers/gdb/stlinkutilgdbserverprovider.h @@ -55,7 +55,7 @@ public: QString channelString() const final; Utils::CommandLine command() const final; - bool canStartupMode(StartupMode mode) const final; + QSet supportedStartupModes() const final; bool isValid() const final; private: @@ -110,7 +110,6 @@ private: StLinkUtilGdbServerProvider::TransportLayer transportLayer() const; void setTransportLayer(StLinkUtilGdbServerProvider::TransportLayer); - void startupModeChanged(); void populateTransportLayers(); void setFromProvider();