diff options
author | Friedemann Kleint <Friedemann.Kleint@digia.com> | 2012-12-14 09:10:10 +0100 |
---|---|---|
committer | hjk <qthjk@ovi.com> | 2012-12-14 11:03:31 +0100 |
commit | 0a556c2fe15e50aa2bb1f6fded834e3ca82b2045 (patch) | |
tree | c1a850f4d804c7e8921ecc22897916346fc61486 /src | |
parent | 6d83dda6df643eca4c720cb474cc5636d8e60ff5 (diff) |
Adapt Qt symbol resolution to library naming change.
Change-Id: Iaf3eaf2b98bba6f1796a59499136e92c4124ad0b
Reviewed-by: hjk <qthjk@ovi.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/libs/qtcreatorcdbext/symbolgroupvalue.cpp | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/src/libs/qtcreatorcdbext/symbolgroupvalue.cpp b/src/libs/qtcreatorcdbext/symbolgroupvalue.cpp index ea9f74fdfd..cccd4dcd52 100644 --- a/src/libs/qtcreatorcdbext/symbolgroupvalue.cpp +++ b/src/libs/qtcreatorcdbext/symbolgroupvalue.cpp @@ -629,8 +629,7 @@ std::string SymbolGroupValue::pointedToSymbolName(ULONG64 address, const std::st * (due to the amiguities and artifacts that appear like 'QGuid4!qstrdup'). */ static inline std::string resolveQtSymbol(const char *symbolC, - const char *defaultModuleNameC, - const char *modulePatternC, + const char *moduleNameC, const SymbolGroupValueContext &ctx) { enum { debugResolveQtSymbol = 0 }; @@ -638,13 +637,20 @@ static inline std::string resolveQtSymbol(const char *symbolC, typedef StringList::const_iterator StringListConstIt; if (debugResolveQtSymbol) - DebugPrint() << ">resolveQtSymbol" << symbolC << " def=" << defaultModuleNameC << " defModName=" - << defaultModuleNameC << " modPattern=" << modulePatternC; - const SubStringPredicate modulePattern(modulePatternC); - // First try a match with the default module name 'QtCored4!qstrdup' for speed reasons + DebugPrint() << ">resolveQtSymbol" << symbolC << " def=" << moduleNameC << " defModName=" + << moduleNameC; + const SubStringPredicate modulePattern(moduleNameC); + // First try a match with the default module name 'QtCored4!qstrdup' or + // 'Qt5Cored!qstrdup' for speed reasons. for (int qtVersion = 4; qtVersion < 6; qtVersion++) { std::ostringstream str; - str << defaultModuleNameC << qtVersion << '!' << symbolC; + str << "Qt"; + if (qtVersion >= 5) + str << qtVersion; + str << moduleNameC << 'd'; + if (qtVersion == 4) + str << qtVersion; + str << '!' << symbolC; const std::string defaultPattern = str.str(); const StringList defaultMatches = SymbolGroupValue::resolveSymbolName(defaultPattern.c_str(), ctx); if (debugResolveQtSymbol) @@ -685,7 +691,7 @@ const QtInfo &QtInfo::get(const SymbolGroupValueContext &ctx) do { // Lookup qstrdup() to hopefully get module (potential libinfix) and namespace // Typically, this resolves to 'QtGuid4!qstrdup' and 'QtCored4!qstrdup'... - const std::string qualifiedSymbol = resolveQtSymbol("qstrdup", "QtCored", "Core", ctx); + const std::string qualifiedSymbol = resolveQtSymbol("qstrdup", "Core", ctx); const std::string::size_type libPos = qualifiedSymbol.find("Core"); const std::string::size_type exclPos = qualifiedSymbol.find('!'); // Resolved: 'QtCored4!qstrdup' if (libPos == std::string::npos || exclPos == std::string::npos) { |