From ac2ceb36d76186aeb13022ef6ebc785bb454e2cf Mon Sep 17 00:00:00 2001
From: hjk <hjk@qt.io>
Date: Wed, 16 Nov 2016 13:02:22 +0100
Subject: [PATCH] Debugger: Split related settings

GDB's 'target extended-remote' and 'set detach-on-fork' are related,
but neither the same nor orthogonal. Better use two bools.

Task-number: QTCREATORBUG-17264
Task-number: QTCREATORBUG-16978
Change-Id: I50dfcdf8f69fadcc6dff2dcf632e4bdfe28a28bf
Reviewed-by: Vikas Pachdha <vikas.pachdha@qt.io>
Reviewed-by: hjk <hjk@qt.io>
---
 src/plugins/debugger/debuggerstartparameters.h           | 1 +
 src/plugins/debugger/gdb/remotegdbserveradapter.cpp      | 4 ++--
 src/plugins/remotelinux/remotelinuxruncontrolfactory.cpp | 2 +-
 3 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/plugins/debugger/debuggerstartparameters.h b/src/plugins/debugger/debuggerstartparameters.h
index 831bbec9248..136b27632e7 100644
--- a/src/plugins/debugger/debuggerstartparameters.h
+++ b/src/plugins/debugger/debuggerstartparameters.h
@@ -84,6 +84,7 @@ public:
     QString remoteChannel;
     QSsh::SshConnectionParameters connParams;
     bool remoteSetupNeeded = false;
+    bool useExtendedRemote = false; // Whether to use GDB's target extended-remote or not.
     QString symbolFile;
 
     // Used by Mer plugin (3rd party)
diff --git a/src/plugins/debugger/gdb/remotegdbserveradapter.cpp b/src/plugins/debugger/gdb/remotegdbserveradapter.cpp
index 9d2b60d78fc..0e32b675920 100644
--- a/src/plugins/debugger/gdb/remotegdbserveradapter.cpp
+++ b/src/plugins/debugger/gdb/remotegdbserveradapter.cpp
@@ -262,7 +262,7 @@ void GdbRemoteServerEngine::callTargetRemote()
 
     if (m_isQnxGdb)
         runCommand({"target qnx " + channel, NoFlags, CB(handleTargetQnx)});
-    else if (runParameters().multiProcess)
+    else if (runParameters().useExtendedRemote)
         runCommand({"target extended-remote " + channel, NoFlags, CB(handleTargetExtendedRemote)});
     else
         runCommand({"target remote " + channel, NoFlags, CB(handleTargetRemote)});
@@ -467,7 +467,7 @@ void GdbRemoteServerEngine::notifyEngineRemoteServerRunning
     // Currently only used by Android support.
     runParameters().attachPID = inferiorPid;
     runParameters().remoteChannel = serverChannel;
-    runParameters().multiProcess = true;
+    runParameters().useExtendedRemote = true;
     showMessage("NOTE: REMOTE SERVER RUNNING IN MULTIMODE");
     m_startAttempted = true;
     startGdb();
diff --git a/src/plugins/remotelinux/remotelinuxruncontrolfactory.cpp b/src/plugins/remotelinux/remotelinuxruncontrolfactory.cpp
index 67c449564da..3926e40d675 100644
--- a/src/plugins/remotelinux/remotelinuxruncontrolfactory.cpp
+++ b/src/plugins/remotelinux/remotelinuxruncontrolfactory.cpp
@@ -122,7 +122,7 @@ RunControl *RemoteLinuxRunControlFactory::create(RunConfiguration *runConfig, Co
             params.qmlServer.port = Utils::Port(); // port is selected later on
         }
         if (aspect->useCppDebugger()) {
-            aspect->setUseMultiProcess(true);
+            params.useExtendedRemote = true;
             params.inferior.executable = stdRunnable.executable;
             params.inferior.commandLineArguments = stdRunnable.commandLineArguments;
             if (aspect->useQmlDebugger()) {
-- 
GitLab