};
struct PdbCompilandSymId {
+ PdbCompilandSymId() = default;
+ PdbCompilandSymId(uint16_t modi, uint32_t offset)
+ : modi(modi), offset(offset) {}
// 0-based index of module in PDB
uint16_t modi = 0;
};
struct PdbGlobalSymId {
+ PdbGlobalSymId() = default;
+ PdbGlobalSymId(uint32_t offset, bool is_public)
+ : offset(offset), is_public(is_public) {}
+
// Offset of symbol's record in globals or publics stream.
uint32_t offset = 0;
};
struct PdbTypeSymId {
+ PdbTypeSymId() = default;
+ PdbTypeSymId(llvm::codeview::TypeIndex index, bool is_ipi = false)
+ : index(index), is_ipi(is_ipi) {}
+
// The index of the of the type in the TPI or IPI stream.
llvm::codeview::TypeIndex index;
Type *func_type = nullptr;
// FIXME: Resolve types and mangled names.
- PdbTypeSymId sig_id{TypeIndex::None(), false};
+ PdbTypeSymId sig_id(TypeIndex::None(), false);
Mangled mangled(getSymbolName(sym_record));
FunctionSP func_sp = std::make_shared<Function>(
sc.comp_unit, toOpaqueUid(func_id), toOpaqueUid(sig_id), mangled,
}
lldb::TypeSP SymbolFileNativePDB::CreateSimpleType(TypeIndex ti) {
- uint64_t uid = toOpaqueUid(PdbTypeSymId{ti, false});
+ uint64_t uid = toOpaqueUid(PdbTypeSymId(ti, false));
if (ti == TypeIndex::NullptrT()) {
CompilerType ct = m_clang->GetBasicType(eBasicTypeNullPtr);
Declaration decl;
if (!expected_full_ti)
llvm::consumeError(expected_full_ti.takeError());
else if (*expected_full_ti != type_id.index) {
- full_decl_uid = PdbTypeSymId{*expected_full_ti, false};
+ full_decl_uid = PdbTypeSymId(*expected_full_ti, false);
// It's possible that a lookup would occur for the full decl causing it
// to be cached, then a second lookup would occur for the forward decl.
m_clang->GetAsTagDecl(result->GetForwardCompilerType());
lldbassert(record_decl);
- TypeIndex ti(type_id.index);
m_uid_to_decl[best_uid] = record_decl;
m_decl_to_status[record_decl] =
DeclStatus(best_uid, Type::eResolveStateForward);
}
Declaration decl;
- PdbTypeSymId tid{ti, false};
+ PdbTypeSymId tid(ti, false);
SymbolFileTypeSP type_sp =
std::make_shared<SymbolFileType>(*this, toOpaqueUid(tid));
Variable::RangeList ranges;
llvm::cantFail(SymbolDeserializer::deserializeAs<ConstantSym>(cvs, constant));
std::string global_name("::");
global_name += constant.Name;
- PdbTypeSymId tid{constant.Type, false};
+ PdbTypeSymId tid(constant.Type, false);
SymbolFileTypeSP type_sp =
std::make_shared<SymbolFileType>(*this, toOpaqueUid(tid));
}
lldb::TypeSP SymbolFileNativePDB::GetOrCreateType(TypeIndex ti) {
- return GetOrCreateType(PdbTypeSymId{ti, false});
+ return GetOrCreateType(PdbTypeSymId(ti, false));
}
FunctionSP SymbolFileNativePDB::GetOrCreateFunction(PdbCompilandSymId func_id,
case SymbolKind::S_GTHREAD32:
case SymbolKind::S_LTHREAD32:
case SymbolKind::S_CONSTANT: {
- PdbGlobalSymId global{result.first, false};
+ PdbGlobalSymId global(result.first, false);
var = GetOrCreateGlobalVariable(global);
variables.AddVariable(var);
break;
sc.comp_unit = GetOrCreateCompileUnit(cci).get();
sc.module_sp = sc.comp_unit->GetModule();
- PdbCompilandSymId func_id{proc.modi(), proc.SymOffset};
+ PdbCompilandSymId func_id(proc.modi(), proc.SymOffset);
sc.function = GetOrCreateFunction(func_id, sc).get();
sc_list.Append(sc);
lldbassert(!IsForwardRefUdt(cvt));
unmodified_type = *expected_full_ti;
}
- type_id = PdbTypeSymId{unmodified_type, false};
+ type_id = PdbTypeSymId(unmodified_type, false);
}
TypeIndex field_list_ti = GetFieldListIndex(cvt);
CVType field_list_cvt = m_index->tpi().getType(field_list_ti);