From c24640bae11ab34dfea8eabeeb18cbb641b268b5 Mon Sep 17 00:00:00 2001
From: hjk <hjk@theqtcompany.com>
Date: Thu, 2 Apr 2015 17:24:11 +0200
Subject: [PATCH] Debugger: Use SBTarget.CreateValueFromAddress instead of
 SBValue

SBTarget.CreateValueFromAddress was not supported by older
versions of LLDB. Unfortunately, we still can't use
SBTarget.CreateValueFromExpression.

Change-Id: I982021531a2ab070aa279dd17e9714f86efe83cc
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
---
 share/qtcreator/debugger/lldbbridge.py | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/share/qtcreator/debugger/lldbbridge.py b/share/qtcreator/debugger/lldbbridge.py
index 500c0477a8d..a22d7b850a1 100644
--- a/share/qtcreator/debugger/lldbbridge.py
+++ b/share/qtcreator/debugger/lldbbridge.py
@@ -579,11 +579,17 @@ class Dumper(DumperBase):
 
     def createPointerValue(self, address, pointeeType):
         addr = int(address) & 0xFFFFFFFFFFFFFFFF
-        return self.context.CreateValueFromAddress(None, addr, pointeeType).AddressOf()
+        sbaddr = lldb.SBAddress(addr, self.target)
+        # Any type.
+        # FIXME: This can be replaced with self.target.CreateValueFromExpression
+        # as soon as we drop support for lldb builds not having that (~Xcode 6.1)
+        dummy = self.target.CreateValueFromAddress('@', sbaddr, self.target.FindFirstType('char'))
+        return dummy.CreateValueFromExpression('', '(%s*)%s' % (pointeeType, addr))
 
     def createValue(self, address, referencedType):
         addr = int(address) & 0xFFFFFFFFFFFFFFFF
-        return self.context.CreateValueFromAddress(None, addr, referencedType)
+        sbaddr = lldb.SBAddress(addr, self.target)
+        return self.target.CreateValueFromAddress(None, sbaddr, referencedType)
 
     def childRange(self):
         if self.currentMaxNumChild is None:
-- 
GitLab