[Lldb-commits] [lldb] [LLDB][NativePDB] Implement `AddSymbols` (PR #154121)
Jonas Devlieghere via lldb-commits
lldb-commits at lists.llvm.org
Mon Aug 18 09:22:52 PDT 2025
================
@@ -1054,7 +1054,48 @@ lldb::LanguageType SymbolFileNativePDB::ParseLanguage(CompileUnit &comp_unit) {
return TranslateLanguage(item->m_compile_opts->getLanguage());
}
-void SymbolFileNativePDB::AddSymbols(Symtab &symtab) {}
+void SymbolFileNativePDB::AddSymbols(Symtab &symtab) {
+ std::set<lldb::addr_t> existing_addresses;
+ for (size_t i = 0; i < symtab.GetNumSymbols(); i++)
+ existing_addresses.insert(symtab.SymbolAtIndex(i)->GetFileAddress());
+
+ auto *section_list = m_objfile_sp->GetSectionList();
+ if (!section_list)
+ return;
+
+ for (auto pid : m_index->publics().getPublicsTable()) {
+ PdbGlobalSymId global{pid, true};
+ CVSymbol sym = m_index->ReadSymbolRecord(global);
+ auto kind = sym.kind();
+ if (kind != S_PUB32)
+ continue;
+ PublicSym32 pub =
+ llvm::cantFail(SymbolDeserializer::deserializeAs<PublicSym32>(sym));
+
+ auto section_sp = section_list->FindSectionByID(pub.Segment);
+ if (!section_sp)
+ continue;
+
+ lldb::SymbolType type = eSymbolTypeData;
+ if ((pub.Flags & PublicSymFlags::Function) != PublicSymFlags::None ||
+ (pub.Flags & PublicSymFlags::Code) != PublicSymFlags::None)
+ type = eSymbolTypeCode;
+
+ symtab.AddSymbol(Symbol(/*symID=*/pid,
+ /*name=*/pub.Name,
+ /*type=*/type,
+ /*external=*/true,
+ /*is_debug=*/false,
----------------
JDevlieghere wrote:
Presumably this should be `true`?
https://github.com/llvm/llvm-project/pull/154121
More information about the lldb-commits
mailing list