diff options
author | Enrico Granata <egranata@apple.com> | 2016-11-03 17:25:27 +0000 |
---|---|---|
committer | Enrico Granata <egranata@apple.com> | 2016-11-03 17:25:27 +0000 |
commit | 7700de8c302ed5d741bb16d807f554ce5e64275c (patch) | |
tree | 5b30461331014f1ad40c7f4913c6a2a75794f478 /lldb/source/Plugins/Language/ObjC | |
parent | 6ab92e8a3a1c67e6460c719833c2334425789b31 (diff) | |
download | bcm5719-llvm-7700de8c302ed5d741bb16d807f554ce5e64275c.tar.gz bcm5719-llvm-7700de8c302ed5d741bb16d807f554ce5e64275c.zip |
Add support to the ObjC type scavenger for finding types via debug info
llvm-svn: 285941
Diffstat (limited to 'lldb/source/Plugins/Language/ObjC')
-rw-r--r-- | lldb/source/Plugins/Language/ObjC/ObjCLanguage.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/lldb/source/Plugins/Language/ObjC/ObjCLanguage.cpp b/lldb/source/Plugins/Language/ObjC/ObjCLanguage.cpp index 76a940ba4b7..526ace119d6 100644 --- a/lldb/source/Plugins/Language/ObjC/ObjCLanguage.cpp +++ b/lldb/source/Plugins/Language/ObjC/ObjCLanguage.cpp @@ -994,10 +994,23 @@ std::unique_ptr<Language::TypeScavenger> ObjCLanguage::GetTypeScavenger() { friend class lldb_private::ObjCLanguage; }; + + class ObjCDebugInfoScavenger : public Language::ImageListTypeScavenger { + public: + virtual CompilerType AdjustForInclusion(CompilerType &candidate) override { + LanguageType lang_type(candidate.GetMinimumLanguage()); + if (!Language::LanguageIsObjC(lang_type)) + return CompilerType(); + if (candidate.IsTypedefType()) + return candidate.GetTypedefedType(); + return candidate; + } + }; return std::unique_ptr<TypeScavenger>( new Language::EitherTypeScavenger<ObjCModulesScavenger, - ObjCRuntimeScavenger>()); + ObjCRuntimeScavenger, + ObjCDebugInfoScavenger>()); } bool ObjCLanguage::GetFormatterPrefixSuffix(ValueObject &valobj, |