diff options
author | hjk <hjk121@nokiamail.com> | 2014-04-10 17:32:51 +0200 |
---|---|---|
committer | hjk <hjk121@nokiamail.com> | 2014-04-11 16:41:03 +0200 |
commit | 41582b19110450cf48388dfe0a0a7c8aa989b73e (patch) | |
tree | 4dc2036fc62228c11b089ee59234366f88e415ec /share/qtcreator/debugger/lldbbridge.py | |
parent | 039c7bed1aac0a39fda8eb8c86789edf449de5e1 (diff) | |
download | qt-creator-41582b19110450cf48388dfe0a0a7c8aa989b73e.tar.gz |
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/qtcreator/debugger/lldbbridge.py')
-rw-r--r-- | share/qtcreator/debugger/lldbbridge.py | 10 |
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() |