File tree Expand file tree Collapse file tree 3 files changed +25
-0
lines changed
source/Plugins/SymbolFile/DWARF Expand file tree Collapse file tree 3 files changed +25
-0
lines changed Original file line number Diff line number Diff line change 25
25
#include " lldb/Utility/XcodeSDK.h"
26
26
#include " lldb/lldb-private.h"
27
27
#include " llvm/ADT/DenseSet.h"
28
+ #include " llvm/ADT/SmallSet.h"
28
29
#include " llvm/Support/Errc.h"
29
30
30
31
#include < mutex>
@@ -149,6 +150,17 @@ class SymbolFile : public PluginInterface {
149
150
virtual lldb::LanguageType ParseLanguage (CompileUnit &comp_unit) = 0;
150
151
// / Return the Xcode SDK comp_unit was compiled against.
151
152
virtual XcodeSDK ParseXcodeSDK (CompileUnit &comp_unit) { return {}; }
153
+
154
+ // / This function exists because SymbolFileDWARFDebugMap may extra compile
155
+ // / units which aren't exposed as "real" compile units. In every other
156
+ // / case this function should behave identically as ParseLanguage.
157
+ virtual llvm::SmallSet<lldb::LanguageType, 4 >
158
+ ParseAllLanguages (CompileUnit &comp_unit) {
159
+ llvm::SmallSet<lldb::LanguageType, 4 > langs;
160
+ langs.insert (ParseLanguage (comp_unit));
161
+ return langs;
162
+ }
163
+
152
164
virtual size_t ParseFunctions (CompileUnit &comp_unit) = 0;
153
165
virtual bool ParseLineTable (CompileUnit &comp_unit) = 0;
154
166
virtual bool ParseDebugMacros (CompileUnit &comp_unit) = 0;
Original file line number Diff line number Diff line change @@ -688,6 +688,17 @@ XcodeSDK SymbolFileDWARFDebugMap::ParseXcodeSDK(CompileUnit &comp_unit) {
688
688
return {};
689
689
}
690
690
691
+ llvm::SmallSet<lldb::LanguageType, 4 >
692
+ SymbolFileDWARFDebugMap::ParseAllLanguages (
693
+ lldb_private::CompileUnit &comp_unit) {
694
+ llvm::SmallSet<lldb::LanguageType, 4 > langs;
695
+ auto *info = GetCompUnitInfo (comp_unit);
696
+ for (auto &comp_unit : info->compile_units_sps ) {
697
+ langs.insert (comp_unit->GetLanguage ());
698
+ }
699
+ return langs;
700
+ }
701
+
691
702
size_t SymbolFileDWARFDebugMap::ParseFunctions (CompileUnit &comp_unit) {
692
703
std::lock_guard<std::recursive_mutex> guard (GetModuleMutex ());
693
704
SymbolFileDWARF *oso_dwarf = GetSymbolFile (comp_unit);
Original file line number Diff line number Diff line change @@ -63,6 +63,8 @@ class SymbolFileDWARFDebugMap : public lldb_private::SymbolFileCommon {
63
63
ParseLanguage (lldb_private::CompileUnit &comp_unit) override ;
64
64
lldb_private::XcodeSDK
65
65
ParseXcodeSDK (lldb_private::CompileUnit &comp_unit) override ;
66
+ llvm::SmallSet<lldb::LanguageType, 4 >
67
+ ParseAllLanguages (lldb_private::CompileUnit &comp_unit) override ;
66
68
size_t ParseFunctions (lldb_private::CompileUnit &comp_unit) override ;
67
69
bool ParseLineTable (lldb_private::CompileUnit &comp_unit) override ;
68
70
bool ParseDebugMacros (lldb_private::CompileUnit &comp_unit) override ;
You can’t perform that action at this time.
0 commit comments