From f4ea9e09ec3fc2883e13b55ea3cf4ce034f8f487 Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Mon, 20 Jun 2022 19:51:16 +0200 Subject: 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: Reviewed-by: David Schulz --- src/plugins/debugger/cdb/cdbengine.cpp | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) (limited to 'src/plugins/debugger/cdb/cdbengine.cpp') 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 #include +#include #include #include #include @@ -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 " -- cgit v1.2.1