diff --git a/src/libs/utils/processhandle.cpp b/src/libs/utils/processhandle.cpp
index 51e231b957dabdfd8d4ea59cb5b79b847d00118d..d95ecd1a86654a2ef9ba45c2becfa79d8337686c 100644
--- a/src/libs/utils/processhandle.cpp
+++ b/src/libs/utils/processhandle.cpp
@@ -68,7 +68,7 @@ bool ProcessHandle::equals(const ProcessHandle &rhs) const
     return m_pid == rhs.m_pid;
 }
 
-#ifndef Q_OS_MACOS
+#ifndef Q_OS_OSX
 bool ProcessHandle::activate()
 {
     return false;
diff --git a/src/plugins/android/androidplugin.cpp b/src/plugins/android/androidplugin.cpp
index e2636cd45481c72cab2a6dbb94f98633c4e6eb42..c73b73d4835caa8bbcd844aaf1e79674ee82a855 100644
--- a/src/plugins/android/androidplugin.cpp
+++ b/src/plugins/android/androidplugin.cpp
@@ -74,7 +74,6 @@ bool AndroidPlugin::initialize(const QStringList &arguments, QString *errorMessa
 
     RunControl::registerWorker<AndroidRunConfiguration, AndroidRunSupport>(NORMAL_RUN_MODE);
     RunControl::registerWorker<AndroidRunConfiguration, AndroidDebugSupport>(DEBUG_RUN_MODE);
-    RunControl::registerWorker<AndroidRunConfiguration, AndroidDebugSupport>(DEBUG_RUN_MODE_WITH_BREAK_ON_MAIN);
     RunControl::registerWorker<AndroidRunConfiguration, AndroidQmlProfilerSupport>(QML_PROFILER_RUN_MODE);
 
     new AndroidConfigurations(this);
diff --git a/src/plugins/android/androidrunner.cpp b/src/plugins/android/androidrunner.cpp
index 9b9c8578abb3c465d296f4d82aae9efced84c7d2..8dcd1333695baa7c3de52d3f218d26d9a6aa3184 100644
--- a/src/plugins/android/androidrunner.cpp
+++ b/src/plugins/android/androidrunner.cpp
@@ -280,9 +280,7 @@ AndroidRunnerWorker::AndroidRunnerWorker(RunControl *runControl, const AndroidRu
     auto runConfig = runControl->runConfiguration();
     auto aspect = runConfig->extraAspect<Debugger::DebuggerRunConfigurationAspect>();
     Core::Id runMode = runControl->runMode();
-    const bool debuggingMode =
-            (runMode == ProjectExplorer::Constants::DEBUG_RUN_MODE
-             || runMode == ProjectExplorer::Constants::DEBUG_RUN_MODE_WITH_BREAK_ON_MAIN);
+    const bool debuggingMode = runMode == ProjectExplorer::Constants::DEBUG_RUN_MODE;
     m_useCppDebugger = debuggingMode && aspect->useCppDebugger();
     if (debuggingMode && aspect->useQmlDebugger())
         m_qmlDebugServices = QmlDebug::QmlDebuggerServices;
diff --git a/src/plugins/autotest/testrunner.cpp b/src/plugins/autotest/testrunner.cpp
index df6ce4206d74c555f9d5bf6b30a9549920a7d73a..7ab479dc0e3438f982d01d51c54ee403b571fda1 100644
--- a/src/plugins/autotest/testrunner.cpp
+++ b/src/plugins/autotest/testrunner.cpp
@@ -374,13 +374,13 @@ void TestRunner::debugTests()
             processOutput(outputreader, msg, format);
         });
 
-        connect(runControl, &ProjectExplorer::RunControl::finished,
+        connect(runControl, &ProjectExplorer::RunControl::stopped,
                 outputreader, &QObject::deleteLater);
     }
 
     connect(this, &TestRunner::requestStopTestRun, runControl,
             &ProjectExplorer::RunControl::initiateStop);
-    connect(runControl, &ProjectExplorer::RunControl::finished, this, &TestRunner::onFinished);
+    connect(runControl, &ProjectExplorer::RunControl::stopped, this, &TestRunner::onFinished);
     ProjectExplorer::ProjectExplorerPlugin::startRunControl(runControl);
 }
 
diff --git a/src/plugins/baremetal/baremetalplugin.cpp b/src/plugins/baremetal/baremetalplugin.cpp
index 2e978f72333e4aa7fc4a1a2f5c0d3bdade52891b..77687499c90bd41ad95461ea03d41e00c1510151 100644
--- a/src/plugins/baremetal/baremetalplugin.cpp
+++ b/src/plugins/baremetal/baremetalplugin.cpp
@@ -80,8 +80,6 @@ bool BareMetalPlugin::initialize(const QStringList &arguments, QString *errorStr
        (ProjectExplorer::Constants::NORMAL_RUN_MODE, constraint);
    RunControl::registerWorker<BareMetalDebugSupport>
        (ProjectExplorer::Constants::DEBUG_RUN_MODE, constraint);
-   RunControl::registerWorker<BareMetalDebugSupport>
-       (ProjectExplorer::Constants::DEBUG_RUN_MODE_WITH_BREAK_ON_MAIN, constraint);
 
    return true;
 }
diff --git a/src/plugins/coreplugin/dialogs/readonlyfilesdialog.cpp b/src/plugins/coreplugin/dialogs/readonlyfilesdialog.cpp
index 5f7ecedd2311a92b23399bccbe87490fd59dc44b..2b7b054a8d0203837a71d7e60c424ce206a5cd80 100644
--- a/src/plugins/coreplugin/dialogs/readonlyfilesdialog.cpp
+++ b/src/plugins/coreplugin/dialogs/readonlyfilesdialog.cpp
@@ -143,6 +143,7 @@ ReadOnlyFilesDialog::ReadOnlyFilesDialog(const QList<QString> &fileNames, QWidge
     : QDialog(parent)
     , d(new ReadOnlyFilesDialogPrivate(this))
 {
+    setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
     d->initDialog(fileNames);
 }
 
diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
index 13e04e39dc91e86335144519a1ddad54a0c746c6..76de12c499fb8db6540cc7bbedf2869ccc7f875f 100644
--- a/src/plugins/debugger/debuggerplugin.cpp
+++ b/src/plugins/debugger/debuggerplugin.cpp
@@ -813,7 +813,8 @@ public:
     void handleExecStep()
     {
         if (currentEngine()->state() == DebuggerNotReady) {
-            ProjectExplorerPlugin::runStartupProject(ProjectExplorer::Constants::DEBUG_RUN_MODE_WITH_BREAK_ON_MAIN);
+            DebuggerRunTool::setBreakOnMainNextTime();
+            ProjectExplorerPlugin::runStartupProject(ProjectExplorer::Constants::DEBUG_RUN_MODE);
         } else {
             currentEngine()->resetLocation();
             if (boolSetting(OperateByInstruction))
@@ -826,7 +827,8 @@ public:
     void handleExecNext()
     {
         if (currentEngine()->state() == DebuggerNotReady) {
-            ProjectExplorerPlugin::runStartupProject(ProjectExplorer::Constants::DEBUG_RUN_MODE_WITH_BREAK_ON_MAIN);
+            DebuggerRunTool::setBreakOnMainNextTime();
+            ProjectExplorerPlugin::runStartupProject(ProjectExplorer::Constants::DEBUG_RUN_MODE);
         } else {
             currentEngine()->resetLocation();
             if (boolSetting(OperateByInstruction))
@@ -2079,7 +2081,7 @@ void DebuggerPluginPrivate::attachToUnstartedApplicationDialog()
             return;
 
         if (dlg->hideOnAttach())
-            connect(rc, &RunControl::finished, dlg, &UnstartedAppWatcherDialog::startWatching);
+            connect(rc, &RunControl::stopped, dlg, &UnstartedAppWatcherDialog::startWatching);
     });
 
     dlg->show();
@@ -2742,19 +2744,16 @@ void DebuggerPluginPrivate::updateDebugActions()
 
     // Step into/next: Start and break at 'main' unless a debugger is running.
     if (m_snapshotHandler->currentIndex() < 0) {
-        QString toolTip;
-        const bool canRunAndBreakMain
-                = ProjectExplorerPlugin::canRunStartupProject(ProjectExplorer::Constants::DEBUG_RUN_MODE_WITH_BREAK_ON_MAIN, &toolTip);
-        m_stepAction->setEnabled(canRunAndBreakMain);
-        m_nextAction->setEnabled(canRunAndBreakMain);
-        if (canRunAndBreakMain) {
+        m_stepAction->setEnabled(canRun);
+        m_nextAction->setEnabled(canRun);
+        if (canRun) {
             Project *project = SessionManager::startupProject();
             QTC_ASSERT(project, return);
-            toolTip = tr("Start \"%1\" and break at function \"main()\"")
-                      .arg(project->displayName());
+            whyNot = tr("Start \"%1\" and break at function \"main()\"")
+                    .arg(project->displayName());
         }
-        m_stepAction->setToolTip(toolTip);
-        m_nextAction->setToolTip(toolTip);
+        m_stepAction->setToolTip(whyNot);
+        m_nextAction->setToolTip(whyNot);
     }
 }
 
@@ -3064,8 +3063,6 @@ void DebuggerPluginPrivate::extensionsInitialized()
 
     RunControl::registerWorker<DebuggerRunTool>
         (ProjectExplorer::Constants::DEBUG_RUN_MODE, constraint);
-    RunControl::registerWorker<DebuggerRunTool>
-        (ProjectExplorer::Constants::DEBUG_RUN_MODE_WITH_BREAK_ON_MAIN, constraint);
 }
 
 DebuggerEngine *currentEngine()
diff --git a/src/plugins/debugger/debuggerruncontrol.cpp b/src/plugins/debugger/debuggerruncontrol.cpp
index a6156ec26a0ad27ea92f3b75b59b97d9a8812877..dca0a53e387c00aa563ca16859a2437c56116206 100644
--- a/src/plugins/debugger/debuggerruncontrol.cpp
+++ b/src/plugins/debugger/debuggerruncontrol.cpp
@@ -73,9 +73,6 @@ enum { debug = 0 };
 namespace Debugger {
 namespace Internal {
 
-const auto DebugRunMode = ProjectExplorer::Constants::DEBUG_RUN_MODE;
-const auto DebugRunModeWithBreakOnMain = ProjectExplorer::Constants::DEBUG_RUN_MODE_WITH_BREAK_ON_MAIN;
-
 DebuggerEngine *createCdbEngine(QStringList *error, DebuggerStartMode sm);
 DebuggerEngine *createGdbEngine(bool useTerminal, DebuggerStartMode sm);
 DebuggerEngine *createPdbEngine();
@@ -86,6 +83,13 @@ DebuggerEngine *createLldbEngine();
 } // namespace Internal
 
 
+static bool breakOnMainNextTime = false;
+
+void DebuggerRunTool::setBreakOnMainNextTime()
+{
+    breakOnMainNextTime = true;
+}
+
 static QLatin1String engineTypeName(DebuggerEngineType et)
 {
     switch (et) {
@@ -272,7 +276,6 @@ static bool fixupParameters(DebuggerRunParameters &rp, RunControl *runControl, Q
     RunConfiguration *runConfig = runControl->runConfiguration();
     if (!runConfig)
         return false;
-    Core::Id runMode = runControl->runMode();
 
     const Kit *kit = runConfig->target()->kit();
     QTC_ASSERT(kit, return false);
@@ -449,8 +452,10 @@ static bool fixupParameters(DebuggerRunParameters &rp, RunControl *runControl, Q
     if (rp.startMode == NoStartMode)
         rp.startMode = StartInternal;
 
-    if (runMode == DebugRunModeWithBreakOnMain)
+    if (breakOnMainNextTime) {
         rp.breakOnMain = true;
+        breakOnMainNextTime = false;
+    }
 
     return true;
 }
@@ -634,7 +639,7 @@ RunControl *createAndScheduleRun(const DebuggerRunParameters &rp, Kit *kit)
 {
     RunConfiguration *runConfig = dummyRunConfigForKit(kit);
     QTC_ASSERT(runConfig, return nullptr);
-    auto runControl = new RunControl(runConfig, DebugRunMode);
+    auto runControl = new RunControl(runConfig, ProjectExplorer::Constants::DEBUG_RUN_MODE);
     (void) new DebuggerRunTool(runControl, rp);
     ProjectExplorerPlugin::startRunControl(runControl);
     return runControl;
diff --git a/src/plugins/debugger/debuggerruncontrol.h b/src/plugins/debugger/debuggerruncontrol.h
index 71a72f25b32191a49b6b634f7d179aad8e00b0d0..ec5dffaac0e923f050df1d208653df654246c3f8 100644
--- a/src/plugins/debugger/debuggerruncontrol.h
+++ b/src/plugins/debugger/debuggerruncontrol.h
@@ -79,6 +79,8 @@ public:
 
     void appendSolibSearchPath(const QString &str);
 
+    static void setBreakOnMainNextTime();
+
 signals:
     void aboutToNotifyInferiorSetupOk();
 
diff --git a/src/plugins/help/helpplugin.cpp b/src/plugins/help/helpplugin.cpp
index 45765dacaad0d73a560295818015aca38c9cafc5..e20b4cd8419edb0ba737b4c5087243cf463c36c2 100644
--- a/src/plugins/help/helpplugin.cpp
+++ b/src/plugins/help/helpplugin.cpp
@@ -200,12 +200,16 @@ bool HelpPlugin::initialize(const QStringList &arguments, QString *error)
     action = new QAction(tr("Technical Support"), this);
     cmd = ActionManager::registerAction(action, "Help.TechSupport");
     ActionManager::actionContainer(Core::Constants::M_HELP)->addAction(cmd, Core::Constants::G_HELP_SUPPORT);
-    connect(action, &QAction::triggered, this, &HelpPlugin::slotOpenSupportPage);
+    connect(action, &QAction::triggered, this, [this] {
+        showLinkInHelpMode(QUrl("qthelp://org.qt-project.qtcreator/doc/technical-support.html"));
+    });
 
     action = new QAction(tr("Report Bug..."), this);
     cmd = ActionManager::registerAction(action, "Help.ReportBug");
     ActionManager::actionContainer(Core::Constants::M_HELP)->addAction(cmd, Core::Constants::G_HELP_SUPPORT);
-    connect(action, &QAction::triggered, this, &HelpPlugin::slotReportBug);
+    connect(action, &QAction::triggered, this, [] {
+        QDesktopServices::openUrl(QUrl("https://bugreports.qt.io"));
+    });
 
     action = new QAction(tr("System Information..."), this);
     cmd = ActionManager::registerAction(action, "Help.SystemInformation");
@@ -638,16 +642,6 @@ void HelpPlugin::handleHelpRequest(const QUrl &url, HelpManager::HelpViewerLocat
     ICore::raiseWindow(viewer);
 }
 
-void HelpPlugin::slotOpenSupportPage()
-{
-    showLinkInHelpMode(QUrl("qthelp://org.qt-project.qtcreator/doc/technical-support.html"));
-}
-
-void HelpPlugin::slotReportBug()
-{
-    QDesktopServices::openUrl(QUrl("https://bugreports.qt.io"));
-}
-
 class DialogClosingOnEscape : public QDialog
 {
 public:
diff --git a/src/plugins/help/helpplugin.h b/src/plugins/help/helpplugin.h
index 4393e7953c87737b4d59ba1b437525ffe39a960a..07b31f12a8a66f6c0f808d5fe507e6724a90174f 100644
--- a/src/plugins/help/helpplugin.h
+++ b/src/plugins/help/helpplugin.h
@@ -98,8 +98,6 @@ private:
     void highlightSearchTermsInContextHelp();
     void handleHelpRequest(const QUrl &url, Core::HelpManager::HelpViewerLocation location);
 
-    void slotOpenSupportPage();
-    void slotReportBug();
     void slotSystemInformation();
 
     void resetFilter();
diff --git a/src/plugins/help/textbrowserhelpviewer.cpp b/src/plugins/help/textbrowserhelpviewer.cpp
index 6d77aeadb69a9c1ea608d3e27e4fe3163b76a416..2dd128fd323171f30b67614ec23e3154a37dfe21 100644
--- a/src/plugins/help/textbrowserhelpviewer.cpp
+++ b/src/plugins/help/textbrowserhelpviewer.cpp
@@ -56,6 +56,7 @@ TextBrowserHelpViewer::TextBrowserHelpViewer(QWidget *parent)
     setLayout(layout);
     layout->setContentsMargins(0, 0, 0, 0);
     layout->addWidget(m_textBrowser, 10);
+    setFocusProxy(m_textBrowser);
     QPalette p = palette();
     p.setColor(QPalette::Inactive, QPalette::Highlight,
         p.color(QPalette::Active, QPalette::Highlight));
diff --git a/src/plugins/ios/iosrunfactories.cpp b/src/plugins/ios/iosrunfactories.cpp
index b4a1b8dad7ac90a107118c2ad38816bae307ba35..b2d42b671b5da90511608d2886ef960a239a8341 100644
--- a/src/plugins/ios/iosrunfactories.cpp
+++ b/src/plugins/ios/iosrunfactories.cpp
@@ -153,7 +153,6 @@ bool IosRunControlFactory::canRun(RunConfiguration *runConfiguration,
 {
     if (mode != ProjectExplorer::Constants::NORMAL_RUN_MODE
             && mode != ProjectExplorer::Constants::DEBUG_RUN_MODE
-            && mode != ProjectExplorer::Constants::DEBUG_RUN_MODE_WITH_BREAK_ON_MAIN
             && mode != ProjectExplorer::Constants::QML_PROFILER_RUN_MODE) {
         return false;
     }
diff --git a/src/plugins/projectexplorer/appoutputpane.cpp b/src/plugins/projectexplorer/appoutputpane.cpp
index 64a313a908043d340dc1bcbf8a0fd35d89d0f19f..9e0617454bd4e97f4e13a027f9927c14ba13bf86 100644
--- a/src/plugins/projectexplorer/appoutputpane.cpp
+++ b/src/plugins/projectexplorer/appoutputpane.cpp
@@ -406,7 +406,7 @@ void AppOutputPane::createNewOutputWindow(RunControl *rc)
             this, &AppOutputPane::slotRunControlChanged);
     connect(rc, &RunControl::started,
             this, &AppOutputPane::slotRunControlChanged);
-    connect(rc, &RunControl::finished,
+    connect(rc, &RunControl::stopped,
             this, &AppOutputPane::slotRunControlFinished);
     connect(rc, &RunControl::applicationProcessHandleChanged,
             this, &AppOutputPane::enableDefaultButtons);
diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp
index f71cc7cb94b22e9e6677bdeac33bd6bc314a3d51..12c3e5f678e4eb05e1ff188a5d4f450a3aacdb58 100644
--- a/src/plugins/projectexplorer/projectexplorer.cpp
+++ b/src/plugins/projectexplorer/projectexplorer.cpp
@@ -2059,8 +2059,7 @@ void ProjectExplorerPluginPrivate::startRunControl(RunControl *runControl)
     m_outputPane->showTabFor(runControl);
     Core::Id runMode = runControl->runMode();
     bool popup = (runMode == Constants::NORMAL_RUN_MODE && dd->m_projectExplorerSettings.showRunOutput)
-            || ((runMode == Constants::DEBUG_RUN_MODE || runMode == Constants::DEBUG_RUN_MODE_WITH_BREAK_ON_MAIN)
-                && m_projectExplorerSettings.showDebugOutput);
+            || (runMode == Constants::DEBUG_RUN_MODE && m_projectExplorerSettings.showDebugOutput);
     m_outputPane->setBehaviorOnOutput(runControl, popup ? AppOutputPane::Popup : AppOutputPane::Flash);
     runControl->initiateStart();
     emit m_instance->updateRunActions();
diff --git a/src/plugins/projectexplorer/projectexplorerconstants.h b/src/plugins/projectexplorer/projectexplorerconstants.h
index 62e70f1871a28c62d64bb727a21e41ff305a88e1..559b11fb6a61ceffe2b934e2b910cc015956da19 100644
--- a/src/plugins/projectexplorer/projectexplorerconstants.h
+++ b/src/plugins/projectexplorer/projectexplorerconstants.h
@@ -180,7 +180,6 @@ const char NORMAL_RUN_MODE[]="RunConfiguration.NormalRunMode";
 const char QML_PROFILER_RUN_MODE[]="RunConfiguration.QmlProfilerRunMode";
 const char PERFPROFILER_RUN_MODE[]="PerfProfiler.RunMode";
 const char DEBUG_RUN_MODE[]="RunConfiguration.DebugRunMode";
-const char DEBUG_RUN_MODE_WITH_BREAK_ON_MAIN[]="RunConfiguration.DebugRunModeWithBreakOnMain";
 
 // Navigation Widget
 const char PROJECTTREE_ID[] = "Projects";
diff --git a/src/plugins/projectexplorer/runconfiguration.cpp b/src/plugins/projectexplorer/runconfiguration.cpp
index 75df5b6ff6cba9631cc3bb80853bc1fc593270ab..7d7c192670421d114f07677d48e3e35e71b71413 100644
--- a/src/plugins/projectexplorer/runconfiguration.cpp
+++ b/src/plugins/projectexplorer/runconfiguration.cpp
@@ -1216,7 +1216,7 @@ void RunControlPrivate::setState(RunControlState newState)
         foreach (auto worker, m_workers)
             if (worker)
                 worker->onFinished();
-        emit q->finished();
+        emit q->stopped();
         break;
     default:
         break;
@@ -1525,11 +1525,6 @@ void RunWorker::setStopTimeout(int ms)
     d->stopWatchdogInterval = ms;
 }
 
-void RunWorker::reportData(int channel, const QVariant &data)
-{
-    emit dataReported(channel, data);
-}
-
 void RunWorker::recordData(const QString &channel, const QVariant &data)
 {
     d->data[channel] = data;
diff --git a/src/plugins/projectexplorer/runconfiguration.h b/src/plugins/projectexplorer/runconfiguration.h
index b7a69ca2ebbe6c382ee4d65beffb87c8ed849191..eb408c204a0fd7a6b5e0022013919eee1e374ae2 100644
--- a/src/plugins/projectexplorer/runconfiguration.h
+++ b/src/plugins/projectexplorer/runconfiguration.h
@@ -340,8 +340,6 @@ public:
     void setStartTimeout(int ms);
     void setStopTimeout(int ms);
 
-    void reportData(int channel, const QVariant &data);
-
     void recordData(const QString &channel, const QVariant &data);
     QVariant recordedData(const QString &channel) const;
 
@@ -366,7 +364,6 @@ public:
     static QString userMessageForProcessError(QProcess::ProcessError, const QString &programName);
 
 signals:
-    void dataReported(int channel, const QVariant &data);
     void started();
     void stopped();
 
@@ -481,7 +478,7 @@ signals:
                                 const QString &msg, Utils::OutputFormat format);
     void aboutToStart();
     void started();
-    void finished();
+    void stopped();
     void applicationProcessHandleChanged(QPrivateSignal); // Use setApplicationProcessHandle
 
 private:
diff --git a/src/plugins/projectexplorer/waitforstopdialog.cpp b/src/plugins/projectexplorer/waitforstopdialog.cpp
index e7006ecdbdedd100f7a4bfceeced18610e163a9a..1a7852989d9e34335ea1ebe867e69dc36c25763f 100644
--- a/src/plugins/projectexplorer/waitforstopdialog.cpp
+++ b/src/plugins/projectexplorer/waitforstopdialog.cpp
@@ -55,7 +55,7 @@ WaitForStopDialog::WaitForStopDialog(QList<ProjectExplorer::RunControl *> runCon
     updateProgressText();
 
     foreach (RunControl *rc, runControls)
-        connect(rc, &RunControl::finished, this, &WaitForStopDialog::runControlFinished);
+        connect(rc, &RunControl::stopped, this, &WaitForStopDialog::runControlFinished);
 
     m_timer.start();
 }
diff --git a/src/plugins/qmlprofiler/qmlprofiler.pro b/src/plugins/qmlprofiler/qmlprofiler.pro
index 0995840d2bc3c22a10f1b062151a15dee96f223a..a1edff0e2c20d97fb5392696dd752b71db10c047 100644
--- a/src/plugins/qmlprofiler/qmlprofiler.pro
+++ b/src/plugins/qmlprofiler/qmlprofiler.pro
@@ -28,7 +28,6 @@ SOURCES += \
     qmlprofilerrangemodel.cpp \
     qmlprofilerrunconfigurationaspect.cpp \
     qmlprofilerruncontrol.cpp \
-    qmlprofilerruncontrolfactory.cpp \
     qmlprofilersettings.cpp \
     qmlprofilerstatemanager.cpp \
     qmlprofilerstatewidget.cpp \
@@ -72,7 +71,6 @@ HEADERS += \
     qmlprofilerrangemodel.h \
     qmlprofilerrunconfigurationaspect.h \
     qmlprofilerruncontrol.h \
-    qmlprofilerruncontrolfactory.h \
     qmlprofilersettings.h \
     qmlprofilerstatemanager.h \
     qmlprofilerstatewidget.h \
diff --git a/src/plugins/qmlprofiler/qmlprofiler.qbs b/src/plugins/qmlprofiler/qmlprofiler.qbs
index b509ac07a365d05f06ae422a848bd76f7ff5ca16..8bf7b5147b29bc1ae56532be3646a0cc6f62eb6d 100644
--- a/src/plugins/qmlprofiler/qmlprofiler.qbs
+++ b/src/plugins/qmlprofiler/qmlprofiler.qbs
@@ -45,7 +45,6 @@ QtcPlugin {
             "qmlprofileroptionspage.cpp", "qmlprofileroptionspage.h",
             "qmlprofilerplugin.cpp", "qmlprofilerplugin.h",
             "qmlprofilerrunconfigurationaspect.cpp", "qmlprofilerrunconfigurationaspect.h",
-            "qmlprofilerruncontrolfactory.cpp", "qmlprofilerruncontrolfactory.h",
             "qmlprofilerrangemodel.cpp", "qmlprofilerrangemodel.h",
             "qmlprofilerruncontrol.cpp", "qmlprofilerruncontrol.h",
             "qmlprofilersettings.cpp", "qmlprofilersettings.h",
diff --git a/src/plugins/qmlprofiler/qmlprofilerplugin.cpp b/src/plugins/qmlprofiler/qmlprofilerplugin.cpp
index 123a84bd17f5dd0dbbf14581dd5a444a0b886d3f..3b2585b5e7e76bbaa5e7d4b8ad9389606faa98c4 100644
--- a/src/plugins/qmlprofiler/qmlprofilerplugin.cpp
+++ b/src/plugins/qmlprofiler/qmlprofilerplugin.cpp
@@ -24,7 +24,7 @@
 ****************************************************************************/
 
 #include "qmlprofilerplugin.h"
-#include "qmlprofilerruncontrolfactory.h"
+#include "qmlprofilerrunconfigurationaspect.h"
 #include "qmlprofileroptionspage.h"
 #include "qmlprofilertool.h"
 #include "qmlprofilertimelinemodel.h"
@@ -57,15 +57,34 @@
 #endif // WITH_TESTS
 
 #include <extensionsystem/pluginmanager.h>
+
+#include <projectexplorer/environmentaspect.h>
+#include <projectexplorer/kitinformation.h>
+#include <projectexplorer/runconfiguration.h>
+#include <projectexplorer/target.h>
+
 #include <utils/hostosinfo.h>
+#include <utils/qtcassert.h>
 
 #include <QtPlugin>
 
+using namespace ProjectExplorer;
+
 namespace QmlProfiler {
 namespace Internal {
 
 Q_GLOBAL_STATIC(QmlProfilerSettings, qmlProfilerGlobalSettings)
 
+
+class QmlProfilerRunControlFactory : public IRunControlFactory
+{
+public:
+    IRunConfigurationAspect *createRunConfigurationAspect(RunConfiguration *rc) override
+    {
+        return new QmlProfilerRunConfigurationAspect(rc);
+    }
+};
+
 bool QmlProfilerPlugin::initialize(const QStringList &arguments, QString *errorString)
 {
     Q_UNUSED(arguments)
@@ -80,8 +99,21 @@ void QmlProfilerPlugin::extensionsInitialized()
 {
     (void) new QmlProfilerTool(this);
 
-    addAutoReleasedObject(new QmlProfilerRunControlFactory());
-    addAutoReleasedObject(new Internal::QmlProfilerOptionsPage());
+    addAutoReleasedObject(new QmlProfilerOptionsPage);
+    addAutoReleasedObject(new QmlProfilerRunControlFactory);
+
+    auto constraint = [](RunConfiguration *runConfiguration) {
+        Target *target = runConfiguration ? runConfiguration->target() : nullptr;
+        Kit *kit = target ? target->kit() : nullptr;
+        return DeviceTypeKitInformation::deviceTypeId(kit)
+                == ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE;
+    };
+
+    RunControl::registerWorkerCreator(ProjectExplorer::Constants::QML_PROFILER_RUN_MODE,
+        [this](RunControl *runControl) { return new QmlProfilerRunner(runControl); });
+
+    RunControl::registerWorker<LocalQmlProfilerSupport>
+            (ProjectExplorer::Constants::QML_PROFILER_RUN_MODE, constraint);
 }
 
 ExtensionSystem::IPlugin::ShutdownFlag QmlProfilerPlugin::aboutToShutdown()
diff --git a/src/plugins/qmlprofiler/qmlprofilerruncontrolfactory.cpp b/src/plugins/qmlprofiler/qmlprofilerruncontrolfactory.cpp
deleted file mode 100644
index 31c1198f67974752745b747273b6a18aa7593a55..0000000000000000000000000000000000000000
--- a/src/plugins/qmlprofiler/qmlprofilerruncontrolfactory.cpp
+++ /dev/null
@@ -1,74 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 Kläralvdalens Datakonsult AB, a KDAB Group company, info@kdab.com
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt Creator.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-****************************************************************************/
-
-#include "qmlprofilerruncontrolfactory.h"
-#include "qmlprofilerruncontrol.h"
-#include "qmlprofilerrunconfigurationaspect.h"
-
-#include <projectexplorer/environmentaspect.h>
-#include <projectexplorer/kitinformation.h>
-#include <projectexplorer/target.h>
-
-#include <utils/qtcassert.h>
-
-using namespace ProjectExplorer;
-
-namespace QmlProfiler {
-namespace Internal {
-
-static bool isLocal(RunConfiguration *runConfiguration)
-{
-    Target *target = runConfiguration ? runConfiguration->target() : 0;
-    Kit *kit = target ? target->kit() : 0;
-    return DeviceTypeKitInformation::deviceTypeId(kit) == ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE;
-}
-
-QmlProfilerRunControlFactory::QmlProfilerRunControlFactory(QObject *parent) :
-    IRunControlFactory(parent)
-{
-    RunControl::registerWorkerCreator(ProjectExplorer::Constants::QML_PROFILER_RUN_MODE,
-        [this](RunControl *runControl) { return new QmlProfilerRunner(runControl); });
-}
-
-bool QmlProfilerRunControlFactory::canRun(RunConfiguration *runConfiguration, Core::Id mode) const
-{
-    return mode == ProjectExplorer::Constants::QML_PROFILER_RUN_MODE && isLocal(runConfiguration);
-}
-
-RunControl *QmlProfilerRunControlFactory::create(RunConfiguration *runConfiguration, Core::Id mode, QString *)
-{
-    auto runControl = new RunControl(runConfiguration, mode);
-    (void) new LocalQmlProfilerSupport(runControl);
-    return runControl;
-}
-
-ProjectExplorer::IRunConfigurationAspect *
-QmlProfilerRunControlFactory::createRunConfigurationAspect(ProjectExplorer::RunConfiguration *rc)
-{
-    return new QmlProfilerRunConfigurationAspect(rc);
-}
-
-} // namespace Internal
-} // namespace QmlProfiler
diff --git a/src/plugins/qmlprofiler/qmlprofilerruncontrolfactory.h b/src/plugins/qmlprofiler/qmlprofilerruncontrolfactory.h
deleted file mode 100644
index 5df3936673731396630b92caf607b71d996699c7..0000000000000000000000000000000000000000
--- a/src/plugins/qmlprofiler/qmlprofilerruncontrolfactory.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 Kläralvdalens Datakonsult AB, a KDAB Group company, info@kdab.com
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt Creator.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-****************************************************************************/
-
-#pragma once
-
-#include <projectexplorer/runconfiguration.h>
-
-namespace QmlProfiler {
-namespace Internal {
-
-class QmlProfilerRunControlFactory : public ProjectExplorer::IRunControlFactory
-{
-    Q_OBJECT
-public:
-    typedef ProjectExplorer::RunConfiguration RunConfiguration;
-
-    explicit QmlProfilerRunControlFactory(QObject *parent = 0);
-
-    // IRunControlFactory implementation
-    bool canRun(RunConfiguration *runConfiguration, Core::Id mode) const override;
-
-    ProjectExplorer::RunControl *create(RunConfiguration *runConfiguration, Core::Id mode,
-                                        QString *errorMessage) override;
-
-    ProjectExplorer::IRunConfigurationAspect *createRunConfigurationAspect(
-            ProjectExplorer::RunConfiguration *rc) override;
-};
-
-} // namespace Internal
-} // namespace QmlProfiler
diff --git a/src/plugins/qmlprofiler/qmlprofilertool.cpp b/src/plugins/qmlprofiler/qmlprofilertool.cpp
index de6e744d5da7c25a6e20d936ae96d2a2f8a18126..227b6dff0b7fa80356b2c543923cc50eb13c0a12 100644
--- a/src/plugins/qmlprofiler/qmlprofilertool.cpp
+++ b/src/plugins/qmlprofiler/qmlprofilertool.cpp
@@ -339,7 +339,7 @@ void QmlProfilerTool::finalizeRunControl(QmlProfilerRunner *runWorker)
         }
     }
 
-    connect(runControl, &RunControl::finished, this, [this, runControl] {
+    connect(runControl, &RunControl::stopped, this, [this, runControl] {
         d->m_toolBusy = false;
         updateRunActions();
         disconnect(d->m_stopAction, &QAction::triggered, runControl, &RunControl::initiateStop);
diff --git a/src/plugins/remotelinux/remotelinuxplugin.cpp b/src/plugins/remotelinux/remotelinuxplugin.cpp
index 15437952d9df8f26a55da6f22fef162bf54e945e..78b82378df174ce3f862d4f85bd68e21d8c381e3 100644
--- a/src/plugins/remotelinux/remotelinuxplugin.cpp
+++ b/src/plugins/remotelinux/remotelinuxplugin.cpp
@@ -62,8 +62,6 @@ bool RemoteLinuxPlugin::initialize(const QStringList &arguments,
 
     RunControl::registerWorker<SimpleTargetRunner>(NORMAL_RUN_MODE, constraint);
     RunControl::registerWorker<LinuxDeviceDebugSupport>(DEBUG_RUN_MODE, constraint);
-    RunControl::registerWorker<LinuxDeviceDebugSupport>(DEBUG_RUN_MODE_WITH_BREAK_ON_MAIN,
-        constraint);
     RunControl::registerWorker<RemoteLinuxQmlProfilerSupport>(QML_PROFILER_RUN_MODE, constraint);
     //RunControl::registerWorker<RemoteLinuxPerfSupport>(PERFPROFILER_RUN_MODE, constraint);
 
diff --git a/src/plugins/valgrind/callgrindtool.cpp b/src/plugins/valgrind/callgrindtool.cpp
index b5fa8b6a030cc7de700466c2d5a029ee81183c9b..23a72bfa492f78d2b30e7b125394bbe2be17cbdb 100644
--- a/src/plugins/valgrind/callgrindtool.cpp
+++ b/src/plugins/valgrind/callgrindtool.cpp
@@ -741,7 +741,7 @@ ValgrindToolRunner *CallgrindTool::createRunTool(RunControl *runControl)
     auto toolRunner = new CallgrindToolRunner(runControl);
 
     connect(toolRunner, &CallgrindToolRunner::parserDataReady, this, &CallgrindTool::takeParserDataFromRunControl);
-    connect(runControl, &RunControl::finished, this, &CallgrindTool::engineFinished);
+    connect(runControl, &RunControl::stopped, this, &CallgrindTool::engineFinished);
 
     connect(this, &CallgrindTool::dumpRequested, toolRunner, &CallgrindToolRunner::dump);
     connect(this, &CallgrindTool::resetRequested, toolRunner, &CallgrindToolRunner::reset);
diff --git a/src/plugins/valgrind/memcheckengine.cpp b/src/plugins/valgrind/memcheckengine.cpp
index 5be26e86bd210eefcb16cefa98bae709f09132b3..4e25251e4b05aa04931f260f2a182fa40fd03a0e 100644
--- a/src/plugins/valgrind/memcheckengine.cpp
+++ b/src/plugins/valgrind/memcheckengine.cpp
@@ -174,7 +174,7 @@ void MemcheckToolRunner::startDebugger(qint64 valgrindPid)
     auto gdbWorker = new Debugger::DebuggerRunTool(runControl());
     gdbWorker->setStartParameters(sp);
     gdbWorker->initiateStart();
-    connect(runControl(), &RunControl::finished, gdbWorker, &RunControl::deleteLater);
+    connect(runControl(), &RunControl::stopped, gdbWorker, &RunControl::deleteLater);
 }
 
 void MemcheckToolRunner::appendLog(const QByteArray &data)
diff --git a/src/plugins/winrt/winrtplugin.cpp b/src/plugins/winrt/winrtplugin.cpp
index dd55b0c3e68576434a07a446049225331e7fb140..3deedc6e45ce5060366cc56eeca2dc849c9f7ac2 100644
--- a/src/plugins/winrt/winrtplugin.cpp
+++ b/src/plugins/winrt/winrtplugin.cpp
@@ -85,8 +85,6 @@ bool WinRtPlugin::initialize(const QStringList &arguments, QString *errorMessage
         (ProjectExplorer::Constants::NORMAL_RUN_MODE, runConstraint);
     RunControl::registerWorker<WinRtDebugSupport>
         (ProjectExplorer::Constants::DEBUG_RUN_MODE, debugConstraint);
-    RunControl::registerWorker<WinRtDebugSupport>
-        (ProjectExplorer::Constants::DEBUG_RUN_MODE_WITH_BREAK_ON_MAIN, debugConstraint);
 
     return true;
 }
diff --git a/tests/auto/debugger/tst_gdb.cpp b/tests/auto/debugger/tst_gdb.cpp
index 7053c41f758dd3ba167edee59a034a087d8907c4..680c2c524f77875f3bd8a0b0b1610aa2bd4fba7b 100644
--- a/tests/auto/debugger/tst_gdb.cpp
+++ b/tests/auto/debugger/tst_gdb.cpp
@@ -121,6 +121,10 @@ void tst_gdb::version_data()
     QTest::newRow("openSUSE 13.2")
         << "GNU gdb (GDB; openSUSE 13.2) 7.8"
         << 70800 << 0 << false << false;
+
+    QTest::newRow("Fedora 26")
+        << "GNU gdb (GDB) Fedora 8.0-13.fc26"
+        << 80000 << 13 << false << false;
 }
 
 static QString chopConst(QString type)