diff --git a/src/plugins/debugger/gdb/remotegdbserveradapter.cpp b/src/plugins/debugger/gdb/remotegdbserveradapter.cpp index 9cd71bd3a9c..0e3dd9e0ffa 100644 --- a/src/plugins/debugger/gdb/remotegdbserveradapter.cpp +++ b/src/plugins/debugger/gdb/remotegdbserveradapter.cpp @@ -247,14 +247,24 @@ void RemoteGdbServerAdapter::callTargetRemote() // (1) connects to the gdb server // (2) starts the remote application // (3) stops the remote application (early, e.g. in the dynamic linker) - QString channel = startParameters().remoteChannel; - if (m_engine->m_isQnxGdb) { - m_engine->postCommand("target qnx " + channel.toLatin1(), - CB(handleTargetQnx)); - } else { - m_engine->postCommand("target remote " + channel.toLatin1(), - CB(handleTargetRemote)); + QByteArray channel = startParameters().remoteChannel.toLatin1(); + + // Don't touch channels with explicitly set protocols. + if (!channel.startsWith("tcp:") && !channel.startsWith("udp:") + && !channel.startsWith("file:") && channel.contains(':')) + { + // "Fix" the IPv6 case with host names without '['...']' + if (!channel.startsWith('[') && channel.count(':') >= 2) { + channel.insert(0, '['); + channel.insert(channel.lastIndexOf(':'), ']'); + } + channel = "tcp:" + channel; } + + if (m_engine->m_isQnxGdb) + m_engine->postCommand("target qnx " + channel, CB(handleTargetQnx)); + else + m_engine->postCommand("target remote " + channel, CB(handleTargetRemote)); } void RemoteGdbServerAdapter::handleTargetRemote(const GdbResponse &record) diff --git a/src/plugins/remotelinux/remotelinuxdebugsupport.cpp b/src/plugins/remotelinux/remotelinuxdebugsupport.cpp index c24fcdf6578..161fffdbbc7 100644 --- a/src/plugins/remotelinux/remotelinuxdebugsupport.cpp +++ b/src/plugins/remotelinux/remotelinuxdebugsupport.cpp @@ -110,10 +110,7 @@ DebuggerStartParameters AbstractRemoteLinuxDebugSupport::startParameters(const R params.startMode = AttachToRemoteServer; params.executable = runConfig->localExecutableFilePath(); params.debuggerCommand = runConfig->gdbCmd(); - QString host = devConf->sshParameters().host; - params.remoteChannel = host.contains(QLatin1Char(':')) - ? QString::fromLatin1("[%1]:-1").arg(host) - : host + QLatin1String(":-1"); + params.remoteChannel = devConf->sshParameters().host + QLatin1String(":-1"); // TODO: This functionality should be inside the debugger. const ProjectExplorer::Abi &abi = runConfig->target() diff --git a/src/plugins/remotelinux/startgdbserverdialog.cpp b/src/plugins/remotelinux/startgdbserverdialog.cpp index f12369d7238..bbd0619c7db 100644 --- a/src/plugins/remotelinux/startgdbserverdialog.cpp +++ b/src/plugins/remotelinux/startgdbserverdialog.cpp @@ -359,12 +359,7 @@ void StartGdbServerDialog::reportOpenPort(int port) return; LinuxDeviceConfiguration::ConstPtr device = d->currentDevice(); - QString host = device->sshParameters().host; - QString channel; - if (host.contains(QLatin1Char(':'))) - channel = QString::fromLatin1("[%1]:%2").arg(host).arg(port); - else - channel = QString::fromLatin1("%1:%2").arg(host).arg(port); + QString channel = QString("%1:%2").arg(device->sshParameters().host).arg(port); logMessage(tr("Server started on %1").arg(channel)); QMetaObject::invokeMethod(ob, "gdbServerStarted", Qt::QueuedConnection,