diff --git a/src/plugins/analyzerbase/analyzerconstants.h b/src/plugins/analyzerbase/analyzerconstants.h
index f078d058dbd5f55d0555a73a3e1be924a5a9efa1..bfe65bf5e8519ef765ef780b25a78979e419d34e 100644
--- a/src/plugins/analyzerbase/analyzerconstants.h
+++ b/src/plugins/analyzerbase/analyzerconstants.h
@@ -35,18 +35,6 @@
 #include <QtGlobal>
 
 namespace Analyzer {
-
-// Special values for currently used start modes.
-// Their meaning is interpreted by the individual tools.
-// FIXME: The plan is to remove this entirely from the
-// public interface and let the tools handle that internally.
-
-enum StartMode
-{
-    StartLocal = -1,
-    StartRemote = -2
-};
-
 namespace Constants {
 
 // Mode and its priority.
diff --git a/src/plugins/analyzerbase/analyzerruncontrol.h b/src/plugins/analyzerbase/analyzerruncontrol.h
index 82769b0768ebc4d88175ab988616dc5af0775f33..8b294c4c85fc09cde7690451c4a080a2e01ebe20 100644
--- a/src/plugins/analyzerbase/analyzerruncontrol.h
+++ b/src/plugins/analyzerbase/analyzerruncontrol.h
@@ -74,8 +74,6 @@ public:
     /// The start parameters for this engine.
     const AnalyzerStartParameters &startParameters() const { return m_sp; }
 
-    StartMode mode() const { return m_sp.startMode; }
-
     virtual void notifyRemoteSetupDone(quint16) {}
     virtual void notifyRemoteFinished() {}
 
diff --git a/src/plugins/analyzerbase/analyzerstartparameters.h b/src/plugins/analyzerbase/analyzerstartparameters.h
index bc8fa3efc645537937fc80616dc540f2b669e397..83e800c8eff5ca64772644764f3a3770a9c55987 100644
--- a/src/plugins/analyzerbase/analyzerstartparameters.h
+++ b/src/plugins/analyzerbase/analyzerstartparameters.h
@@ -50,11 +50,12 @@ class ANALYZER_EXPORT AnalyzerStartParameters
 {
 public:
     AnalyzerStartParameters()
-        : localRunMode(ProjectExplorer::ApplicationLauncher::Gui)
-        , analyzerPort(0)
+        : useStartupProject(true),
+          localRunMode(ProjectExplorer::ApplicationLauncher::Gui),
+          analyzerPort(0)
     {}
 
-    StartMode startMode;
+    bool useStartupProject;
     ProjectExplorer::RunMode runMode;
     QSsh::SshConnectionParameters connParams;
     ProjectExplorer::ApplicationLauncher::Mode localRunMode;
diff --git a/src/plugins/analyzerbase/ianalyzertool.cpp b/src/plugins/analyzerbase/ianalyzertool.cpp
index b93e6dad57d1eb8ee34b68122736eb896b93a796..468455a30df2188c8f31d879b742b26cf14088c4 100644
--- a/src/plugins/analyzerbase/ianalyzertool.cpp
+++ b/src/plugins/analyzerbase/ianalyzertool.cpp
@@ -59,12 +59,12 @@ using namespace ProjectExplorer;
 namespace Analyzer {
 
 AnalyzerAction::AnalyzerAction(QObject *parent)
-    : QAction(parent)
+    : QAction(parent), m_useStartupProject(true)
 {}
 
 bool AnalyzerAction::isRunnable(QString *reason) const
 {
-    if (m_startMode == StartRemote)
+    if (!m_useStartupProject)
         return true;
 
     return ProjectExplorerPlugin::canRun(SessionManager::startupProject(), m_runMode, reason);
@@ -72,7 +72,7 @@ bool AnalyzerAction::isRunnable(QString *reason) const
 
 AnalyzerRunControl *AnalyzerAction::tryCreateRunControl(const AnalyzerStartParameters &sp, RunConfiguration *runConfiguration) const
 {
-    if (m_runMode == sp.runMode && m_startMode == sp.startMode)
+    if (m_runMode == sp.runMode && m_useStartupProject == sp.useStartupProject)
         return m_runControlCreator(sp, runConfiguration);
     return 0;
 }
@@ -150,7 +150,7 @@ bool checkForRemoteStart(AnalyzerStartParameters *sp)
     if (dlg.exec() != QDialog::Accepted)
         return false;
 
-    sp->startMode = StartRemote;
+    sp->useStartupProject = false;
     sp->connParams = dlg.sshParams();
     sp->debuggee = dlg.executable();
     sp->debuggeeArgs = dlg.arguments();
diff --git a/src/plugins/analyzerbase/ianalyzertool.h b/src/plugins/analyzerbase/ianalyzertool.h
index 31cec8cc71223308a9ade936121f2c70ef84277d..5a6e3631dc0f7a7c56916f5ed1d1842056da6262 100644
--- a/src/plugins/analyzerbase/ianalyzertool.h
+++ b/src/plugins/analyzerbase/ianalyzertool.h
@@ -80,7 +80,7 @@ public:
     explicit AnalyzerAction(QObject *parent = 0);
 
 public:
-    void setStartMode(StartMode startMode) { m_startMode = startMode; }
+    void setUseSpecialStart() { m_useStartupProject = false; }
 
     Core::Id menuGroup() const { return m_menuGroup; }
     void setMenuGroup(Core::Id menuGroup) { m_menuGroup = menuGroup; }
@@ -114,7 +114,7 @@ public:
     void setToolStarter(const ToolStarter &toolStarter) { m_toolStarter = toolStarter; }
 
 protected:
-    StartMode m_startMode;
+    bool m_useStartupProject;
     Core::Id m_menuGroup;
     Core::Id m_actionId;
     Core::Id m_toolId;
diff --git a/src/plugins/android/androidanalyzesupport.cpp b/src/plugins/android/androidanalyzesupport.cpp
index 7c1fe17a52cfc5860872983bf5e52c738d03a872..9b80e3ce3c898679f1b60e2e821de4efd46f3b87 100644
--- a/src/plugins/android/androidanalyzesupport.cpp
+++ b/src/plugins/android/androidanalyzesupport.cpp
@@ -66,7 +66,6 @@ RunControl *AndroidAnalyzeSupport::createAnalyzeRunControl(AndroidRunConfigurati
         QTC_ASSERT(server.listen(QHostAddress::LocalHost)
                    || server.listen(QHostAddress::LocalHostIPv6), return 0);
         params.analyzerHost = server.serverAddress().toString();
-        params.startMode = StartLocal;
     }
 
     AnalyzerRunControl *analyzerRunControl = AnalyzerManager::createRunControl(params, runConfig);
diff --git a/src/plugins/ios/iosanalyzesupport.cpp b/src/plugins/ios/iosanalyzesupport.cpp
index 0ef6482a5a16563fb915a24909cc2a8bd4b04083..9f5bb0000d6b19749f007414c161de02bd571ee1 100644
--- a/src/plugins/ios/iosanalyzesupport.cpp
+++ b/src/plugins/ios/iosanalyzesupport.cpp
@@ -86,7 +86,6 @@ RunControl *IosAnalyzeSupport::createAnalyzeRunControl(IosRunConfiguration *runC
     AnalyzerStartParameters params;
     params.runMode = QmlProfilerRunMode;
     params.sysroot = SysRootKitInformation::sysRoot(target->kit()).toString();
-    params.startMode = StartLocal;
     params.debuggee = runConfig->localExecutable().toUserOutput();
     params.debuggeeArgs = Utils::QtcProcess::joinArgs(runConfig->commandLineArguments());
     params.analyzerHost = QLatin1String("localhost");
diff --git a/src/plugins/qmlprofiler/localqmlprofilerrunner.cpp b/src/plugins/qmlprofiler/localqmlprofilerrunner.cpp
index 4f9aab14df297e4540d9ee6127177ccfe47c510b..61cde90b2acdc250ee4668f4fdfc54327fede6f8 100644
--- a/src/plugins/qmlprofiler/localqmlprofilerrunner.cpp
+++ b/src/plugins/qmlprofiler/localqmlprofilerrunner.cpp
@@ -119,7 +119,7 @@ LocalQmlProfilerRunner::~LocalQmlProfilerRunner()
 
 void LocalQmlProfilerRunner::start()
 {
-    if (m_engine->mode() != Analyzer::StartLocal)
+    if (!m_engine->startParameters().useStartupProject)
         return;
 
     QString arguments = QString::fromLatin1("-qmljsdebugger=port:%1,block").arg(m_configuration.port);
@@ -157,7 +157,7 @@ void LocalQmlProfilerRunner::spontaneousStop(int exitCode, QProcess::ExitStatus
 
 void LocalQmlProfilerRunner::stop()
 {
-    if (m_engine->mode() != Analyzer::StartLocal)
+    if (!m_engine->startParameters().useStartupProject)
         return;
 
     if (QmlProfilerPlugin::debugOutput)
diff --git a/src/plugins/qmlprofiler/qmlprofilerengine.cpp b/src/plugins/qmlprofiler/qmlprofilerengine.cpp
index ef9db29eabc69ff1047c5512a1b3def6478bd33c..991b291dbed6c31d1431422349ad5bdad6864a18 100644
--- a/src/plugins/qmlprofiler/qmlprofilerengine.cpp
+++ b/src/plugins/qmlprofiler/qmlprofilerengine.cpp
@@ -113,7 +113,7 @@ bool QmlProfilerRunControl::startEngine()
 
     d->m_profilerState->setCurrentState(QmlProfilerStateManager::AppStarting);
 
-    if (startParameters().startMode == StartLocal)
+    if (startParameters().useStartupProject)
         d->m_noDebugOutputTimer.start();
     else if (startParameters().analyzerPort != 0)
         emit processRunning(startParameters().analyzerPort);
diff --git a/src/plugins/qmlprofiler/qmlprofilerplugin.cpp b/src/plugins/qmlprofiler/qmlprofilerplugin.cpp
index 80f1743da1f7ceb23e33d5225809ef6e70656e5a..01c69b2b97527a72485644e633951b211de220c8 100644
--- a/src/plugins/qmlprofiler/qmlprofilerplugin.cpp
+++ b/src/plugins/qmlprofiler/qmlprofilerplugin.cpp
@@ -74,7 +74,6 @@ bool QmlProfilerPlugin::initialize(const QStringList &arguments, QString *errorS
     action->setRunMode(ProjectExplorer::QmlProfilerRunMode);
     action->setText(tr("QML Profiler"));
     action->setToolTip(description);
-    action->setStartMode(StartLocal);
     action->setMenuGroup(Constants::G_ANALYZER_TOOLS);
     AnalyzerManager::addAction(action);
 
@@ -87,7 +86,7 @@ bool QmlProfilerPlugin::initialize(const QStringList &arguments, QString *errorS
     action->setRunMode(ProjectExplorer::QmlProfilerRunMode);
     action->setText(tr("QML Profiler (External)"));
     action->setToolTip(description);
-    action->setStartMode(StartRemote);
+    action->setUseSpecialStart();
     action->setMenuGroup(Constants::G_ANALYZER_REMOTE_TOOLS);
     AnalyzerManager::addAction(action);
 
diff --git a/src/plugins/qmlprofiler/qmlprofilerruncontrolfactory.cpp b/src/plugins/qmlprofiler/qmlprofilerruncontrolfactory.cpp
index 916b0b7a5dd57d53c911b5b2b36a521891c34bd6..012b5a6bd0d72781f592e77716ca3d528e862c87 100644
--- a/src/plugins/qmlprofiler/qmlprofilerruncontrolfactory.cpp
+++ b/src/plugins/qmlprofiler/qmlprofilerruncontrolfactory.cpp
@@ -83,8 +83,6 @@ static AnalyzerStartParameters createQmlProfilerStartParameters(RunConfiguration
     if (localPort == 0)
         return sp;
     sp.analyzerPort = localPort;
-
-    sp.startMode = StartLocal;
     return sp;
 }
 
diff --git a/src/plugins/qmlprofiler/qmlprofilertool.cpp b/src/plugins/qmlprofiler/qmlprofilertool.cpp
index 586055f8dbd02324a112b3177e9ba8154ab3d6a4..0c0c5429f9fa153d7b58cddfaf94cb5d22c2f6b8 100644
--- a/src/plugins/qmlprofiler/qmlprofilertool.cpp
+++ b/src/plugins/qmlprofiler/qmlprofilertool.cpp
@@ -484,7 +484,7 @@ void QmlProfilerTool::startRemoteTool()
     }
 
     AnalyzerStartParameters sp;
-    sp.startMode = StartRemote;
+    sp.useStartupProject = false;
 
     IDevice::ConstPtr device = DeviceKitInformation::device(kit);
     if (device) {
diff --git a/src/plugins/qnx/qnxruncontrolfactory.cpp b/src/plugins/qnx/qnxruncontrolfactory.cpp
index 91df7e910473556d64cfec3059935667f5f638c6..9a08cc545d6e57aee7a386819f5a8e8152d98343 100644
--- a/src/plugins/qnx/qnxruncontrolfactory.cpp
+++ b/src/plugins/qnx/qnxruncontrolfactory.cpp
@@ -125,8 +125,6 @@ static AnalyzerStartParameters createAnalyzerStartParameters(const QnxRunConfigu
     if (device.isNull())
         return params;
 
-    if (mode == QmlProfilerRunMode)
-        params.startMode = StartLocal;
     params.runMode = mode;
     params.debuggee = runConfig->remoteExecutableFilePath();
     params.debuggeeArgs = runConfig->arguments().join(QLatin1Char(' '));
diff --git a/src/plugins/remotelinux/remotelinuxanalyzesupport.cpp b/src/plugins/remotelinux/remotelinuxanalyzesupport.cpp
index 0d8f4c7f418fb383cf4e64449358d2be6cb0a4e9..ea2020e15e64dd30f6c28ac6a460c076f337ab01 100644
--- a/src/plugins/remotelinux/remotelinuxanalyzesupport.cpp
+++ b/src/plugins/remotelinux/remotelinuxanalyzesupport.cpp
@@ -78,8 +78,6 @@ AnalyzerStartParameters RemoteLinuxAnalyzeSupport::startParameters(const RunConf
                                                                    RunMode runMode)
 {
     AnalyzerStartParameters params;
-    if (runMode == QmlProfilerRunMode)
-        params.startMode = StartLocal;
     params.runMode = runMode;
     params.connParams = DeviceKitInformation::device(runConfig->target()->kit())->sshParameters();
     params.displayName = runConfig->displayName();
diff --git a/src/plugins/valgrind/memcheck/memcheckrunner.cpp b/src/plugins/valgrind/memcheck/memcheckrunner.cpp
index 898202250957c3655ac7a1a0e8e2122eaa1ce30b..59cd2eca49ca727b68bb0797758618ace68a04b5 100644
--- a/src/plugins/valgrind/memcheck/memcheckrunner.cpp
+++ b/src/plugins/valgrind/memcheck/memcheckrunner.cpp
@@ -101,7 +101,9 @@ bool MemcheckRunner::start()
     QTC_ASSERT(d->parser, return false);
 
     // The remote case is handled in localHostAddressRetrieved().
-    if (startMode() == Analyzer::StartLocal) {
+    // FIXME: We start confusing "use startup project" with a "local/remote"
+    // decision here.
+    if (useStartupProject()) {
         startServers(QHostAddress(QHostAddress::LocalHost));
         setValgrindArguments(memcheckLogArguments() + valgrindArguments());
     }
diff --git a/src/plugins/valgrind/valgrindengine.cpp b/src/plugins/valgrind/valgrindengine.cpp
index 19dc3c43fce6ffce75377acf5929e6a811d03de2..cac9fb67e42c73306e82c34522dff472f58c7c99 100644
--- a/src/plugins/valgrind/valgrindengine.cpp
+++ b/src/plugins/valgrind/valgrindengine.cpp
@@ -100,7 +100,7 @@ bool ValgrindRunControl::startEngine()
     run->setDebuggeeArguments(sp.debuggeeArgs);
     run->setEnvironment(sp.environment);
     run->setConnectionParameters(sp.connParams);
-    run->setStartMode(sp.startMode);
+    run->setUseStartupProject(sp.useStartupProject);
     run->setLocalRunMode(sp.localRunMode);
 
     connect(run, &ValgrindRunner::processOutputReceived,
diff --git a/src/plugins/valgrind/valgrindplugin.cpp b/src/plugins/valgrind/valgrindplugin.cpp
index 654dcfd7b5934e48a424635cf39d9c6a165c486b..e21a5dc17a7d08a1ffba60cc621cdc5f73d9749a 100644
--- a/src/plugins/valgrind/valgrindplugin.cpp
+++ b/src/plugins/valgrind/valgrindplugin.cpp
@@ -156,7 +156,6 @@ bool ValgrindPlugin::initialize(const QStringList &, QString *)
         action->setText(tr("Valgrind Memory Analyzer"));
         action->setToolTip(memcheckToolTip);
         action->setMenuGroup(Constants::G_ANALYZER_TOOLS);
-        action->setStartMode(StartLocal);
         action->setEnabled(false);
         AnalyzerManager::addAction(action);
 
@@ -170,7 +169,6 @@ bool ValgrindPlugin::initialize(const QStringList &, QString *)
         action->setText(tr("Valgrind Memory Analyzer with GDB"));
         action->setToolTip(memcheckWithGdbToolTip);
         action->setMenuGroup(Constants::G_ANALYZER_TOOLS);
-        action->setStartMode(StartLocal);
         action->setEnabled(false);
         AnalyzerManager::addAction(action);
 
@@ -184,7 +182,6 @@ bool ValgrindPlugin::initialize(const QStringList &, QString *)
         action->setText(tr("Valgrind Function Profiler"));
         action->setToolTip(callgrindToolTip);
         action->setMenuGroup(Constants::G_ANALYZER_TOOLS);
-        action->setStartMode(StartLocal);
         action->setEnabled(false);
         AnalyzerManager::addAction(action);
     }
@@ -199,7 +196,7 @@ bool ValgrindPlugin::initialize(const QStringList &, QString *)
     action->setText(tr("Valgrind Memory Analyzer (External Remote Application)"));
     action->setToolTip(memcheckToolTip);
     action->setMenuGroup(Constants::G_ANALYZER_REMOTE_TOOLS);
-    action->setStartMode(StartRemote);
+    action->setUseSpecialStart();
     AnalyzerManager::addAction(action);
 
     action = new AnalyzerAction(this);
@@ -212,7 +209,7 @@ bool ValgrindPlugin::initialize(const QStringList &, QString *)
     action->setText(tr("Valgrind Function Profiler (External Remote Application)"));
     action->setToolTip(callgrindToolTip);
     action->setMenuGroup(Constants::G_ANALYZER_REMOTE_TOOLS);
-    action->setStartMode(StartRemote);
+    action->setUseSpecialStart();
     AnalyzerManager::addAction(action);
 
     addAutoReleasedObject(new ValgrindRunControlFactory());
diff --git a/src/plugins/valgrind/valgrindruncontrolfactory.cpp b/src/plugins/valgrind/valgrindruncontrolfactory.cpp
index b5aac27838ed3ae9a2fc2b80978a06284dca22fb..ac0e7d602e597fb31150f2a90547797fbfa01664 100644
--- a/src/plugins/valgrind/valgrindruncontrolfactory.cpp
+++ b/src/plugins/valgrind/valgrindruncontrolfactory.cpp
@@ -94,11 +94,10 @@ RunControl *ValgrindRunControlFactory::create(RunConfiguration *runConfiguration
         }
         sp.connParams.host = server.serverAddress().toString();
         sp.connParams.port = server.serverPort();
-        sp.startMode = StartLocal;
         sp.localRunMode = static_cast<ApplicationLauncher::Mode>(rc1->runMode());
     } else if (RemoteLinux::AbstractRemoteLinuxRunConfiguration *rc2 =
                qobject_cast<RemoteLinux::AbstractRemoteLinuxRunConfiguration *>(runConfiguration)) {
-        sp.startMode = StartRemote;
+        sp.useStartupProject = false; // FIXME: This is wrong.
         sp.debuggee = rc2->remoteExecutableFilePath();
         sp.connParams = DeviceKitInformation::device(rc2->target()->kit())->sshParameters();
         sp.debuggeeArgs = rc2->arguments().join(QLatin1Char(' '));
diff --git a/src/plugins/valgrind/valgrindrunner.cpp b/src/plugins/valgrind/valgrindrunner.cpp
index 2267ffca8d1f2784900a72d02dceec380de6353b..67ab3e50c0e0cae11db50b335e5c4c6338928578 100644
--- a/src/plugins/valgrind/valgrindrunner.cpp
+++ b/src/plugins/valgrind/valgrindrunner.cpp
@@ -51,7 +51,7 @@ public:
           process(0),
           channelMode(QProcess::SeparateChannels),
           finished(false),
-          startMode(Analyzer::StartLocal),
+          useStartupProject(true),
           localRunMode(ProjectExplorer::ApplicationLauncher::Gui)
     {
     }
@@ -68,7 +68,7 @@ public:
     QString debuggeeExecutable;
     QString debuggeeArguments;
     QString workingdir;
-    Analyzer::StartMode startMode;
+    bool useStartupProject;
     ProjectExplorer::ApplicationLauncher::Mode localRunMode;
     QSsh::SshConnectionParameters connParams;
 };
@@ -178,11 +178,6 @@ void ValgrindRunner::setDebuggeeArguments(const QString &arguments)
     d->debuggeeArguments = arguments;
 }
 
-Analyzer::StartMode ValgrindRunner::startMode() const
-{
-    return d->startMode;
-}
-
 void ValgrindRunner::setLocalRunMode(ProjectExplorer::ApplicationLauncher::Mode localRunMode)
 {
     d->localRunMode = localRunMode;
@@ -193,11 +188,6 @@ ProjectExplorer::ApplicationLauncher::Mode ValgrindRunner::localRunMode() const
     return d->localRunMode;
 }
 
-void ValgrindRunner::setStartMode(Analyzer::StartMode startMode)
-{
-    d->startMode = startMode;
-}
-
 const QSsh::SshConnectionParameters &ValgrindRunner::connectionParameters() const
 {
     return d->connParams;
@@ -228,6 +218,16 @@ void ValgrindRunner::setProcessChannelMode(QProcess::ProcessChannelMode mode)
     d->channelMode = mode;
 }
 
+void ValgrindRunner::setUseStartupProject(bool useStartupProject)
+{
+    d->useStartupProject = useStartupProject;
+}
+
+bool ValgrindRunner::useStartupProject() const
+{
+    return d->useStartupProject;
+}
+
 void ValgrindRunner::waitForFinished() const
 {
     if (d->finished || !d->process)
@@ -240,7 +240,8 @@ void ValgrindRunner::waitForFinished() const
 
 bool ValgrindRunner::start()
 {
-    d->run(new ValgrindProcess(d->startMode == Analyzer::StartLocal, d->connParams, 0, this));
+    // FIXME: This wrongly uses "useStartupProject" for a Local/Remote decision.
+    d->run(new ValgrindProcess(d->useStartupProject, d->connParams, 0, this));
     return true;
 }
 
diff --git a/src/plugins/valgrind/valgrindrunner.h b/src/plugins/valgrind/valgrindrunner.h
index 80ad3455e17f8bbc4db2f66d10c7a8b4fd476ee4..561692163cae027fd6f139407c0595a48bb4f7e8 100644
--- a/src/plugins/valgrind/valgrindrunner.h
+++ b/src/plugins/valgrind/valgrindrunner.h
@@ -72,8 +72,8 @@ public:
     void setEnvironment(const Utils::Environment &environment);
     void setProcessChannelMode(QProcess::ProcessChannelMode mode);
 
-    void setStartMode(Analyzer::StartMode startMode);
-    Analyzer::StartMode startMode() const;
+    void setUseStartupProject(bool useStartupProject);
+    bool useStartupProject() const;
 
     void setLocalRunMode(ProjectExplorer::ApplicationLauncher::Mode localRunMode);
     ProjectExplorer::ApplicationLauncher::Mode localRunMode() const;