From fa2a115aa37c1de5a7e79e4eb77255c641d2396f Mon Sep 17 00:00:00 2001
From: hjk <qtc-committer@nokia.com>
Date: Mon, 9 Nov 2009 16:25:24 +0100
Subject: [PATCH] debugger: use 'set substitute-path'

---
 src/plugins/debugger/debuggermanager.h  |  1 +
 src/plugins/debugger/debuggerrunner.cpp | 16 ++++++++++++++++
 src/plugins/debugger/gdb/gdbengine.cpp  | 15 +++++++++++++++
 3 files changed, 32 insertions(+)

diff --git a/src/plugins/debugger/debuggermanager.h b/src/plugins/debugger/debuggermanager.h
index 5e78170a1ec..05639618b2e 100644
--- a/src/plugins/debugger/debuggermanager.h
+++ b/src/plugins/debugger/debuggermanager.h
@@ -118,6 +118,7 @@ public:
     QString symbolFileName;
     QString serverStartScript;
     int toolChainType;
+    QString qtInstallPath;
 
     QString dumperLibrary;
     QStringList dumperLibraryLocations;
diff --git a/src/plugins/debugger/debuggerrunner.cpp b/src/plugins/debugger/debuggerrunner.cpp
index 17e11a1e095..64b9f310f87 100644
--- a/src/plugins/debugger/debuggerrunner.cpp
+++ b/src/plugins/debugger/debuggerrunner.cpp
@@ -31,6 +31,7 @@
 
 #include "debuggermanager.h"
 
+#include <projectexplorer/debugginghelper.h>
 #include <projectexplorer/environment.h>
 #include <projectexplorer/project.h>
 #include <projectexplorer/projectexplorerconstants.h>
@@ -170,6 +171,21 @@ DebuggerRunControl::DebuggerRunControl(DebuggerManager *manager,
         runConfiguration->dumperLibrary();
     m_startParameters->dumperLibraryLocations =
         runConfiguration->dumperLibraryLocations();
+
+    QString qmakePath = ProjectExplorer::DebuggingHelperLibrary::findSystemQt(
+            runConfiguration->environment());
+    if (!qmakePath.isEmpty()) {
+        QProcess proc;
+        QStringList args;
+        args.append(QLatin1String("-query"));
+        args.append(QLatin1String("QT_INSTALL_HEADERS"));
+        proc.start(qmakePath, args);
+        proc.waitForFinished();
+        QByteArray ba = proc.readAllStandardOutput().trimmed();
+        QFileInfo fi(QString::fromLocal8Bit(ba) + "/..");
+        m_startParameters->qtInstallPath = fi.absoluteFilePath();
+    }
+
 }
 
 void DebuggerRunControl::start()
diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp
index 4a7f5e9fac7..11e0860b11c 100644
--- a/src/plugins/debugger/gdb/gdbengine.cpp
+++ b/src/plugins/debugger/gdb/gdbengine.cpp
@@ -4427,6 +4427,21 @@ void GdbEngine::handleAdapterStarted()
 
 void GdbEngine::handleInferiorPrepared()
 {
+    const QString qtInstallPath = m_startParameters->qtInstallPath;
+    if (!qtInstallPath.isEmpty()) {
+        QString qtBuildPath =
+        #if defined(Q_OS_WIN)
+            _("C:/qt-greenhouse/Trolltech/Code_less_create_more/Trolltech/Code_less_create_more/Troll/4.6/qt");
+        #elif defined(Q_OS_MAC)
+            QString();
+        #else    
+            _("/var/tmp/qt-x11-src-4.6.0");
+        #endif
+        if (!qtBuildPath.isEmpty())
+        postCommand(_("set substitute-path %1 %2")
+            .arg(qtBuildPath).arg(qtInstallPath));
+    }
+
     // Initial attempt to set breakpoints
     showStatusMessage(tr("Setting breakpoints..."));
     attemptBreakpointSynchronization();
-- 
GitLab