From e1db88e1139a4eb7d72cde1218a8ebb06d6ec79c Mon Sep 17 00:00:00 2001
From: hjk <hjk121@nokiamail.com>
Date: Fri, 24 May 2013 10:40:45 +0200
Subject: [PATCH] Debugger: Fix passing addresses to read memory with LLDB

We need 64 bit on 64 bit machines.

Change-Id: I7efed5ffdccc5ce0aa13b1e7296137396ca28efe
Reviewed-by: hjk <hjk121@nokiamail.com>
---
 src/plugins/debugger/lldb/lldbengine.cpp | 28 ++++++++++++++++++------
 src/plugins/debugger/lldb/lldbengine.h   |  4 ++++
 2 files changed, 25 insertions(+), 7 deletions(-)

diff --git a/src/plugins/debugger/lldb/lldbengine.cpp b/src/plugins/debugger/lldb/lldbengine.cpp
index 5df12a7cc77..1a2d654af7c 100644
--- a/src/plugins/debugger/lldb/lldbengine.cpp
+++ b/src/plugins/debugger/lldb/lldbengine.cpp
@@ -460,11 +460,10 @@ void LldbEngine::refreshDisassembly(const GdbMi &data)
     if (!agent.isNull()) {
         foreach (const GdbMi &line, data["lines"].children()) {
             DisassemblerLine dl;
-            QByteArray address = line["address"].data();
-            dl.address = address.toULongLong(0, 0);
+            dl.address = line["address"].toAddress();
             dl.data = _(line["inst"].data());
             dl.function = _(line["func-name"].data());
-            dl.offset = line["offset"].data().toUInt();
+            dl.offset = line["offset"].toInt();
             result.appendLine(dl);
         }
         agent->setContents(result);
@@ -474,7 +473,7 @@ void LldbEngine::refreshDisassembly(const GdbMi &data)
 void LldbEngine::refreshMemory(const GdbMi &data)
 {
     int cookie = data["cookie"].toInt();
-    qulonglong addr = data["address"].toInt();
+    qulonglong addr = data["address"].toAddress();
     QPointer<MemoryAgent> agent = m_memoryAgents.key(cookie);
     if (!agent.isNull()) {
         QPointer<QObject> token = m_memoryAgentTokens.value(cookie);
@@ -1038,16 +1037,31 @@ DebuggerEngine *createLldbEngine(const DebuggerStartParameters &startParameters)
 //
 ///////////////////////////////////////////////////////////////////////
 
-const LldbEngine::Command &LldbEngine::Command::arg(const char *name, int value) const
+const LldbEngine::Command &LldbEngine::Command::argHelper(const char *name, const QByteArray &data) const
 {
     args.append('\'');
     args.append(name);
     args.append("':");
-    args.append(QByteArray::number(value));
-    args.append(',');
+    args.append(data);
+    args.append(",");
     return *this;
 }
 
+const LldbEngine::Command &LldbEngine::Command::arg(const char *name, int value) const
+{
+    return argHelper(name, QByteArray::number(value));
+}
+
+const LldbEngine::Command &LldbEngine::Command::arg(const char *name, qlonglong value) const
+{
+    return argHelper(name, QByteArray::number(value));
+}
+
+const LldbEngine::Command &LldbEngine::Command::arg(const char *name, qulonglong value) const
+{
+    return argHelper(name, QByteArray::number(value));
+}
+
 const LldbEngine::Command &LldbEngine::Command::arg(const char *name, const QString &value) const
 {
     return arg(name, value.toUtf8().data());
diff --git a/src/plugins/debugger/lldb/lldbengine.h b/src/plugins/debugger/lldb/lldbengine.h
index e8a080f5967..71ff6681790 100644
--- a/src/plugins/debugger/lldb/lldbengine.h
+++ b/src/plugins/debugger/lldb/lldbengine.h
@@ -68,6 +68,8 @@ private:
         Command(const char *f) : function(f) {}
 
         const Command &arg(const char *name, int value) const;
+        const Command &arg(const char *name, qlonglong value) const;
+        const Command &arg(const char *name, qulonglong value) const;
         const Command &arg(const char *name, const QString &value) const;
         const Command &arg(const char *name, const QByteArray &value) const;
         const Command &arg(const char *name, const char *value) const;
@@ -78,6 +80,8 @@ private:
 
         QByteArray function;
         mutable QByteArray args;
+        private:
+        const Command &argHelper(const char *name, const QByteArray &value) const;
     };
 
     // DebuggerEngine implementation
-- 
GitLab