diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py index e0248862bf0..1dd8960d7e0 100644 --- a/share/qtcreator/debugger/dumper.py +++ b/share/qtcreator/debugger/dumper.py @@ -2594,9 +2594,19 @@ class DumperBase: if metaObjectPtr: self.putQObjectGuts(value, metaObjectPtr) + def symbolAddress(self, symbolName): + return self.parseAndEvaluate("(size_t)&" + symbolName).pointer() def qtTypeInfoVersion(self): - return 11 # FIXME + addr = self.symbolAddress("qtHookData") + if addr: + # Only available with Qt 5.3+ + (hookVersion, x, x, x, x, x, tiVersion) = self.split('ppppppp', addr) + #warn("HOOK: %s TI: %s" % (hookVersion, tiVersion)) + if hookVersion >= 3: + self.qtTypeInfoVersion = lambda: tiVersion + return tiVersion + return None def lookupType(self, typestring): return self.fromNativeType(self.lookupNativeType(typestring)) diff --git a/share/qtcreator/debugger/gdbbridge.py b/share/qtcreator/debugger/gdbbridge.py index b1c2048dc38..b7e2ce5f028 100644 --- a/share/qtcreator/debugger/gdbbridge.py +++ b/share/qtcreator/debugger/gdbbridge.py @@ -764,19 +764,6 @@ class Dumper(DumperBase): # Use fallback until we have a better answer. return self.fallbackQtVersion - def qtTypeInfoVersion(self): - try: - # Only available with Qt 5.3+ - hookVersion = int(str(gdb.parse_and_eval("((void**)&qtHookData)[0]")), 16) - tiVersion = int(str(gdb.parse_and_eval("((void**)&qtHookData)[6]")), 16) - #warn("HOOK: %s TI: %s" % (hookVersion, tiVersion)) - if hookVersion >= 3: - self.qtTypeInfoVersion = lambda: tiVersion - return tiVersion - except: - pass - return None - def isQt3Support(self): if self.qtVersion() >= 0x050000: return False diff --git a/share/qtcreator/debugger/lldbbridge.py b/share/qtcreator/debugger/lldbbridge.py index 553db114eff..18c6a408b5e 100644 --- a/share/qtcreator/debugger/lldbbridge.py +++ b/share/qtcreator/debugger/lldbbridge.py @@ -557,26 +557,6 @@ class Dumper(DumperBase): self.qtVersionAndNamespace() return self.qtVersionAndNamespace()[1] - def qtTypeInfoVersion(self): - try: - thread = self.currentThread() - frame = thread.GetFrameAtIndex(0) - #options = lldb.SBExpressionOptions() - exp = "((quintptr**)&qtHookData)[0]" - #hookVersion = lldb.target.EvaluateExpression(exp, options).GetValueAsUnsigned() - hookVersion = frame.EvaluateExpression(exp).GetValueAsUnsigned() - exp = "((quintptr**)&qtHookData)[6]" - #warn("EXP: %s" % exp) - #tiVersion = lldb.target.EvaluateExpression(exp, options).GetValueAsUnsigned() - tiVersion = frame.EvaluateExpression(exp).GetValueAsUnsigned() - #warn("HOOK: %s TI: %s" % (hookVersion, tiVersion)) - if hookVersion >= 3: - self.qtTypeInfoVersion = lambda: tiVersion - return tiVersion - except: - pass - return None - def ptrSize(self): return self.target.GetAddressByteSize()