Skip to content

Commit 68f845f

Browse files
committed
Switch to filespeclist
1 parent 44e6abf commit 68f845f

File tree

11 files changed

+29
-30
lines changed

11 files changed

+29
-30
lines changed

lldb/include/lldb/API/SBFileSpecList.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ class LLDB_API SBFileSpecList {
4040

4141
private:
4242
friend class SBTarget;
43+
friend class SBModule;
44+
45+
SBFileSpecList(lldb_private::FileSpecList &&list);
4346

4447
const lldb_private::FileSpecList *operator->() const;
4548

lldb/include/lldb/Core/Module.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -483,7 +483,7 @@ class Module : public std::enable_shared_from_this<Module>,
483483

484484
const FileSpec &GetSymbolFileFileSpec() const { return m_symfile_spec; }
485485

486-
const llvm::StringMap<FileSpec> GetSeparateDebugInfoFiles();
486+
FileSpecList GetSeparateDebugInfoFiles();
487487

488488
void PreloadSymbols();
489489

lldb/include/lldb/Symbol/SymbolFile.h

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -504,11 +504,8 @@ class SymbolFile : public PluginInterface {
504504
/// always return a valid list, even if it is empty.
505505
///
506506
/// \return
507-
/// A unique map of all the filespecs, dwos in a dwps would be joined to
508-
/// the dwp path for example.
509-
virtual llvm::StringMap<lldb_private::FileSpec> GetSeparateDebugInfoFiles() {
510-
return {};
511-
}
507+
/// A unique list of all the filespecs, or an empty list.
508+
virtual lldb_private::FileSpecList GetSeparateDebugInfoFiles() { return {}; }
512509

513510
virtual lldb::TypeSP
514511
MakeType(lldb::user_id_t uid, ConstString name,

lldb/include/lldb/Symbol/SymbolFileOnDemand.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,10 @@ class SymbolFileOnDemand : public lldb_private::SymbolFile {
229229
load_all_debug_info);
230230
}
231231

232+
lldb_private::FileSpecList GetSeparateDebugInfoFiles() override {
233+
return m_sym_file_impl->GetSeparateDebugInfoFiles();
234+
}
235+
232236
lldb::TypeSP MakeType(lldb::user_id_t uid, ConstString name,
233237
std::optional<uint64_t> byte_size,
234238
SymbolContextScope *context,

lldb/source/API/SBFileSpecList.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,11 @@ SBFileSpecList::SBFileSpecList(const SBFileSpecList &rhs) {
3131
m_opaque_up = clone(rhs.m_opaque_up);
3232
}
3333

34+
SBFileSpecList::SBFileSpecList(FileSpecList &&list)
35+
: m_opaque_up(new FileSpecList(std::move(list))) {
36+
LLDB_INSTRUMENT_VA(this);
37+
}
38+
3439
SBFileSpecList::~SBFileSpecList() = default;
3540

3641
const SBFileSpecList &SBFileSpecList::operator=(const SBFileSpecList &rhs) {

lldb/source/API/SBModule.cpp

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -634,17 +634,11 @@ lldb::SBFileSpec SBModule::GetSymbolFileSpec() const {
634634
}
635635

636636
lldb::SBFileSpecList SBModule::GetSeparateDebugInfoFiles() {
637-
lldb::SBFileSpecList sb_filespeclist;
638637
ModuleSP module_sp(GetSP());
639-
if (module_sp) {
640-
llvm::StringMap<lldb_private::FileSpec> debug_info_files =
641-
module_sp->GetSeparateDebugInfoFiles();
642-
for (auto &&[_, debug_info_file] : debug_info_files) {
643-
sb_filespeclist.Append(debug_info_file);
644-
}
645-
}
638+
if (module_sp)
639+
return lldb::SBFileSpecList(module_sp->GetSeparateDebugInfoFiles());
646640

647-
return sb_filespeclist;
641+
return lldb::SBFileSpecList();
648642
}
649643

650644
lldb::SBAddress SBModule::GetObjectFileHeaderAddress() const {

lldb/source/Core/Module.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1648,8 +1648,7 @@ DataFileCache *Module::GetIndexCache() {
16481648
return g_data_file_cache;
16491649
}
16501650

1651-
const llvm::StringMap<lldb_private::FileSpec>
1652-
Module::GetSeparateDebugInfoFiles() {
1651+
lldb_private::FileSpecList Module::GetSeparateDebugInfoFiles() {
16531652
SymbolFile *symfile = GetSymbolFile(false);
16541653
if (!symfile)
16551654
return {};

lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4215,11 +4215,10 @@ void SymbolFileDWARF::DumpClangAST(Stream &s, llvm::StringRef filter) {
42154215
clang->Dump(s.AsRawOstream(), filter);
42164216
}
42174217

4218-
llvm::StringMap<lldb_private::FileSpec>
4219-
SymbolFileDWARF::GetSeparateDebugInfoFiles() {
4218+
lldb_private::FileSpecList SymbolFileDWARF::GetSeparateDebugInfoFiles() {
42204219
DWARFDebugInfo &info = DebugInfo();
42214220
const size_t num_cus = info.GetNumUnits();
4222-
llvm::StringMap<lldb_private::FileSpec> symbolfile_map;
4221+
lldb_private::FileSpecList spec_list;
42234222
for (uint32_t cu_idx = 0; cu_idx < num_cus; ++cu_idx) {
42244223
DWARFUnit *unit = info.GetUnitAtIndex(cu_idx);
42254224
DWARFCompileUnit *dwarf_cu = llvm::dyn_cast<DWARFCompileUnit>(unit);
@@ -4235,10 +4234,9 @@ SymbolFileDWARF::GetSeparateDebugInfoFiles() {
42354234

42364235
lldb_private::FileSpec symfile_spec =
42374236
dwo_symfile->GetObjectFile()->GetFileSpec();
4238-
if (symbolfile_map.find(symfile_spec.GetPath()) == symbolfile_map.end())
4239-
symbolfile_map[symfile_spec.GetPath()] = symfile_spec;
4237+
spec_list.AppendIfUnique(symfile_spec);
42404238
}
4241-
return symbolfile_map;
4239+
return spec_list;
42424240
}
42434241

42444242
bool SymbolFileDWARF::GetSeparateDebugInfo(StructuredData::Dictionary &d,

lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@ class SymbolFileDWARF : public SymbolFileCommon {
279279

280280
void DumpClangAST(Stream &s, llvm::StringRef filter) override;
281281

282-
llvm::StringMap<lldb_private::FileSpec> GetSeparateDebugInfoFiles() override;
282+
lldb_private::FileSpecList GetSeparateDebugInfoFiles() override;
283283

284284
/// List separate dwo files.
285285
bool GetSeparateDebugInfo(StructuredData::Dictionary &d, bool errors_only,

lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1277,19 +1277,18 @@ void SymbolFileDWARFDebugMap::DumpClangAST(Stream &s, llvm::StringRef filter) {
12771277
});
12781278
}
12791279

1280-
llvm::StringMap<lldb_private::FileSpec>
1280+
lldb_private::FileSpecList
12811281
SymbolFileDWARFDebugMap::GetSeparateDebugInfoFiles() {
12821282
const uint32_t cu_count = GetNumCompileUnits();
1283-
llvm::StringMap<lldb_private::FileSpec> cu_map;
1283+
lldb_private::FileSpecList spec_list;
12841284
for (uint32_t cu_idx = 0; cu_idx < cu_count; ++cu_idx) {
12851285
const auto &info = m_compile_unit_infos[cu_idx];
12861286
if (info.so_file.GetPath().empty())
12871287
continue;
12881288

1289-
if (cu_map.find(info.oso_path) == cu_map.end())
1290-
cu_map[info.oso_path] = lldb_private::FileSpec(info.oso_path);
1289+
spec_list.AppendIfUnique(lldb_private::FileSpec(info.oso_path));
12911290
}
1292-
return cu_map;
1291+
return spec_list;
12931292
}
12941293

12951294
bool SymbolFileDWARFDebugMap::GetSeparateDebugInfo(

0 commit comments

Comments
 (0)