diff --git a/scripts/shipping/prepare-linux-qt-for-shipping.sh b/scripts/shipping/prepare-linux-qt-for-shipping.sh
index 10f4620a2cd082898c34e7789e679483a1133322..869f0e837f87da8447113c3251cd73fbc1b9b065 100755
--- a/scripts/shipping/prepare-linux-qt-for-shipping.sh
+++ b/scripts/shipping/prepare-linux-qt-for-shipping.sh
@@ -76,20 +76,6 @@ build() {
 	ret=$?; [ ${ret} = 0 ] || exit ${ret}
 }
 
-fix_rpath() {
-	folder=$1
-	pattern=$2
-	rpath=$3
-	(
-		cd "${destdir}" || die "cd failed"
-		while read file ; do
-			echo "Fixing ${file}"
-			chrpath -r "${rpath}" "${file}" 2>&1 | sed 's/^/\t/'
-		done < <(find "${folder}" -type f -name "${pattern}")
-	)
-	ret=$?; [ ${ret} = 0 ] || exit ${ret}
-}
-
 inst() {
 	(
 		cd "${dir}" || die "cd failed"
@@ -98,22 +84,13 @@ inst() {
 			env -i "${MAKE}" install || die "make install failed"
 		fi
 
+		# Fix rpath's
 		cd "${destdir}" || die "cd failed"
-
-		# Fix files bin/*
-		fix_rpath bin '*' '$ORIGIN/../lib'
-
-		# Fix files lib/*.so
-		fix_rpath lib '*.so.?.?.?' '$ORIGIN'
-		fix_rpath lib '*.so.?.?.?.debug' '$ORIGIN'
-
-		# Fix files examples/tools/*/*/*.so
-		fix_rpath examples/tools '*.so' '$ORIGIN/../../../lib'
-		fix_rpath examples/tools '*.so.debug' '$ORIGIN/../../../lib'
-
-		# Fix files plugins/*/*.so
-		fix_rpath plugins '*.so' '$ORIGIN/../../lib'
-		fix_rpath plugins '*.so.debug' '$ORIGIN/../../lib'
+		find bin -mindepth 1 -maxdepth 1 -type f -perm -100 | xargs -n 1 chrpath -r '$ORIGIN/../lib'
+		find lib -mindepth 1 -maxdepth 1 -type f -perm -100 | xargs -n 1 chrpath -r '$ORIGIN'
+		find . -mindepth 3 -maxdepth 3 -type f -perm -100 | xargs -n 1 chrpath -r '$ORIGIN/../../lib'
+		find . -mindepth 4 -maxdepth 4 -type f -perm -100 | xargs -n 1 chrpath -r '$ORIGIN/../../../lib'
+		find . -mindepth 5 -maxdepth 5 -type f -perm -100 | xargs -n 1 chrpath -r '$ORIGIN/../../../../lib'
 	)
 	ret=$?; [ ${ret} = 0 ] || exit ${ret}
 }
diff --git a/src/tools/qtlibspatcher/binpatch.cpp b/src/tools/qtlibspatcher/binpatch.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..e2fd4cc2f2e392212455c1c36bd773b665bf6cbd
--- /dev/null
+++ b/src/tools/qtlibspatcher/binpatch.cpp
@@ -0,0 +1,210 @@
+/***************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact:  Qt Software Information (qt-info@nokia.com)
+**
+**
+** Non-Open Source Usage
+**
+** Licensees may use this file in accordance with the Qt Beta Version
+** License Agreement, Agreement version 2.2 provided with the Software or,
+** alternatively, in accordance with the terms contained in a written
+** agreement between you and Nokia.
+**
+** GNU General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License versions 2.0 or 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the packaging
+** of this file.  Please review the following information to ensure GNU
+** General Public Licensing requirements will be met:
+**
+** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt GPL Exception
+** version 1.3, included in the file GPL_EXCEPTION.txt in this package.
+**
+***************************************************************************/
+
+#include <cstdio>
+#include <cstring>
+#include <locale>
+
+#include "binpatch.h"
+
+// returns positive value if it finds a null termination inside the buffer
+long BinPatch::getBufferStringLength(char *data, char *end)
+{
+    long size = 0;
+    while (data < end) {
+        if (*data == '\0')
+            return size;
+        ++data;
+        ++size;
+    }
+
+    return -1;
+}
+
+// returns true if data ends with one of the tokens. (Sep. with ;)
+bool BinPatch::endsWithTokens(const char *data)
+{
+    if(strlen(endTokens) > 0) {
+        char endstmp[1024];
+        ulong tlen = ulong(strlen(data));
+
+        if(strlen(endTokens) >= sizeof(endstmp))
+            return false;
+
+        strcpy(endstmp, endTokens);
+
+        char *token = strtok(endstmp, ";");
+
+        while(token != NULL) {
+            // check if it ends with the token
+            if ((tlen >= strlen(token)) 
+                && (strcasecmp((data+tlen)-strlen(token), token) == 0))
+                return true;
+            token = strtok(NULL, ";");
+        }
+    } else {
+        return true; //true if no tokens
+    }
+
+    return false; //no matching tokens
+}
+
+bool BinPatch::patchHelper(char *inbuffer, const char *oldstr, const char *newstr, size_t len, long *rw)
+{
+    char nc1 = *oldstr;
+    char nc2 = 0;
+    char *inend = inbuffer + len;
+    size_t oldlen = strlen(oldstr);
+    size_t newlen = strlen(newstr);
+    char *instart = inbuffer;
+    *rw = 0;
+    bool write = true;
+
+    isupper(nc1) ? nc2 = tolower(nc1) : nc2 = toupper(nc1);
+
+    while(inbuffer < inend) {
+        if ((*inbuffer == nc1) || (*inbuffer == nc2)) {
+            if (inbuffer > (inend-oldlen) || inbuffer > (inend-newlen)) {
+                *rw = (long)(inend-inbuffer); //rewind, not enough to make a compare
+                break;
+            }
+
+            if (strncasecmp(inbuffer, oldstr, oldlen) == 0) {
+                if (useLength && (instart == inbuffer)) {
+                    *rw = (long)(len+1); //we don't have access to the length byte, rewind all + 1!
+                    write = false;
+                    break;
+                }
+                
+                long oldsize = -1;
+                if (useLength) { //VC60
+                    oldsize = (unsigned char)(*(inbuffer-1));
+
+                    // vc60 pdb files sometimes uses 0A, then it should be null terminated
+                    if (oldsize < (long)oldlen) {
+                        if (oldsize != 0x0A) { //strange case... skip
+                            inbuffer+=oldlen;
+                            continue;
+                        }
+
+                        oldsize = getBufferStringLength(inbuffer, inend);
+                        
+                        if (oldsize < 0) {
+                            *rw = (long)(inend-inbuffer); //rewind, entire string not in buffer
+                            break;
+                        }
+                    }
+
+                    if (inbuffer > (inend-oldsize)) {
+                        *rw = (long)(inend-inbuffer); //rewind, entire string not in buffer
+                        break;
+                    }
+                } else { //VC7x
+                    oldsize = getBufferStringLength(inbuffer, inend);
+                    if (oldsize < 0) {
+                        *rw = (long)(inend-inbuffer); //rewind, entire string not in buffer
+                        break;
+                    }
+                }
+
+                char oldPath[1024];
+                if (oldsize > (long)sizeof(oldPath)) {
+                    //at least don't crash
+                    inbuffer+=oldsize;
+                    continue;
+                }
+                memset(oldPath, '\0', sizeof(oldPath));
+                strncpy(oldPath, newstr, newlen);
+
+                if (insertReplace)
+                    strncat(oldPath, inbuffer+oldlen, oldsize-oldlen);
+
+                // just replace if it ends with a token in endTokens
+                if (endsWithTokens(oldPath)) {
+                    if (oldsize < (long)strlen(oldPath))
+                        oldsize = (long)strlen(oldPath);
+
+                    memcpy(inbuffer, oldPath, oldsize);
+                }
+
+                inbuffer+=oldsize;
+                continue;
+            }
+        }
+        ++inbuffer;
+    }
+
+    return write;
+}
+
+bool BinPatch::patch(const char *oldstr, const char *newstr)
+{
+    size_t oldlen = strlen(oldstr);
+    size_t newlen = strlen(newstr);
+
+    if ((!fileName || strlen(fileName) < 1)
+        || (!oldstr || oldlen < 1)
+        || (!newstr || newlen < 1))
+        return false;
+
+    FILE *input;
+
+    if (!(input = fopen(fileName, "r+b")))
+    {
+        fprintf(stderr, "Cannot open file %s!\n", fileName);
+        return false;
+    }
+
+    char data[60000];
+    long rw = 0;
+    long offset = 0;
+
+    size_t len;
+    len = fread(data, sizeof(char), sizeof(data), input);
+
+    do {
+        if (patchHelper(data, oldstr, newstr, len, &rw)) {
+            fseek(input, offset, SEEK_SET); //overwrite
+            fwrite(data, sizeof(char), len, input);
+        }
+
+        offset += (long)((-rw) + len);
+        if (fseek(input, offset, SEEK_SET) != 0)
+            break;
+        len = fread(data, sizeof(char), sizeof(data), input);
+    } while(!(feof(input) && (len <= oldlen || len <= newlen)));
+    
+    fclose(input);
+    
+    return true;
+}
diff --git a/src/tools/qtlibspatcher/binpatch.h b/src/tools/qtlibspatcher/binpatch.h
new file mode 100644
index 0000000000000000000000000000000000000000..a6867d39fbd9e88a73945181b9213f0a5c6e39cd
--- /dev/null
+++ b/src/tools/qtlibspatcher/binpatch.h
@@ -0,0 +1,74 @@
+/***************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact:  Qt Software Information (qt-info@nokia.com)
+**
+**
+** Non-Open Source Usage
+**
+** Licensees may use this file in accordance with the Qt Beta Version
+** License Agreement, Agreement version 2.2 provided with the Software or,
+** alternatively, in accordance with the terms contained in a written
+** agreement between you and Nokia.
+**
+** GNU General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License versions 2.0 or 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the packaging
+** of this file.  Please review the following information to ensure GNU
+** General Public Licensing requirements will be met:
+**
+** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt GPL Exception
+** version 1.3, included in the file GPL_EXCEPTION.txt in this package.
+**
+***************************************************************************/
+
+#ifndef BINPATCH_H
+#define BINPATCH_H
+
+#include <string.h>
+
+typedef unsigned long ulong;
+typedef unsigned int uint;
+
+class BinPatch
+{
+public:
+    BinPatch(const char *file)
+        : useLength(false), insertReplace(false)
+    {
+        strcpy(endTokens, "");
+        strcpy(fileName, file);
+    }
+
+    void enableUseLength(bool enabled)
+    { useLength = enabled; }
+    void enableInsertReplace(bool enabled)
+    { insertReplace = enabled; }
+    void setEndTokens(const char *tokens)
+    { strcpy(endTokens, tokens); }
+
+    bool patch(const char *oldstr, const char *newstr);
+
+private:
+    long getBufferStringLength(char *data, char *end);
+    bool endsWithTokens(const char *data);
+
+    bool patchHelper(char *inbuffer, const char *oldstr, 
+        const char *newstr, size_t len, long *rw);
+
+    bool useLength;
+    bool insertReplace;
+    char endTokens[1024];
+    char fileName[1024];
+};
+
+#endif
diff --git a/src/tools/qtlibspatcher/qtlibspatcher.pro b/src/tools/qtlibspatcher/qtlibspatcher.pro
new file mode 100644
index 0000000000000000000000000000000000000000..fb0b51c9c9ee893e9e760f0f2cf1569122850524
--- /dev/null
+++ b/src/tools/qtlibspatcher/qtlibspatcher.pro
@@ -0,0 +1,15 @@
+######################################################################
+# Automatically generated by qmake (2.01a) Di 8. Jul 15:08:13 2008
+######################################################################
+
+CONFIG += console
+QT -= gui
+TEMPLATE = app
+TARGET = 
+DEPENDPATH += .
+INCLUDEPATH += .
+DESTDIR = ./
+
+# Input
+HEADERS += binpatch.h
+SOURCES += binpatch.cpp qtlibspatchermain.cpp
diff --git a/src/tools/qtlibspatcher/qtlibspatchermain.cpp b/src/tools/qtlibspatcher/qtlibspatchermain.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..975e58c971ababc8568ae18acd1311495b9e3fdc
--- /dev/null
+++ b/src/tools/qtlibspatcher/qtlibspatchermain.cpp
@@ -0,0 +1,781 @@
+/***************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact:  Qt Software Information (qt-info@nokia.com)
+**
+**
+** Non-Open Source Usage
+**
+** Licensees may use this file in accordance with the Qt Beta Version
+** License Agreement, Agreement version 2.2 provided with the Software or,
+** alternatively, in accordance with the terms contained in a written
+** agreement between you and Nokia.
+**
+** GNU General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License versions 2.0 or 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the packaging
+** of this file.  Please review the following information to ensure GNU
+** General Public Licensing requirements will be met:
+**
+** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt GPL Exception
+** version 1.3, included in the file GPL_EXCEPTION.txt in this package.
+**
+***************************************************************************/
+
+#include "binpatch.h"
+#include <cstdio>
+#include <iostream>
+
+#include <QFile>
+#include <QRegExp>
+#include <QTextStream>
+#include <QString>
+#include <QtCore/QDebug>
+
+#ifdef Q_OS_WIN
+    const char * const oldInstallBase = "C:/qt-greenhouse/Trolltech/Code_less_create_more/"
+        "Trolltech/Code_less_create_more/Troll/4.4.3";
+#else
+    const char * const oldSourceBase = "/home/berlin/dev/qt-4.4.3-temp/qt-x11-opensource-src-4.4.3";
+    const char * const oldInstallBase = "/home/berlin/dev/qt-4.4.3-shipping";
+#endif
+
+
+char * allocFileNameCopyAppend(const char * textToCopy,
+        const char * textToAppend, const char * textToAppend2 = NULL);
+
+void logFileName(const char *fileName) {
+    std::cout << "Patching file " << fileName << std::endl;
+}
+
+void logDiff(const char *oldText, const char *newText) {
+    std::cout << "  --- " << oldText << std::endl;
+    std::cout << "  +++ " << newText << std::endl;
+}
+
+bool patchBinaryWithQtPathes(const char *fileName, const char *baseQtPath)
+{
+    bool result = true;
+
+    static const struct
+    {
+        const char *variable;
+        const char *subDirectory;
+    } variables[] = {
+        {"qt_prfxpath=", ""},
+        {"qt_docspath=", "/doc"},
+        {"qt_hdrspath=", "/include"},
+        {"qt_libspath=", "/lib"},
+        {"qt_binspath=", "/bin"},
+        {"qt_plugpath=", "/plugins"},
+        {"qt_datapath=", ""},
+        {"qt_trnspath=", "/translations"},
+        {"qt_xmplpath=", "/examples"},
+        {"qt_demopath=", "/demos"}
+    };
+
+    logFileName(fileName);
+    for (int i = 0; i < (int)(sizeof(variables) / sizeof(variables[0])); i++) {
+        const char * const newStr = allocFileNameCopyAppend(variables[i].variable, baseQtPath, variables[i].subDirectory);
+        BinPatch binFile(fileName);
+        const bool success = binFile.patch(variables[i].variable, newStr);
+        delete[] newStr;
+        if (!success) {
+            result = false;
+            break;
+        }
+    }
+
+    return result;
+}
+
+bool patchBinariesWithQtPathes(const char *baseQtPath)
+{
+    bool result = true;
+
+    static const char *filesToPatch[] = {
+    #ifdef Q_OS_WIN
+        "/bin/qmake.exe",
+        "/bin/QtCore4.dll",
+        "/bin/QtCored4.dll"
+    #else
+        "/bin/qmake",
+        "/lib/libQtCore.so",
+    #endif
+    };
+
+    for (int i = 0; i < (int)(sizeof(filesToPatch) / sizeof(filesToPatch[0])); i++) {
+        const char * const fileName = allocFileNameCopyAppend(baseQtPath, filesToPatch[i]);
+        const bool success = patchBinaryWithQtPathes(fileName, baseQtPath);
+        delete[] fileName;
+        if (!success) {
+            result = false;
+            break;
+        }
+    }
+
+    return result;
+}
+
+char * allocFileNameCopyAppend(const char * textToCopy,
+        const char * textToAppend, const char * textToAppend2)
+{
+    const unsigned int bytesToAllocate = FILENAME_MAX;
+    Q_ASSERT(bytesToAllocate > 0);
+    Q_ASSERT(textToCopy != NULL);
+    Q_ASSERT(textToAppend != NULL);
+    if (textToAppend2 == NULL)
+        textToAppend2 = "";
+    Q_ASSERT(textToAppend2 != NULL);
+
+    char * const res = new char[bytesToAllocate];
+    const size_t textToCopyLen = strlen(textToCopy);
+    const size_t textToAppendLen = strlen(textToAppend);
+    const size_t textToAppend2Len = strlen(textToAppend2);
+
+    // Array too small?
+    if (textToCopyLen + textToAppendLen + textToAppend2Len >= bytesToAllocate) {
+        res[0] = '\0';
+        return res;
+    }
+
+    strncpy(res, textToCopy, bytesToAllocate - 1);
+    if (textToAppendLen > 0)
+        strncpy(res + textToCopyLen, textToAppend, bytesToAllocate - textToCopyLen - 1);
+    if (textToAppend2Len > 0)
+        strncpy(res + textToCopyLen + textToAppend2Len, textToAppend2, bytesToAllocate - textToCopyLen - textToAppend2Len - 1);
+    res[textToCopyLen + textToAppendLen + textToAppend2Len] = '\0';
+    res[bytesToAllocate - 1] = '\0'; // Safe is safe
+    return res;
+}
+
+
+bool patchDebugLibrariesWithQtPath(const char *baseQtPath)
+{
+    bool result = true;
+
+    static const struct
+    {
+        const char *fileName;
+        const char *sourceLocation;
+    } libraries[] = {
+#ifdef Q_OS_WIN
+        {"/bin/Qt3Supportd4.dll", "/src/qt3support/"},
+        {"/bin/QtCored4.dll", "/src/corelib/"},
+        {"/bin/QtGuid4.dll", "/src/gui/"},
+        {"/bin/QtHelpd4.dll", "/tools/assistant/lib/"},
+        {"/bin/QtNetworkd4.dll", "/src/network/"},
+        {"/bin/QtOpenGLd4.dll", "/src/opengl/"},
+        {"/bin/QtScriptd4.dll", "/src/script/"},
+        {"/bin/QtSqld4.dll", "/src/sql/"},
+        {"/bin/QtSvgd4.dll", "/src/svg/"},
+        {"/bin/QtTestd4.dll", "/src/testlib/"},
+        {"/bin/QtWebKitd4.dll", "/src/3rdparty/webkit/WebCore/"},
+        {"/bin/QtXmld4.dll", "/src/xml/"},
+        {"/bin/QtXmlPatternsd4.dll", "/src/xmlpatterns/"},
+        {"/plugins/accessible/qtaccessiblecompatwidgetsd4.dll", "/src/plugins/accessible/compat/"},
+        {"/plugins/accessible/qtaccessiblewidgetsd4.dll", "/src/plugins/accessible/widgets/"},
+        {"/plugins/codecs/qcncodecsd4.dll", "/src/plugins/codecs/cn/"},
+        {"/plugins/codecs/qjpcodecsd4.dll", "/src/plugins/codecs/jp/"},
+        {"/plugins/codecs/qkrcodecsd4.dll", "/src/plugins/codecs/kr/"},
+        {"/plugins/codecs/qtwcodecsd4.dll", "/src/plugins/codecs/tw/"},
+        {"/plugins/iconengines/qsvgicond4.dll", "/src/plugins/iconengines/svgiconengine/"},
+        {"/plugins/imageformats/qgifd4.dll", "/src/plugins/imageformats/gif/"},
+        {"/plugins/imageformats/qjpegd4.dll", "/src/plugins/imageformats/jpeg/"},
+        {"/plugins/imageformats/qmngd4.dll", "/src/plugins/imageformats/mng/"},
+        {"/plugins/imageformats/qsvgd4.dll", "/src/plugins/imageformats/svg/"},
+        {"/plugins/imageformats/qtiffd4.dll", "/src/plugins/imageformats/tiff/"},
+        {"/plugins/sqldrivers/qsqlited4.dll", "/src/plugins/sqldrivers/sqlite/"},
+//        {"/plugins/sqldrivers/qsqlodbcd4.dll", "/src/plugins/sqldrivers/odbc/"}
+#else
+        {"/examples/tools/plugandpaint/plugins/libpnp_basictools.a", "/examples/tools/plugandpaintplugins/basictools"},
+        {"/lib/libQtUiTools.a", "/tools/designer/src/uitools"},
+        {"/demos/shared/libdemo_shared.a", "/demos/shared"},
+
+        {"/plugins/codecs/libqkrcodecs.so.debug", "/plugins/codecs"},
+        {"/plugins/codecs/libqtwcodecs.so.debug", "/plugins/codecs"},
+        {"/plugins/codecs/libqcncodecs.so.debug", "/plugins/codecs"},
+        {"/plugins/codecs/libqjpcodecs.so.debug", "/plugins/codecs"},
+        {"/plugins/iconengines/libqsvgicon.so.debug", "/plugins/iconengines"},
+        {"/plugins/sqldrivers/libqsqlmysql.so.debug", "/plugins/sqldrivers"},
+        {"/plugins/sqldrivers/libqsqlite.so.debug", "/plugins/sqldrivers"},
+        {"/plugins/sqldrivers/libqsqlite2.so.debug", "/plugins/sqldrivers"},
+        {"/plugins/sqldrivers/libqsqlpsql.so.debug", "/plugins/sqldrivers"},
+        {"/plugins/imageformats/libqgif.so.debug", "/plugins/imageformats"},
+        {"/plugins/imageformats/libqtiff.so.debug", "/plugins/imageformats"},
+        {"/plugins/imageformats/libqsvg.so.debug", "/plugins/imageformats"},
+        {"/plugins/imageformats/libqjpeg.so.debug", "/plugins/imageformats"},
+        {"/plugins/imageformats/libqico.so.debug", "/plugins/imageformats"},
+        {"/plugins/imageformats/libqmng.so.debug", "/plugins/imageformats"},
+        {"/plugins/accessible/libqtaccessiblewidgets.so.debug", "/plugins/accessible"},
+        {"/plugins/accessible/libqtaccessiblecompatwidgets.so.debug", "/plugins/accessible"},
+        {"/plugins/designer/libcontainerextension.so.debug", "/plugins/designer"},
+        {"/plugins/designer/libtaskmenuextension.so.debug", "/plugins/designer"},
+        {"/plugins/designer/libqwebview.so.debug", "/plugins/designer"},
+        {"/plugins/designer/libcustomwidgetplugin.so.debug", "/plugins/designer"},
+        {"/plugins/designer/libarthurplugin.so.debug", "/plugins/designer"},
+        {"/plugins/designer/libqt3supportwidgets.so.debug", "/plugins/designer"},
+        {"/plugins/designer/libworldtimeclockplugin.so.debug", "/plugins/designer"},
+        {"/plugins/inputmethods/libqimsw-multi.so.debug", "/plugins/inputmethods"},
+        {"/plugins/script/libqtscriptdbus.so.debug", "/plugins/script"},
+        {"/examples/draganddrop/puzzle/puzzle.debug", "/examples/draganddrop/puzzle"},
+        {"/examples/draganddrop/dropsite/dropsite.debug", "/examples/draganddrop/dropsite"},
+        {"/examples/draganddrop/draggabletext/draggabletext.debug", "/examples/draganddrop/draggabletext"},
+        {"/examples/draganddrop/draggableicons/draggableicons.debug", "/examples/draganddrop/draggableicons"},
+        {"/examples/draganddrop/fridgemagnets/fridgemagnets.debug", "/examples/draganddrop/fridgemagnets"},
+        {"/examples/webkit/formextractor/formExtractor.debug", "/examples/webkit/formextractor"},
+        {"/examples/webkit/previewer/previewer.debug", "/examples/webkit/previewer"},
+        {"/examples/richtext/orderform/orderform.debug", "/examples/richtext/orderform"},
+        {"/examples/richtext/calendar/calendar.debug", "/examples/richtext/calendar"},
+        {"/examples/richtext/syntaxhighlighter/syntaxhighlighter.debug", "/examples/richtext/syntaxhighlighter"},
+        {"/examples/desktop/systray/systray.debug", "/examples/desktop/systray"},
+        {"/examples/desktop/screenshot/screenshot.debug", "/examples/desktop/screenshot"},
+        {"/examples/linguist/arrowpad/arrowpad.debug", "/examples/linguist/arrowpad"},
+        {"/examples/linguist/trollprint/trollprint.debug", "/examples/linguist/trollprint"},
+        {"/examples/linguist/hellotr/hellotr.debug", "/examples/linguist/hellotr"},
+        {"/examples/ipc/sharedmemory/sharedmemory.debug", "/examples/ipc/sharedmemory"},
+        {"/examples/ipc/localfortuneclient/localfortuneclient.debug", "/examples/ipc/localfortuneclient"},
+        {"/examples/ipc/localfortuneserver/localfortuneserver.debug", "/examples/ipc/localfortuneserver"},
+        {"/examples/threads/waitconditions/waitconditions.debug", "/examples/threads/waitconditions"},
+        {"/examples/threads/semaphores/semaphores.debug", "/examples/threads/semaphores"},
+        {"/examples/threads/mandelbrot/mandelbrot.debug", "/examples/threads/mandelbrot"},
+        {"/examples/dbus/listnames/listnames.debug", "/examples/dbus/listnames"},
+        {"/examples/dbus/pingpong/ping.debug", "/examples/dbus/pingpong"},
+        {"/examples/dbus/pingpong/pong.debug", "/examples/dbus/pingpong"},
+        {"/examples/dbus/complexpingpong/complexping.debug", "/examples/dbus/complexpingpong"},
+        {"/examples/dbus/complexpingpong/complexpong.debug", "/examples/dbus/complexpingpong"},
+        {"/examples/dbus/chat/dbus-chat.debug", "/examples/dbus/chat"},
+        {"/examples/dbus/remotecontrolledcar/car/car.debug", "/examples/dbus/remotecontrolledcar/car"},
+        {"/examples/dbus/remotecontrolledcar/controller/controller.debug", "/examples/dbus/remotecontrolledcar/controller"},
+        {"/examples/qtconcurrent/wordcount/wordcount.debug", "/examples/qtconcurrent/wordcount"},
+        {"/examples/qtconcurrent/runfunction/runfunction.debug", "/examples/qtconcurrent/runfunction"},
+        {"/examples/qtconcurrent/progressdialog/progressdialog.debug", "/examples/qtconcurrent/progressdialog"},
+        {"/examples/qtconcurrent/map/mapdemo.debug", "/examples/qtconcurrent/map"},
+        {"/examples/qtconcurrent/imagescaling/imagescaling.debug", "/examples/qtconcurrent/imagescaling"},
+        {"/examples/designer/calculatorform/calculatorform.debug", "/examples/designer/calculatorform"},
+        {"/examples/designer/worldtimeclockbuilder/worldtimeclockbuilder.debug", "/examples/designer/worldtimeclockbuilder"},
+        {"/examples/designer/calculatorbuilder/calculatorbuilder.debug", "/examples/designer/calculatorbuilder"},
+        {"/examples/sql/drilldown/drilldown.debug", "/examples/sql/drilldown"},
+        {"/examples/sql/masterdetail/masterdetail.debug", "/examples/sql/masterdetail"},
+        {"/examples/sql/tablemodel/tablemodel.debug", "/examples/sql/tablemodel"},
+        {"/examples/sql/relationaltablemodel/relationaltablemodel.debug", "/examples/sql/relationaltablemodel"},
+        {"/examples/sql/querymodel/querymodel.debug", "/examples/sql/querymodel"},
+        {"/examples/sql/cachedtable/cachedtable.debug", "/examples/sql/cachedtable"},
+        {"/examples/xmlpatterns/qobjectxmlmodel/qobjectxmlmodel.debug", "/examples/xmlpatterns/qobjectxmlmodel"},
+        {"/examples/xmlpatterns/recipes/recipes.debug", "/examples/xmlpatterns/recipes"},
+        {"/examples/xmlpatterns/filetree/filetree.debug", "/examples/xmlpatterns/filetree"},
+        {"/examples/assistant/simpletextviewer/simpletextviewer.debug", "/examples/assistant/simpletextviewer"},
+        {"/examples/help/simpletextviewer/simpletextviewer.debug", "/examples/help/simpletextviewer"},
+        {"/examples/help/contextsensitivehelp/contextsensitivehelp.debug", "/examples/help/contextsensitivehelp"},
+        {"/examples/help/remotecontrol/remotecontrol.debug", "/examples/help/remotecontrol"},
+        {"/examples/opengl/grabber/grabber.debug", "/examples/opengl/grabber"},
+        {"/examples/opengl/framebufferobject2/framebufferobject2.debug", "/examples/opengl/framebufferobject2"},
+        {"/examples/opengl/hellogl/hellogl.debug", "/examples/opengl/hellogl"},
+        {"/examples/opengl/framebufferobject/framebufferobject.debug", "/examples/opengl/framebufferobject"},
+        {"/examples/opengl/overpainting/overpainting.debug", "/examples/opengl/overpainting"},
+        {"/examples/opengl/pbuffers2/pbuffers2.debug", "/examples/opengl/pbuffers2"},
+        {"/examples/opengl/2dpainting/2dpainting.debug", "/examples/opengl/2dpainting"},
+        {"/examples/opengl/pbuffers/pbuffers.debug", "/examples/opengl/pbuffers"},
+        {"/examples/opengl/samplebuffers/samplebuffers.debug", "/examples/opengl/samplebuffers"},
+        {"/examples/opengl/textures/textures.debug", "/examples/opengl/textures"},
+        {"/examples/graphicsview/elasticnodes/elasticnodes.debug", "/examples/graphicsview/elasticnodes"},
+        {"/examples/graphicsview/collidingmice/collidingmice.debug", "/examples/graphicsview/collidingmice"},
+        {"/examples/graphicsview/portedasteroids/portedasteroids.debug", "/examples/graphicsview/portedasteroids"},
+        {"/examples/graphicsview/padnavigator/padnavigator.debug", "/examples/graphicsview/padnavigator"},
+        {"/examples/graphicsview/portedcanvas/portedcanvas.debug", "/examples/graphicsview/portedcanvas"},
+        {"/examples/graphicsview/diagramscene/diagramscene.debug", "/examples/graphicsview/diagramscene"},
+        {"/examples/graphicsview/dragdroprobot/dragdroprobot.debug", "/examples/graphicsview/dragdroprobot"},
+        {"/examples/mainwindows/menus/menus.debug", "/examples/mainwindows/menus"},
+        {"/examples/mainwindows/mdi/mdi.debug", "/examples/mainwindows/mdi"},
+        {"/examples/mainwindows/sdi/sdi.debug", "/examples/mainwindows/sdi"},
+        {"/examples/mainwindows/recentfiles/recentfiles.debug", "/examples/mainwindows/recentfiles"},
+        {"/examples/mainwindows/application/application.debug", "/examples/mainwindows/application"},
+        {"/examples/mainwindows/dockwidgets/dockwidgets.debug", "/examples/mainwindows/dockwidgets"},
+        {"/examples/widgets/tablet/tablet.debug", "/examples/widgets/tablet"},
+        {"/examples/widgets/shapedclock/shapedclock.debug", "/examples/widgets/shapedclock"},
+        {"/examples/widgets/styles/styles.debug", "/examples/widgets/styles"},
+        {"/examples/widgets/icons/icons.debug", "/examples/widgets/icons"},
+        {"/examples/widgets/charactermap/charactermap.debug", "/examples/widgets/charactermap"},
+        {"/examples/widgets/sliders/sliders.debug", "/examples/widgets/sliders"},
+        {"/examples/widgets/tooltips/tooltips.debug", "/examples/widgets/tooltips"},
+        {"/examples/widgets/windowflags/windowflags.debug", "/examples/widgets/windowflags"},
+        {"/examples/widgets/stylesheet/stylesheet.debug", "/examples/widgets/stylesheet"},
+        {"/examples/widgets/spinboxes/spinboxes.debug", "/examples/widgets/spinboxes"},
+        {"/examples/widgets/validators/validators.debug", "/examples/widgets/validators"},
+        {"/examples/widgets/calculator/calculator.debug", "/examples/widgets/calculator"},
+        {"/examples/widgets/groupbox/groupbox.debug", "/examples/widgets/groupbox"},
+        {"/examples/widgets/scribble/scribble.debug", "/examples/widgets/scribble"},
+        {"/examples/widgets/imageviewer/imageviewer.debug", "/examples/widgets/imageviewer"},
+        {"/examples/widgets/digitalclock/digitalclock.debug", "/examples/widgets/digitalclock"},
+        {"/examples/widgets/lineedits/lineedits.debug", "/examples/widgets/lineedits"},
+        {"/examples/widgets/movie/movie.debug", "/examples/widgets/movie"},
+        {"/examples/widgets/calendarwidget/calendarwidget.debug", "/examples/widgets/calendarwidget"},
+        {"/examples/widgets/wiggly/wiggly.debug", "/examples/widgets/wiggly"},
+        {"/examples/widgets/analogclock/analogclock.debug", "/examples/widgets/analogclock"},
+        {"/examples/widgets/tetrix/tetrix.debug", "/examples/widgets/tetrix"},
+        {"/examples/painting/basicdrawing/basicdrawing.debug", "/examples/painting/basicdrawing"},
+        {"/examples/painting/svgviewer/svgviewer.debug", "/examples/painting/svgviewer"},
+        {"/examples/painting/fontsampler/fontsampler.debug", "/examples/painting/fontsampler"},
+        {"/examples/painting/concentriccircles/concentriccircles.debug", "/examples/painting/concentriccircles"},
+        {"/examples/painting/painterpaths/painterpaths.debug", "/examples/painting/painterpaths"},
+        {"/examples/painting/imagecomposition/imagecomposition.debug", "/examples/painting/imagecomposition"},
+        {"/examples/painting/transformations/transformations.debug", "/examples/painting/transformations"},
+        {"/examples/tools/customcompleter/customcompleter.debug", "/examples/tools/customcompleter"},
+        {"/examples/tools/codecs/codecs.debug", "/examples/tools/codecs"},
+        {"/examples/tools/plugandpaint/plugins/libpnp_extrafilters.so.debug", "/examples/tools/plugandpaint/plugins"},
+        {"/examples/tools/plugandpaint/plugandpaint.debug", "/examples/tools/plugandpaint"},
+        {"/examples/tools/regexp/regexp.debug", "/examples/tools/regexp"},
+        {"/examples/tools/undoframework/undoframework.debug", "/examples/tools/undoframework"},
+        {"/examples/tools/i18n/i18n.debug", "/examples/tools/i18n"},
+        {"/examples/tools/completer/completer.debug", "/examples/tools/completer"},
+        {"/examples/tools/echoplugin/plugin/libechoplugin.so.debug", "/examples/tools/echoplugin/plugin"},
+        {"/examples/tools/echoplugin/echoplugin.debug", "/examples/tools/echoplugin"},
+        {"/examples/tools/styleplugin/styles/libsimplestyleplugin.so.debug", "/examples/tools/styleplugin/styles"},
+        {"/examples/tools/styleplugin/styleplugin.debug", "/examples/tools/styleplugin"},
+        {"/examples/tools/treemodelcompleter/treemodelcompleter.debug", "/examples/tools/treemodelcompleter"},
+        {"/examples/tools/settingseditor/settingseditor.debug", "/examples/tools/settingseditor"},
+        {"/examples/network/securesocketclient/securesocketclient.debug", "/examples/network/securesocketclient"},
+        {"/examples/network/broadcastreceiver/broadcastreceiver.debug", "/examples/network/broadcastreceiver"},
+        {"/examples/network/downloadmanager/downloadmanager.debug", "/examples/network/downloadmanager"},
+        {"/examples/network/fortuneserver/fortuneserver.debug", "/examples/network/fortuneserver"},
+        {"/examples/network/loopback/loopback.debug", "/examples/network/loopback"},
+        {"/examples/network/http/http.debug", "/examples/network/http"},
+        {"/examples/network/ftp/ftp.debug", "/examples/network/ftp"},
+        {"/examples/network/download/download.debug", "/examples/network/download"},
+        {"/examples/network/fortuneclient/fortuneclient.debug", "/examples/network/fortuneclient"},
+        {"/examples/network/blockingfortuneclient/blockingfortuneclient.debug", "/examples/network/blockingfortuneclient"},
+        {"/examples/network/broadcastsender/broadcastsender.debug", "/examples/network/broadcastsender"},
+        {"/examples/network/threadedfortuneserver/threadedfortuneserver.debug", "/examples/network/threadedfortuneserver"},
+        {"/examples/network/chat/network-chat.debug", "/examples/network/chat"},
+        {"/examples/network/torrent/torrent.debug", "/examples/network/torrent"},
+        {"/examples/qtestlib/tutorial4/tutorial4.debug", "/examples/qtestlib/tutorial4"},
+        {"/examples/qtestlib/tutorial1/tutorial1.debug", "/examples/qtestlib/tutorial1"},
+        {"/examples/qtestlib/tutorial2/tutorial2.debug", "/examples/qtestlib/tutorial2"},
+        {"/examples/qtestlib/tutorial3/tutorial3.debug", "/examples/qtestlib/tutorial3"},
+        {"/examples/tutorials/tutorial/t3/t3.debug", "/examples/tutorials/tutorial/t3"},
+        {"/examples/tutorials/tutorial/t5/t5.debug", "/examples/tutorials/tutorial/t5"},
+        {"/examples/tutorials/tutorial/t2/t2.debug", "/examples/tutorials/tutorial/t2"},
+        {"/examples/tutorials/tutorial/t11/t11.debug", "/examples/tutorials/tutorial/t11"},
+        {"/examples/tutorials/tutorial/t6/t6.debug", "/examples/tutorials/tutorial/t6"},
+        {"/examples/tutorials/tutorial/t13/t13.debug", "/examples/tutorials/tutorial/t13"},
+        {"/examples/tutorials/tutorial/t12/t12.debug", "/examples/tutorials/tutorial/t12"},
+        {"/examples/tutorials/tutorial/t9/t9.debug", "/examples/tutorials/tutorial/t9"},
+        {"/examples/tutorials/tutorial/t1/t1.debug", "/examples/tutorials/tutorial/t1"},
+        {"/examples/tutorials/tutorial/t4/t4.debug", "/examples/tutorials/tutorial/t4"},
+        {"/examples/tutorials/tutorial/t14/t14.debug", "/examples/tutorials/tutorial/t14"},
+        {"/examples/tutorials/tutorial/t8/t8.debug", "/examples/tutorials/tutorial/t8"},
+        {"/examples/tutorials/tutorial/t7/t7.debug", "/examples/tutorials/tutorial/t7"},
+        {"/examples/tutorials/tutorial/t10/t10.debug", "/examples/tutorials/tutorial/t10"},
+        {"/examples/tutorials/addressbook/part2/part2.debug", "/examples/tutorials/addressbook/part2"},
+        {"/examples/tutorials/addressbook/part5/part5.debug", "/examples/tutorials/addressbook/part5"},
+        {"/examples/tutorials/addressbook/part3/part3.debug", "/examples/tutorials/addressbook/part3"},
+        {"/examples/tutorials/addressbook/part4/part4.debug", "/examples/tutorials/addressbook/part4"},
+        {"/examples/tutorials/addressbook/part7/part7.debug", "/examples/tutorials/addressbook/part7"},
+        {"/examples/tutorials/addressbook/part1/part1.debug", "/examples/tutorials/addressbook/part1"},
+        {"/examples/tutorials/addressbook/part6/part6.debug", "/examples/tutorials/addressbook/part6"},
+        {"/examples/xml/streambookmarks/streambookmarks.debug", "/examples/xml/streambookmarks"},
+        {"/examples/xml/saxbookmarks/saxbookmarks.debug", "/examples/xml/saxbookmarks"},
+        {"/examples/xml/xmlstreamlint/xmlstreamlint.debug", "/examples/xml/xmlstreamlint"},
+        {"/examples/xml/dombookmarks/dombookmarks.debug", "/examples/xml/dombookmarks"},
+        {"/examples/xml/rsslisting/rsslisting.debug", "/examples/xml/rsslisting"},
+        {"/examples/layouts/dynamiclayouts/dynamiclayouts.debug", "/examples/layouts/dynamiclayouts"},
+        {"/examples/layouts/flowlayout/flowlayout.debug", "/examples/layouts/flowlayout"},
+        {"/examples/layouts/borderlayout/borderlayout.debug", "/examples/layouts/borderlayout"},
+        {"/examples/layouts/basiclayouts/basiclayouts.debug", "/examples/layouts/basiclayouts"},
+        {"/examples/dialogs/trivialwizard/trivialwizard.debug", "/examples/dialogs/trivialwizard"},
+        {"/examples/dialogs/extension/extension.debug", "/examples/dialogs/extension"},
+        {"/examples/dialogs/standarddialogs/standarddialogs.debug", "/examples/dialogs/standarddialogs"},
+        {"/examples/dialogs/tabdialog/tabdialog.debug", "/examples/dialogs/tabdialog"},
+        {"/examples/dialogs/classwizard/classwizard.debug", "/examples/dialogs/classwizard"},
+        {"/examples/dialogs/findfiles/findfiles.debug", "/examples/dialogs/findfiles"},
+        {"/examples/dialogs/licensewizard/licensewizard.debug", "/examples/dialogs/licensewizard"},
+        {"/examples/dialogs/configdialog/configdialog.debug", "/examples/dialogs/configdialog"},
+        {"/examples/itemviews/coloreditorfactory/coloreditorfactory.debug", "/examples/itemviews/coloreditorfactory"},
+        {"/examples/itemviews/pixelator/pixelator.debug", "/examples/itemviews/pixelator"},
+        {"/examples/itemviews/simplewidgetmapper/simplewidgetmapper.debug", "/examples/itemviews/simplewidgetmapper"},
+        {"/examples/itemviews/puzzle/puzzle.debug", "/examples/itemviews/puzzle"},
+        {"/examples/itemviews/dirview/dirview.debug", "/examples/itemviews/dirview"},
+        {"/examples/itemviews/addressbook/addressbook.debug", "/examples/itemviews/addressbook"},
+        {"/examples/itemviews/spinboxdelegate/spinboxdelegate.debug", "/examples/itemviews/spinboxdelegate"},
+        {"/examples/itemviews/simpletreemodel/simpletreemodel.debug", "/examples/itemviews/simpletreemodel"},
+        {"/examples/itemviews/chart/chart.debug", "/examples/itemviews/chart"},
+        {"/examples/itemviews/basicsortfiltermodel/basicsortfiltermodel.debug", "/examples/itemviews/basicsortfiltermodel"},
+        {"/examples/itemviews/customsortfiltermodel/customsortfiltermodel.debug", "/examples/itemviews/customsortfiltermodel"},
+        {"/examples/itemviews/stardelegate/stardelegate.debug", "/examples/itemviews/stardelegate"},
+        {"/examples/itemviews/editabletreemodel/editabletreemodel.debug", "/examples/itemviews/editabletreemodel"},
+        {"/examples/itemviews/simpledommodel/simpledommodel.debug", "/examples/itemviews/simpledommodel"},
+        {"/examples/uitools/multipleinheritance/multipleinheritance.debug", "/examples/uitools/multipleinheritance"},
+        {"/examples/uitools/textfinder/textfinder.debug", "/examples/uitools/textfinder"},
+        {"/examples/script/helloscript/helloscript.debug", "/examples/script/helloscript"},
+        {"/examples/script/marshal/marshal.debug", "/examples/script/marshal"},
+        {"/examples/script/customclass/customclass.debug", "/examples/script/customclass"},
+        {"/examples/script/calculator/calculator.debug", "/examples/script/calculator"},
+        {"/examples/script/context2d/context2d.debug", "/examples/script/context2d"},
+        {"/examples/script/defaultprototypes/defaultprototypes.debug", "/examples/script/defaultprototypes"},
+        {"/examples/script/qscript/qscript.debug", "/examples/script/qscript"},
+        {"/examples/script/tetrix/tetrix.debug", "/examples/script/tetrix"},
+        {"/lib/libQtTest.so.4.4.3.debug", "/lib"},
+        {"/lib/libQtDesignerComponents.so.4.4.3.debug", "/lib"},
+        {"/lib/libQtScript.so.4.4.3.debug", "/lib"},
+        {"/lib/libQtDesigner.so.4.4.3.debug", "/lib"},
+        {"/lib/libQtGui.so.4.4.3.debug", "/lib"},
+        {"/lib/libQtSvg.so.4.4.3.debug", "/lib"},
+        {"/lib/libQtXml.so.4.4.3.debug", "/lib"},
+        {"/lib/libQtCLucene.so.4.4.3.debug", "/lib"},
+        {"/lib/libQtCore.so.4.4.3.debug", "/lib"},
+        {"/lib/libQtDBus.so.4.4.3.debug", "/lib"},
+        {"/lib/libQtXmlPatterns.so.4.4.3.debug", "/lib"},
+        {"/lib/libQtHelp.so.4.4.3.debug", "/lib"},
+        {"/lib/libQtSql.so.4.4.3.debug", "/lib"},
+        {"/lib/libQtNetwork.so.4.4.3.debug", "/lib"},
+        {"/lib/libQtOpenGL.so.4.4.3.debug", "/lib"},
+        {"/lib/libQt3Support.so.4.4.3.debug", "/lib"},
+        {"/lib/libQtAssistantClient.so.4.4.3.debug", "/lib"},
+        {"/lib/libQtWebKit.so.4.4.3.debug", "/lib"},
+        {"/demos/spreadsheet/spreadsheet.debug", "/demos/spreadsheet"},
+        {"/demos/composition/composition.debug", "/demos/composition"},
+        {"/demos/gradients/gradients.debug", "/demos/gradients"},
+        {"/demos/deform/deform.debug", "/demos/deform"},
+        {"/demos/embeddeddialogs/embeddeddialogs.debug", "/demos/embeddeddialogs"},
+        {"/demos/textedit/textedit.debug", "/demos/textedit"},
+        {"/demos/browser/browser.debug", "/demos/browser"},
+        {"/demos/interview/interview.debug", "/demos/interview"},
+        {"/demos/affine/affine.debug", "/demos/affine"},
+        {"/demos/books/books.debug", "/demos/books"},
+        {"/demos/chip/chip.debug", "/demos/chip"},
+        {"/demos/pathstroke/pathstroke.debug", "/demos/pathstroke"},
+        {"/demos/undo/undo.debug", "/demos/undo"},
+        {"/demos/sqlbrowser/sqlbrowser.debug", "/demos/sqlbrowser"},
+        {"/demos/mainwindow/mainwindow.debug", "/demos/mainwindow"},
+        {"/bin/qcollectiongenerator.debug", "/bin"},
+        {"/bin/qhelpconverter.debug", "/bin"},
+        {"/bin/lupdate.debug", "/bin"},
+        {"/bin/moc.debug", "/bin"},
+        {"/bin/pixeltool.debug", "/bin"},
+        {"/bin/qdbusviewer.debug", "/bin"},
+        {"/bin/qtconfig.debug", "/bin"},
+        {"/bin/qdbusxml2cpp.debug", "/bin"},
+        {"/bin/qdbus.debug", "/bin"},
+        {"/bin/uic3.debug", "/bin"},
+        {"/bin/qhelpgenerator.debug", "/bin"},
+        {"/bin/qt3to4.debug", "/bin"},
+        {"/bin/xmlpatterns.debug", "/bin"},
+        {"/bin/linguist.debug", "/bin"},
+        {"/bin/uic.debug", "/bin"},
+        {"/bin/qtdemo.debug", "/bin"},
+        {"/bin/lrelease.debug", "/bin"},
+        {"/bin/qmake", "/bin"},
+        {"/bin/assistant.debug", "/bin"},
+        {"/bin/rcc.debug", "/bin"},
+        {"/bin/designer.debug", "/bin"},
+        {"/bin/assistant_adp.debug", "/bin"},
+        {"/bin/qdbuscpp2xml.debug", "/bin"},
+
+
+        {"/plugins/codecs/libqkrcodecs.so.debug", "/src/plugins/codecs/kr"},
+        {"/plugins/codecs/libqtwcodecs.so.debug", "/src/plugins/codecs/tw"},
+        {"/plugins/codecs/libqcncodecs.so.debug", "/src/plugins/codecs/cn"},
+        {"/plugins/codecs/libqjpcodecs.so.debug", "/src/plugins/codecs/jp"},
+        {"/plugins/iconengines/libqsvgicon.so.debug", "/src/plugins/iconengines/svgiconengine"},
+        {"/plugins/sqldrivers/libqsqlmysql.so.debug", "/src/plugins/sqldrivers/mysql"},
+        {"/plugins/sqldrivers/libqsqlite.so.debug", "/src/plugins/sqldrivers/sqlite"},
+        {"/plugins/sqldrivers/libqsqlite2.so.debug", "/src/plugins/sqldrivers/sqlite2"},
+        {"/plugins/sqldrivers/libqsqlpsql.so.debug", "/src/plugins/sqldrivers/psql"},
+        {"/plugins/imageformats/libqgif.so.debug", "/src/plugins/imageformats/gif"},
+        {"/plugins/imageformats/libqtiff.so.debug", "/src/plugins/imageformats/tiff"},
+        {"/plugins/imageformats/libqsvg.so.debug", "/src/plugins/imageformats/svg"},
+        {"/plugins/imageformats/libqjpeg.so.debug", "/src/plugins/imageformats/jpeg"},
+        {"/plugins/imageformats/libqico.so.debug", "/src/plugins/imageformats/ico"},
+        {"/plugins/imageformats/libqmng.so.debug", "/src/plugins/imageformats/mng"},
+        {"/plugins/accessible/libqtaccessiblewidgets.so.debug", "/src/plugins/accessible/widgets"},
+        {"/plugins/accessible/libqtaccessiblecompatwidgets.so.debug", "/src/plugins/accessible/compat"},
+        {"/plugins/designer/libcontainerextension.so.debug", "/examples/designer/containerextension"},
+        {"/plugins/designer/libtaskmenuextension.so.debug", "/examples/designer/taskmenuextension"},
+        {"/plugins/designer/libqwebview.so.debug", "/tools/designer/src/plugins/qwebview"},
+        {"/plugins/designer/libcustomwidgetplugin.so.debug", "/examples/designer/customwidgetplugin"},
+        {"/plugins/designer/libarthurplugin.so.debug", "/demos/arthurplugin"},
+        {"/plugins/designer/libarthurplugin.so.debug", "/demos/shared"},
+        {"/plugins/designer/libqt3supportwidgets.so.debug", "/tools/designer/src/plugins/widgets"},
+        {"/plugins/designer/libworldtimeclockplugin.so.debug", "/examples/designer/worldtimeclockplugin"},
+        {"/plugins/inputmethods/libqimsw-multi.so.debug", "/src/plugins/inputmethods/imsw-multi"},
+        {"/plugins/script/libqtscriptdbus.so.debug", "/src/plugins/script/qtdbus"},
+
+        {"/examples/dbus/chat/dbus-chat.debug", "/examples/dbus/dbus-chat"},
+        {"/examples/designer/worldtimeclockbuilder/worldtimeclockbuilder.debug", "/tools/designer/src/uitools"},
+        {"/examples/designer/calculatorbuilder/calculatorbuilder.debug", "/tools/designer/src/uitools"},
+        {"/examples/tools/plugandpaint/plugins/libpnp_extrafilters.so.debug", "/examples/tools/plugandpaintplugins/extrafilters"},
+        {"/examples/tools/styleplugin/styles/libsimplestyleplugin.so.debug", "/examples/tools/styleplugin/plugin"},
+        {"/examples/network/chat/network-chat.debug", "/examples/network/network-chat"},
+        {"/examples/uitools/textfinder/textfinder.debug", "/tools/designer/src/uitools"},
+        {"/examples/script/calculator/calculator.debug", "/tools/designer/src/uitools"},
+        {"/examples/script/tetrix/tetrix.debug", "/tools/designer/src/uitools"},
+
+        {"/lib/libQtTest.so.4.4.3.debug", "/src/testlib"},
+        {"/lib/libQtDesignerComponents.so.4.4.3.debug", "/tools/designer/src/components"},
+        {"/lib/libQtScript.so.4.4.3.debug", "/src/script"},
+        {"/lib/libQtDesigner.so.4.4.3.debug", "/tools/designer/src/lib"},
+        {"/lib/libQtGui.so.4.4.3.debug", "/src/gui"},
+        {"/lib/libQtSvg.so.4.4.3.debug", "/src/svg"},
+        {"/lib/libQtXml.so.4.4.3.debug", "/src/xml"},
+        {"/lib/libQtCLucene.so.4.4.3.debug", "/tools/assistant/lib/fulltextsearch"},
+        {"/lib/libQtCore.so.4.4.3.debug", "/src/corelib"},
+        {"/lib/libQtDBus.so.4.4.3.debug", "/src/dbus"},
+        {"/lib/libQtXmlPatterns.so.4.4.3.debug", "/src/xmlpatterns"},
+        {"/lib/libQtHelp.so.4.4.3.debug", "/tools/assistant/lib"},
+        {"/lib/libQtSql.so.4.4.3.debug", "/src/sql"},
+        {"/lib/libQtNetwork.so.4.4.3.debug", "/src/network"},
+        {"/lib/libQtOpenGL.so.4.4.3.debug", "/src/opengl"},
+        {"/lib/libQt3Support.so.4.4.3.debug", "/src/qt3support"},
+        {"/lib/libQtAssistantClient.so.4.4.3.debug", "/tools/assistant/compat/lib"},
+        {"/lib/libQtWebKit.so.4.4.3.debug", "/src/3rdparty/webkit/WebCore"},
+
+        {"/demos/composition/composition.debug", "/demos/shared"},
+        {"/demos/gradients/gradients.debug", "/demos/shared"},
+        {"/demos/deform/deform.debug", "/demos/shared"},
+        {"/demos/browser/browser.debug", "/tools/designer/src/uitools"},
+        {"/demos/affine/affine.debug", "/demos/shared"},
+        {"/demos/pathstroke/pathstroke.debug", "/demos/shared"},
+
+        {"/bin/qcollectiongenerator.debug", "/tools/assistant/tools/qcollectiongenerator"},
+        {"/bin/qhelpconverter.debug", "/tools/assistant/tools/qhelpconverter"},
+        {"/bin/lupdate.debug", "/tools/linguist/lupdate"},
+        {"/bin/moc.debug", "/src/tools/moc"},
+        {"/bin/pixeltool.debug", "/tools/pixeltool"},
+        {"/bin/qdbusviewer.debug", "/tools/qdbus/qdbusviewer"},
+        {"/bin/qtconfig.debug", "/tools/qtconfig"},
+        {"/bin/qdbusxml2cpp.debug", "/tools/qdbus/qdbusxml2cpp"},
+        {"/bin/qdbus.debug", "/tools/qdbus/qdbus"},
+        {"/bin/uic3.debug", "/src/tools/uic3"},
+        {"/bin/qhelpgenerator.debug", "/tools/assistant/tools/qhelpgenerator"},
+        {"/bin/qt3to4.debug", "/tools/porting/src"},
+        {"/bin/xmlpatterns.debug", "/tools/xmlpatterns"},
+        {"/bin/linguist.debug", "/tools/designer/src/uitools"},
+        {"/bin/linguist.debug", "/tools/linguist/linguist"},
+        {"/bin/uic.debug", "/src/tools/uic"},
+        {"/bin/qtdemo.debug", "/demos/qtdemo"},
+        {"/bin/lrelease.debug", "/tools/linguist/lrelease"},
+        {"/bin/qmake", "/qmake"},
+        {"/bin/assistant.debug", "/tools/assistant/tools/assistant"},
+        {"/bin/rcc.debug", "/src/tools/rcc"},
+        {"/bin/designer.debug", "/tools/designer/src/designer"},
+        {"/bin/assistant_adp.debug", "/tools/assistant/compat"},
+        {"/bin/qdbuscpp2xml.debug", "/tools/qdbus/qdbuscpp2xml"}
+#endif
+    };
+
+
+    for (int i = 0; i < (int)(sizeof(libraries) / sizeof(libraries[0])); i++) {
+        // USAGE NOTE: Don't use FILENAME_MAX as the size of an array in which to store a file name!
+        // [In some cases] you [may not be able to statically] make an array that big!
+        // Use dynamic allocation [..] instead.
+        // From http://www.gnu.org/software/libc/manual/html_mono/libc.html#Limits-for-Files
+
+        // Make filename
+        char * const fileName = allocFileNameCopyAppend(baseQtPath, libraries[i].fileName);
+        logFileName(fileName);
+
+        // Make old source path array
+        char * const oldSourcePath = allocFileNameCopyAppend(oldSourceBase,
+                libraries[i].sourceLocation);
+
+        // Make new source path array
+        char * const newSourcePath = allocFileNameCopyAppend(baseQtPath,
+                libraries[i].sourceLocation);
+
+        logDiff(oldSourcePath, newSourcePath);
+
+        // Patch
+        BinPatch binFile(fileName);
+        if (!binFile.patch(oldSourcePath, newSourcePath)) {
+            result = false;
+        }
+
+        delete[] fileName;
+        delete[] oldSourcePath;
+        delete[] newSourcePath;
+
+        if (!result)
+            break;
+    }
+
+    return result;
+}
+
+void patchQMakeSpec(const char *path)
+{
+    QString baseQtPath(path);
+    const QString fileName(baseQtPath + "/mkspecs/default/qmake.conf");
+    QFile f(fileName);
+    logFileName(qPrintable(fileName));
+    f.open(QIODevice::ReadOnly);
+    QTextStream in(&f);
+    QString all = in.readAll();
+    f.close();
+    // Old value is QMAKESPEC_ORIGINAL=C:/somepath/mkspecs/amakespce
+    // New value should be QMAKESPEC_ORIGINAL=baseQtPath/mkspec/amakespec
+    // We don't care to match the line end we simply match to the end of the file
+    QRegExp regExp("(QMAKESPEC_ORIGINAL=).*(/mkspecs/.*)");
+    all.replace(regExp, "\\1"+baseQtPath+"\\2");
+
+    f.open(QIODevice::WriteOnly);
+    QTextStream out(&f);
+    out << all;
+}
+
+const char * const textFileFileNames[] =
+{
+#ifndef Q_OS_WIN
+    // *.la
+    "lib/libQtCore.la",
+    "lib/libQt3Support.la",
+    "lib/libQtCLucene.la",
+    "lib/libQtDBus.la",
+    "lib/libQtGui.la",
+    "lib/libQtHelp.la",
+    "lib/libQtNetwork.la",
+    "lib/libQtOpenGL.la",
+    "lib/libQtScript.la",
+    "lib/libQtSql.la",
+    "lib/libQtSvg.la",
+    "lib/libQtTest.la",
+    "lib/libQtWebKit.la",
+    "lib/libQtXml.la",
+    "lib/libQtXmlPatterns.la",
+
+    // *.prl
+    "demos/shared/libdemo_shared.prl",
+    "lib/libQt3Support.prl",
+    "lib/libQtAssistantClient.prl",
+    "lib/libQtCLucene.prl",
+    "lib/libQtCore.prl",
+    "lib/libQtDBus.prl",
+    "lib/libQtDesignerComponents.prl",
+    "lib/libQtDesigner.prl",
+    "lib/libQtGui.prl",
+    "lib/libQtHelp.prl",
+    "lib/libQtNetwork.prl",
+    "lib/libQtOpenGL.prl",
+    "lib/libQtScript.prl",
+    "lib/libQtSql.prl",
+    "lib/libQtSvg.prl",
+    "lib/libQtTest.prl",
+    "lib/libQtUiTools.prl",
+    "lib/libQtWebKit.prl",
+    "lib/libQtXmlPatterns.prl",
+    "lib/libQtXml.prl",
+
+    // *.pc
+    "lib/pkgconfig/Qt3Support.pc",
+    "lib/pkgconfig/QtAssistantClient.pc",
+    "lib/pkgconfig/QtCLucene.pc",
+    "lib/pkgconfig/QtCore.pc",
+    "lib/pkgconfig/QtDBus.pc",
+    "lib/pkgconfig/QtDesignerComponents.pc",
+    "lib/pkgconfig/QtDesigner.pc",
+    "lib/pkgconfig/QtGui.pc",
+    "lib/pkgconfig/QtHelp.pc",
+    "lib/pkgconfig/QtNetwork.pc",
+    "lib/pkgconfig/QtOpenGL.pc",
+    "lib/pkgconfig/QtScript.pc",
+    "lib/pkgconfig/QtSql.pc",
+    "lib/pkgconfig/QtSvg.pc",
+    "lib/pkgconfig/QtTest.pc",
+    "lib/pkgconfig/QtUiTools.pc",
+    "lib/pkgconfig/QtWebKit.pc",
+    "lib/pkgconfig/QtXmlPatterns.pc",
+    "lib/pkgconfig/QtXml.pc",
+
+    // misc
+    "mkspecs/qconfig.pri"
+#endif
+};
+
+void replaceInTextFile(const char * fileName,
+        const char * oldText, const char * newText,
+        const char * oldText2 = NULL, const char * newText2 = NULL)
+{
+    const QString errorMessage = QString("Could not patch file ") + fileName;
+
+    QFile f(fileName);
+    if (!f.open(QIODevice::ReadOnly)) {
+        std::cout << qPrintable(errorMessage) << std::endl;
+        return;
+    }
+    QTextStream in(&f);
+    QString all = in.readAll();
+    f.close();
+
+    all.replace(QString(oldText), QString(newText), Qt::CaseSensitive);
+    if ((oldText2 != NULL) && (newText2 != NULL)) {
+        all = all.replace(QString(oldText2), QString(newText2), Qt::CaseSensitive);
+    }
+
+    if (!f.open(QIODevice::WriteOnly)) {
+        std::cout << qPrintable(errorMessage) << std::endl;
+        return;
+    }
+    QTextStream out(&f);
+    out << all;
+    f.close();
+}
+
+void patchTextFiles(const char *newInstallBase)
+{
+    const char * const newSourceBase = newInstallBase;
+    const int fileCount = sizeof(textFileFileNames) / sizeof(const char *);
+    for (int i = 0; i < fileCount; i++) {
+        logFileName(textFileFileNames[i]);
+        logDiff(oldSourceBase, newSourceBase);
+#ifndef Q_OS_WIN
+        logDiff(oldInstallBase, newInstallBase);
+#endif
+        replaceInTextFile(textFileFileNames[i],
+#ifndef Q_OS_WIN
+                oldSourceBase, newSourceBase,
+#endif
+                oldInstallBase, newInstallBase);
+    }
+
+    patchQMakeSpec(newInstallBase);
+}
+
+int main(int argc, char *args[])
+{
+    if (argc != 2) {
+        printf("Please provide a QTDIR value as parameter.\n"
+               "This is also the location where the binaries are expected\n"
+               "in the \"/bin\" and \"/plugins\" subdirectories.\n");
+        return 1;
+    }
+
+    char * const baseQtPath = allocFileNameCopyAppend(args[1], "");
+
+#ifdef Q_OS_WIN
+    // Convert backslash to slash
+    for (char *p = baseQtPath; *p != '\0'; p++)
+        if (*p == '\\')
+            *p = '/';
+#endif
+
+    // Remove trailing slash(es)
+    for (char *p = baseQtPath + strlen(baseQtPath) - 1; p != baseQtPath; p--)
+        if (*p == '/')
+            *p = '\0';
+        else
+            break;
+
+    patchTextFiles(baseQtPath);
+    const bool success = patchBinariesWithQtPathes(baseQtPath)
+            && patchDebugLibrariesWithQtPath(baseQtPath);
+    delete[] baseQtPath;
+    return success ? 0 : 1;
+}