summaryrefslogtreecommitdiff
path: root/src/plugins/debugger/cdb/cdbengine.cpp
diff options
context:
space:
mode:
authorCristian Adam <cristian.adam@qt.io>2022-06-20 19:51:16 +0200
committerCristian Adam <cristian.adam@qt.io>2022-06-22 08:28:51 +0000
commitf4ea9e09ec3fc2883e13b55ea3cf4ce034f8f487 (patch)
treec42eaa2d9abb90e4d8322cda8e99c6f7f0c89b3f /src/plugins/debugger/cdb/cdbengine.cpp
parentcb0ff08518c30ec73ec09ae77c358c26698662ff (diff)
downloadqt-creator-f4ea9e09ec3fc2883e13b55ea3cf4ce034f8f487.tar.gz
cdb: Use separate qtcreatorcdbext suffix for arm architecture
This would allow arm64 to coexist with amd64 on the same installation. Change-Id: I578aab3d363bf93c2f61d4a7c93576ce19fba4b6 Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: David Schulz <david.schulz@qt.io>
Diffstat (limited to 'src/plugins/debugger/cdb/cdbengine.cpp')
-rw-r--r--src/plugins/debugger/cdb/cdbengine.cpp25
1 files changed, 16 insertions, 9 deletions
diff --git a/src/plugins/debugger/cdb/cdbengine.cpp b/src/plugins/debugger/cdb/cdbengine.cpp
index b8566b7874..b4d538485b 100644
--- a/src/plugins/debugger/cdb/cdbengine.cpp
+++ b/src/plugins/debugger/cdb/cdbengine.cpp
@@ -56,6 +56,7 @@
#include <coreplugin/icore.h>
#include <coreplugin/messagebox.h>
+#include <projectexplorer/abi.h>
#include <projectexplorer/taskhub.h>
#include <qtsupport/baseqtversion.h>
#include <qtsupport/qtversionmanager.h>
@@ -290,14 +291,13 @@ bool CdbEngine::canHandleToolTip(const DebuggerToolTipContext &context) const
}
// Determine full path to the CDB extension library.
-QString CdbEngine::extensionLibraryName(bool is64Bit)
+QString CdbEngine::extensionLibraryName(bool is64Bit, bool isArm)
{
// Determine extension lib name and path to use
- QString rc;
- QTextStream(&rc) << QFileInfo(QCoreApplication::applicationDirPath()).path()
- << "/lib/" << (is64Bit ? QT_CREATOR_CDB_EXT "64" : QT_CREATOR_CDB_EXT "32")
- << '/' << QT_CREATOR_CDB_EXT << ".dll";
- return rc;
+ return QString("%1/lib/" QT_CREATOR_CDB_EXT "%2%3/" QT_CREATOR_CDB_EXT ".dll")
+ .arg(QFileInfo(QCoreApplication::applicationDirPath()).path())
+ .arg(isArm ? "arm" : QString())
+ .arg(is64Bit ? "64": "32");
}
int CdbEngine::elapsedLogTime()
@@ -353,10 +353,17 @@ void CdbEngine::setupEngine()
return;
}
- bool cdbIs64Bit = is64BitWindowsBinary(sp.debugger.command.executable());
- if (!cdbIs64Bit)
+ bool cdbIs64Bit = true;
+ bool cdbIsArm = false;
+ Abis abisOfCdb = Abi::abisOfBinary(sp.debugger.command.executable());
+ if (abisOfCdb.size() == 1) {
+ Abi abi = abisOfCdb.at(0);
+ cdbIs64Bit = abi.wordWidth() == 64;
+ cdbIsArm = abi.architecture() == Abi::Architecture::ArmArchitecture;
+ }
+ if (!cdbIs64Bit || cdbIsArm)
m_wow64State = noWow64Stack;
- const QFileInfo extensionFi(CdbEngine::extensionLibraryName(cdbIs64Bit));
+ const QFileInfo extensionFi(CdbEngine::extensionLibraryName(cdbIs64Bit, cdbIsArm));
if (!extensionFi.isFile()) {
handleSetupFailure(tr("Internal error: The extension %1 cannot be found.\n"
"If you have updated %2 via Maintenance Tool, you may "