summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/Language/ObjC
diff options
context:
space:
mode:
authorEnrico Granata <egranata@apple.com>2016-11-03 17:25:27 +0000
committerEnrico Granata <egranata@apple.com>2016-11-03 17:25:27 +0000
commit7700de8c302ed5d741bb16d807f554ce5e64275c (patch)
tree5b30461331014f1ad40c7f4913c6a2a75794f478 /lldb/source/Plugins/Language/ObjC
parent6ab92e8a3a1c67e6460c719833c2334425789b31 (diff)
downloadbcm5719-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.cpp15
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,
OpenPOWER on IntegriCloud