summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhjk <hjk121@nokiamail.com>2013-05-24 10:40:45 +0200
committerhjk <hjk121@nokiamail.com>2013-05-24 10:43:59 +0200
commite1db88e1139a4eb7d72cde1218a8ebb06d6ec79c (patch)
tree633f43cefa7b251d06803c82a477e1477b0a8ed5
parent276e2bccaa0878d4836c3770e83aeece9b97b88c (diff)
downloadqt-creator-e1db88e1139a4eb7d72cde1218a8ebb06d6ec79c.tar.gz
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>
-rw-r--r--src/plugins/debugger/lldb/lldbengine.cpp28
-rw-r--r--src/plugins/debugger/lldb/lldbengine.h4
2 files changed, 25 insertions, 7 deletions
diff --git a/src/plugins/debugger/lldb/lldbengine.cpp b/src/plugins/debugger/lldb/lldbengine.cpp
index 5df12a7cc7..1a2d654af7 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 e8a080f596..71ff668179 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