aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/android/androidrunnerworker.cpp
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2020-05-18 15:31:13 +0200
committerhjk <hjk@qt.io>2020-05-19 13:04:38 +0000
commitf3038bce08cf30fd35209cc6ac4bea02c102b7d1 (patch)
treedc7dcea6865dc24a4583c9684f36a98bb2ca6f42 /src/plugins/android/androidrunnerworker.cpp
parent8d3fd8d0deb4e94e32f4658d2ba10f162e7046ff (diff)
Android: Search LLDB in new SDK location
Amends 3e79c7da48b6ad. Change-Id: I6db991bc4d82000e0bb9860d85676bf1fdfb09a6 Reviewed-by: David Schulz <david.schulz@qt.io>
Diffstat (limited to 'src/plugins/android/androidrunnerworker.cpp')
-rw-r--r--src/plugins/android/androidrunnerworker.cpp32
1 files changed, 29 insertions, 3 deletions
diff --git a/src/plugins/android/androidrunnerworker.cpp b/src/plugins/android/androidrunnerworker.cpp
index 849fec6781a..28f7fd746f3 100644
--- a/src/plugins/android/androidrunnerworker.cpp
+++ b/src/plugins/android/androidrunnerworker.cpp
@@ -49,6 +49,8 @@
#include <utils/url.h>
#include <utils/fileutils.h>
+#include <QDir>
+#include <QDirIterator>
#include <QFileInfo>
#include <QLoggingCategory>
#include <QTcpServer>
@@ -186,11 +188,35 @@ static QString lldbServerArch(const QString &androidAbi)
return androidAbi; // arm64-v8a, x86, x86_64
}
-static FilePath lldbServer(const QString &androidAbi)
+static QString lldbServerArch2(const QString &androidAbi)
+{
+ if (androidAbi == "armeabi-v7a")
+ return {"arm"};
+ if (androidAbi == "x86")
+ return {"i386"};
+ if (androidAbi == "arm64-v8a")
+ return {"aarch64"};
+ // Correct for "x86_64" a and best guess at anything that will evolve:
+ return androidAbi; // arm64-v8a
+}
+
+static FilePath lldbServer(const QString &androidAbi, const QtSupport::BaseQtVersion *qtVersion)
{
const AndroidConfig &config = AndroidConfigurations::currentConfig();
+ const FilePath prebuilt = config.ndkLocation(qtVersion) / "toolchains/llvm/prebuilt";
+ const QString abiNeedle = lldbServerArch2(androidAbi);
+
+ // The new, built-in LLDB.
+ QDirIterator it(prebuilt.toString(), QDir::Files|QDir::Executable, QDirIterator::Subdirectories);
+ while (it.hasNext()) {
+ it.next();
+ const QString filePath = it.filePath();
+ if (filePath.endsWith(abiNeedle + "/lldb-server")) {
+ return FilePath::fromString(filePath);
+ }
+ }
- // Find LLDB version. sdk_definitions.json contains something like "lldb;3.1". Use that.
+ // Older: Find LLDB version. sdk_definitions.json contains something like "lldb;3.1". Use that.
const QStringList packages = config.defaultEssentials();
for (const QString &package : packages) {
if (package.startsWith("lldb;")) {
@@ -282,7 +308,7 @@ AndroidRunnerWorker::AndroidRunnerWorker(RunWorker *runner, const QString &packa
QString preferredAbi = AndroidManager::apkDevicePreferredAbi(target);
if (!preferredAbi.isEmpty()) {
if (m_useLldb)
- m_debugServerPath = lldbServer(preferredAbi).toString();
+ m_debugServerPath = lldbServer(preferredAbi, version).toString();
else
m_debugServerPath = gdbServer(preferredAbi, version).toString();
}