diff --git a/src/plugins/debugger/debuggerdialogs.cpp b/src/plugins/debugger/debuggerdialogs.cpp index 370b18ea1834c7f6445ecd1ff5bf9a193be45693..7898dad621645f7f6e34effb0f3a76599ca7cd32 100644 --- a/src/plugins/debugger/debuggerdialogs.cpp +++ b/src/plugins/debugger/debuggerdialogs.cpp @@ -686,6 +686,27 @@ QString StartRemoteDialog::remoteArchitecture() const return m_ui->architectureComboBox->currentText(); } +QString StartRemoteDialog::gnuTarget() const +{ + return m_ui->gnuTargetComboBox->currentText(); +} + +void StartRemoteDialog::setGnuTargets(const QStringList &gnuTargets) +{ + m_ui->gnuTargetComboBox->clear(); + if (!gnuTargets.isEmpty()) { + m_ui->gnuTargetComboBox->insertItems(0, gnuTargets); + m_ui->gnuTargetComboBox->setCurrentIndex(0); + } +} + +void StartRemoteDialog::setGnuTarget(const QString &gnuTarget) +{ + const int index = m_ui->gnuTargetComboBox->findText(gnuTarget); + if (index != -1) + m_ui->gnuTargetComboBox->setCurrentIndex(index); +} + void StartRemoteDialog::setServerStartScript(const QString &scriptName) { m_ui->serverStartScript->setPath(scriptName); diff --git a/src/plugins/debugger/debuggerdialogs.h b/src/plugins/debugger/debuggerdialogs.h index e9b9b2f9154a614cabc33fea59e3b2df22c51d10..4d168a3456386869dcda8fa2f1cafc6ee4dcd658 100644 --- a/src/plugins/debugger/debuggerdialogs.h +++ b/src/plugins/debugger/debuggerdialogs.h @@ -178,6 +178,10 @@ public: void setRemoteArchitecture(const QString &arch); void setRemoteArchitectures(const QStringList &arches); + QString gnuTarget() const; + void setGnuTarget(const QString &gnuTarget); + void setGnuTargets(const QStringList &gnuTargets); + bool useServerStartScript() const; void setUseServerStartScript(bool on); QString serverStartScript() const; diff --git a/src/plugins/debugger/debuggerengine.h b/src/plugins/debugger/debuggerengine.h index 60baa929448be52c9bcaabfbce686aa1f41a149e..a3fe5e311bdeade98f825555c4fc270d23d3ca51 100644 --- a/src/plugins/debugger/debuggerengine.h +++ b/src/plugins/debugger/debuggerengine.h @@ -90,6 +90,7 @@ public: // for remote debugging QString remoteChannel; QString remoteArchitecture; + QString gnuTarget; QString symbolFileName; bool useServerStartScript; QString serverStartScript; diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index 2f01fd93a903386ae8718105dd299ab5ba296a8c..0f6648680f28fde71af3200ab915164de27fa94b 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -1877,16 +1877,28 @@ void DebuggerPluginPrivate::startRemoteApplication() QStringList arches; arches.append(_("i386:x86-64:intel")); arches.append(_("i386")); + arches.append(_("arm")); QString lastUsed = configValue(_("LastRemoteArchitecture")).toString(); if (!arches.contains(lastUsed)) arches.prepend(lastUsed); dlg.setRemoteArchitectures(arches); + QStringList gnuTargets; + gnuTargets.append(_("auto")); + gnuTargets.append(_("i686-linux-gnu")); + gnuTargets.append(_("x86_64-linux-gnu")); + gnuTargets.append(_("arm-none-linux-gnueabi")); + const QString lastUsedGnuTarget + = configValue(_("LastGnuTarget")).toString(); + if (!gnuTargets.contains(lastUsedGnuTarget)) + gnuTargets.prepend(lastUsedGnuTarget); + dlg.setGnuTargets(gnuTargets); dlg.setRemoteChannel( configValue(_("LastRemoteChannel")).toString()); dlg.setLocalExecutable( configValue(_("LastLocalExecutable")).toString()); dlg.setDebugger(configValue(_("LastDebugger")).toString()); dlg.setRemoteArchitecture(lastUsed); + dlg.setGnuTarget(lastUsedGnuTarget); dlg.setServerStartScript( configValue(_("LastServerStartScript")).toString()); dlg.setUseServerStartScript( @@ -1898,11 +1910,13 @@ void DebuggerPluginPrivate::startRemoteApplication() setConfigValue(_("LastLocalExecutable"), dlg.localExecutable()); setConfigValue(_("LastDebugger"), dlg.debugger()); setConfigValue(_("LastRemoteArchitecture"), dlg.remoteArchitecture()); + setConfigValue(_("LastGnuTarget"), dlg.gnuTarget()); setConfigValue(_("LastServerStartScript"), dlg.serverStartScript()); setConfigValue(_("LastUseServerStartScript"), dlg.useServerStartScript()); setConfigValue(_("LastSysroot"), dlg.sysRoot()); sp.remoteChannel = dlg.remoteChannel(); sp.remoteArchitecture = dlg.remoteArchitecture(); + sp.gnuTarget = dlg.gnuTarget(); sp.executable = dlg.localExecutable(); sp.displayName = dlg.localExecutable(); sp.debuggerCommand = dlg.debugger(); // Override toolchain-detection. diff --git a/src/plugins/debugger/gdb/remotegdbserveradapter.cpp b/src/plugins/debugger/gdb/remotegdbserveradapter.cpp index 86fa9edfc4b7d30bc58e73a050f6eaca79d0c1a9..736b44103f80208533f72724cff2c19271b60745 100644 --- a/src/plugins/debugger/gdb/remotegdbserveradapter.cpp +++ b/src/plugins/debugger/gdb/remotegdbserveradapter.cpp @@ -171,12 +171,15 @@ void RemoteGdbServerAdapter::setupInferior() } const QByteArray sysRoot = startParameters().sysRoot.toLocal8Bit(); const QByteArray remoteArch = startParameters().remoteArchitecture.toLatin1(); + const QByteArray gnuTarget = startParameters().gnuTarget.toLatin1(); const QByteArray solibPath = QFileInfo(startParameters().dumperLibrary).path().toLocal8Bit(); const QString args = startParameters().processArgs.join(_(" ")); if (!remoteArch.isEmpty()) m_engine->postCommand("set architecture " + remoteArch); + if (!gnuTarget.isEmpty()) + m_engine->postCommand("set gnutarget " + gnuTarget); if (!sysRoot.isEmpty()) m_engine->postCommand("set sysroot " + sysRoot); if (!solibPath.isEmpty()) diff --git a/src/plugins/debugger/startremotedialog.ui b/src/plugins/debugger/startremotedialog.ui index fe83dd259fe374a2f0e3a1a288ff90624b60b0d3..f02da26c86fa53f4d5eb6237b95bb754bd6d9bfe 100644 --- a/src/plugins/debugger/startremotedialog.ui +++ b/src/plugins/debugger/startremotedialog.ui @@ -6,25 +6,16 @@ <rect> <x>0</x> <y>0</y> - <width>439</width> - <height>224</height> + <width>446</width> + <height>269</height> </rect> </property> <property name="windowTitle"> <string>Start Debugger</string> </property> - <layout class="QVBoxLayout"> - <property name="spacing"> - <number>6</number> - </property> - <property name="margin"> - <number>9</number> - </property> + <layout class="QVBoxLayout" name="verticalLayout"> <item> <layout class="QFormLayout" name="formLayout"> - <property name="fieldGrowthPolicy"> - <enum>QFormLayout::ExpandingFieldsGrow</enum> - </property> <item row="0" column="0"> <widget class="QLabel" name="debuggerLabel"> <property name="text"> @@ -74,33 +65,47 @@ </widget> </item> <item row="4" column="0"> + <widget class="QLabel" name="gnuTargetLabel"> + <property name="text"> + <string>GNU target</string> + </property> + </widget> + </item> + <item row="4" column="1"> + <widget class="QComboBox" name="gnuTargetComboBox"> + <property name="editable"> + <bool>true</bool> + </property> + </widget> + </item> + <item row="5" column="0"> <widget class="QLabel" name="sysrootLabel"> <property name="text"> <string>Sysroot:</string> </property> </widget> </item> - <item row="4" column="1"> + <item row="5" column="1"> <widget class="Utils::PathChooser" name="sysrootPathChooser" native="true"/> </item> - <item row="5" column="0"> + <item row="6" column="0"> <widget class="QLabel" name="useServerStartScriptLabel"> <property name="text"> <string>Use server start script:</string> </property> </widget> </item> - <item row="5" column="1"> + <item row="6" column="1"> <widget class="QCheckBox" name="useServerStartScriptCheckBox"/> </item> - <item row="6" column="0"> + <item row="7" column="0"> <widget class="QLabel" name="serverStartScriptLabel"> <property name="text"> <string>Server start script:</string> </property> </widget> </item> - <item row="6" column="1"> + <item row="7" column="1"> <widget class="Utils::PathChooser" name="serverStartScript" native="true"/> </item> </layout> diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemodebugsupport.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemodebugsupport.cpp index abac864fa01bd9efa979705a2d54d43e59d9fec3..f045cf630612b557557473f4e19b896d3b8c17d2 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemodebugsupport.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemodebugsupport.cpp @@ -99,6 +99,7 @@ RunControl *MaemoDebugSupport::createDebugRunControl(MaemoRunConfiguration *runC + QString::number(gdbServerPort(runConfig)); params.useServerStartScript = true; params.remoteArchitecture = QLatin1String("arm"); + params.gnuTarget = QLatin1String("arm-none-linux-gnueabi"); } } else { params.startMode = AttachToRemote;