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