aboutsummaryrefslogtreecommitdiffstats
path: root/share
diff options
context:
space:
mode:
authorhjk <hjk121@nokiamail.com>2014-04-10 17:32:51 +0200
committerhjk <hjk121@nokiamail.com>2014-04-11 16:41:03 +0200
commit41582b19110450cf48388dfe0a0a7c8aa989b73e (patch)
tree4dc2036fc62228c11b089ee59234366f88e415ec /share
parent039c7bed1aac0a39fda8eb8c86789edf449de5e1 (diff)
Debugger: Work around mis-reading of integral template types
Clang/LLDB toolchain issue: -1 gets recorded and read as 'int' with value '0xffffffff'. Change-Id: I070a83c282bc8a46efa011efb73f32cdbf46398c Reviewed-by: Eike Ziller <eike.ziller@digia.com> Reviewed-by: hjk <hjk121@nokiamail.com>
Diffstat (limited to 'share')
-rw-r--r--share/qtcreator/debugger/lldbbridge.py10
1 files changed, 9 insertions, 1 deletions
diff --git a/share/qtcreator/debugger/lldbbridge.py b/share/qtcreator/debugger/lldbbridge.py
index b5c737dda7..fcb4a2ada8 100644
--- a/share/qtcreator/debugger/lldbbridge.py
+++ b/share/qtcreator/debugger/lldbbridge.py
@@ -417,8 +417,16 @@ class Dumper(DumperBase):
return self.lookupType(inner)
def numericTemplateArgument(self, typeobj, index):
+ # There seems no API to extract the numeric value.
inner = self.extractTemplateArgument(typeobj.GetName(), index)
- return int(inner)
+ innerType = typeobj.GetTemplateArgumentType(index)
+ basicType = innerType.GetBasicType()
+ value = toInteger(inner)
+ # Clang writes 'int' and '0xfffffff' into the debug info
+ # LLDB manages to read a value of 0xfffffff...
+ if basicType == lldb.eBasicTypeInt and value >= 0x8000000:
+ value -= 0x100000000
+ return value
def isReferenceType(self, typeobj):
return typeobj.IsReferenceType()