diff --git a/bin/qtcreator b/bin/qtcreator
index 931b3dd4616a041f57ad6e7e7795df1896604aa3..b915628c3e518e3311883f3fe57adb71d939180b 100755
--- a/bin/qtcreator
+++ b/bin/qtcreator
@@ -1,5 +1,9 @@
 #!/bin/sh
 
 bindir=$(dirname "$0")
-libdir=$(cd ${bindir}/../lib ; pwd)
+if test "$(uname -m)" = "x86_64" ; then
+    libdir=$(cd ${bindir}/../lib64 ; pwd)
+else
+    libdir=$(cd ${bindir}/../lib ; pwd)
+fi
 LD_LIBRARY_PATH="${libdir}:${LD_LIBRARY_PATH}" "${bindir}/qtcreator.bin" ${1+"$@"}
diff --git a/src/app/main.cpp b/src/app/main.cpp
index d1f5db1232df079065762d5dd196e93fa1034f35..655095956a76f1439114e7d6dee82f7b0cea4ee1 100644
--- a/src/app/main.cpp
+++ b/src/app/main.cpp
@@ -179,7 +179,11 @@ static inline QStringList getPluginPaths()
     // 1) "plugins" (Win/Linux)
     QString pluginPath = rootDirPath;
     pluginPath += QDir::separator();
+#ifdef QT_ARCH_X86_64
+    pluginPath += QLatin1String("lib64");
+#else
     pluginPath += QLatin1String("lib");
+#endif
     pluginPath += QDir::separator();
     pluginPath += QLatin1String("qtcreator");
     pluginPath += QDir::separator();
diff --git a/src/plugins/debugger/debuggeractions.cpp b/src/plugins/debugger/debuggeractions.cpp
index 7c42474b7513b6a5b6fb436ca1e5fa9f188cc9b3..d1aa6ff33cb8603b88582a17db0df18e48a10f36 100644
--- a/src/plugins/debugger/debuggeractions.cpp
+++ b/src/plugins/debugger/debuggeractions.cpp
@@ -32,6 +32,7 @@
 #include <utils/qtcassert.h>
 #include <utils/pathchooser.h>
 
+#include <QtCore/QDebug>
 #include <QtCore/QSettings>
 #include <QtGui/QAction>
 #include <QtGui/QAbstractButton>
@@ -39,9 +40,11 @@
 #include <QtGui/QCheckBox>
 #include <QtGui/QLineEdit>
 
+
 namespace Debugger {
 namespace Internal {
 
+
 //////////////////////////////////////////////////////////////////////////
 //
 // DebuggerAction
@@ -119,6 +122,14 @@ void DebuggerAction::setTextPattern(const QString &value)
     m_textPattern = value;
 }
 
+QString DebuggerAction::toString() const
+{
+    return "value: " + m_value.toString()
+        + "  defaultvalue: " + m_defaultValue.toString()
+        + "  settingskey: " + m_settingsGroup + '/' + m_settingsKey
+        + "  deferedValue: " + m_deferedValue.toString();
+}
+
 QAction *DebuggerAction::updatedAction(const QString &text0)
 {
     QString text = text0;
@@ -155,7 +166,7 @@ void DebuggerAction::writeSettings(QSettings *settings)
         return;
     settings->beginGroup(m_settingsGroup);
     settings->setValue(m_settingsKey, m_value);
-    //qDebug() << "WRITING: " << m_settingsKey << " -> " << m_value;
+    //qDebug() << "WRITING: " << m_settingsKey << " -> " << toString();
     settings->endGroup();
 }
    
@@ -424,6 +435,7 @@ DebuggerSettings *theDebuggerSettings()
 
     item = new DebuggerAction(instance);
     instance->insertItem(BuildDumpersOnTheFly, item);
+    item->setDefaultValue(true);
     item->setSettingsKey("DebugMode", "BuildDumpersOnTheFly");
     item->setCheckable(true);
 
diff --git a/src/plugins/debugger/debuggeractions.h b/src/plugins/debugger/debuggeractions.h
index a319fa668c2cce1ecebf8f5024a6ccb5abc37769..b635840df06921815ceb02aa708f4ba5e397f447 100644
--- a/src/plugins/debugger/debuggeractions.h
+++ b/src/plugins/debugger/debuggeractions.h
@@ -80,6 +80,8 @@ public:
     virtual QString textPattern() const;
     Q_SLOT virtual void setTextPattern(const QString &value);
 
+    QString toString() const;
+
 signals:
     void valueChanged(const QVariant &newValue);
     void boolValueChanged(bool newValue);
diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
index 76b3033d6857fce8d74da410ceb502d267236bf2..2a66c1422e73e3b9fdb5adcc3e9c7f2ac9f06a65 100644
--- a/src/plugins/debugger/debuggerplugin.cpp
+++ b/src/plugins/debugger/debuggerplugin.cpp
@@ -375,9 +375,16 @@ QWidget *DumperOptionPage::createPage(QWidget *parent)
 
     m_ui.dumperLocationChooser->setExpectedKind(Core::Utils::PathChooser::Command);
     m_ui.dumperLocationChooser->setPromptDialogTitle(tr("Choose Dumper Location"));
+    m_ui.dumperLocationChooser->setInitialBrowsePathBackup(
+        Core::ICore::instance()->resourcePath() + "../../lib");
+
+    connect(m_ui.radioButtonUsePrebuiltDumpers, SIGNAL(toggled(bool)),
+        m_ui.dumperLocationChooser, SLOT(setEnabled(bool)));
 
     theDebuggerAction(UsePrebuiltDumpers)
         ->connectWidget(m_ui.radioButtonUsePrebuiltDumpers);
+    theDebuggerAction(BuildDumpersOnTheFly)
+        ->connectWidget(m_ui.radioButtonBuildDumpersOnTheFly);
     theDebuggerAction(PrebuiltDumpersLocation)
         ->connectWidget(m_ui.dumperLocationChooser);
 
@@ -388,8 +395,6 @@ QWidget *DumperOptionPage::createPage(QWidget *parent)
 
     m_ui.dumperLocationChooser->
         setEnabled(theDebuggerAction(UsePrebuiltDumpers)->value().toBool());
-    connect(m_ui.radioButtonUsePrebuiltDumpers, SIGNAL(toggled(bool)),
-        m_ui.dumperLocationChooser, SLOT(setEnabled(bool)));
 
 #ifndef QT_DEBUG
 #if 0
@@ -410,6 +415,7 @@ void DumperOptionPage::apply()
 
     theDebuggerAction(UseDumpers)->apply(s);
     theDebuggerAction(UsePrebuiltDumpers)->apply(s);
+    theDebuggerAction(BuildDumpersOnTheFly)->apply(s);
     theDebuggerAction(PrebuiltDumpersLocation)->apply(s);
     theDebuggerAction(DebugDumpers)->apply(s);
 }
@@ -1019,7 +1025,7 @@ void DebuggerPlugin::focusCurrentEditor(IMode *mode)
 
 void DebuggerPlugin::showSettingsDialog()
 {
-    Core::ICore::instance()->showOptionsDialog("Debugger", "Gdb");
+    Core::ICore::instance()->showOptionsDialog("Debugger", "General");
 }
 
 #include "debuggerplugin.moc"
diff --git a/src/plugins/debugger/dumperoptionpage.ui b/src/plugins/debugger/dumperoptionpage.ui
index f89cff0e38c125a3a9d2859a4954b7e3d37e0e04..0219fe898b5acec3b5ad85d1ca9a6ec6cf997658 100644
--- a/src/plugins/debugger/dumperoptionpage.ui
+++ b/src/plugins/debugger/dumperoptionpage.ui
@@ -21,7 +21,7 @@
      </property>
      <layout class="QGridLayout" name="gridLayout">
       <item row="0" column="0">
-       <widget class="QRadioButton" name="radioButtonDumpersOnTheFly">
+       <widget class="QRadioButton" name="radioButtonBuildDumpersOnTheFly">
         <property name="toolTip">
          <string>This is the slowest but safest option.</string>
         </property>
diff --git a/src/plugins/debugger/gdbengine.cpp b/src/plugins/debugger/gdbengine.cpp
index 8b5ed5ea018d2c05d3a4bff9f7d9fd602e560667..c2c18dec377a78eee63a68d55dab30f4889cd0e0 100644
--- a/src/plugins/debugger/gdbengine.cpp
+++ b/src/plugins/debugger/gdbengine.cpp
@@ -4230,6 +4230,19 @@ void GdbEngine::assignValueInDebugger(const QString &expression, const QString &
     sendCommand("-var-assign assign " + value, WatchVarAssign);
 }
 
+QString GdbEngine::dumperLibraryName() const
+{
+    if (theDebuggerAction(UsePrebuiltDumpers))
+        return theDebuggerAction(PrebuiltDumpersLocation)->value().toString();
+#if defined(Q_OS_WIN)
+    return q->m_buildDir + "/qtc-gdbmacros/debug/gdbmacros.dll";
+#elif defined(Q_OS_MAC)
+    return q->m_buildDir + "/qtc-gdbmacros/libgdbmacros.dylib";
+#else // generic UNIX
+    return q->m_buildDir + "/qtc-gdbmacros/libgdbmacros.so";
+#endif
+}
+
 void GdbEngine::tryLoadCustomDumpers()
 {
     if (m_dataDumperState != DataDumperUninitialized)
@@ -4237,26 +4250,18 @@ void GdbEngine::tryLoadCustomDumpers()
 
     PENDING_DEBUG("TRY LOAD CUSTOM DUMPERS");
     m_dataDumperState = DataDumperUnavailable;
+    QString lib = dumperLibraryName();
 
-#if defined(Q_OS_LINUX)
-    QString lib = q->m_buildDir + "/qtc-gdbmacros/libgdbmacros.so";
     if (QFileInfo(lib).exists()) {
+#if defined(Q_OS_WIN)
         m_dataDumperState = DataDumperLoadTried;
-        //sendCommand("p dlopen");
-        QString flag = QString::number(RTLD_NOW);
-        sendCommand("sharedlibrary libc"); // for malloc
-        sendCommand("sharedlibrary libdl"); // for dlopen
-        sendCommand("call (void)dlopen(\"" + lib + "\", " + flag + ")",
-            WatchDumpCustomSetup);
-        // some older systems like CentOS 4.6 prefer this:
-        sendCommand("call (void)__dlopen(\"" + lib + "\", " + flag + ")",
+        sendCommand("sharedlibrary .*"); // for LoadLibraryA
+        //sendCommand("handle SIGSEGV pass stop print");
+        //sendCommand("set unwindonsignal off");
+        sendCommand("call LoadLibraryA(\"" + lib + "\")",
             WatchDumpCustomSetup);
         sendCommand("sharedlibrary " + dotEscape(lib));
-    }
-#endif
-#if defined(Q_OS_MAC)
-    QString lib = q->m_buildDir + "/qtc-gdbmacros/libgdbmacros.dylib";
-    if (QFileInfo(lib).exists()) {
+#elif defined(Q_OS_MAC)
         m_dataDumperState = DataDumperLoadTried;
         //sendCommand("sharedlibrary libc"); // for malloc
         //sendCommand("sharedlibrary libdl"); // for dlopen
@@ -4264,20 +4269,20 @@ void GdbEngine::tryLoadCustomDumpers()
         sendCommand("call (void)dlopen(\"" + lib + "\", " + flag + ")",
             WatchDumpCustomSetup);
         //sendCommand("sharedlibrary " + dotEscape(lib));
-    }
-#endif
-#if defined(Q_OS_WIN)
-    QString lib = q->m_buildDir + "/qtc-gdbmacros/debug/gdbmacros.dll";
-    if (QFileInfo(lib).exists()) {
         m_dataDumperState = DataDumperLoadTried;
-        sendCommand("sharedlibrary .*"); // for LoadLibraryA
-        //sendCommand("handle SIGSEGV pass stop print");
-        //sendCommand("set unwindonsignal off");
-        sendCommand("call LoadLibraryA(\"" + lib + "\")",
+#else
+        //sendCommand("p dlopen");
+        QString flag = QString::number(RTLD_NOW);
+        sendCommand("sharedlibrary libc"); // for malloc
+        sendCommand("sharedlibrary libdl"); // for dlopen
+        sendCommand("call (void)dlopen(\"" + lib + "\", " + flag + ")",
+            WatchDumpCustomSetup);
+        // some older systems like CentOS 4.6 prefer this:
+        sendCommand("call (void)__dlopen(\"" + lib + "\", " + flag + ")",
             WatchDumpCustomSetup);
         sendCommand("sharedlibrary " + dotEscape(lib));
-    }
 #endif
+    }
 
     if (m_dataDumperState == DataDumperLoadTried) {
         // retreive list of dumpable classes
diff --git a/src/plugins/debugger/gdbengine.h b/src/plugins/debugger/gdbengine.h
index d0186493972a9ab1d7d32fe81fbb8fe3c22e2c60..20c9c222877b92dfbdb544ba90f5dfd8990a03f3 100644
--- a/src/plugins/debugger/gdbengine.h
+++ b/src/plugins/debugger/gdbengine.h
@@ -199,6 +199,7 @@ private:
     void handleQuerySources(const GdbResultRecord &response);
     void handleTargetCore(const GdbResultRecord &response);
     void debugMessage(const QString &msg);
+    QString dumperLibraryName() const;
 
     OutputCollector m_outputCollector;
     QTextCodec *m_outputCodec;
diff --git a/src/plugins/debugger/gdbmi.cpp b/src/plugins/debugger/gdbmi.cpp
index e2e11e07ba13a7b28bebb6a79e44f5e05f2c4e89..2e778cb8e83c9b6965f56ccc7c81d6a0cf65def8 100644
--- a/src/plugins/debugger/gdbmi.cpp
+++ b/src/plugins/debugger/gdbmi.cpp
@@ -37,7 +37,7 @@
 namespace Debugger {
 namespace Internal {
 
-QTextStream & operator<<(QTextStream & os, const GdbMi & mi)
+QTextStream &operator<<(QTextStream &os, const GdbMi &mi)
 {
     return os << mi.toString();
 }
diff --git a/src/plugins/qt4projectmanager/qt4buildconfigwidget.cpp b/src/plugins/qt4projectmanager/qt4buildconfigwidget.cpp
index 75fa4ee25c2af9c7475e35a9e11aacf6bbcf3a5e..07e8857e0c06a4bca8b7859ff2ff491ea11fb2d6 100644
--- a/src/plugins/qt4projectmanager/qt4buildconfigwidget.cpp
+++ b/src/plugins/qt4projectmanager/qt4buildconfigwidget.cpp
@@ -187,6 +187,7 @@ void Qt4BuildConfigWidget::updateImportLabel()
 void Qt4BuildConfigWidget::shadowBuildLineEditTextChanged()
 {
     if (m_pro->value(m_buildConfiguration, "buildDirectory").toString() == m_ui->shadowBuildDirEdit->path())
+        return;
     m_pro->setValue(m_buildConfiguration, "buildDirectory", m_ui->shadowBuildDirEdit->path());
     // if the directory already exists
     // check if we have a build in there and
diff --git a/src/qworkbench.pri b/src/qworkbench.pri
index deda9ae21f0ec8ed72248ce31370394dfc24af33..762713bbb156aca3a18cb68ba41f318454ba9fe8 100644
--- a/src/qworkbench.pri
+++ b/src/qworkbench.pri
@@ -6,6 +6,12 @@ isEmpty(TEST):CONFIG(debug, debug|release) {
     }
 }
 
+linux-g++-64 {
+    IDE_LIBRARY_BASENAME = lib64
+} else {
+    IDE_LIBRARY_BASENAME = lib
+}
+
 equals(TEST, 1) {
     QT +=testlib
     DEFINES += WITH_TESTS
@@ -21,7 +27,7 @@ macx {
     contains(QT_CONFIG, ppc):CONFIG += ppc x86
 } else {
     IDE_APP_TARGET   = qtcreator.bin
-    IDE_LIBRARY_PATH = $$IDE_BUILD_TREE/lib/qtcreator
+    IDE_LIBRARY_PATH = $$IDE_BUILD_TREE/$$IDE_LIBRARY_BASENAME/qtcreator
     IDE_PLUGIN_PATH  = $$IDE_LIBRARY_PATH/plugins/
 }
 IDE_APP_PATH = $$IDE_BUILD_TREE/bin
diff --git a/src/qworkbenchlibrary.pri b/src/qworkbenchlibrary.pri
index a8af3d7edbdcaf1e018c585a9109e449023696b9..7a04fe45558581ed98d492f36173844ae3175287 100644
--- a/src/qworkbenchlibrary.pri
+++ b/src/qworkbenchlibrary.pri
@@ -14,6 +14,6 @@ TARGET = $$qtLibraryTarget($$TARGET)
 contains(QT_CONFIG, reduce_exports):CONFIG += hide_symbols
 
 linux-* {
-	target.path = /lib/qtcreator
+	target.path = /$$IDE_LIBRARY_BASENAME/qtcreator
 	INSTALLS += target
-    }
+}
diff --git a/src/qworkbenchplugin.pri b/src/qworkbenchplugin.pri
index bdf17469aa8c0fd79da68c7304ea89894c3823dd..d7c9a64b68b181b03bf2ea058e0812fb41d7ac1f 100644
--- a/src/qworkbenchplugin.pri
+++ b/src/qworkbenchplugin.pri
@@ -17,7 +17,7 @@ isEmpty(TARGET) {
     error("qworkbenchplugin.pri: You must provide a TARGET")
 }
 
-# Copy the pluginspec file to the liberary directyory.
+# Copy the pluginspec file to the library directory.
 # Note: On Windows/MinGW with some sh.exe in the path,
 # QMAKE_COPY is some cp command that does not understand
 # "\". Force the standard windows copy.
@@ -54,8 +54,8 @@ contains(QT_CONFIG, reduce_exports):CONFIG += hide_symbols
 CONFIG += plugin plugin_with_soname
 
 linux-* {
-    target.path = /lib/qtcreator/plugins/$$PROVIDER
+    target.path = /$$IDE_LIBRARY_BASENAME/qtcreator/plugins/$$PROVIDER
     pluginspec.files += $${TARGET}.pluginspec
-    pluginspec.path = /lib/qtcreator/plugins/$$PROVIDER
+    pluginspec.path = /$$IDE_LIBRARY_BASENAME/qtcreator/plugins/$$PROVIDER
     INSTALLS += target pluginspec
 }
diff --git a/src/rpath.pri b/src/rpath.pri
index 8b026982c96c5158c5e6564585bf410f059abbd5..e11b171c8e4779c8472602a1b2ec8ae71e918c56 100644
--- a/src/rpath.pri
+++ b/src/rpath.pri
@@ -3,7 +3,7 @@ macx {
 } else:linux-* {
     #do the rpath by hand since it's not possible to use ORIGIN in QMAKE_RPATHDIR
     # this expands to $ORIGIN (after qmake and make), it does NOT read a qmake var
-    QMAKE_RPATHDIR += \$\$ORIGIN/../lib/qtcreator
+    QMAKE_RPATHDIR += \$\$ORIGIN/../$$IDE_LIBRARY_BASENAME/qtcreator
     IDE_PLUGIN_RPATH = $$join(QMAKE_RPATHDIR, ":")
  
     QMAKE_LFLAGS += -Wl,-z,origin \'-Wl,-rpath,$${IDE_PLUGIN_RPATH}\'
diff --git a/tests/manual/gdbdebugger/simple/app.cpp b/tests/manual/gdbdebugger/simple/app.cpp
index 50191f91d12cfb52225e01126961544ca2b744a0..4115a49a50853b155ed20815b97609922075f05b 100644
--- a/tests/manual/gdbdebugger/simple/app.cpp
+++ b/tests/manual/gdbdebugger/simple/app.cpp
@@ -702,7 +702,6 @@ void testStdVector()
 
 void testQString()
 {
-    int i = 0;
     QString str = "Hello ";
     str += " big, ";
     str += " fat ";