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>
@@ -146,6 +147,17 @@ class SymbolFile : public PluginInterface {
146
147
virtual lldb::LanguageType ParseLanguage (CompileUnit &comp_unit) = 0;
147
148
// / Return the Xcode SDK comp_unit was compiled against.
148
149
virtual XcodeSDK ParseXcodeSDK (CompileUnit &comp_unit) { return {}; }
150
+
151
+ // / This function exists because SymbolFileDWARFDebugMap may extra compile
152
+ // / units which aren't exposed as "real" compile units. In every other
153
+ // / case this function should behave identically as ParseLanguage.
154
+ virtual llvm::SmallSet<lldb::LanguageType, 4 >
155
+ ParseAllLanguages (CompileUnit &comp_unit) {
156
+ llvm::SmallSet<lldb::LanguageType, 4 > langs;
157
+ langs.insert (ParseLanguage (comp_unit));
158
+ return langs;
159
+ }
160
+
149
161
virtual size_t ParseFunctions (CompileUnit &comp_unit) = 0;
150
162
virtual bool ParseLineTable (CompileUnit &comp_unit) = 0;
151
163
virtual bool ParseDebugMacros (CompileUnit &comp_unit) = 0;
Original file line number Diff line number Diff line change @@ -683,6 +683,17 @@ XcodeSDK SymbolFileDWARFDebugMap::ParseXcodeSDK(CompileUnit &comp_unit) {
683
683
return {};
684
684
}
685
685
686
+ llvm::SmallSet<lldb::LanguageType, 4 >
687
+ SymbolFileDWARFDebugMap::ParseAllLanguages (
688
+ lldb_private::CompileUnit &comp_unit) {
689
+ llvm::SmallSet<lldb::LanguageType, 4 > langs;
690
+ auto *info = GetCompUnitInfo (comp_unit);
691
+ for (auto &comp_unit : info->compile_units_sps ) {
692
+ langs.insert (comp_unit->GetLanguage ());
693
+ }
694
+ return langs;
695
+ }
696
+
686
697
size_t SymbolFileDWARFDebugMap::ParseFunctions (CompileUnit &comp_unit) {
687
698
std::lock_guard<std::recursive_mutex> guard (GetModuleMutex ());
688
699
SymbolFileDWARF *oso_dwarf = GetSymbolFile (comp_unit);
Original file line number Diff line number Diff line change @@ -62,6 +62,8 @@ class SymbolFileDWARFDebugMap : public lldb_private::SymbolFileCommon {
62
62
ParseLanguage (lldb_private::CompileUnit &comp_unit) override ;
63
63
lldb_private::XcodeSDK
64
64
ParseXcodeSDK (lldb_private::CompileUnit &comp_unit) override ;
65
+ llvm::SmallSet<lldb::LanguageType, 4 >
66
+ ParseAllLanguages (lldb_private::CompileUnit &comp_unit) override ;
65
67
size_t ParseFunctions (lldb_private::CompileUnit &comp_unit) override ;
66
68
bool ParseLineTable (lldb_private::CompileUnit &comp_unit) override ;
67
69
bool ParseDebugMacros (lldb_private::CompileUnit &comp_unit) override ;
You can’t perform that action at this time.
0 commit comments