aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--dist/changes-4.2.1.md2
-rw-r--r--src/plugins/debugger/debuggerprotocol.h1
-rw-r--r--src/plugins/debugger/lldb/lldbengine.cpp2
-rw-r--r--src/plugins/projectexplorer/project.cpp1
-rw-r--r--src/plugins/projectexplorer/targetsettingspanel.cpp2
-rw-r--r--src/plugins/qbsprojectmanager/qbsproject.cpp2
-rw-r--r--src/plugins/qtsupport/baseqtversion.cpp129
-rw-r--r--src/plugins/qtsupport/qtsupportplugin.h4
-rw-r--r--src/shared/proparser/profileevaluator.cpp11
m---------src/shared/qbs0
-rw-r--r--tests/system/settings/mac/QtProject/qtcreator/profiles.xml20
-rw-r--r--tests/system/settings/mac/QtProject/qtcreator/toolchains.xml37
-rw-r--r--tests/system/settings/unix/QtProject/qtcreator/profiles.xml4
-rw-r--r--tests/system/settings/unix/QtProject/qtcreator/toolchains.xml22
14 files changed, 207 insertions, 30 deletions
diff --git a/dist/changes-4.2.1.md b/dist/changes-4.2.1.md
index c9380a24888..0d670fef2f2 100644
--- a/dist/changes-4.2.1.md
+++ b/dist/changes-4.2.1.md
@@ -24,6 +24,7 @@ All Projects
* Fixed issue with upgrading tool chain settings in auto-detected kits
* Fixed crash when setting custom executable (QTCREATORBUG-17505)
+* Fixed MSVC support on Windows Vista and earlier (QTCREATORBUG-17501)
QMake Projects
@@ -32,6 +33,7 @@ QMake Projects
(QTCREATORBUG-17462, QTCREATORBUG-17477)
* Fixed that `OTHER_FILES` and `DISTFILES` in subdirs projects were no longer
shown in project tree (QTCREATORBUG-17473)
+* Fixed crash caused by unnormalized file paths (QTCREATORBUG-17364)
Qbs Projects
diff --git a/src/plugins/debugger/debuggerprotocol.h b/src/plugins/debugger/debuggerprotocol.h
index 39f66269085..d17beecafa2 100644
--- a/src/plugins/debugger/debuggerprotocol.h
+++ b/src/plugins/debugger/debuggerprotocol.h
@@ -152,6 +152,7 @@ public:
QString toString(bool multiline = false, int indent = 0) const;
qulonglong toAddress() const;
int toInt() const { return m_data.toInt(); }
+ qint64 toLongLong() const { return m_data.toLongLong(); }
void fromString(const QString &str);
void fromStringMultiple(const QString &str);
diff --git a/src/plugins/debugger/lldb/lldbengine.cpp b/src/plugins/debugger/lldb/lldbengine.cpp
index 651a4396ae8..5a625c45d50 100644
--- a/src/plugins/debugger/lldb/lldbengine.cpp
+++ b/src/plugins/debugger/lldb/lldbengine.cpp
@@ -489,6 +489,8 @@ void LldbEngine::handleResponse(const QString &response)
handleLocationNotification(item);
else if (name == "output")
handleOutputNotification(item);
+ else if (name == "pid")
+ notifyInferiorPid(item.toLongLong());
}
}
diff --git a/src/plugins/projectexplorer/project.cpp b/src/plugins/projectexplorer/project.cpp
index 5d6536c78ee..bc9f0e5dc0b 100644
--- a/src/plugins/projectexplorer/project.cpp
+++ b/src/plugins/projectexplorer/project.cpp
@@ -276,6 +276,7 @@ Target *Project::createTarget(Kit *k)
bool Project::copySteps(Target *sourceTarget, Target *newTarget)
{
+ QTC_ASSERT(newTarget, return false);
bool fatalError = false;
QStringList buildconfigurationError;
QStringList deployconfigurationError;
diff --git a/src/plugins/projectexplorer/targetsettingspanel.cpp b/src/plugins/projectexplorer/targetsettingspanel.cpp
index 75fd0db57fd..f7ccbf62e8f 100644
--- a/src/plugins/projectexplorer/targetsettingspanel.cpp
+++ b/src/plugins/projectexplorer/targetsettingspanel.cpp
@@ -443,7 +443,7 @@ public:
});
QMenu *copyMenu = menu->addMenu(tr("Copy Steps From Other Kit..."));
- if (m_kitId.isValid()) {
+ if (m_kitId.isValid() && m_project->target(m_kitId)) {
const QList<Kit *> kits = KitManager::kits();
for (Kit *kit : kits) {
QAction *copyAction = copyMenu->addAction(kit->displayName());
diff --git a/src/plugins/qbsprojectmanager/qbsproject.cpp b/src/plugins/qbsprojectmanager/qbsproject.cpp
index d0cdf78780a..a46866d63de 100644
--- a/src/plugins/qbsprojectmanager/qbsproject.cpp
+++ b/src/plugins/qbsprojectmanager/qbsproject.cpp
@@ -936,6 +936,7 @@ void QbsProject::updateCppCodeModel()
QLatin1String(CONFIG_INCLUDEPATHS));
list.append(props.getModulePropertiesAsStringList(QLatin1String(CONFIG_CPP_MODULE),
QLatin1String(CONFIG_SYSTEM_INCLUDEPATHS)));
+ list.removeDuplicates();
CppTools::ProjectPartHeaderPaths grpHeaderPaths;
foreach (const QString &p, list)
grpHeaderPaths += CppTools::ProjectPartHeaderPath(
@@ -946,6 +947,7 @@ void QbsProject::updateCppCodeModel()
QLatin1String(CONFIG_FRAMEWORKPATHS));
list.append(props.getModulePropertiesAsStringList(QLatin1String(CONFIG_CPP_MODULE),
QLatin1String(CONFIG_SYSTEM_FRAMEWORKPATHS)));
+ list.removeDuplicates();
foreach (const QString &p, list)
grpHeaderPaths += CppTools::ProjectPartHeaderPath(
FileName::fromUserInput(p).toString(),
diff --git a/src/plugins/qtsupport/baseqtversion.cpp b/src/plugins/qtsupport/baseqtversion.cpp
index 72e0dcda212..a9bdd2899d2 100644
--- a/src/plugins/qtsupport/baseqtversion.cpp
+++ b/src/plugins/qtsupport/baseqtversion.cpp
@@ -1740,7 +1740,7 @@ static QByteArray scanQtBinaryForBuildString(const FileName &library)
const size_t oneMiB = 1024 * 1024;
const size_t keepSpace = 4096;
const size_t bufferSize = oneMiB + keepSpace;
- QByteArray buffer(bufferSize, '\0');
+ QByteArray buffer(bufferSize, Qt::Uninitialized);
char *const readStart = buffer.data() + keepSpace;
auto readStartIt = buffer.begin() + keepSpace;
@@ -1788,39 +1788,72 @@ static QByteArray scanQtBinaryForBuildString(const FileName &library)
return buildString;
}
-static Abi refineAbiFromBuildString(const QByteArray &buildString, const Abi &probableAbi)
+static QStringList extractFieldsFromBuildString(const QByteArray &buildString)
{
if (buildString.isEmpty()
|| buildString.count() > 4096)
- return Abi();
+ return QStringList();
const QRegularExpression buildStringMatcher("^Qt "
- "([\\d\\.a-zA-Z]*) " // Qt version
+ "([\\d\\.a-zA-Z]*) " // Qt version
"\\("
- "([a-z\\d_]*)-" // CPU
- "(big|little)_endian-"
- "([a-z]+(?:32|64))" // pointer information
- "(?:-(qreal|))?" // extra information like -qreal
- "(?:-([^-]+))? " // ABI information
+ "([\\w_-]+) " // Abi information
"(shared|static) (?:\\(dynamic\\) )?"
"(debug|release)"
" build; by "
- "(.*)" // compiler with extra info
+ "(.*)" // compiler with extra info
"\\)$");
QTC_ASSERT(buildStringMatcher.isValid(), qWarning() << buildStringMatcher.errorString());
+
const QRegularExpressionMatch match = buildStringMatcher.match(QString::fromUtf8(buildString));
- QTC_ASSERT(match.hasMatch(), return Abi());
-
- // const QString qtVersion = match.captured(1);
- // const QString cpu = match.captured(2);
- // const bool littleEndian = (match.captured(3) == "little");
- // const QString pointer = match.captured(4);
- // const QString extra = match.captured(5);
- // const QString abiString = match.captured(6);
- // const QString linkage = match.captured(7);
- // const QString buildType = match.captured(8);
- const QString compiler = match.captured(9);
+ if (!match.hasMatch())
+ return QStringList();
+
+ QStringList result;
+ result.append(match.captured(1)); // qtVersion
+
+ // Abi info string:
+ QStringList abiInfo = match.captured(2).split('-', QString::SkipEmptyParts);
+
+ result.append(abiInfo.takeFirst()); // cpu
+
+ const QString endian = abiInfo.takeFirst();
+ QTC_ASSERT(endian.endsWith("_endian"), return QStringList());
+ result.append(endian.left(endian.count() - 7)); // without the "_endian"
+
+ result.append(abiInfo.takeFirst()); // pointer
+
+ if (abiInfo.isEmpty()) {
+ // no extra info whatsoever:
+ result.append(""); // qreal is unset
+ result.append(""); // extra info is unset
+ } else {
+ const QString next = abiInfo.at(0);
+ if (next.startsWith("qreal_")) {
+ abiInfo.takeFirst();
+ result.append(next.mid(6)); // qreal: without the "qreal_" part;
+ } else {
+ result.append(""); // qreal is unset!
+ }
+
+ result.append(abiInfo.join('-')); // extra abi strings
+ }
+
+ result.append(match.captured(3)); // linkage
+ result.append(match.captured(4)); // buildType
+ result.append(match.captured(5)); // compiler
+
+ return result;
+}
+
+static Abi refineAbiFromBuildString(const QByteArray &buildString, const Abi &probableAbi)
+{
+ QStringList buildStringData = extractFieldsFromBuildString(buildString);
+ if (buildStringData.count() != 9)
+ return probableAbi;
+
+ const QString compiler = buildStringData.at(8);
Abi::Architecture arch = probableAbi.architecture();
Abi::OS os = probableAbi.os();
@@ -1873,3 +1906,57 @@ QList<Abi> BaseQtVersion::qtAbisFromLibrary(const FileNameList &coreLibraries)
}
return res;
}
+
+#if defined(WITH_TESTS)
+
+#include <QTest>
+
+#include "qtsupportplugin.h"
+
+void QtSupportPlugin::testQtBuildStringParsing_data()
+{
+ QTest::addColumn<QByteArray>("buildString");
+ QTest::addColumn<QString>("expected");
+
+ QTest::newRow("invalid build string")
+ << QByteArray("Qt with invalid buildstring") << QString();
+ QTest::newRow("empty build string")
+ << QByteArray("") << QString();
+ QTest::newRow("huge build string")
+ << QByteArray(8192, 'x') << QString();
+
+ QTest::newRow("valid build string")
+ << QByteArray("Qt 5.7.1 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 6.2.1 20160830)")
+ << "5.7.1;x86_64;little;lp64;;;shared;release;GCC 6.2.1 20160830";
+
+ QTest::newRow("with qreal")
+ << QByteArray("Qt 5.7.1 (x86_64-little_endian-lp64-qreal___fp16 shared (dynamic) release build; by GCC 6.2.1 20160830)")
+ << "5.7.1;x86_64;little;lp64;__fp16;;shared;release;GCC 6.2.1 20160830";
+ QTest::newRow("with qreal and abi")
+ << QByteArray("Qt 5.7.1 (x86_64-little_endian-lp64-qreal___fp16-eabi shared (dynamic) release build; by GCC 6.2.1 20160830)")
+ << "5.7.1;x86_64;little;lp64;__fp16;eabi;shared;release;GCC 6.2.1 20160830";
+ QTest::newRow("with qreal, eabi and softfloat")
+ << QByteArray("Qt 5.7.1 (x86_64-little_endian-lp64-qreal___fp16-eabi-softfloat shared (dynamic) release build; by GCC 6.2.1 20160830)")
+ << "5.7.1;x86_64;little;lp64;__fp16;eabi-softfloat;shared;release;GCC 6.2.1 20160830";
+ QTest::newRow("with eabi")
+ << QByteArray("Qt 5.7.1 (x86_64-little_endian-lp64-eabi shared (dynamic) release build; by GCC 6.2.1 20160830)")
+ << "5.7.1;x86_64;little;lp64;;eabi;shared;release;GCC 6.2.1 20160830";
+ QTest::newRow("with eabi and softfloat")
+ << QByteArray("Qt 5.7.1 (x86_64-little_endian-lp64-eabi-softfloat shared (dynamic) release build; by GCC 6.2.1 20160830)")
+ << "5.7.1;x86_64;little;lp64;;eabi-softfloat;shared;release;GCC 6.2.1 20160830";
+}
+
+void QtSupportPlugin::testQtBuildStringParsing()
+{
+ QFETCH(QByteArray, buildString);
+ QFETCH(QString, expected);
+
+ QStringList expectedList;
+ if (!expected.isEmpty())
+ expectedList = expected.split(';');
+
+ QStringList actual = extractFieldsFromBuildString(buildString);
+ QCOMPARE(expectedList, actual);
+}
+
+#endif // WITH_TESTS
diff --git a/src/plugins/qtsupport/qtsupportplugin.h b/src/plugins/qtsupport/qtsupportplugin.h
index fe0585c50fc..1756b2a1c45 100644
--- a/src/plugins/qtsupport/qtsupportplugin.h
+++ b/src/plugins/qtsupport/qtsupportplugin.h
@@ -53,6 +53,10 @@ private slots:
void testQtProjectImporter_oneProject_data();
void testQtProjectImporter_oneProject();
+
+ void testQtBuildStringParsing_data();
+ void testQtBuildStringParsing();
+
#if 0
void testQtProjectImporter_oneProjectExistingKit();
void testQtProjectImporter_oneProjectNewKitExistingQt();
diff --git a/src/shared/proparser/profileevaluator.cpp b/src/shared/proparser/profileevaluator.cpp
index f60c6afa2c8..99f4fe02625 100644
--- a/src/shared/proparser/profileevaluator.cpp
+++ b/src/shared/proparser/profileevaluator.cpp
@@ -83,7 +83,7 @@ QVector<ProFileEvaluator::SourceFile> ProFileEvaluator::fixifiedValues(
foreach (const ProString &str, d->values(ProKey(variable))) {
const QString &el = d->m_option->expandEnvVars(str.toQString());
if (IoUtils::isAbsolutePath(el)) {
- result << SourceFile{ el, str.sourceFile() };
+ result << SourceFile{ QDir::cleanPath(el), str.sourceFile() };
} else {
QString fn = QDir::cleanPath(baseDirectory + QLatin1Char('/') + el);
if (IoUtils::exists(fn))
@@ -132,16 +132,17 @@ QVector<ProFileEvaluator::SourceFile> ProFileEvaluator::absoluteFileValues(
const QString &el = d->m_option->expandEnvVars(str.toQString());
QString absEl;
if (IoUtils::isAbsolutePath(el)) {
- if (m_vfs->exists(el, flags)) {
- result << SourceFile{ el, str.sourceFile() };
+ QString fn = QDir::cleanPath(el);
+ if (m_vfs->exists(fn, flags)) {
+ result << SourceFile{ fn, str.sourceFile() };
goto next;
}
- absEl = el;
+ absEl = fn;
} else {
foreach (const QString &dir, searchDirs) {
QString fn = QDir::cleanPath(dir + QLatin1Char('/') + el);
if (m_vfs->exists(fn, flags)) {
- result << SourceFile{ QDir::cleanPath(fn), str.sourceFile() };
+ result << SourceFile{ fn, str.sourceFile() };
goto next;
}
}
diff --git a/src/shared/qbs b/src/shared/qbs
-Subproject a64a0ef5fc454b18a9474b39517a100d8f1fdf3
+Subproject 3fec40fad03aa1c4c7bb85a435c6aa9abe3a6bb
diff --git a/tests/system/settings/mac/QtProject/qtcreator/profiles.xml b/tests/system/settings/mac/QtProject/qtcreator/profiles.xml
index 124113a2651..6e254742aba 100644
--- a/tests/system/settings/mac/QtProject/qtcreator/profiles.xml
+++ b/tests/system/settings/mac/QtProject/qtcreator/profiles.xml
@@ -13,6 +13,10 @@
<value type="QByteArray" key="PE.Profile.DeviceType">Desktop</value>
<value type="QString" key="PE.Profile.SysRoot"></value>
<value type="QString" key="PE.Profile.ToolChain">ProjectExplorer.ToolChain.Gcc:{c3f59b87-6997-4bd8-8067-ee04dc536371}</value>
+ <valuemap type="QVariantMap" key="PE.Profile.ToolChains">
+ <value type="QByteArray" key="C">{461bb8dc-22ff-461f-82fe-ebe8b21b697f}</value>
+ <value type="QString" key="Cxx">ProjectExplorer.ToolChain.Gcc:{c3f59b87-6997-4bd8-8067-ee04dc536371}</value>
+ </valuemap>
<value type="QString" key="QtPM4.mkSpecInformation"></value>
<value type="int" key="QtSupport.QtInformation">4</value>
</valuemap>
@@ -97,6 +101,10 @@
<value type="QByteArray" key="PE.Profile.DeviceType">GenericLinuxOsType</value>
<value type="QString" key="PE.Profile.SysRoot"></value>
<value type="QString" key="PE.Profile.ToolChain">ProjectExplorer.ToolChain.Gcc:{c3f59b87-6997-4bd8-8067-ee04dc536371}</value>
+ <valuemap type="QVariantMap" key="PE.Profile.ToolChains">
+ <value type="QByteArray" key="C">{461bb8dc-22ff-461f-82fe-ebe8b21b697f}</value>
+ <value type="QString" key="Cxx">ProjectExplorer.ToolChain.Gcc:{c3f59b87-6997-4bd8-8067-ee04dc536371}</value>
+ </valuemap>
<value type="QString" key="QtPM4.mkSpecInformation"></value>
<value type="int" key="QtSupport.QtInformation">4</value>
</valuemap>
@@ -119,6 +127,10 @@
<value type="QByteArray" key="PE.Profile.DeviceType">Desktop</value>
<value type="QString" key="PE.Profile.SysRoot"></value>
<value type="QString" key="PE.Profile.ToolChain">ProjectExplorer.ToolChain.Clang:{6afe7dea-8caa-424e-b370-b7b0a34015fb}</value>
+ <valuemap type="QVariantMap" key="PE.Profile.ToolChains">
+ <value type="QByteArray" key="C">{0db093b8-890b-4fad-a4bc-9078124fe866}</value>
+ <value type="QString" key="Cxx">ProjectExplorer.ToolChain.Clang:{6afe7dea-8caa-424e-b370-b7b0a34015fb}</value>
+ </valuemap>
<value type="QString" key="QtPM4.mkSpecInformation"></value>
<value type="int" key="QtSupport.QtInformation">9</value>
</valuemap>
@@ -141,6 +153,10 @@
<value type="QByteArray" key="PE.Profile.DeviceType">Desktop</value>
<value type="QString" key="PE.Profile.SysRoot"></value>
<value type="QString" key="PE.Profile.ToolChain">ProjectExplorer.ToolChain.Gcc:{c3f59b87-6997-4bd8-8067-ee04dc536371}</value>
+ <valuemap type="QVariantMap" key="PE.Profile.ToolChains">
+ <value type="QByteArray" key="C">{461bb8dc-22ff-461f-82fe-ebe8b21b697f}</value>
+ <value type="QString" key="Cxx">ProjectExplorer.ToolChain.Gcc:{c3f59b87-6997-4bd8-8067-ee04dc536371}</value>
+ </valuemap>
<value type="QString" key="QtPM4.mkSpecInformation"></value>
<value type="int" key="QtSupport.QtInformation">2</value>
</valuemap>
@@ -163,6 +179,10 @@
<value type="QByteArray" key="PE.Profile.DeviceType">Desktop</value>
<value type="QString" key="PE.Profile.SysRoot"></value>
<value type="QString" key="PE.Profile.ToolChain">ProjectExplorer.ToolChain.Clang:{6afe7dea-8caa-424e-b370-b7b0a34015fb}</value>
+ <valuemap type="QVariantMap" key="PE.Profile.ToolChains">
+ <value type="QByteArray" key="C">{0db093b8-890b-4fad-a4bc-9078124fe866}</value>
+ <value type="QString" key="Cxx">ProjectExplorer.ToolChain.Clang:{6afe7dea-8caa-424e-b370-b7b0a34015fb}</value>
+ </valuemap>
<value type="QString" key="QtPM4.mkSpecInformation"></value>
<value type="int" key="QtSupport.QtInformation">11</value>
</valuemap>
diff --git a/tests/system/settings/mac/QtProject/qtcreator/toolchains.xml b/tests/system/settings/mac/QtProject/qtcreator/toolchains.xml
index 672ebb50fb9..69bbde66b7e 100644
--- a/tests/system/settings/mac/QtProject/qtcreator/toolchains.xml
+++ b/tests/system/settings/mac/QtProject/qtcreator/toolchains.xml
@@ -15,6 +15,7 @@
<value type="bool" key="ProjectExplorer.ToolChain.Autodetect">false</value>
<value type="QString" key="ProjectExplorer.ToolChain.DisplayName">GCC</value>
<value type="QString" key="ProjectExplorer.ToolChain.Id">ProjectExplorer.ToolChain.Gcc:{c3f59b87-6997-4bd8-8067-ee04dc536371}</value>
+ <value type="int" key="ProjectExplorer.ToolChain.Language">2</value>
</valuemap>
</data>
<data>
@@ -28,6 +29,7 @@
<value type="bool" key="ProjectExplorer.ToolChain.Autodetect">false</value>
<value type="QString" key="ProjectExplorer.ToolChain.DisplayName">GCC for Fremantle</value>
<value type="QString" key="ProjectExplorer.ToolChain.Id">ProjectExplorer.ToolChain.Gcc:{32ee0a53-87d9-4f17-b8a5-a7642101e803}</value>
+ <value type="int" key="ProjectExplorer.ToolChain.Language">2</value>
</valuemap>
</data>
<data>
@@ -41,6 +43,7 @@
<value type="bool" key="ProjectExplorer.ToolChain.Autodetect">false</value>
<value type="QString" key="ProjectExplorer.ToolChain.DisplayName">GCC for Harmattan</value>
<value type="QString" key="ProjectExplorer.ToolChain.Id">ProjectExplorer.ToolChain.Gcc:{9be34a3b-acf0-4570-be0d-34cd224d8efe}</value>
+ <value type="int" key="ProjectExplorer.ToolChain.Language">2</value>
</valuemap>
</data>
<data>
@@ -55,11 +58,43 @@
<value type="bool" key="ProjectExplorer.ToolChain.Autodetect">false</value>
<value type="QString" key="ProjectExplorer.ToolChain.DisplayName">Clang (x86 64bit)</value>
<value type="QString" key="ProjectExplorer.ToolChain.Id">ProjectExplorer.ToolChain.Clang:{6afe7dea-8caa-424e-b370-b7b0a34015fb}</value>
+ <value type="int" key="ProjectExplorer.ToolChain.Language">2</value>
+ </valuemap>
+ </data>
+ <data>
+ <variable>ToolChain.4</variable>
+ <valuemap type="QVariantMap">
+ <value type="QString" key="ProjectExplorer.GccToolChain.Path">/usr/bin/clang</value>
+ <valuelist type="QVariantList" key="ProjectExplorer.GccToolChain.SupportedAbis">
+ <value type="QString">x86-macos-generic-mach_o-64bit</value>
+ <value type="QString">x86-macos-generic-mach_o-32bit</value>
+ </valuelist>
+ <value type="QString" key="ProjectExplorer.GccToolChain.TargetAbi">SET_BY_SQUISH</value>
+ <value type="bool" key="ProjectExplorer.ToolChain.Autodetect">false</value>
+ <value type="QString" key="ProjectExplorer.ToolChain.DisplayName">Clang [C]</value>
+ <value type="QString" key="ProjectExplorer.ToolChain.Id">ProjectExplorer.ToolChain.Clang:{0db093b8-890b-4fad-a4bc-9078124fe866}</value>
+ <value type="int" key="ProjectExplorer.ToolChain.Language">1</value>
+ </valuemap>
+ </data>
+ <data>
+ <variable>ToolChain.5</variable>
+ <valuemap type="QVariantMap">
+ <value type="QString" key="ProjectExplorer.GccToolChain.Path">/usr/bin/gcc</value>
+ <valuelist type="QVariantList" key="ProjectExplorer.GccToolChain.SupportedAbis">
+ <value type="QString">x86-linux-generic-elf-64bit</value>
+ <value type="QString">x86-linux-generic-elf-32bit</value>
+ <value type="QString">x86-macos-generic-mach_o-64bit</value>
+ </valuelist>
+ <value type="QString" key="ProjectExplorer.GccToolChain.TargetAbi">SET_BY_SQUISH</value>
+ <value type="bool" key="ProjectExplorer.ToolChain.Autodetect">false</value>
+ <value type="QString" key="ProjectExplorer.ToolChain.DisplayName">GCC [C]</value>
+ <value type="QString" key="ProjectExplorer.ToolChain.Id">ProjectExplorer.ToolChain.Gcc:{461bb8dc-22ff-461f-82fe-ebe8b21b697f}</value>
+ <value type="int" key="ProjectExplorer.ToolChain.Language">1</value>
</valuemap>
</data>
<data>
<variable>ToolChain.Count</variable>
- <value type="int">4</value>
+ <value type="int">6</value>
</data>
<data>
<variable>Version</variable>
diff --git a/tests/system/settings/unix/QtProject/qtcreator/profiles.xml b/tests/system/settings/unix/QtProject/qtcreator/profiles.xml
index 6526ccdc57b..aac3728ef36 100644
--- a/tests/system/settings/unix/QtProject/qtcreator/profiles.xml
+++ b/tests/system/settings/unix/QtProject/qtcreator/profiles.xml
@@ -97,6 +97,10 @@
<value type="QByteArray" key="PE.Profile.DeviceType">GenericLinuxOsType</value>
<value type="QString" key="PE.Profile.SysRoot"></value>
<value type="QString" key="PE.Profile.ToolChain">ProjectExplorer.ToolChain.Gcc:{c3f59b87-6997-4bd8-8067-ee04dc536371}</value>
+ <valuemap type="QVariantMap" key="PE.Profile.ToolChains">
+ <value type="QByteArray" key="C">{7bfd4fd4-e64a-417f-b10f-20602e1719d1}</value>
+ <value type="QString" key="Cxx">ProjectExplorer.ToolChain.Gcc:{c3f59b87-6997-4bd8-8067-ee04dc536371}</value>
+ </valuemap>
<value type="QString" key="QtPM4.mkSpecInformation"></value>
<value type="int" key="QtSupport.QtInformation">4</value>
</valuemap>
diff --git a/tests/system/settings/unix/QtProject/qtcreator/toolchains.xml b/tests/system/settings/unix/QtProject/qtcreator/toolchains.xml
index 5c9c9b48c8f..20194d2fba9 100644
--- a/tests/system/settings/unix/QtProject/qtcreator/toolchains.xml
+++ b/tests/system/settings/unix/QtProject/qtcreator/toolchains.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorToolChains>
-<!-- Written by Qt Creator 2.5.83, 2012-09-21T19:00:03. -->
+<!-- Written by QtCreator 4.2.1, 2017-01-06T12:39:15. -->
<qtcreator>
<data>
<variable>ToolChain.0</variable>
@@ -44,8 +44,26 @@
</valuemap>
</data>
<data>
+ <variable>ToolChain.3</variable>
+ <valuemap type="QVariantMap">
+ <value type="QString" key="ProjectExplorer.GccToolChain.OriginalTargetTriple">x86_64-linux-gnu</value>
+ <value type="QString" key="ProjectExplorer.GccToolChain.Path">/usr/bin/gcc</value>
+ <valuelist type="QVariantList" key="ProjectExplorer.GccToolChain.PlatformCodeGenFlags"/>
+ <valuelist type="QVariantList" key="ProjectExplorer.GccToolChain.PlatformLinkerFlags"/>
+ <valuelist type="QVariantList" key="ProjectExplorer.GccToolChain.SupportedAbis">
+ <value type="QString">x86-linux-generic-elf-64bit</value>
+ <value type="QString">x86-linux-generic-elf-32bit</value>
+ </valuelist>
+ <value type="QString" key="ProjectExplorer.GccToolChain.TargetAbi">SET_BY_SQUISH</value>
+ <value type="bool" key="ProjectExplorer.ToolChain.Autodetect">false</value>
+ <value type="QString" key="ProjectExplorer.ToolChain.DisplayName">GCC</value>
+ <value type="QString" key="ProjectExplorer.ToolChain.Id">ProjectExplorer.ToolChain.Gcc:{7bfd4fd4-e64a-417f-b10f-20602e1719d1}</value>
+ <value type="int" key="ProjectExplorer.ToolChain.Language">1</value>
+ </valuemap>
+ </data>
+ <data>
<variable>ToolChain.Count</variable>
- <value type="int">3</value>
+ <value type="int">4</value>
</data>
<data>
<variable>Version</variable>