diff options
author | Cristian Adam <cristian.adam@qt.io> | 2022-06-20 19:51:16 +0200 |
---|---|---|
committer | Cristian Adam <cristian.adam@qt.io> | 2022-06-22 08:28:51 +0000 |
commit | f4ea9e09ec3fc2883e13b55ea3cf4ce034f8f487 (patch) | |
tree | c42eaa2d9abb90e4d8322cda8e99c6f7f0c89b3f /src/plugins/debugger/cdb | |
parent | cb0ff08518c30ec73ec09ae77c358c26698662ff (diff) | |
download | qt-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')
-rw-r--r-- | src/plugins/debugger/cdb/cdbengine.cpp | 25 | ||||
-rw-r--r-- | src/plugins/debugger/cdb/cdbengine.h | 2 |
2 files changed, 17 insertions, 10 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 " diff --git a/src/plugins/debugger/cdb/cdbengine.h b/src/plugins/debugger/cdb/cdbengine.h index 4fdc5f957c..92d434f2bc 100644 --- a/src/plugins/debugger/cdb/cdbengine.h +++ b/src/plugins/debugger/cdb/cdbengine.h @@ -101,7 +101,7 @@ public: void loadAdditionalQmlStack() override; void listBreakpoints(); - static QString extensionLibraryName(bool is64Bit); + static QString extensionLibraryName(bool is64Bit, bool isArm = false); private: void readyReadStandardOut(); |