This revision was automatically updated to reflect the committed changes.
Closed by commit rGf03cd763384b: [lldb] Introduce SymbolFile::ParseAllLanguages
(authored by augusto2112).
Changed prior to commit:
https://reviews.llvm.org/D146265?vs=505952&id=506307#toc
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D146265/new/
https://reviews.llvm.org/D146265
Files:
lldb/include/lldb/Symbol/SymbolFile.h
lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp
lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.h
Index: lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.h
===
--- lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.h
+++ lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.h
@@ -62,6 +62,8 @@
ParseLanguage(lldb_private::CompileUnit &comp_unit) override;
lldb_private::XcodeSDK
ParseXcodeSDK(lldb_private::CompileUnit &comp_unit) override;
+ llvm::SmallSet
+ ParseAllLanguages(lldb_private::CompileUnit &comp_unit) override;
size_t ParseFunctions(lldb_private::CompileUnit &comp_unit) override;
bool ParseLineTable(lldb_private::CompileUnit &comp_unit) override;
bool ParseDebugMacros(lldb_private::CompileUnit &comp_unit) override;
Index: lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp
===
--- lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp
+++ lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp
@@ -683,6 +683,17 @@
return {};
}
+llvm::SmallSet
+SymbolFileDWARFDebugMap::ParseAllLanguages(
+lldb_private::CompileUnit &comp_unit) {
+ llvm::SmallSet langs;
+ auto *info = GetCompUnitInfo(comp_unit);
+ for (auto &comp_unit : info->compile_units_sps) {
+langs.insert(comp_unit->GetLanguage());
+ }
+ return langs;
+}
+
size_t SymbolFileDWARFDebugMap::ParseFunctions(CompileUnit &comp_unit) {
std::lock_guard guard(GetModuleMutex());
SymbolFileDWARF *oso_dwarf = GetSymbolFile(comp_unit);
Index: lldb/include/lldb/Symbol/SymbolFile.h
===
--- lldb/include/lldb/Symbol/SymbolFile.h
+++ lldb/include/lldb/Symbol/SymbolFile.h
@@ -25,6 +25,7 @@
#include "lldb/Utility/XcodeSDK.h"
#include "lldb/lldb-private.h"
#include "llvm/ADT/DenseSet.h"
+#include "llvm/ADT/SmallSet.h"
#include "llvm/Support/Errc.h"
#include
@@ -146,6 +147,17 @@
virtual lldb::LanguageType ParseLanguage(CompileUnit &comp_unit) = 0;
/// Return the Xcode SDK comp_unit was compiled against.
virtual XcodeSDK ParseXcodeSDK(CompileUnit &comp_unit) { return {}; }
+
+ /// This function exists because SymbolFileDWARFDebugMap may extra compile
+ /// units which aren't exposed as "real" compile units. In every other
+ /// case this function should behave identically as ParseLanguage.
+ virtual llvm::SmallSet
+ ParseAllLanguages(CompileUnit &comp_unit) {
+llvm::SmallSet langs;
+langs.insert(ParseLanguage(comp_unit));
+return langs;
+ }
+
virtual size_t ParseFunctions(CompileUnit &comp_unit) = 0;
virtual bool ParseLineTable(CompileUnit &comp_unit) = 0;
virtual bool ParseDebugMacros(CompileUnit &comp_unit) = 0;
Index: lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.h
===
--- lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.h
+++ lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.h
@@ -62,6 +62,8 @@
ParseLanguage(lldb_private::CompileUnit &comp_unit) override;
lldb_private::XcodeSDK
ParseXcodeSDK(lldb_private::CompileUnit &comp_unit) override;
+ llvm::SmallSet
+ ParseAllLanguages(lldb_private::CompileUnit &comp_unit) override;
size_t ParseFunctions(lldb_private::CompileUnit &comp_unit) override;
bool ParseLineTable(lldb_private::CompileUnit &comp_unit) override;
bool ParseDebugMacros(lldb_private::CompileUnit &comp_unit) override;
Index: lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp
===
--- lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp
+++ lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp
@@ -683,6 +683,17 @@
return {};
}
+llvm::SmallSet
+SymbolFileDWARFDebugMap::ParseAllLanguages(
+lldb_private::CompileUnit &comp_unit) {
+ llvm::SmallSet langs;
+ auto *info = GetCompUnitInfo(comp_unit);
+ for (auto &comp_unit : info->compile_units_sps) {
+langs.insert(comp_unit->GetLanguage());
+ }
+ return langs;
+}
+
size_t SymbolFileDWARFDebugMap::ParseFunctions(CompileUnit &comp_unit) {
std::lock_guard guard(GetModuleMutex());
SymbolFileDWARF *oso_dwarf = GetSymbolFile(comp_unit);
Index: lldb/include/lldb/Symbol/SymbolFile.h
===
--- lldb/